<?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>59816</bug_id>
          
          <creation_ts>2011-04-29 11:33:31 -0700</creation_ts>
          <short_desc>[Refactoring] Replace Node&apos;s Document pointer with a TreeScope pointer</short_desc>
          <delta_ts>2013-01-03 13:40:42 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73800</dependson>
    
    <dependson>74067</dependson>
    
    <dependson>75240</dependson>
    
    <dependson>75241</dependson>
    
    <dependson>75290</dependson>
    
    <dependson>92048</dependson>
    
    <dependson>92049</dependson>
    
    <dependson>104859</dependson>
          <blocked>72352</blocked>
    
    <blocked>87034</blocked>
    
    <blocked>90913</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>abarth</cc>
    
    <cc>barraclough</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>esprehn</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>mifenton</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>395389</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-29 11:33:31 -0700</bug_when>
    <thetext>Replace the Document* in Node with a TreeScope*. This removes the need for NodeRareData in all shadow tree nodes, while access to the Document is still O(1) via each node&apos;s TreeScope. 

This does, however, require that nodes that are associated with a document but not in the tree are put in a special TreeScope. Likewise DocumentFragments would need to become TreeScopes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506651</commentid>
    <comment_count>1</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-11-20 18:27:16 -0800</bug_when>
    <thetext>This is not specific to the content element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514921</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-04 22:49:10 -0800</bug_when>
    <thetext>Starting to work on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532877</commentid>
    <comment_count>3</comment_count>
      <attachid>121810</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-10 01:20:33 -0800</bug_when>
    <thetext>Created attachment 121810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532885</commentid>
    <comment_count>4</comment_count>
      <attachid>121810</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-10 01:40:58 -0800</bug_when>
    <thetext>Comment on attachment 121810
Patch

Attachment 121810 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11166919</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532887</commentid>
    <comment_count>5</comment_count>
      <attachid>121810</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-10 01:47:00 -0800</bug_when>
    <thetext>Comment on attachment 121810
Patch

Attachment 121810 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11172381</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532890</commentid>
    <comment_count>6</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-10 01:53:50 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=121810&amp;action=review

I like this patch very much - two big thumbs up! Just some minor nits inline.

&gt; Source/WebCore/dom/Document.h:1490
&gt; +inline bool TreeScope::isDocumentScope() const

Can&apos;t this be moved to TreeScope.h?

&gt; Source/WebCore/dom/TreeScope.h:42
&gt; +    Document* rootTreeScope() const { return m_rootTreeScope; }

Why not simply name it &apos;document()&apos; and &apos;m_document&apos;, respectively?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532898</commentid>
    <comment_count>7</comment_count>
      <attachid>121810</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-10 02:06:44 -0800</bug_when>
    <thetext>Comment on attachment 121810
Patch

Attachment 121810 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11183917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532920</commentid>
    <comment_count>8</comment_count>
      <attachid>121818</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-10 02:52:28 -0800</bug_when>
    <thetext>Created attachment 121818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532921</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-10 02:54:54 -0800</bug_when>
    <thetext>Hi Roland, thanks for taking a look and supporting this!
I just updated the patch to address your points.

&gt; &gt; Source/WebCore/dom/Document.h:1490
&gt; &gt; +inline bool TreeScope::isDocumentScope() const
&gt; 
&gt; Can&apos;t this be moved to TreeScope.h?
Sure. Done.

&gt; 
&gt; &gt; Source/WebCore/dom/TreeScope.h:42
&gt; &gt; +    Document* rootTreeScope() const { return m_rootTreeScope; }
&gt; 
&gt; Why not simply name it &apos;document()&apos; and &apos;m_document&apos;, respectively?
Sounds reasonable. Initially I thought it hide Node::document()
but actually there is no harm in practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532930</commentid>
    <comment_count>10</comment_count>
      <attachid>121818</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-10 03:18:05 -0800</bug_when>
    <thetext>Comment on attachment 121818
Patch

Attachment 121818 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11186933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532938</commentid>
    <comment_count>11</comment_count>
      <attachid>121818</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-10 03:30:22 -0800</bug_when>
    <thetext>Comment on attachment 121818
Patch

Attachment 121818 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11186937</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532947</commentid>
    <comment_count>12</comment_count>
      <attachid>121818</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-10 03:47:41 -0800</bug_when>
    <thetext>Comment on attachment 121818
Patch

Attachment 121818 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11197001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532952</commentid>
    <comment_count>13</comment_count>
      <attachid>121818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-10 03:53:41 -0800</bug_when>
    <thetext>Comment on attachment 121818
Patch

Attachment 121818 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11184994</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533114</commentid>
    <comment_count>14</comment_count>
      <attachid>121818</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-10 08:50:41 -0800</bug_when>
    <thetext>Comment on attachment 121818
Patch

This patch may have performance implications, right? If so, it needs to be tested for perf regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533515</commentid>
    <comment_count>15</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-10 17:29:09 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 121818 [details])
&gt; This patch may have performance implications, right? If so, it needs to be tested for perf regressions.
Fair enough. I&apos;ll try - and I should update the patch to make the bots happy anyway...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533610</commentid>
    <comment_count>16</comment_count>
      <attachid>121969</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-10 21:03:23 -0800</bug_when>
    <thetext>Created attachment 121969
Just for examining  ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534039</commentid>
    <comment_count>17</comment_count>
      <attachid>121969</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-11 11:01:33 -0800</bug_when>
    <thetext>Comment on attachment 121969
Just for examining  ews

Since Morrita says this is for EWS only, clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534041</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-11 11:04:19 -0800</bug_when>
    <thetext>@morita: You can send a patch to the EWS without marking it for review.  If you don&apos;t mark the patch for review, there&apos;s a button you can click (where the green and red bubbles usually are) that sends it to the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534429</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-11 17:08:17 -0800</bug_when>
    <thetext>@darin, @abarth.
Ah, sure. I should have done so. Thanks for your advice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554978</commentid>
    <comment_count>20</comment_count>
      <attachid>126707</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-12 20:39:54 -0800</bug_when>
    <thetext>Created attachment 126707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591038</commentid>
    <comment_count>21</comment_count>
      <attachid>134547</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-29 04:46:02 -0700</bug_when>
    <thetext>Created attachment 134547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591041</commentid>
    <comment_count>22</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-29 04:47:43 -0700</bug_when>
    <thetext>I couldn&apos;t resolve performance regression and give this up.
Will try another idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647763</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-13 00:24:20 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647764</commentid>
    <comment_count>24</comment_count>
      <attachid>147249</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-13 00:24:24 -0700</bug_when>
    <thetext>Created attachment 147249
Updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658466</commentid>
    <comment_count>25</comment_count>
      <attachid>149707</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-27 01:57:01 -0700</bug_when>
    <thetext>Created attachment 149707
WIP: Naive version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658475</commentid>
    <comment_count>26</comment_count>
      <attachid>149709</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-27 02:12:35 -0700</bug_when>
    <thetext>Created attachment 149709
WIP: Naive version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660245</commentid>
    <comment_count>27</comment_count>
      <attachid>150106</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-29 00:46:48 -0700</bug_when>
    <thetext>Created attachment 150106
WIP: with a few peephole optimizations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660364</commentid>
    <comment_count>28</comment_count>
      <attachid>150138</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-29 04:34:05 -0700</bug_when>
    <thetext>Created attachment 150138
WIP: Almost working</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663296</commentid>
    <comment_count>29</comment_count>
      <attachid>150872</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-04 21:54:22 -0700</bug_when>
    <thetext>Created attachment 150872
Yet another trial with a tag bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663325</commentid>
    <comment_count>30</comment_count>
      <attachid>150879</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-04 23:14:42 -0700</bug_when>
    <thetext>Created attachment 150879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663339</commentid>
    <comment_count>31</comment_count>
      <attachid>150879</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-04 23:45:54 -0700</bug_when>
    <thetext>Comment on attachment 150879
Patch

Attachment 150879 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13139736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663367</commentid>
    <comment_count>32</comment_count>
      <attachid>150879</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-05 00:39:40 -0700</bug_when>
    <thetext>Comment on attachment 150879
Patch

Attachment 150879 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13144040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663429</commentid>
    <comment_count>33</comment_count>
      <attachid>150879</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-05 03:00:09 -0700</bug_when>
    <thetext>Comment on attachment 150879
Patch

Attachment 150879 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13141113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663435</commentid>
    <comment_count>34</comment_count>
      <attachid>150879</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-05 03:04:55 -0700</bug_when>
    <thetext>Comment on attachment 150879
Patch

Attachment 150879 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13151004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665412</commentid>
    <comment_count>35</comment_count>
      <attachid>151386</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-09 19:08:19 -0700</bug_when>
    <thetext>Created attachment 151386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665442</commentid>
    <comment_count>36</comment_count>
      <attachid>151386</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-07-09 20:24:49 -0700</bug_when>
    <thetext>Comment on attachment 151386
Patch

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

Nice patch! :) Added some general comments on TaggedPtr.

&gt; Source/WTF/wtf/TaggedPtr.h:26
&gt; +

Given this is in a general library, I think this needs introductory documentation on what it does and why it&apos;s useful.

&gt; Source/WTF/wtf/TaggedPtr.h:39
&gt; +    explicit TaggedPtr(T* ptr, bool tag = false) { set(ptr, tag); }

With Tag = 1, this pointer cannot point to odd addresses - that means, it cannot be used for chars at all, nor for other stuff that is byte-aligned (e.g., #pragma pack) Now, I don&apos;t think this is necessarily a fatal issue, but it should be documented and/or - even better - prevented by template magic.

Additionally, this needs to answer the question whether NULL can be tagged. If not, it should be documented and prevented. If yes, then IMHO this class should really provide operator! and conversion to UnspecifiedBoolType (see RefPtr.h) that takes the tag into consideration. (Personally I&apos;d add the latter methods in any case, since it&apos;s generally useful.)

&gt; Source/WTF/wtf/TaggedPtr.h:68
&gt; +

Adding setTagged/setUntagged versions might be nice, to remove the check when the tag state is known a-priori.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665448</commentid>
    <comment_count>37</comment_count>
      <attachid>151386</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-09 20:42:34 -0700</bug_when>
    <thetext>Comment on attachment 151386
Patch

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

Thanks for the feedback, Roland!

&gt;&gt; Source/WTF/wtf/TaggedPtr.h:26
&gt;&gt; +
&gt; 
&gt; Given this is in a general library, I think this needs introductory documentation on what it does and why it&apos;s useful.

Well, I don&apos;t want people to use this more. 
This is necessary evil without which we cannot avoid the performance regression in this specific change.
It prevent debugger to inspect the pointer.
So this unfriendliness is kinda intentional.

&gt;&gt; Source/WTF/wtf/TaggedPtr.h:39
&gt;&gt; +    explicit TaggedPtr(T* ptr, bool tag = false) { set(ptr, tag); }
&gt; 
&gt; With Tag = 1, this pointer cannot point to odd addresses - that means, it cannot be used for chars at all, nor for other stuff that is byte-aligned (e.g., #pragma pack) Now, I don&apos;t think this is necessarily a fatal issue, but it should be documented and/or - even better - prevented by template magic.
&gt; 
&gt; Additionally, this needs to answer the question whether NULL can be tagged. If not, it should be documented and prevented. If yes, then IMHO this class should really provide operator! and conversion to UnspecifiedBoolType (see RefPtr.h) that takes the tag into consideration. (Personally I&apos;d add the latter methods in any case, since it&apos;s generally useful.)

The alignment of the address is checked in ASSERT() in set(). I have no idea how to catch it in the compilation time.
The value allows to be NULL. Since client cannot refer the raw value, additional operator seems a bit overkill. We can just use get().
Again, I don&apos;t want this to be used broadly. And helping easier use doesn&apos;t match that intention.

&gt;&gt; Source/WTF/wtf/TaggedPtr.h:68
&gt;&gt; +
&gt; 
&gt; Adding setTagged/setUntagged versions might be nice, to remove the check when the tag state is known a-priori.

Currently no one needs it. So it can be done later.
Maybe I should remove the default parameter. It&apos;s misleading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666229</commentid>
    <comment_count>38</comment_count>
      <attachid>151386</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-10 18:14:26 -0700</bug_when>
    <thetext>Comment on attachment 151386
Patch

r-. We don&apos;t want bits stuffed into pointers. This breaks lots of tools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666235</commentid>
    <comment_count>39</comment_count>
      <attachid>151386</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-10 18:27:01 -0700</bug_when>
    <thetext>Comment on attachment 151386
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        - In shadow tree, Each node has its tree scope in ElementRareData,

Nit: Each should not be capitalized.

&gt; Source/WebCore/ChangeLog:15
&gt; +        This change get rid of ElementRareData::m_treeScope by replacing

Nit: gets rid of.

&gt; Source/WebCore/ChangeLog:16
&gt; +        Node::m_document with Node::m_treeScope. And retrieves the

Nit: And what retrieves the document?

&gt; Source/WebCore/ChangeLog:28
&gt; +        - It makes Node::m_treeScope a tagged pointer, whose tag implies
&gt; +          that m_treeScope refers ShadowRoot, not Document. If the pointer
&gt; +          isn&apos;t tagged, we can assume that m_treeScope is actually a
&gt; +          Document and can return it as a Document rather than invoking
&gt; +          TreeScope::roootDocument(). This eliminates an extra dereference
&gt; +          in many case.

Per IRC discussion, we should try node flag first.

&gt; Source/WebCore/dom/Document.cpp:496
&gt; +    setRootDocument(this);

Why do we need to set the document again here? Isn&apos;t the call to TreeScope&apos;s constructor sufficient?
In fact, I don&apos;t think we need setRootDocument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666292</commentid>
    <comment_count>40</comment_count>
      <attachid>151583</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-10 20:31:15 -0700</bug_when>
    <thetext>Created attachment 151583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666294</commentid>
    <comment_count>41</comment_count>
      <attachid>151583</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-10 20:44:44 -0700</bug_when>
    <thetext>Comment on attachment 151583
Patch

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

&gt; Source/WebCore/ChangeLog:24
&gt; +          that means m_treeScope is actually a document an can be returned as the result.

Nit: s/an /and /.

&gt; Source/WebCore/ChangeLog:25
&gt; +          this eliminates an extract dereference.

What are you referring to by &quot;an extract dereference&quot;?

&gt; Source/WebCore/ChangeLog:36
&gt; +        * dom/Document.cpp: Took care of connectio betwen TreeScope.

Nit: s/connectio/connection/

&gt; Source/WebCore/dom/Document.h:1537
&gt; +inline Document* Node::documentInternal() const

&quot;Internal&quot; is rather a vague adjective. I&apos;d prefer using a more descriptive name like documentWithoutNodeTypeCheck.

&gt; Source/WebCore/dom/Document.h:1565
&gt; +    , m_treeScope(0)

Do we need to initialize it if we&apos;re calling setTreeScope? It seems redundant.

&gt; Source/WebCore/dom/Node.h:731
&gt; +    Document* documentInternal() const;

This should certainly be private, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666297</commentid>
    <comment_count>42</comment_count>
      <attachid>151583</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-10 20:53:54 -0700</bug_when>
    <thetext>Comment on attachment 151583
Patch

Attachment 151583 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13215010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666301</commentid>
    <comment_count>43</comment_count>
      <attachid>151585</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-10 21:00:20 -0700</bug_when>
    <thetext>Created attachment 151585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666303</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-10 21:01:59 -0700</bug_when>
    <thetext>Attachment 151585 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/inspector/PageConsoleAgent.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 18 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>666336</commentid>
    <comment_count>45</comment_count>
      <attachid>151593</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-10 21:52:24 -0700</bug_when>
    <thetext>Created attachment 151593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671080</commentid>
    <comment_count>46</comment_count>
      <attachid>152715</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-17 01:26:42 -0700</bug_when>
    <thetext>Created attachment 152715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671103</commentid>
    <comment_count>47</comment_count>
      <attachid>152715</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-07-17 02:24:55 -0700</bug_when>
    <thetext>Comment on attachment 152715
Patch

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

Just a few drive-by remarks. :)

&gt; Source/WebCore/dom/Document.h:1544
&gt; +    return m_treeScope == TreeScope::nullInstance() ? 0 : m_treeScope;

I&apos;m wondering if it wouldn&apos;t be OK to just return the nullInstance (?). This would remove yet another condition here as well as below. (Perhaps have a TreeScopePointer wrapper class that implements operator! et al)

&gt; Source/WebCore/dom/Document.h:1548
&gt; +{

If the nullInstance is returned and used throughout, one could just ASSERT(scope) here and take the scope without further condition (?).

&gt; Source/WebCore/dom/Document.h:1576
&gt; +    return treeScope() != document();

Couldn&apos;t you just &apos;return getFlag(InShadowTree);&apos;?

&gt; Source/WebCore/dom/TreeScope.cpp:58
&gt; +    , m_parentTreeScope(rootNode == rootDocument ? 0 : rootDocument)

Given the above, could use nullInstance instead of 0 here?

&gt; Source/WebCore/dom/TreeScope.cpp:67
&gt; +    , m_parentTreeScope(0)

Given the above, could initialize m_parentTreeScope to nullInstance here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671130</commentid>
    <comment_count>48</comment_count>
      <attachid>152715</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-17 03:31:21 -0700</bug_when>
    <thetext>Comment on attachment 152715
Patch

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

Hi Roland, thanks for your feedback! I&apos;ll update the patch shortly.

&gt;&gt; Source/WebCore/dom/Document.h:1544
&gt;&gt; +    return m_treeScope == TreeScope::nullInstance() ? 0 : m_treeScope;
&gt; 
&gt; I&apos;m wondering if it wouldn&apos;t be OK to just return the nullInstance (?). This would remove yet another condition here as well as below. (Perhaps have a TreeScopePointer wrapper class that implements operator! et al)

Let callers take care of nullInstance() doen&apos;t look good idea for me.
I&apos;d like to keep it an implementation detail considering that
- the instance is mutable.
- the instance violates some invariant like the m_rootDocument never be null.

&gt;&gt; Source/WebCore/dom/Document.h:1548
&gt;&gt; +{
&gt; 
&gt; If the nullInstance is returned and used throughout, one could just ASSERT(scope) here and take the scope without further condition (?).

As I mentioned above, I don&apos;t want use nullInstance() widely.

&gt;&gt; Source/WebCore/dom/Document.h:1576
&gt;&gt; +    return treeScope() != document();
&gt; 
&gt; Couldn&apos;t you just &apos;return getFlag(InShadowTree);&apos;?

Good catch! Will fix.

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:67
&gt;&gt; +    , m_parentTreeScope(0)
&gt; 
&gt; Given the above, could initialize m_parentTreeScope to nullInstance here?

We cannot do that because this constructor is exactly for nullInstance()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671141</commentid>
    <comment_count>49</comment_count>
      <attachid>152727</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-17 03:58:04 -0700</bug_when>
    <thetext>Created attachment 152727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673031</commentid>
    <comment_count>50</comment_count>
      <attachid>152727</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-18 17:50:51 -0700</bug_when>
    <thetext>Comment on attachment 152727
Patch

This looks reasonable to me. Hopefully, I&apos;m not failing on my review again here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673032</commentid>
    <comment_count>51</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-18 17:54:38 -0700</bug_when>
    <thetext>&gt; (From update of attachment 152727 [details])
&gt; This looks reasonable to me. Hopefully, I&apos;m not failing on my review again here...
I hope so too.
Will wait one more day before landing and have a time to hear voices from veterans like Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674162</commentid>
    <comment_count>52</comment_count>
      <attachid>153407</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-19 22:10:44 -0700</bug_when>
    <thetext>Created attachment 153407
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674228</commentid>
    <comment_count>53</comment_count>
      <attachid>153407</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 23:34:07 -0700</bug_when>
    <thetext>Comment on attachment 153407
Patch for landing

Clearing flags on attachment: 153407

Committed r123184: &lt;http://trac.webkit.org/changeset/123184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674229</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 23:34:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676230</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 17:39:09 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 92048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690127</commentid>
    <comment_count>56</comment_count>
      <attachid>157171</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-08-08 04:06:20 -0700</bug_when>
    <thetext>Created attachment 157171
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690133</commentid>
    <comment_count>57</comment_count>
      <attachid>157174</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-08-08 04:12:14 -0700</bug_when>
    <thetext>Created attachment 157174
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692386</commentid>
    <comment_count>58</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-08-10 02:33:11 -0700</bug_when>
    <thetext>A profiler told me that Node::document() is hit not only from DOM side but also from rendering side
through RenderObject::document(). This is why Dromaeo couln&apos;t catch the slow down of the page cycler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725036</commentid>
    <comment_count>59</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-09-20 18:06:46 -0700</bug_when>
    <thetext>I have no idea how we can do it. Closing for now.
Feel free to reopen and attack this if you come up with any possible ideas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785534</commentid>
    <comment_count>60</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-06 18:47:32 -0800</bug_when>
    <thetext>Per rniwa&apos;s request lets try this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785548</commentid>
    <comment_count>61</comment_count>
      <attachid>178136</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-06 19:12:10 -0800</bug_when>
    <thetext>Created attachment 178136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785553</commentid>
    <comment_count>62</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-06 19:26:47 -0800</bug_when>
    <thetext>There&apos;s no justification for not doing a pointer deref inside document in the original patch so I didn&apos;t do that as it makes this simpler. Morrita do you have a benchmark where you saw the pointer deref being a perf regression? Also what page cycler did you see the regression on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785558</commentid>
    <comment_count>63</comment_count>
      <attachid>178136</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-06 19:45:36 -0800</bug_when>
    <thetext>Comment on attachment 178136
Patch

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

This looks right. I’m hoping that you can give us some perf. test results before landing it so that we have some confidence in this new patch.
I’ll wait for other reviewers (particularly morrita &amp; darin) to comment.

&gt; Source/WebCore/dom/Document.h:1564
&gt; +        m_treeScope = TreeScope::noDocumentInstance();

We might want to consider inlining this function butI guess it’s rare to instantiate a node without a document that it doesn’t matter?

&gt; Source/WebCore/dom/TreeScope.h:113
&gt; +    TreeScope();

Why do we need this?

&gt; Source/WebCore/dom/TreeScopeAdopter.cpp:-100
&gt;  
&gt; -    node-&gt;setDocument(newDocument);
&gt; -

I think it deserves a change log comment saying that this node can’t be tree scope here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785559</commentid>
    <comment_count>64</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-06 19:46:26 -0800</bug_when>
    <thetext>(In reply to comment #63)
&gt; &gt; Source/WebCore/dom/TreeScope.h:113
&gt; &gt; +    TreeScope();
&gt; 
&gt; Why do we need this?

Forget about this comment. It was added before I saw noDocumentInstance().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785570</commentid>
    <comment_count>65</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-06 20:13:43 -0800</bug_when>
    <thetext>Here is a bug which reported the perf regression https://crbug.com/138410</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785574</commentid>
    <comment_count>66</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-06 20:23:01 -0800</bug_when>
    <thetext>(In reply to comment #63)
&gt; (From update of attachment 178136 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178136&amp;action=review
&gt; ...
&gt; 
&gt; &gt; Source/WebCore/dom/TreeScopeAdopter.cpp:-100
&gt; &gt;  
&gt; &gt; -    node-&gt;setDocument(newDocument);
&gt; &gt; -
&gt; 
&gt; I think it deserves a change log comment saying that this node can’t be tree scope here.

I don&apos;t understand what you mean, what do you want me to explain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785576</commentid>
    <comment_count>67</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-06 20:23:22 -0800</bug_when>
    <thetext>(In reply to comment #65)
&gt; Here is a bug which reported the perf regression https://crbug.com/138410

Hm… the regression is 2%. That might be too small of a difference to detect on a non-bot environment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785577</commentid>
    <comment_count>68</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-06 20:24:14 -0800</bug_when>
    <thetext>(In reply to comment #66)
&gt; (In reply to comment #63)
&gt; &gt; (From update of attachment 178136 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178136&amp;action=review
&gt; &gt; ...
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/TreeScopeAdopter.cpp:-100
&gt; &gt; &gt;  
&gt; &gt; &gt; -    node-&gt;setDocument(newDocument);
&gt; &gt; &gt; -
&gt; &gt; 
&gt; &gt; I think it deserves a change log comment saying that this node can’t be tree scope here.
&gt; 
&gt; I don&apos;t understand what you mean, what do you want me to explain?

We don’t have to call setDocument here since node can’t be a TreeScope but that isn’t obvious from the code change. It’ll be good to point that out in the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785583</commentid>
    <comment_count>69</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-06 20:35:36 -0800</bug_when>
    <thetext>(In reply to comment #68)
&gt;
&gt; 
&gt; We don’t have to call setDocument here since node can’t be a TreeScope but that isn’t obvious from the code change. It’ll be good to point that out in the change log.

node can be a TreeScope here, we call this method for every ShadowRoot as well. The reason for not needing to call setDocument is because doing setDocumentScope implicitly changes the document for every descendant in the same scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785588</commentid>
    <comment_count>70</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-06 20:41:51 -0800</bug_when>
    <thetext>(In reply to comment #69)
&gt; (In reply to comment #68)
&gt; &gt;
&gt; &gt; We don’t have to call setDocument here since node can’t be a TreeScope but that isn’t obvious from the code change. It’ll be good to point that out in the change log.
&gt; 
&gt; node can be a TreeScope here, we call this method for every ShadowRoot as well. The reason for not needing to call setDocument is because doing setDocumentScope implicitly changes the document for every descendant in the same scope.

I’m talking about the case when moveNodeToNewDocument is called directly from moveTreeToNewScope at line 60-61. On my second thought, this could be a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785590</commentid>
    <comment_count>71</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-06 20:45:24 -0800</bug_when>
    <thetext>(In reply to comment #70)
&gt; (In reply to comment #69)
&gt; &gt; (In reply to comment #68)
&gt; &gt; &gt;
&gt; &gt; &gt; We don’t have to call setDocument here since node can’t be a TreeScope but that isn’t obvious from the code change. It’ll be good to point that out in the change log.
&gt; &gt; 
&gt; &gt; node can be a TreeScope here, we call this method for every ShadowRoot as well. The reason for not needing to call setDocument is because doing setDocumentScope implicitly changes the document for every descendant in the same scope.
&gt; 
&gt; I’m talking about the case when moveNodeToNewDocument is called directly from moveTreeToNewScope at line 60-61. On my second thought, this could be a bug.

We have to call it to maintain the guard refs and update the node lists after setting the tree scope and then to notify the node with didMoveToNewDocument. If the document changed we need to call moveNodeToNewDocument on every node in the top level tree, and then on every node all the way down through every shadow root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785592</commentid>
    <comment_count>72</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-06 20:48:18 -0800</bug_when>
    <thetext>(In reply to comment #71)
&gt; We have to call it to maintain the guard refs and update the node lists after setting the tree scope and then to notify the node with didMoveToNewDocument. If the document changed we need to call moveNodeToNewDocument on every node in the top level tree, and then on every node all the way down through every shadow root.

I know we have to call moveNodeToNewDocument there. What’s not obvious is why we don’t have to call either setDocument or setDocumentScope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785600</commentid>
    <comment_count>73</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-06 21:04:41 -0800</bug_when>
    <thetext>(In reply to comment #72)
&gt; (In reply to comment #71)
&gt; &gt; We have to call it to maintain the guard refs and update the node lists after setting the tree scope and then to notify the node with didMoveToNewDocument. If the document changed we need to call moveNodeToNewDocument on every node in the top level tree, and then on every node all the way down through every shadow root.
&gt; 
&gt; I know we have to call moveNodeToNewDocument there. What’s not obvious is why we don’t have to call either setDocument or setDocumentScope.

Hmm, it seems we do attempt to adopt ShadowRoot&apos;s during removeAllShadowRoots and we notify of their removal which is somewhat concerning because it means during that notification shadowRoot-&gt;treeScope() is not shadowRoot, but actually the document. This seems wrong since normally shadowRoot-&gt;treeScope() == shadowRoot but it&apos;s always been this way. That might be a bug, but I don&apos;t know how you observe the behavior.

That&apos;s the only time node can ever be a TreeScope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785607</commentid>
    <comment_count>74</comment_count>
      <attachid>178154</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-06 21:16:33 -0800</bug_when>
    <thetext>Created attachment 178154
Patch

Never end up in a situation where a TreeScope is detached. Also addressed rniwa&apos;s other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785613</commentid>
    <comment_count>75</comment_count>
      <attachid>178136</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-12-06 21:29:49 -0800</bug_when>
    <thetext>Comment on attachment 178136
Patch

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

I like it!

&gt; Source/WebCore/dom/TreeScope.h:63
&gt; +    Document* documentScope() const { return m_documentScope; }

Can we s/documentScope/document here? I think that would read a lot better in the calling locations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785616</commentid>
    <comment_count>76</comment_count>
      <attachid>178136</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-06 21:32:06 -0800</bug_when>
    <thetext>Comment on attachment 178136
Patch

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

&gt;&gt; Source/WebCore/dom/TreeScope.h:63
&gt;&gt; +    Document* documentScope() const { return m_documentScope; }
&gt; 
&gt; Can we s/documentScope/document here? I think that would read a lot better in the calling locations.

I don’t think we want do that given Document &amp; ShdowRoot each of which inherits from TreeScope also has document().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788011</commentid>
    <comment_count>77</comment_count>
      <attachid>178154</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-10 21:30:12 -0800</bug_when>
    <thetext>Comment on attachment 178154
Patch

Alright, why don&apos;t we try this one since it looks promising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789764</commentid>
    <comment_count>78</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 11:53:55 -0800</bug_when>
    <thetext>(In reply to comment #76)
&gt; (From update of attachment 178136 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178136&amp;action=review
&gt; 
&gt; ...
&gt; &gt; Source/WebCore/dom/TreeScope.h:63
&gt; &gt; +    Document* documentScope() const { return m_documentScope; }
&gt; 
&gt; Can we s/documentScope/document here? I think that would read a lot better in the calling locations.

Would you prefer rootScope? Like rniwa said, I didn&apos;t do that since we already have a document method on Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789773</commentid>
    <comment_count>79</comment_count>
      <attachid>178154</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 12:06:33 -0800</bug_when>
    <thetext>Comment on attachment 178154
Patch

Rejecting attachment 178154 from commit-queue.

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

Last 500 characters of output:
 #1 succeeded at 55 (offset 1 line).
Hunk #2 succeeded at 112 (offset 1 line).
patching file Source/WebCore/dom/TreeScope.h
patching file Source/WebCore/dom/TreeScopeAdopter.cpp
Hunk #1 FAILED at 42.
Hunk #2 succeeded at 97 (offset 1 line).
1 out of 2 hunks FAILED -- saving rejects to file Source/WebCore/dom/TreeScopeAdopter.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Ryosuke Ni...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15282622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789799</commentid>
    <comment_count>80</comment_count>
      <attachid>179102</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 12:24:31 -0800</bug_when>
    <thetext>Created attachment 179102
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789919</commentid>
    <comment_count>81</comment_count>
      <attachid>179102</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 14:27:53 -0800</bug_when>
    <thetext>Comment on attachment 179102
Patch for landing

Rejecting attachment 179102 from commit-queue.

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

Last 500 characters of output:
ataBase(WebCore::Document*&amp;)&apos;
Source/WebCore/dom/Node.h:120: note: candidates are: WebCore::NodeRareDataBase::NodeRareDataBase()
Source/WebCore/dom/Node.h:113: note:                 WebCore::NodeRareDataBase::NodeRareDataBase(const WebCore::NodeRareDataBase&amp;)
make: *** [out/Release/obj.target/webcore_dom/Source/WebCore/dom/ClassNodeList.o] Error 1

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;, &apos;--chromium&apos;, &apos;--update-chromium&apos;]&quot; exit_code: 2
rce/WebCore/dom/ClassNodeList.o] Error 1

Full output: http://queues.webkit.org/results/15281669</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789930</commentid>
    <comment_count>82</comment_count>
      <attachid>179129</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 14:36:20 -0800</bug_when>
    <thetext>Created attachment 179129
Patch

Fix the merge for real this time. It seems gits automerge put the Node::setDocument method back in Node.cpp when I synced last time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789974</commentid>
    <comment_count>83</comment_count>
      <attachid>179129</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 15:21:23 -0800</bug_when>
    <thetext>Comment on attachment 179129
Patch

Clearing flags on attachment: 179129

Committed r137524: &lt;http://trac.webkit.org/changeset/137524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789975</commentid>
    <comment_count>84</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 15:21:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790029</commentid>
    <comment_count>85</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 16:16:00 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 104859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790170</commentid>
    <comment_count>86</comment_count>
      <attachid>179174</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 18:20:18 -0800</bug_when>
    <thetext>Created attachment 179174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790171</commentid>
    <comment_count>87</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-12 18:21:04 -0800</bug_when>
    <thetext>Did you run all the tests in Debug mode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790173</commentid>
    <comment_count>88</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 18:27:26 -0800</bug_when>
    <thetext>(In reply to comment #87)
&gt; Did you run all the tests in Debug mode?

I didn&apos;t request a commit because I haven&apos;t run all the tests yet, I did run fast/mutation and fast/dom though and this fixes it. Right now I can&apos;t get it to build because r137539 broke the chromium build, so I&apos;ll run them later tonight/tomorrow and update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790191</commentid>
    <comment_count>89</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 18:48:45 -0800</bug_when>
    <thetext>(In reply to comment #88)
&gt; (In reply to comment #87)
&gt; &gt; Did you run all the tests in Debug mode?
&gt; 
&gt; I didn&apos;t request a commit because I haven&apos;t run all the tests yet, I did run fast/mutation and fast/dom though and this fixes it. Right now I can&apos;t get it to build because r137539 broke the chromium build, so I&apos;ll run them later tonight/tomorrow and update.

run-webkit-tests --chromium --debug --no-pixel-tests  LayoutTests/fast/

9502 tests executed and I didn&apos;t see any crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790223</commentid>
    <comment_count>90</comment_count>
      <attachid>179174</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-12 20:04:14 -0800</bug_when>
    <thetext>Comment on attachment 179174
Patch

(In reply to comment #89)
&gt; (In reply to comment #88)
&gt; &gt; (In reply to comment #87)
&gt; &gt; &gt; Did you run all the tests in Debug mode?
&gt; &gt; 
&gt; &gt; I didn&apos;t request a commit because I haven&apos;t run all the tests yet, I did run fast/mutation and fast/dom though and this fixes it. Right now I can&apos;t get it to build because r137539 broke the chromium build, so I&apos;ll run them later tonight/tomorrow and update.
&gt; 
&gt; run-webkit-tests --chromium --debug --no-pixel-tests  LayoutTests/fast/
&gt; 
&gt; 9502 tests executed and I didn&apos;t see any crashes.

For the change of this nature that could affect literally everything in DOM, it’s not acceptable to run just a subset of tests.

WebKit contribution policy that contributors run all layout tests prior to landing the patch: http://www.webkit.org/quality/testing.html
&quot;Before patches can land in any of the frameworks in the repository, the layout regression tests must pass. To run these tests, execute the run-webkit-tests script.&quot;

In practice, you may get away with it by running a subset if you know that the patch only affects a subset of tests in advance but we can’t necessarily do that all the time.

Please run the entire layout test suite and report the result (I typically start run-webkit-tests before I go to lunch or go home).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799159</commentid>
    <comment_count>91</comment_count>
      <attachid>181128</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-02 18:30:18 -0800</bug_when>
    <thetext>Created attachment 181128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799160</commentid>
    <comment_count>92</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-02 18:31:25 -0800</bug_when>
    <thetext>(In reply to comment #91)
&gt; Created an attachment (id=181128) [details]
&gt; Patch

I ran all 27k tests in debug and there were no crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799627</commentid>
    <comment_count>93</comment_count>
      <attachid>181128</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 13:40:30 -0800</bug_when>
    <thetext>Comment on attachment 181128
Patch

Clearing flags on attachment: 181128

Committed r138735: &lt;http://trac.webkit.org/changeset/138735&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799628</commentid>
    <comment_count>94</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 13:40:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121810</attachid>
            <date>2012-01-10 01:20:33 -0800</date>
            <delta_ts>2012-01-10 02:52:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120110182031.patch</filename>
            <type>text/plain</type>
            <size>17251</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI3MmIyNDcwY2Q2NTQ4
YzdjNDIzOTI0ZTM4YmY0OWQ4MTQ1NTdhNy4uNjMzMGI0NzdjZjMyN2UyZWYwZmMxOWVjMGQ2NjRh
ZDBjMzUxM2ExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAxLTEwICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3Rvcmlu
Z10gUmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgx
NgorCisgICAgICAgIE5vdyBOb2RlOjpkb2N1bWVudCgpIHJldHVybiBtX3RyZWVTY29wZS0+cm9v
dFRyZWVTY29wZSgpIGluc3RlYWQgb2YgTm9kZTo6bV9kb2N1bWVudC4KKyAgICAgICAgRWFjaCBu
b2RlIGluIHNoYWRvdyB0cmVlIGlzIG5vIGxvbmdlciBuZWVkIGl0cyBOb2RlUmFyZURhdGEgaW5z
dGFuY2UgdG8gcG9pbnQgdGhlIFNoYWRvd1Jvb3QuCisKKyAgICAgICAgLSBOb2RlOiBSZXBsYWNl
ZCBOb2RlOjptX2RvY3VlbnQgd2l0aCBOb2RlOjptX3RyZWVTY29wZS4gc2V0RG9jdW1lbnQoKSBp
cyBnb25lLgorICAgICAgICAtIE5vZGVSYXJlRGF0YTogUmVtb3ZlZCBtX3RyZWVTY29wZQorICAg
ICAgICAtIFRyZWVTY29wZTogQWRkZWQgbV9yb290VHJlZVNjb3BlIHRvIG1ha2UgTm9kZTo6ZG9j
dW1lbnQoKSBmYXN0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aXNJblNoYWRvd1RyZWUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgorICAgICAgICAqIGRv
bS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJh
cmVEYXRhKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDog
QWRkZWQgbV9yb290VHJlZVNjb3BlIHdoaWNoIHBvaW50cyB0aGUgcm9vdCBEb2N1bWVudCBvYmpl
Y3Qgb2YgdGhlIHNjb3BlIHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6On5UcmVlU2NvcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpzZXRSb290VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6Y2xlYXJSb290VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnJvb3RUcmVlU2NvcGUpOgorICAgICAgICAq
IGRvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFk
b3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVB
ZG9wdGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNj
b3BlQWRvcHRlcjo6bW92ZU5vZGVMaXN0Q2FjaGVzKTogRXh0cmFjdGVkLgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGVBZG9wdGVyLmg6CisKIDIwMTItMDEtMDYgIEhhamltZSBNb3JyaXRhICA8bW9y
cml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1JlZmFjdG9yaW5nXSBNb3ZpbmcgYmV0d2Vl
biBUcmVlU2NvcGVzIHNob3VsZCBiZSBkb25lIGJ5IGl0cyBvd24gY2xhc3MuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBkMmEwMmM5NGY3OTFkNTRlYWU3MjYzNmQ2OTdkNDk5ZTFkNzU2YTg5
Li5hYWEwMmMwNTg1MDAxN2EyZmRjZTdiNzEyYzYwNGFhYWQ3NmIyMTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAg
LCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQoMCkKICAgICAsIG1fcGVuZGluZ1Rhc2tzVGltZXIo
dGhpcywgJkRvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKQogewotICAgIG1fZG9jdW1l
bnQgPSB0aGlzOworICAgIHNldFJvb3RUcmVlU2NvcGUodGhpcyk7CiAKICAgICBtX3BhZ2VHcm91
cFVzZXJTaGVldENhY2hlVmFsaWQgPSBmYWxzZTsKIApAQCAtNTM4LDcgKzUzOCw3IEBAIERvY3Vt
ZW50Ojp+RG9jdW1lbnQoKQogICAgIC8vIGlmIHRoZSBEb2N1bWVudFBhcnNlciBvdXRsaXZlcyB0
aGUgRG9jdW1lbnQgaXQgd29uJ3QgY2F1c2UgYmFkbmVzcy4KICAgICBBU1NFUlQoIW1fcGFyc2Vy
IHx8IG1fcGFyc2VyLT5yZWZDb3VudCgpID09IDEpOwogICAgIGRldGFjaFBhcnNlcigpOwotICAg
IG1fZG9jdW1lbnQgPSAwOworICAgIGNsZWFyUm9vdFRyZWVTY29wZSgpOwogICAgIG1fY2FjaGVk
UmVzb3VyY2VMb2FkZXIuY2xlYXIoKTsKIAogICAgIG1fcmVuZGVyQXJlbmEuY2xlYXIoKTsKQEAg
LTExMjcsMTMgKzExMjcsMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBTdHJp
bmcmIGNvbnRlbnQpCiAKIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBjb25z
dAogewotICAgIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNY
SFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0bWwreG1sIjsK
LSAgICBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChpc1NWR0RvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1l
bnQtPnhtbFN0YW5kYWxvbmUoKSkKKyAgICBpZiAoeG1sU3RhbmRhbG9uZSgpKQogICAgICAgICBy
ZXR1cm4gInRleHQveG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkK
KyAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOwog
CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA0NTA5MmQzZmJlY2EyZTE1YTNkOGY0MDY2MjE4NTA5OTE1YTIw
MTZkLi5mOTRhMmE1YWI0NDQxYWVmOWRjMWE3NGFmY2QwYmI2MzM0YmE3ZjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTQ1NiwxMiArMTQ1NiwyNiBAQCBwcml2YXRlOgogCiBpbmxpbmUgYm9v
bCBOb2RlOjppc0RvY3VtZW50Tm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXMgPT0gbV9k
b2N1bWVudDsKKyAgICByZXR1cm4gdGhpcyA9PSBtX3RyZWVTY29wZSAmJiBtX3RyZWVTY29wZS0+
aXNEb2N1bWVudFNjb3BlKCk7Cit9CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1lbnQo
KSBjb25zdAoreworICAgIEFTU0VSVCh0aGlzKTsKKyAgICAvLyBGSVhNRTogYmVsb3cgQVNTRVJU
IGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1lbnQoKSBpbiB0aGUgY29u
c3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgorICAgIC8vIGR1ZSB0byB0aGUgdmlydHVhbCBmdW5jdGlv
biBjYWxsIHRvIG5vZGVUeXBlKCkuCisgICAgQVNTRVJUKGRvY3VtZW50SW50ZXJuYWwoKSB8fCAo
bm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1lbnQoKSkpOworICAg
IHJldHVybiBkb2N1bWVudEludGVybmFsKCk7Cit9CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6
ZG9jdW1lbnRJbnRlcm5hbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExJS0VMWSgwICE9IG1fdHJl
ZVNjb3BlKSA/IG1fdHJlZVNjb3BlLT5yb290VHJlZVNjb3BlKCkgOiAwOwogfQogCiBpbmxpbmUg
Tm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAg
ICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwg
bV90cmVlU2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQo
MCkKICAgICAsIG1fcmVuZGVyZXIoMCkKQEAgLTE0NzMsNiArMTQ4NywxMSBAQCBpbmxpbmUgTm9k
ZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICNlbmRp
ZgogfQogCitpbmxpbmUgYm9vbCBUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcm9vdFRyZWVTY29wZSA9PSB0aGlzOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMmFm
NTQ2ZjgxYmY4ODhjZDE1NDFlZWU0ZDJhNzNlZmVmN2YzY2Y0OS4uOWMyYmNiMzg3OGI1ZmZkY2I2
NzAwYzBjYWI1ZGVhMzYzOGRjYzM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDA1LDcgKzQwNSw3
IEBAIE5vZGU6On5Ob2RlKCkKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgZGV0YWNoKCk7
CiAKLSAgICBEb2N1bWVudCogZG9jID0gbV9kb2N1bWVudDsKKyAgICBEb2N1bWVudCogZG9jID0g
ZG9jdW1lbnRJbnRlcm5hbCgpOwogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5hYmxlZCgpICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSkKICAgICAgICAg
ZG9jLT5heE9iamVjdENhY2hlKCktPnJlbW92ZU5vZGVGb3JVc2UodGhpcyk7CiAgICAgCkBAIC00
MTgsNDEgKzQxOCw2IEBAIE5vZGU6On5Ob2RlKCkKICAgICAgICAgZG9jLT5ndWFyZERlcmVmKCk7
CiB9CiAKLXZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAg
IEFTU0VSVCghaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpOwotICAgIGlm
IChpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9kb2N1bWVudCA9IGRvY3VtZW50OwotfQotCi1Ob2RlUmFyZURhdGEqIE5vZGU6
OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQotewotICAgIGlmICghc2NvcGUpIHsKLSAg
ICAgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKLSAgICAgICAgICAgIE5vZGVSYXJlRGF0YSogZGF0
YSA9IHJhcmVEYXRhKCk7Ci0gICAgICAgICAgICBkYXRhLT5zZXRUcmVlU2NvcGUoMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gZGF0YTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7Ci0gICAgZGF0
YS0+c2V0VHJlZVNjb3BlKHNjb3BlKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotVHJlZVNjb3Bl
KiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBVc2luZyBtX2RvY3Vt
ZW50IGRpcmVjdGx5IGlzIG5vdCBnb29kIC0+IHNlZSBjb21tZW50IHdpdGggZG9jdW1lbnQoKSBp
biB0aGUgaGVhZGVyIGZpbGUuCi0gICAgaWYgKCFoYXNSYXJlRGF0YSgpKQotICAgICAgICByZXR1
cm4gbV9kb2N1bWVudDsKLSAgICBUcmVlU2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNj
b3BlKCk7Ci0gICAgcmV0dXJuIHNjb3BlID8gc2NvcGUgOiBtX2RvY3VtZW50OwotfQotCiBOb2Rl
UmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURh
dGEoKSk7CkBAIC0xNDY4LDcgKzE0MzMsNyBAQCBDb250YWluZXJOb2RlKiBOb2RlOjpub25TaGFk
b3dCb3VuZGFyeVBhcmVudE5vZGUoKSBjb25zdAogCiBib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVl
KCkKIHsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkgIT0gZG9jdW1lbnQoKTsKKyAgICByZXR1cm4g
dHJlZVNjb3BlKCkgJiYgIXRyZWVTY29wZSgpLT5pc0RvY3VtZW50Tm9kZSgpOwogfQogCiBFbGVt
ZW50KiBOb2RlOjpwYXJlbnRPckhvc3RFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGZk
YWQzNjZlODkzODNmY2FiZmE4NTE3M2YwMjcxZjkwZDQzMjdiNWQuLjA4ODRiMWZjOTMwMzYwMDUw
OTM5NmI5YTMzNDgxMTQ3MmE3NGNiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzk3LDIyICszOTcsMTUg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0aGUgZG9jdW1lbnQgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgbm9kZS4gVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBOVUxMLCBleGNlcHQgaW4gdGhl
IGNhc2UgCiAgICAgLy8gb2YgYSBEb2N1bWVudFR5cGUgbm9kZSB0aGF0IGlzIG5vdCB1c2VkIHdp
dGggYW55IERvY3VtZW50IHlldC4gQSBEb2N1bWVudCBub2RlIHJldHVybnMgaXRzZWxmLgotICAg
IERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodGhpcyk7
Ci0gICAgICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQgcHJldmVudHMg
dGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yCi0g
ICAgICAgIC8vIGR1ZSB0byB0aGUgdmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCku
Ci0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZ
UEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3VtZW50Owot
ICAgIH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAotICAgIFRyZWVTY29wZSog
dHJlZVNjb3BlKCkgY29uc3Q7CisgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdCB7IHJl
dHVybiBtX3RyZWVTY29wZTsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbm9kZSBp
cyBhc3NvY2lhdGVkIHdpdGggYSBkb2N1bWVudCBhbmQgaXMgaW4gaXRzIGFzc29jaWF0ZWQgZG9j
dW1lbnQncwogICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgIGJvb2wgaW5E
b2N1bWVudCgpIGNvbnN0IAotICAgIHsgCi0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8ICFn
ZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CisgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3RyZWVTY29wZSB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50Rmxh
ZykpOwogICAgICAgICByZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAgICAgfQogCkBA
IC03MTgsOSArNzExLDggQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIC8vIFRoZXNlIEFQ
SSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgotICAgIC8v
IHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9kZVJh
cmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRlLgotICAgIE5vZGVSYXJlRGF0
YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwotICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1l
bnQqKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnRJbnRlcm5hbCgpIGNvbnN0OworICAgIHZvaWQg
c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpIHsgbV90cmVlU2NvcGUgPSBzY29wZTsgfQog
CiAgICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJpY2hseUVkaXRhYmxlIH07CiAg
ICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVMZXZlbCkgY29uc3Q7CkBAIC03NjAs
NyArNzUyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25v
ZGVGbGFnczsKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBUcmVlU2NvcGUqIG1fdHJl
ZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9kZSogbV9uZXh0OwogICAgIFJl
bmRlck9iamVjdCogbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA5
YmI3M2ViYTg5NzQ4MmNhYmM0YjY2ZjJlNzQxM2U1ZjY5Mjc1YTQyLi5kMzNlMjhmZDdkNDQ4YWUx
YzY2NTA5NGU0OGUxZGZhYzg3MTczYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBA
IC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExhYmVsc05vZGVM
aXN0OwotY2xhc3MgVHJlZVNjb3BlOwogCiBzdHJ1Y3QgTm9kZUxpc3RzTm9kZURhdGEgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVMaXN0c05vZGVEYXRhKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC05Myw4ICs5Miw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6ICAgIAogICAgIE5vZGVSYXJlRGF0YSgpCi0gICAgICAgIDogbV90cmVlU2NvcGUo
MCkKLSAgICAgICAgLCBtX3RhYkluZGV4KDApCisgICAgICAgIDogbV90YWJJbmRleCgwKQogICAg
ICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNG
b2N1c2VkKGZhbHNlKQogICAgICAgICAsIG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29u
QWZ0ZXJBdHRhY2goZmFsc2UpCkBAIC0xMTgsOSArMTE2LDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gcmFyZURhdGFNYXAoKS5nZXQobm9kZSk7CiAgICAgfQogCi0gICAgVHJlZVNjb3BlKiB0
cmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3RyZWVTY29wZTsgfQotICAgIHZvaWQgc2V0VHJl
ZVNjb3BlKFRyZWVTY29wZSogdHJlZVNjb3BlKSB7IG1fdHJlZVNjb3BlID0gdHJlZVNjb3BlOyB9
Ci0gICAgCiAgICAgdm9pZCBjbGVhck5vZGVMaXN0cygpIHsgbV9ub2RlTGlzdHMuY2xlYXIoKTsg
fQogICAgIHZvaWQgc2V0Tm9kZUxpc3RzKFBhc3NPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IGxp
c3RzKSB7IG1fbm9kZUxpc3RzID0gbGlzdHM7IH0KICAgICBOb2RlTGlzdHNOb2RlRGF0YSogbm9k
ZUxpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlTGlzdHMuZ2V0KCk7IH0KQEAgLTIzOCw3ICsy
MzMsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTm9kZUxpc3RzKE5v
ZGUqKTsKIAotICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgT3duUHRyPE5vZGVMaXN0
c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBSZWZQdHI8RHluYW1pY05vZGVMaXN0OjpDYWNo
ZXM+IG1fY2hpbGROb2RlTGlzdENhY2hlOwogICAgIE93blB0cjxFdmVudFRhcmdldERhdGE+IG1f
ZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGUyY2U5YjA0
M2U5NDRiMWFjNjIyYjU1YzEwMDkxMWM0YmI4MmUwNDkuLjM3NmE0ODQzZDc5OTRiMTkwMjE5YzE1
OTQwYTA1MWNiMDkxOTE1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTQxLDEy
ICs0MSw2IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
ICwgbV9hcHBseUF1dGhvclNoZWV0cyhmYWxzZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwot
ICAgIAotICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUuCi0gICAgc2V0UGFy
ZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKLSAgICAvLyBTaGFkb3cgdHJlZSBzY29wZXMgaGF2ZSB0
aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgotICAgIC8vIFRoaXMgd2F5LCBk
aXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3BlIHBvaW50ZXIuCi0g
ICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOwogfQogCiBTaGFkb3dSb290
Ojp+U2hhZG93Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDkxZjNjMjk1YmVh
YTIyMWZmMTc4OGQ4ZjljODQyNGJkODAwMDE1Y2QuLjM5OWUyOTcxZDJjZmRkNmM1MTNiZGZkMDcz
MzI4ZjQ0NWNmOTkyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQW5j
aG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50LmgiCkBAIC0zOSwxNSArNDAs
MjAgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogVHJlZVNjb3BlOjpUcmVlU2NvcGUo
RG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCiAg
ICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQotICAgICwgbV9w
YXJlbnRUcmVlU2NvcGUoMCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KQorICAg
ICwgbV9yb290VHJlZVNjb3BlKGRvY3VtZW50KQogICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygw
KQogeworICAgIEFTU0VSVCghbV9wYXJlbnRUcmVlU2NvcGUgfHwgbV9wYXJlbnRUcmVlU2NvcGUt
PnJvb3RUcmVlU2NvcGUoKSA9PSBtX3Jvb3RUcmVlU2NvcGUpOworICAgIHNldFRyZWVTY29wZSh0
aGlzKTsKIH0KIAogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKIHsKICAgICBpZiAoaGFzUmFyZURh
dGEoKSkKICAgICAgICAgY2xlYXJSYXJlRGF0YSgpOworICAgIG1fcGFyZW50VHJlZVNjb3BlID0g
MDsKKyAgICBtX3Jvb3RUcmVlU2NvcGUgPSAwOwogfQogCiB2b2lkIFRyZWVTY29wZTo6ZGVzdHJv
eVRyZWVTY29wZURhdGEoKQpAQCAtNTYsNiArNjIsMjcgQEAgdm9pZCBUcmVlU2NvcGU6OmRlc3Ry
b3lUcmVlU2NvcGVEYXRhKCkKICAgICBtX2ltYWdlTWFwc0J5TmFtZS5jbGVhcigpOwogfQogCit2
b2lkIFRyZWVTY29wZTo6c2V0Um9vdFRyZWVTY29wZShEb2N1bWVudCogZG9jdW1lbnQpCit7Cisg
ICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBtYWtlIHRoaXMgYSByb290IHNjb3BlLiBXZSBw
YXNzIHRoZQorICAgIC8vIGRvY3VtZW50IHBhcmFtZXRlciB0byBlbnN1cmUgdGhpcyBvYmplY3Qg
YmVpbmcgRG9jdW1lbnQuIFNpbmNlCisgICAgLy8gdGhlIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSBE
b2N1bWVudCBjdG9yLCBpdCBpbml0aWFsaXplcworICAgIC8vIG1fdHJlZVNjb3BlIGF0IHRoZSBz
YW1lIHRpbWUsIHdoaWNoIHdhcyBpbml0aWFsbHkgc2V0IHRvIG51bGwuCisgICAgQVNTRVJUKHRo
aXMgPT0gZG9jdW1lbnQpOworICAgIEFTU0VSVCghbV9yb290VHJlZVNjb3BlKTsKKyAgICBBU1NF
UlQoIW1fcGFyZW50VHJlZVNjb3BlKTsKKyAgICBtX3Jvb3RUcmVlU2NvcGUgPSBkb2N1bWVudDsK
K30KKwordm9pZCBUcmVlU2NvcGU6OmNsZWFyUm9vdFRyZWVTY29wZSgpCit7CisgICAgQVNTRVJU
KG1fcm9vdFRyZWVTY29wZSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobV90cmVlU2NvcGUgPT0gdGhp
cyk7CisgICAgQVNTRVJUKCFtX3BhcmVudFRyZWVTY29wZSk7CisgICAgbV9yb290VHJlZVNjb3Bl
ID0gMDsKKyAgICBtX3RyZWVTY29wZSA9IDA7Cit9CisKIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJl
bnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKIHsKICAgICAvLyBBIGRvY3Vt
ZW50IG5vZGUgY2Fubm90IGJlIHJlLXBhcmVudGVkLgpAQCAtNjQsNiArOTEsNyBAQCB2b2lkIFRy
ZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29wZSogbmV3UGFyZW50U2NvcGUpCiAg
ICAgQVNTRVJUKG5ld1BhcmVudFNjb3BlKTsKIAogICAgIG1fcGFyZW50VHJlZVNjb3BlID0gbmV3
UGFyZW50U2NvcGU7CisgICAgbV9yb290VHJlZVNjb3BlID0gbmV3UGFyZW50U2NvcGUtPnJvb3RU
cmVlU2NvcGUoKTsKIH0KIAogRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25z
dCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAppbmRl
eCBmZDZjM2NiOGRmOWVmNWE5MDFmMTYzYzJhNjRjNmJiMDQ5Y2QwMDFiLi43NjZjNmI5M2MxMWE0
OWZmMWViZWI4YWRmZDM0MGQxOTNhMDNhNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCkBAIC0z
MSw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKQEAgLTM4LDggKzM5LDEwIEBA
IGNsYXNzIFRyZWVTY29wZSA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKICAgICBmcmllbmQgY2xh
c3MgRG9jdW1lbnQ7CiAKIHB1YmxpYzoKKyAgICBEb2N1bWVudCogcm9vdFRyZWVTY29wZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcm9vdFRyZWVTY29wZTsgfQogICAgIFRyZWVTY29wZSogcGFyZW50VHJl
ZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0KICAgICB2b2lkIHNl
dFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqKTsKKyAgICBib29sIGlzRG9jdW1lbnRTY29wZSgp
IGNvbnN0OwogCiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3Q7CiAgICAgYm9vbCBoYXNFbGVtZW50V2l0aElkKEF0b21pY1N0cmluZ0ltcGwqIGlk
KSBjb25zdDsKQEAgLTcxLDEwICs3NCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgVHJlZVNjb3BlKERv
Y3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CiAgICAgdmlydHVh
bCB+VHJlZVNjb3BlKCk7CiAKKyAgICB2b2lkIHNldFJvb3RUcmVlU2NvcGUoRG9jdW1lbnQqKTsK
KyAgICB2b2lkIGNsZWFyUm9vdFRyZWVTY29wZSgpOworCiAgICAgdm9pZCBkZXN0cm95VHJlZVNj
b3BlRGF0YSgpOwogCiBwcml2YXRlOgogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7
CisgICAgLy8gbV9yb290VHJlZVNjb3BlIGlzIGEgY2FjaGUgYW5kIHNob3VsZCBiZSBzeW5jZWQg
d2l0aCBtX3BhcmVudFRyZWVTY29wZS0+cm9vdFRyZWVTY29wZSgpCisgICAgLy8gZXhjZXB0IG1f
cGFyZW50VHJlZVNjb3BlIGlzIG51bGwsIHdoaWNoIG1lYW5zIHRoaXMgaXMgYSByb290IHNjb3Bl
LgorICAgIERvY3VtZW50KiBtX3Jvb3RUcmVlU2NvcGU7CiAKICAgICBEb2N1bWVudE9yZGVyZWRN
YXAgbV9lbGVtZW50c0J5SWQ7CiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1faW1hZ2VNYXBzQnlO
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCmluZGV4IGFiMTE3OTIz
ZTc4ZDQyMWVjNGQwMDBmOTIzOWE5MTRlMjRjZmM4NjYuLmNhYzMwZGQ5ZWY5YWRhMzY3OTkxMjIw
NDYzMDQ2NzUwM2EyZDMwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5j
cHAKQEAgLTUxLDE0ICs1MSw4IEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05l
d1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAgICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVl
VmVyc2lvbigpOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkpIHsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJl
RGF0YSA9IG5vZGUtPnNldFRyZWVTY29wZShuZXdEb2N1bWVudCA9PSBtX25ld1Njb3BlID8gMCA6
IG1fbmV3U2NvcGUpOwotICAgICAgICBpZiAocmFyZURhdGEgJiYgcmFyZURhdGEtPm5vZGVMaXN0
cygpKSB7Ci0gICAgICAgICAgICByYXJlRGF0YS0+bm9kZUxpc3RzKCktPmludmFsaWRhdGVDYWNo
ZXMoKTsKLSAgICAgICAgICAgIGlmIChtX29sZFNjb3BlKQotICAgICAgICAgICAgICAgIG1fb2xk
U2NvcGUtPnJlbW92ZU5vZGVMaXN0Q2FjaGUoKTsKLSAgICAgICAgICAgIG1fbmV3U2NvcGUtPmFk
ZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICAgICAgfQotCisgICAgICAgIG5vZGUtPnNldFRyZWVTY29w
ZShtX25ld1Njb3BlKTsKKyAgICAgICAgbW92ZU5vZGVMaXN0Q2FjaGVzKG5vZGUpOwogICAgICAg
ICBpZiAod2lsbE1vdmVUb05ld0RvY3VtZW50KQogICAgICAgICAgICAgbW92ZU5vZGVUb05ld0Rv
Y3VtZW50KG5vZGUsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAKQEAgLTEwMSw4ICs5NSw2
IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChO
b2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgICAgIG9sZERvY3VtZW50LT5ndWFyZERl
cmVmKCk7CiAgICAgfQogCi0gICAgbm9kZS0+c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOwotCiAj
aWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7
CiAgICAgb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBvbGRE
b2N1bWVudDsKQEAgLTExMiw0ICsxMDQsMTcgQEAgaW5saW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRl
cjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2MKICAg
ICBBU1NFUlQoZGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQpOwogfQogCitpbmxpbmUgdm9p
ZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZUxpc3RDYWNoZXMoTm9kZSogbm9kZSkgY29uc3QK
K3sKKyAgICBpZiAoIW5vZGUtPmhhc1JhcmVEYXRhKCkpCisgICAgICAgIHJldHVybjsKKyAgICBO
b2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+cmFyZURhdGEoKTsKKyAgICBpZiAoIXJhcmVE
YXRhLT5ub2RlTGlzdHMoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHJhcmVEYXRhLT5ub2RlTGlz
dHMoKS0+aW52YWxpZGF0ZUNhY2hlcygpOworICAgIGlmIChtX29sZFNjb3BlKQorICAgICAgICBt
X29sZFNjb3BlLT5yZW1vdmVOb2RlTGlzdENhY2hlKCk7CisgICAgbV9uZXdTY29wZS0+YWRkTm9k
ZUxpc3RDYWNoZSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlQWRvcHRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaApp
bmRleCBkMmJkNGQ0ZjAxZTdkMjNjYzYzMDVjMTM4MjAwNTU2NTE2ZTU5MjA1Li4xOGI0MzY0MDBk
MTA1ZmEzZjdjYzFiNjAyN2M1YjI5NjUzYjFkMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGVBZG9wdGVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgbW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqKSBjb25zdDsKKyAgICB2b2lkIG1vdmVOb2RlTGlz
dENhY2hlcyhOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBtb3ZlVHJlZVRvTmV3RG9jdW1lbnQoTm9k
ZSosIERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KSBjb25zdDsK
ICAgICB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiwgRG9jdW1lbnQqIG9sZERvY3Vt
ZW50LCBEb2N1bWVudCogbmV3RG9jdW1lbnQpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121818</attachid>
            <date>2012-01-10 02:52:28 -0800</date>
            <delta_ts>2012-01-10 21:03:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120110195226.patch</filename>
            <type>text/plain</type>
            <size>18272</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI3MmIyNDcwY2Q2NTQ4
YzdjNDIzOTI0ZTM4YmY0OWQ4MTQ1NTdhNy4uODA2MTUwZTY1NjA2ZDRhOWMyMzExMmQ3MTI1MjI4
NDljN2JjYzM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTEwICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3Rvcmlu
Z10gUmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgx
NgorCisgICAgICAgIE5vdyBOb2RlOjpkb2N1bWVudCgpIHJldHVybiBtX3RyZWVTY29wZS0+cm9v
dFRyZWVTY29wZSgpIGluc3RlYWQgb2YgTm9kZTo6bV9kb2N1bWVudC4KKyAgICAgICAgRWFjaCBu
b2RlIGluIHNoYWRvdyB0cmVlIGlzIG5vIGxvbmdlciBuZWVkIGl0cyBOb2RlUmFyZURhdGEgaW5z
dGFuY2UgdG8gcG9pbnQgdGhlIFNoYWRvd1Jvb3QuCisKKyAgICAgICAgLSBOb2RlOiBSZXBsYWNl
ZCBOb2RlOjptX2RvY3VlbnQgd2l0aCBOb2RlOjptX3RyZWVTY29wZS4gc2V0RG9jdW1lbnQoKSBp
cyBnb25lLgorICAgICAgICAtIE5vZGVSYXJlRGF0YTogUmVtb3ZlZCBtX3RyZWVTY29wZQorICAg
ICAgICAtIFRyZWVTY29wZTogQWRkZWQgbV9yb290VHJlZVNjb3BlIHRvIG1ha2UgTm9kZTo6ZG9j
dW1lbnQoKSBmYXN0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aXNJblNoYWRvd1RyZWUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgorICAgICAgICAqIGRv
bS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJh
cmVEYXRhKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDog
QWRkZWQgbV9kb2N1ZW50IHdoaWNoIHBvaW50cyB0aGUgcm9vdCBEb2N1bWVudCBvYmplY3Qgb2Yg
dGhlIHNjb3BlIHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6On5UcmVlU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92
ZVRyZWVUb05ld1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1v
dmVOb2RlVG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlTm9kZUxpc3RDYWNoZXMpOiBFeHRyYWN0ZWQuCisgICAgICAgICogZG9tL1RyZWVTY29w
ZUFkb3B0ZXIuaDoKKwogMjAxMi0wMS0wNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmluZyBiZXR3ZWVuIFRyZWVTY29w
ZXMgc2hvdWxkIGJlIGRvbmUgYnkgaXRzIG93biBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGQyYTAyYzk0Zjc5MWQ1NGVhZTcyNjM2ZDY5N2Q0OTllMWQ3NTZhODkuLjc2MWZmNmNl
OTcxNjA2OWE5NGQ3YTE4NzI4ZGNhNjc3N2NlZTNkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtNDMyLDcgKzQzMiw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fd2hlZWxF
dmVudEhhbmRsZXJDb3VudCgwKQogICAgICwgbV9wZW5kaW5nVGFza3NUaW1lcih0aGlzLCAmRG9j
dW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpCiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7
CisgICAgc2V0RG9jdW1lbnQodGhpcyk7CiAKICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hl
VmFsaWQgPSBmYWxzZTsKIApAQCAtNTM4LDcgKzUzOCw2IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQo
KQogICAgIC8vIGlmIHRoZSBEb2N1bWVudFBhcnNlciBvdXRsaXZlcyB0aGUgRG9jdW1lbnQgaXQg
d29uJ3QgY2F1c2UgYmFkbmVzcy4KICAgICBBU1NFUlQoIW1fcGFyc2VyIHx8IG1fcGFyc2VyLT5y
ZWZDb3VudCgpID09IDEpOwogICAgIGRldGFjaFBhcnNlcigpOwotICAgIG1fZG9jdW1lbnQgPSAw
OwogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuY2xlYXIoKTsKIAogICAgIG1fcmVuZGVyQXJl
bmEuY2xlYXIoKTsKQEAgLTExMjcsMTMgKzExMjYsMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29u
dGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAKIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVk
TUlNRVR5cGUoKSBjb25zdAogewotICAgIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQo
KSkKKyAgICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiYXBwbGljYXRp
b24veGh0bWwreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQorICAg
IGlmIChpc1NWR0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0g
ICAgaWYgKG1fZG9jdW1lbnQtPnhtbFN0YW5kYWxvbmUoKSkKKyAgICBpZiAoeG1sU3RhbmRhbG9u
ZSgpKQogICAgICAgICByZXR1cm4gInRleHQveG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
ICJ0ZXh0L2h0bWwiOwogCiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IGxvYWRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0NTA5MmQzZmJlY2EyZTE1YTNkOGY0
MDY2MjE4NTA5OTE1YTIwMTZkLi43OTA0NjI5NWQ4ZDc3NzJjNTUwNzhhZjRjNmJhOWIwYjVmMzI2
N2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTQ1NCwxNCArMTQ1NCw5IEBAIHByaXZhdGU6
CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBE
b2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCiAK
LWlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
dGhpcyA9PSBtX2RvY3VtZW50OwotfQotCiBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9j
dW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0g
ICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2NvcGUoZG9jdW1lbnQpCiAg
ICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkK
QEAgLTE0NzMsNiArMTQ2OCwxMSBAQCBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1l
bnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBUcmVl
U2NvcGU6OmlzRG9jdW1lbnRTY29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQg
PT0gdGhpczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRG9jdW1l
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDJhZjU0NmY4MWJmODg4Y2QxNTQxZWVlNGQyYTczZWZl
ZjdmM2NmNDkuLjljMmJjYjM4NzhiNWZmZGNiNjcwMGMwY2FiNWRlYTM2MzhkY2MzODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKHJl
bmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZG9j
dW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBpZiAo
QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5heE9i
amVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1vdmVO
b2RlRm9yVXNlKHRoaXMpOwogICAgIApAQCAtNDE4LDQxICs0MTgsNiBAQCBOb2RlOjp+Tm9kZSgp
CiAgICAgICAgIGRvYy0+Z3VhcmREZXJlZigpOwogfQogCi12b2lkIE5vZGU6OnNldERvY3VtZW50
KERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBtX2Rv
Y3VtZW50ID09IGRvY3VtZW50KTsKLSAgICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQg
PT0gZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVu
dDsKLX0KLQotTm9kZVJhcmVEYXRhKiBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29w
ZSkKLXsKLSAgICBpZiAoIXNjb3BlKSB7Ci0gICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0g
ICAgICAgICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSByYXJlRGF0YSgpOwotICAgICAgICAgICAg
ZGF0YS0+c2V0VHJlZVNjb3BlKDApOwotICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBOb2RlUmFyZURhdGEqIGRhdGEg
PSBlbnN1cmVSYXJlRGF0YSgpOwotICAgIGRhdGEtPnNldFRyZWVTY29wZShzY29wZSk7Ci0gICAg
cmV0dXJuIGRhdGE7Ci19Ci0KLVRyZWVTY29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKLXsK
LSAgICAvLyBGSVhNRTogVXNpbmcgbV9kb2N1bWVudCBkaXJlY3RseSBpcyBub3QgZ29vZCAtPiBz
ZWUgY29tbWVudCB3aXRoIGRvY3VtZW50KCkgaW4gdGhlIGhlYWRlciBmaWxlLgotICAgIGlmICgh
aGFzUmFyZURhdGEoKSkKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7Ci0gICAgVHJlZVNjb3Bl
KiBzY29wZSA9IHJhcmVEYXRhKCktPnRyZWVTY29wZSgpOwotICAgIHJldHVybiBzY29wZSA/IHNj
b3BlIDogbV9kb2N1bWVudDsKLX0KLQogTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwpAQCAtMTQ2OCw3ICsxNDMzLDcgQEAg
Q29udGFpbmVyTm9kZSogTm9kZTo6bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkgY29uc3QK
IAogYm9vbCBOb2RlOjppc0luU2hhZG93VHJlZSgpCiB7Ci0gICAgcmV0dXJuIHRyZWVTY29wZSgp
ICE9IGRvY3VtZW50KCk7CisgICAgcmV0dXJuIHRyZWVTY29wZSgpICYmICF0cmVlU2NvcGUoKS0+
aXNEb2N1bWVudE5vZGUoKTsKIH0KIAogRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBmZGFkMzY2ZTg5MzgzZmNhYmZhODUxNzNmMDI3MWY5
MGQ0MzI3YjVkLi4wODg0YjFmYzkzMDM2MDA1MDkzOTZiOWEzMzQ4MTE0NzJhNzRjYjAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTM5NywyMiArMzk3LDE1IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMg
dGhlIGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG5vZGUuIFRoaXMgbWV0aG9kIG5ldmVy
IHJldHVybnMgTlVMTCwgZXhjZXB0IGluIHRoZSBjYXNlIAogICAgIC8vIG9mIGEgRG9jdW1lbnRU
eXBlIG5vZGUgdGhhdCBpcyBub3QgdXNlZCB3aXRoIGFueSBEb2N1bWVudCB5ZXQuIEEgRG9jdW1l
bnQgbm9kZSByZXR1cm5zIGl0c2VsZi4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHRoaXMpOwotICAgICAgICAvLyBGSVhNRTogYmVsb3cgQVNT
RVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1lbnQoKSBpbiB0aGUg
Y29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgotICAgICAgICAvLyBkdWUgdG8gdGhlIHZpcnR1YWwg
ZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8
fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1lbnQoKSkpOwot
ICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3Q7CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0OworICAgIFRyZWVT
Y29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7IH0KIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRoIGEgZG9jdW1lbnQg
YW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKICAgICAvLyBub2RlIHRyZWUsIGZh
bHNlIG90aGVyd2lzZS4KLSAgICBib29sIGluRG9jdW1lbnQoKSBjb25zdCAKLSAgICB7IAotICAg
ICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOworICAg
IGJvb2wgaW5Eb2N1bWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90cmVlU2Nv
cGUgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdldEZsYWco
SW5Eb2N1bWVudEZsYWcpOwogICAgIH0KIApAQCAtNzE4LDkgKzcxMSw4IEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0
cmVlIHNjb3BlIG1pZ3JhdGlvbi4KLSAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVS
YXJlRGF0YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBj
YWxsZXIgc2l0ZS4KLSAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsK
LSAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
SW50ZXJuYWwoKSBjb25zdDsKKyAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3Bl
KSB7IG1fdHJlZVNjb3BlID0gc2NvcGU7IH0KIAogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVk
aXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVk
aXRhYmxlTGV2ZWwpIGNvbnN0OwpAQCAtNzYwLDcgKzc1Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIG11dGFibGUgdWludDMyX3QgbV9ub2RlRmxhZ3M7Ci0gICAgRG9jdW1lbnQqIG1fZG9j
dW1lbnQ7CisgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBOb2RlKiBtX3ByZXZpb3Vz
OwogICAgIE5vZGUqIG1fbmV4dDsKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggOWJiNzNlYmE4OTc0ODJjYWJjNGI2NmYyZTc0MTNl
NWY2OTI3NWE0Mi4uZDMzZTI4ZmQ3ZDQ0OGFlMWM2NjUwOTRlNDhlMWRmYWM4NzE3M2MxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBMYWJlbHNOb2RlTGlzdDsKLWNsYXNzIFRyZWVTY29wZTsKIAogc3Ry
dWN0IE5vZGVMaXN0c05vZGVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlTGlz
dHNOb2RlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTMsOCArOTIsNyBAQCBj
bGFzcyBOb2RlUmFyZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0
YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKICAgICBOb2RlUmFyZURh
dGEoKQotICAgICAgICA6IG1fdHJlZVNjb3BlKDApCi0gICAgICAgICwgbV90YWJJbmRleCgwKQor
ICAgICAgICA6IG1fdGFiSW5kZXgoMCkKICAgICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGlj
aXRseShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNlZChmYWxzZSkKICAgICAgICAgLCBtX25l
ZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKGZhbHNlKQpAQCAtMTE4LDkg
KzExNiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KG5vZGUp
OwogICAgIH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90
cmVlU2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRyZWVTY29wZSkg
eyBtX3RyZWVTY29wZSA9IHRyZWVTY29wZTsgfQotICAgIAogICAgIHZvaWQgY2xlYXJOb2RlTGlz
dHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2b2lkIHNldE5vZGVMaXN0cyhQYXNz
T3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBtX25vZGVMaXN0cyA9IGxpc3RzOyB9
CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZUxpc3RzLmdldCgpOyB9CkBAIC0yMzgsNyArMjMzLDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZU5vZGVMaXN0cyhOb2RlKik7CiAKLSAgICBUcmVlU2NvcGUqIG1fdHJl
ZVNjb3BlOwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAgICAg
UmVmUHRyPER5bmFtaWNOb2RlTGlzdDo6Q2FjaGVzPiBtX2NoaWxkTm9kZUxpc3RDYWNoZTsKICAg
ICBPd25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAppbmRleCBlMmNlOWIwNDNlOTQ0YjFhYzYyMmI1NWMxMDA5MTFjNGJiODJl
MDQ5Li4zNzZhNDg0M2Q3OTk0YjE5MDIxOWMxNTk0MGEwNTFjYjA5MTkxNTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC00MSwxMiArNDEsNiBAQCBTaGFkb3dSb290OjpTaGFkb3dS
b290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fYXBwbHlBdXRob3JTaGVldHMoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICAKLSAgICAvLyBBc3N1bWUgZG9jdW1lbnQg
YXMgcGFyZW50IHNjb3BlLgotICAgIHNldFBhcmVudFRyZWVTY29wZShkb2N1bWVudCk7Ci0gICAg
Ly8gU2hhZG93IHRyZWUgc2NvcGVzIGhhdmUgdGhlIHNjb3BlIHBvaW50ZXIgcG9pbnQgdG8gdGhl
bXNlbHZlcy4KLSAgICAvLyBUaGlzIHdheSwgZGlyZWN0IGNoaWxkcmVuIHdpbGwgcmVjZWl2ZSB0
aGUgY29ycmVjdCBzY29wZSBwb2ludGVyLgotICAgIGVuc3VyZVJhcmVEYXRhKCktPnNldFRyZWVT
Y29wZSh0aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmNwcAppbmRleCA5MWYzYzI5NWJlYWEyMjFmZjE3ODhkOGY5Yzg0MjRiZDgwMDAxNWNk
Li4zNTk2YWIwY2U1NmI0MWVlMTU2MjljNGU2NzQ2ODkxMDFhMjAxN2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlRyZWVTY29wZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TWFwRWxlbWVudC5oIgpAQCAtMzksMTUgKzQwLDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIFRyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0
aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQogICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwg
Y29uc3RydWN0aW9uVHlwZSkKLSAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX3Bh
cmVudFRyZWVTY29wZShkb2N1bWVudCkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAg
LCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCiB7CisgICAgQVNTRVJUKCFtX3BhcmVudFRyZWVTY29w
ZSB8fCBtX3BhcmVudFRyZWVTY29wZS0+ZG9jdW1lbnQoKSA9PSBtX2RvY3VtZW50KTsKKyAgICBt
X3RyZWVTY29wZSA9IHRoaXM7CiB9CiAKIFRyZWVTY29wZTo6flRyZWVTY29wZSgpCiB7CiAgICAg
aWYgKGhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGNsZWFyUmFyZURhdGEoKTsKKyAgICBtX3BhcmVu
dFRyZWVTY29wZSA9IDA7CisgICAgbV9kb2N1bWVudCA9IDA7CisgICAgbV90cmVlU2NvcGUgPSAw
OwogfQogCiB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQpAQCAtNTYsNiAr
NjMsMTggQEAgdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkKICAgICBtX2lt
YWdlTWFwc0J5TmFtZS5jbGVhcigpOwogfQogCit2b2lkIFRyZWVTY29wZTo6c2V0RG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbWFr
ZSB0aGlzIGEgcm9vdCBzY29wZS4gV2UgcGFzcyB0aGUKKyAgICAvLyBkb2N1bWVudCBwYXJhbWV0
ZXIgdG8gZW5zdXJlIHRoaXMgb2JqZWN0IGJlaW5nIERvY3VtZW50LiBTaW5jZQorICAgIC8vIHRo
ZSBtZXRob2QgaXMgY2FsbGVkIGZyb20gRG9jdW1lbnQgY3RvciwgaXQgaW5pdGlhbGl6ZXMKKyAg
ICAvLyBtX3RyZWVTY29wZSBhdCB0aGUgc2FtZSB0aW1lLCB3aGljaCB3YXMgaW5pdGlhbGx5IHNl
dCB0byBudWxsLgorICAgIEFTU0VSVCh0aGlzID09IGRvY3VtZW50KTsKKyAgICBBU1NFUlQoIW1f
ZG9jdW1lbnQpOworICAgIEFTU0VSVCghbV9wYXJlbnRUcmVlU2NvcGUpOworICAgIG1fZG9jdW1l
bnQgPSBkb2N1bWVudDsKK30KKwogdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShU
cmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogewogICAgIC8vIEEgZG9jdW1lbnQgbm9kZSBjYW5u
b3QgYmUgcmUtcGFyZW50ZWQuCkBAIC02NCw2ICs4Myw3IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQ
YXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKICAgICBBU1NFUlQobmV3
UGFyZW50U2NvcGUpOwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsK
KyAgICBtX2RvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPmRvY3VtZW50KCk7CiB9CiAKIEVsZW1l
bnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50
SWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggZmQ2YzNjYjhkZjllZjVhOTAxZjE2
M2MyYTY0YzZiYjA0OWNkMDAxYi4uZDEwM2I1NjE0OTE4ZGM4MjFiNzQ3OWYxNGNlMDJhMDhiM2Q1
ZGM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhU
TUxNYXBFbGVtZW50OwogCkBAIC0zOCw4ICszOSwxMCBAQCBjbGFzcyBUcmVlU2NvcGUgOiBwdWJs
aWMgQ29udGFpbmVyTm9kZSB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwogCiBwdWJsaWM6
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQog
ICAgIFRyZWVTY29wZSogcGFyZW50VHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRU
cmVlU2NvcGU7IH0KICAgICB2b2lkIHNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqKTsKKyAg
ICBib29sIGlzRG9jdW1lbnRTY29wZSgpIGNvbnN0OwogCiAgICAgRWxlbWVudCogZ2V0RWxlbWVu
dEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBoYXNFbGVtZW50V2l0
aElkKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25zdDsKQEAgLTcxLDEwICs3NCwxNCBAQCBwcm90
ZWN0ZWQ6CiAgICAgVHJlZVNjb3BlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0
ZUNvbnRhaW5lcik7CiAgICAgdmlydHVhbCB+VHJlZVNjb3BlKCk7CiAKKyAgICB2b2lkIHNldERv
Y3VtZW50KERvY3VtZW50Kik7CiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCiBw
cml2YXRlOgogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CisgICAgLy8gbV9kb2N1
bWVudCBpcyBhIGNhY2hlIGFuZCBzaG91bGQgYmUgc3luY2VkIHdpdGggbV9wYXJlbnRUcmVlU2Nv
cGUtPmRvY3VtZW50KCkKKyAgICAvLyBleGNlcHQgbV9wYXJlbnRUcmVlU2NvcGUgaXMgbnVsbCwg
d2hpY2ggbWVhbnMgdGhpcyBpcyBhIHJvb3Qgc2NvcGUuCisgICAgRG9jdW1lbnQqIG1fZG9jdW1l
bnQ7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CiAgICAgRG9jdW1l
bnRPcmRlcmVkTWFwIG1faW1hZ2VNYXBzQnlOYW1lOwpAQCAtOTMsNiArMTAwLDI3IEBAIGlubGlu
ZSBib29sIFRyZWVTY29wZTo6Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQpIGNvCiAgICAgcmV0dXJuIG1fZWxlbWVudHNCeUlkLmNvbnRhaW5zTXVs
dGlwbGUoaWQuaW1wbCgpKTsKIH0KIAorLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVz
ZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2Fu
dCB0byBpbmxpbmUgdGhlbS4KKworaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBj
b25zdAoreworICAgIHJldHVybiB0aGlzID09IG1fdHJlZVNjb3BlICYmIG1fdHJlZVNjb3BlLT5p
c0RvY3VtZW50U2NvcGUoKTsKK30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVudElu
dGVybmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTElLRUxZKDAgIT0gbV90cmVlU2NvcGUpID8g
bV90cmVlU2NvcGUtPmRvY3VtZW50KCkgOiAwOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6
OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQodGhpcyk7CisgICAgLy8gRklYTUU6IGJl
bG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkg
aW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKKyAgICAvLyBkdWUgdG8gdGhlIHZpcnR1
YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgorICAgIEFTU0VSVChkb2N1bWVudEludGVy
bmFsKCkgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50
KCkpKTsKKyAgICByZXR1cm4gZG9jdW1lbnRJbnRlcm5hbCgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBUcmVlU2NvcGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwCmluZGV4IGFiMTE3OTIzZTc4ZDQyMWVjNGQwMDBmOTIzOWE5MTRlMjRj
ZmM4NjYuLmNhYzMwZGQ5ZWY5YWRhMzY3OTkxMjIwNDYzMDQ2NzUwM2EyZDMwNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKQEAgLTUxLDE0ICs1MSw4IEBAIHZvaWQg
VHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAg
ICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgZm9yIChOb2Rl
KiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkp
IHsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnNldFRyZWVTY29wZShu
ZXdEb2N1bWVudCA9PSBtX25ld1Njb3BlID8gMCA6IG1fbmV3U2NvcGUpOwotICAgICAgICBpZiAo
cmFyZURhdGEgJiYgcmFyZURhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgICAgICByYXJlRGF0
YS0+bm9kZUxpc3RzKCktPmludmFsaWRhdGVDYWNoZXMoKTsKLSAgICAgICAgICAgIGlmIChtX29s
ZFNjb3BlKQotICAgICAgICAgICAgICAgIG1fb2xkU2NvcGUtPnJlbW92ZU5vZGVMaXN0Q2FjaGUo
KTsKLSAgICAgICAgICAgIG1fbmV3U2NvcGUtPmFkZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICAgICAg
fQotCisgICAgICAgIG5vZGUtPnNldFRyZWVTY29wZShtX25ld1Njb3BlKTsKKyAgICAgICAgbW92
ZU5vZGVMaXN0Q2FjaGVzKG5vZGUpOwogICAgICAgICBpZiAod2lsbE1vdmVUb05ld0RvY3VtZW50
KQogICAgICAgICAgICAgbW92ZU5vZGVUb05ld0RvY3VtZW50KG5vZGUsIG9sZERvY3VtZW50LCBu
ZXdEb2N1bWVudCk7CiAKQEAgLTEwMSw4ICs5NSw2IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFk
b3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9j
CiAgICAgICAgIG9sZERvY3VtZW50LT5ndWFyZERlcmVmKCk7CiAgICAgfQogCi0gICAgbm9kZS0+
c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVU
b05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgb2xkRG9jdW1lbnREaWRNb3ZlVG9O
ZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBvbGREb2N1bWVudDsKQEAgLTExMiw0ICsxMDQsMTcg
QEAgaW5saW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5v
ZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2MKICAgICBBU1NFUlQoZGlkTW92ZVRvTmV3RG9jdW1l
bnRXYXNDYWxsZWQpOwogfQogCitpbmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9k
ZUxpc3RDYWNoZXMoTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUtPmhhc1JhcmVE
YXRhKCkpCisgICAgICAgIHJldHVybjsKKyAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9k
ZS0+cmFyZURhdGEoKTsKKyAgICBpZiAoIXJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hlcygpOwor
ICAgIGlmIChtX29sZFNjb3BlKQorICAgICAgICBtX29sZFNjb3BlLT5yZW1vdmVOb2RlTGlzdENh
Y2hlKCk7CisgICAgbV9uZXdTY29wZS0+YWRkTm9kZUxpc3RDYWNoZSgpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaAppbmRleCBkMmJkNGQ0ZjAxZTdkMjNjYzYzMDVj
MTM4MjAwNTU2NTE2ZTU5MjA1Li4xOGI0MzY0MDBkMTA1ZmEzZjdjYzFiNjAyN2M1YjI5NjUzYjFk
MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgbW92ZVRyZWVUb05ld1Njb3BlKE5vZGUq
KSBjb25zdDsKKyAgICB2b2lkIG1vdmVOb2RlTGlzdENhY2hlcyhOb2RlKikgY29uc3Q7CiAgICAg
dm9pZCBtb3ZlVHJlZVRvTmV3RG9jdW1lbnQoTm9kZSosIERvY3VtZW50KiBvbGREb2N1bWVudCwg
RG9jdW1lbnQqIG5ld0RvY3VtZW50KSBjb25zdDsKICAgICB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1
bWVudChOb2RlKiwgRG9jdW1lbnQqIG9sZERvY3VtZW50LCBEb2N1bWVudCogbmV3RG9jdW1lbnQp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rp
b25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5NDM4ZjQ1OWRjZmExMzQuLjVi
ZjU0NTQxMzIzYzA3OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCIK
IAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgog
I2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMThjNWNkMmY3MWMzZmRiNDhkNTQ2
MGFkN2ZmODg4MTk5YzgyNmFiYS4uZDIwNzgzMDg0OGI1MjMxMGNjYmY1OTMyZDYyODIxYjBlMDU2
Mzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVO
b2RlQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121969</attachid>
            <date>2012-01-10 21:03:23 -0800</date>
            <delta_ts>2012-02-12 20:39:47 -0800</delta_ts>
            <desc>Just for examining  ews</desc>
            <filename>bug-59816-20120111140321.patch</filename>
            <type>text/plain</type>
            <size>18811</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI3MmIyNDcwY2Q2NTQ4
YzdjNDIzOTI0ZTM4YmY0OWQ4MTQ1NTdhNy4uODA2MTUwZTY1NjA2ZDRhOWMyMzExMmQ3MTI1MjI4
NDljN2JjYzM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTEwICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3Rvcmlu
Z10gUmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgx
NgorCisgICAgICAgIE5vdyBOb2RlOjpkb2N1bWVudCgpIHJldHVybiBtX3RyZWVTY29wZS0+cm9v
dFRyZWVTY29wZSgpIGluc3RlYWQgb2YgTm9kZTo6bV9kb2N1bWVudC4KKyAgICAgICAgRWFjaCBu
b2RlIGluIHNoYWRvdyB0cmVlIGlzIG5vIGxvbmdlciBuZWVkIGl0cyBOb2RlUmFyZURhdGEgaW5z
dGFuY2UgdG8gcG9pbnQgdGhlIFNoYWRvd1Jvb3QuCisKKyAgICAgICAgLSBOb2RlOiBSZXBsYWNl
ZCBOb2RlOjptX2RvY3VlbnQgd2l0aCBOb2RlOjptX3RyZWVTY29wZS4gc2V0RG9jdW1lbnQoKSBp
cyBnb25lLgorICAgICAgICAtIE5vZGVSYXJlRGF0YTogUmVtb3ZlZCBtX3RyZWVTY29wZQorICAg
ICAgICAtIFRyZWVTY29wZTogQWRkZWQgbV9yb290VHJlZVNjb3BlIHRvIG1ha2UgTm9kZTo6ZG9j
dW1lbnQoKSBmYXN0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aXNJblNoYWRvd1RyZWUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgorICAgICAgICAqIGRv
bS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJh
cmVEYXRhKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDog
QWRkZWQgbV9kb2N1ZW50IHdoaWNoIHBvaW50cyB0aGUgcm9vdCBEb2N1bWVudCBvYmplY3Qgb2Yg
dGhlIHNjb3BlIHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6On5UcmVlU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92
ZVRyZWVUb05ld1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1v
dmVOb2RlVG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlTm9kZUxpc3RDYWNoZXMpOiBFeHRyYWN0ZWQuCisgICAgICAgICogZG9tL1RyZWVTY29w
ZUFkb3B0ZXIuaDoKKwogMjAxMi0wMS0wNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmluZyBiZXR3ZWVuIFRyZWVTY29w
ZXMgc2hvdWxkIGJlIGRvbmUgYnkgaXRzIG93biBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGQyYTAyYzk0Zjc5MWQ1NGVhZTcyNjM2ZDY5N2Q0OTllMWQ3NTZhODkuLjc2MWZmNmNl
OTcxNjA2OWE5NGQ3YTE4NzI4ZGNhNjc3N2NlZTNkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtNDMyLDcgKzQzMiw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fd2hlZWxF
dmVudEhhbmRsZXJDb3VudCgwKQogICAgICwgbV9wZW5kaW5nVGFza3NUaW1lcih0aGlzLCAmRG9j
dW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpCiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7
CisgICAgc2V0RG9jdW1lbnQodGhpcyk7CiAKICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hl
VmFsaWQgPSBmYWxzZTsKIApAQCAtNTM4LDcgKzUzOCw2IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQo
KQogICAgIC8vIGlmIHRoZSBEb2N1bWVudFBhcnNlciBvdXRsaXZlcyB0aGUgRG9jdW1lbnQgaXQg
d29uJ3QgY2F1c2UgYmFkbmVzcy4KICAgICBBU1NFUlQoIW1fcGFyc2VyIHx8IG1fcGFyc2VyLT5y
ZWZDb3VudCgpID09IDEpOwogICAgIGRldGFjaFBhcnNlcigpOwotICAgIG1fZG9jdW1lbnQgPSAw
OwogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuY2xlYXIoKTsKIAogICAgIG1fcmVuZGVyQXJl
bmEuY2xlYXIoKTsKQEAgLTExMjcsMTMgKzExMjYsMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29u
dGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAKIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVk
TUlNRVR5cGUoKSBjb25zdAogewotICAgIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQo
KSkKKyAgICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiYXBwbGljYXRp
b24veGh0bWwreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQorICAg
IGlmIChpc1NWR0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0g
ICAgaWYgKG1fZG9jdW1lbnQtPnhtbFN0YW5kYWxvbmUoKSkKKyAgICBpZiAoeG1sU3RhbmRhbG9u
ZSgpKQogICAgICAgICByZXR1cm4gInRleHQveG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
ICJ0ZXh0L2h0bWwiOwogCiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IGxvYWRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0NTA5MmQzZmJlY2EyZTE1YTNkOGY0
MDY2MjE4NTA5OTE1YTIwMTZkLi43OTA0NjI5NWQ4ZDc3NzJjNTUwNzhhZjRjNmJhOWIwYjVmMzI2
N2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTQ1NCwxNCArMTQ1NCw5IEBAIHByaXZhdGU6
CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBE
b2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCiAK
LWlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
dGhpcyA9PSBtX2RvY3VtZW50OwotfQotCiBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9j
dW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0g
ICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2NvcGUoZG9jdW1lbnQpCiAg
ICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkK
QEAgLTE0NzMsNiArMTQ2OCwxMSBAQCBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1l
bnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBUcmVl
U2NvcGU6OmlzRG9jdW1lbnRTY29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQg
PT0gdGhpczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRG9jdW1l
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDJhZjU0NmY4MWJmODg4Y2QxNTQxZWVlNGQyYTczZWZl
ZjdmM2NmNDkuLjljMmJjYjM4NzhiNWZmZGNiNjcwMGMwY2FiNWRlYTM2MzhkY2MzODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKHJl
bmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZG9j
dW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBpZiAo
QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5heE9i
amVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1vdmVO
b2RlRm9yVXNlKHRoaXMpOwogICAgIApAQCAtNDE4LDQxICs0MTgsNiBAQCBOb2RlOjp+Tm9kZSgp
CiAgICAgICAgIGRvYy0+Z3VhcmREZXJlZigpOwogfQogCi12b2lkIE5vZGU6OnNldERvY3VtZW50
KERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBtX2Rv
Y3VtZW50ID09IGRvY3VtZW50KTsKLSAgICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQg
PT0gZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVu
dDsKLX0KLQotTm9kZVJhcmVEYXRhKiBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29w
ZSkKLXsKLSAgICBpZiAoIXNjb3BlKSB7Ci0gICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0g
ICAgICAgICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSByYXJlRGF0YSgpOwotICAgICAgICAgICAg
ZGF0YS0+c2V0VHJlZVNjb3BlKDApOwotICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBOb2RlUmFyZURhdGEqIGRhdGEg
PSBlbnN1cmVSYXJlRGF0YSgpOwotICAgIGRhdGEtPnNldFRyZWVTY29wZShzY29wZSk7Ci0gICAg
cmV0dXJuIGRhdGE7Ci19Ci0KLVRyZWVTY29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKLXsK
LSAgICAvLyBGSVhNRTogVXNpbmcgbV9kb2N1bWVudCBkaXJlY3RseSBpcyBub3QgZ29vZCAtPiBz
ZWUgY29tbWVudCB3aXRoIGRvY3VtZW50KCkgaW4gdGhlIGhlYWRlciBmaWxlLgotICAgIGlmICgh
aGFzUmFyZURhdGEoKSkKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7Ci0gICAgVHJlZVNjb3Bl
KiBzY29wZSA9IHJhcmVEYXRhKCktPnRyZWVTY29wZSgpOwotICAgIHJldHVybiBzY29wZSA/IHNj
b3BlIDogbV9kb2N1bWVudDsKLX0KLQogTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwpAQCAtMTQ2OCw3ICsxNDMzLDcgQEAg
Q29udGFpbmVyTm9kZSogTm9kZTo6bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkgY29uc3QK
IAogYm9vbCBOb2RlOjppc0luU2hhZG93VHJlZSgpCiB7Ci0gICAgcmV0dXJuIHRyZWVTY29wZSgp
ICE9IGRvY3VtZW50KCk7CisgICAgcmV0dXJuIHRyZWVTY29wZSgpICYmICF0cmVlU2NvcGUoKS0+
aXNEb2N1bWVudE5vZGUoKTsKIH0KIAogRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBmZGFkMzY2ZTg5MzgzZmNhYmZhODUxNzNmMDI3MWY5
MGQ0MzI3YjVkLi4wODg0YjFmYzkzMDM2MDA1MDkzOTZiOWEzMzQ4MTE0NzJhNzRjYjAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTM5NywyMiArMzk3LDE1IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMg
dGhlIGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG5vZGUuIFRoaXMgbWV0aG9kIG5ldmVy
IHJldHVybnMgTlVMTCwgZXhjZXB0IGluIHRoZSBjYXNlIAogICAgIC8vIG9mIGEgRG9jdW1lbnRU
eXBlIG5vZGUgdGhhdCBpcyBub3QgdXNlZCB3aXRoIGFueSBEb2N1bWVudCB5ZXQuIEEgRG9jdW1l
bnQgbm9kZSByZXR1cm5zIGl0c2VsZi4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHRoaXMpOwotICAgICAgICAvLyBGSVhNRTogYmVsb3cgQVNT
RVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1lbnQoKSBpbiB0aGUg
Y29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgotICAgICAgICAvLyBkdWUgdG8gdGhlIHZpcnR1YWwg
ZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8
fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1lbnQoKSkpOwot
ICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3Q7CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0OworICAgIFRyZWVT
Y29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7IH0KIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRoIGEgZG9jdW1lbnQg
YW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKICAgICAvLyBub2RlIHRyZWUsIGZh
bHNlIG90aGVyd2lzZS4KLSAgICBib29sIGluRG9jdW1lbnQoKSBjb25zdCAKLSAgICB7IAotICAg
ICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOworICAg
IGJvb2wgaW5Eb2N1bWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90cmVlU2Nv
cGUgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdldEZsYWco
SW5Eb2N1bWVudEZsYWcpOwogICAgIH0KIApAQCAtNzE4LDkgKzcxMSw4IEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0
cmVlIHNjb3BlIG1pZ3JhdGlvbi4KLSAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVS
YXJlRGF0YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBj
YWxsZXIgc2l0ZS4KLSAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsK
LSAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
SW50ZXJuYWwoKSBjb25zdDsKKyAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3Bl
KSB7IG1fdHJlZVNjb3BlID0gc2NvcGU7IH0KIAogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVk
aXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVk
aXRhYmxlTGV2ZWwpIGNvbnN0OwpAQCAtNzYwLDcgKzc1Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIG11dGFibGUgdWludDMyX3QgbV9ub2RlRmxhZ3M7Ci0gICAgRG9jdW1lbnQqIG1fZG9j
dW1lbnQ7CisgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBOb2RlKiBtX3ByZXZpb3Vz
OwogICAgIE5vZGUqIG1fbmV4dDsKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggOWJiNzNlYmE4OTc0ODJjYWJjNGI2NmYyZTc0MTNl
NWY2OTI3NWE0Mi4uZDMzZTI4ZmQ3ZDQ0OGFlMWM2NjUwOTRlNDhlMWRmYWM4NzE3M2MxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBMYWJlbHNOb2RlTGlzdDsKLWNsYXNzIFRyZWVTY29wZTsKIAogc3Ry
dWN0IE5vZGVMaXN0c05vZGVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlTGlz
dHNOb2RlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTMsOCArOTIsNyBAQCBj
bGFzcyBOb2RlUmFyZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0
YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKICAgICBOb2RlUmFyZURh
dGEoKQotICAgICAgICA6IG1fdHJlZVNjb3BlKDApCi0gICAgICAgICwgbV90YWJJbmRleCgwKQor
ICAgICAgICA6IG1fdGFiSW5kZXgoMCkKICAgICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGlj
aXRseShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNlZChmYWxzZSkKICAgICAgICAgLCBtX25l
ZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKGZhbHNlKQpAQCAtMTE4LDkg
KzExNiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KG5vZGUp
OwogICAgIH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90
cmVlU2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRyZWVTY29wZSkg
eyBtX3RyZWVTY29wZSA9IHRyZWVTY29wZTsgfQotICAgIAogICAgIHZvaWQgY2xlYXJOb2RlTGlz
dHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2b2lkIHNldE5vZGVMaXN0cyhQYXNz
T3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBtX25vZGVMaXN0cyA9IGxpc3RzOyB9
CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZUxpc3RzLmdldCgpOyB9CkBAIC0yMzgsNyArMjMzLDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZU5vZGVMaXN0cyhOb2RlKik7CiAKLSAgICBUcmVlU2NvcGUqIG1fdHJl
ZVNjb3BlOwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAgICAg
UmVmUHRyPER5bmFtaWNOb2RlTGlzdDo6Q2FjaGVzPiBtX2NoaWxkTm9kZUxpc3RDYWNoZTsKICAg
ICBPd25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAppbmRleCBlMmNlOWIwNDNlOTQ0YjFhYzYyMmI1NWMxMDA5MTFjNGJiODJl
MDQ5Li4zNzZhNDg0M2Q3OTk0YjE5MDIxOWMxNTk0MGEwNTFjYjA5MTkxNTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC00MSwxMiArNDEsNiBAQCBTaGFkb3dSb290OjpTaGFkb3dS
b290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fYXBwbHlBdXRob3JTaGVldHMoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICAKLSAgICAvLyBBc3N1bWUgZG9jdW1lbnQg
YXMgcGFyZW50IHNjb3BlLgotICAgIHNldFBhcmVudFRyZWVTY29wZShkb2N1bWVudCk7Ci0gICAg
Ly8gU2hhZG93IHRyZWUgc2NvcGVzIGhhdmUgdGhlIHNjb3BlIHBvaW50ZXIgcG9pbnQgdG8gdGhl
bXNlbHZlcy4KLSAgICAvLyBUaGlzIHdheSwgZGlyZWN0IGNoaWxkcmVuIHdpbGwgcmVjZWl2ZSB0
aGUgY29ycmVjdCBzY29wZSBwb2ludGVyLgotICAgIGVuc3VyZVJhcmVEYXRhKCktPnNldFRyZWVT
Y29wZSh0aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmNwcAppbmRleCA5MWYzYzI5NWJlYWEyMjFmZjE3ODhkOGY5Yzg0MjRiZDgwMDAxNWNk
Li4zNTk2YWIwY2U1NmI0MWVlMTU2MjljNGU2NzQ2ODkxMDFhMjAxN2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlRyZWVTY29wZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TWFwRWxlbWVudC5oIgpAQCAtMzksMTUgKzQwLDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIFRyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0
aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQogICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwg
Y29uc3RydWN0aW9uVHlwZSkKLSAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX3Bh
cmVudFRyZWVTY29wZShkb2N1bWVudCkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAg
LCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCiB7CisgICAgQVNTRVJUKCFtX3BhcmVudFRyZWVTY29w
ZSB8fCBtX3BhcmVudFRyZWVTY29wZS0+ZG9jdW1lbnQoKSA9PSBtX2RvY3VtZW50KTsKKyAgICBt
X3RyZWVTY29wZSA9IHRoaXM7CiB9CiAKIFRyZWVTY29wZTo6flRyZWVTY29wZSgpCiB7CiAgICAg
aWYgKGhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGNsZWFyUmFyZURhdGEoKTsKKyAgICBtX3BhcmVu
dFRyZWVTY29wZSA9IDA7CisgICAgbV9kb2N1bWVudCA9IDA7CisgICAgbV90cmVlU2NvcGUgPSAw
OwogfQogCiB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQpAQCAtNTYsNiAr
NjMsMTggQEAgdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkKICAgICBtX2lt
YWdlTWFwc0J5TmFtZS5jbGVhcigpOwogfQogCit2b2lkIFRyZWVTY29wZTo6c2V0RG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbWFr
ZSB0aGlzIGEgcm9vdCBzY29wZS4gV2UgcGFzcyB0aGUKKyAgICAvLyBkb2N1bWVudCBwYXJhbWV0
ZXIgdG8gZW5zdXJlIHRoaXMgb2JqZWN0IGJlaW5nIERvY3VtZW50LiBTaW5jZQorICAgIC8vIHRo
ZSBtZXRob2QgaXMgY2FsbGVkIGZyb20gRG9jdW1lbnQgY3RvciwgaXQgaW5pdGlhbGl6ZXMKKyAg
ICAvLyBtX3RyZWVTY29wZSBhdCB0aGUgc2FtZSB0aW1lLCB3aGljaCB3YXMgaW5pdGlhbGx5IHNl
dCB0byBudWxsLgorICAgIEFTU0VSVCh0aGlzID09IGRvY3VtZW50KTsKKyAgICBBU1NFUlQoIW1f
ZG9jdW1lbnQpOworICAgIEFTU0VSVCghbV9wYXJlbnRUcmVlU2NvcGUpOworICAgIG1fZG9jdW1l
bnQgPSBkb2N1bWVudDsKK30KKwogdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShU
cmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogewogICAgIC8vIEEgZG9jdW1lbnQgbm9kZSBjYW5u
b3QgYmUgcmUtcGFyZW50ZWQuCkBAIC02NCw2ICs4Myw3IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQ
YXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKICAgICBBU1NFUlQobmV3
UGFyZW50U2NvcGUpOwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsK
KyAgICBtX2RvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPmRvY3VtZW50KCk7CiB9CiAKIEVsZW1l
bnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50
SWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggZmQ2YzNjYjhkZjllZjVhOTAxZjE2
M2MyYTY0YzZiYjA0OWNkMDAxYi4uZDEwM2I1NjE0OTE4ZGM4MjFiNzQ3OWYxNGNlMDJhMDhiM2Q1
ZGM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhU
TUxNYXBFbGVtZW50OwogCkBAIC0zOCw4ICszOSwxMCBAQCBjbGFzcyBUcmVlU2NvcGUgOiBwdWJs
aWMgQ29udGFpbmVyTm9kZSB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwogCiBwdWJsaWM6
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQog
ICAgIFRyZWVTY29wZSogcGFyZW50VHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRU
cmVlU2NvcGU7IH0KICAgICB2b2lkIHNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqKTsKKyAg
ICBib29sIGlzRG9jdW1lbnRTY29wZSgpIGNvbnN0OwogCiAgICAgRWxlbWVudCogZ2V0RWxlbWVu
dEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBoYXNFbGVtZW50V2l0
aElkKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25zdDsKQEAgLTcxLDEwICs3NCwxNCBAQCBwcm90
ZWN0ZWQ6CiAgICAgVHJlZVNjb3BlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0
ZUNvbnRhaW5lcik7CiAgICAgdmlydHVhbCB+VHJlZVNjb3BlKCk7CiAKKyAgICB2b2lkIHNldERv
Y3VtZW50KERvY3VtZW50Kik7CiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCiBw
cml2YXRlOgogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CisgICAgLy8gbV9kb2N1
bWVudCBpcyBhIGNhY2hlIGFuZCBzaG91bGQgYmUgc3luY2VkIHdpdGggbV9wYXJlbnRUcmVlU2Nv
cGUtPmRvY3VtZW50KCkKKyAgICAvLyBleGNlcHQgbV9wYXJlbnRUcmVlU2NvcGUgaXMgbnVsbCwg
d2hpY2ggbWVhbnMgdGhpcyBpcyBhIHJvb3Qgc2NvcGUuCisgICAgRG9jdW1lbnQqIG1fZG9jdW1l
bnQ7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CiAgICAgRG9jdW1l
bnRPcmRlcmVkTWFwIG1faW1hZ2VNYXBzQnlOYW1lOwpAQCAtOTMsNiArMTAwLDI3IEBAIGlubGlu
ZSBib29sIFRyZWVTY29wZTo6Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQpIGNvCiAgICAgcmV0dXJuIG1fZWxlbWVudHNCeUlkLmNvbnRhaW5zTXVs
dGlwbGUoaWQuaW1wbCgpKTsKIH0KIAorLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVz
ZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2Fu
dCB0byBpbmxpbmUgdGhlbS4KKworaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBj
b25zdAoreworICAgIHJldHVybiB0aGlzID09IG1fdHJlZVNjb3BlICYmIG1fdHJlZVNjb3BlLT5p
c0RvY3VtZW50U2NvcGUoKTsKK30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVudElu
dGVybmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTElLRUxZKDAgIT0gbV90cmVlU2NvcGUpID8g
bV90cmVlU2NvcGUtPmRvY3VtZW50KCkgOiAwOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6
OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQodGhpcyk7CisgICAgLy8gRklYTUU6IGJl
bG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkg
aW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKKyAgICAvLyBkdWUgdG8gdGhlIHZpcnR1
YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgorICAgIEFTU0VSVChkb2N1bWVudEludGVy
bmFsKCkgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50
KCkpKTsKKyAgICByZXR1cm4gZG9jdW1lbnRJbnRlcm5hbCgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBUcmVlU2NvcGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwCmluZGV4IGFiMTE3OTIzZTc4ZDQyMWVjNGQwMDBmOTIzOWE5MTRlMjRj
ZmM4NjYuLmNhYzMwZGQ5ZWY5YWRhMzY3OTkxMjIwNDYzMDQ2NzUwM2EyZDMwNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKQEAgLTUxLDE0ICs1MSw4IEBAIHZvaWQg
VHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAg
ICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgZm9yIChOb2Rl
KiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkp
IHsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnNldFRyZWVTY29wZShu
ZXdEb2N1bWVudCA9PSBtX25ld1Njb3BlID8gMCA6IG1fbmV3U2NvcGUpOwotICAgICAgICBpZiAo
cmFyZURhdGEgJiYgcmFyZURhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgICAgICByYXJlRGF0
YS0+bm9kZUxpc3RzKCktPmludmFsaWRhdGVDYWNoZXMoKTsKLSAgICAgICAgICAgIGlmIChtX29s
ZFNjb3BlKQotICAgICAgICAgICAgICAgIG1fb2xkU2NvcGUtPnJlbW92ZU5vZGVMaXN0Q2FjaGUo
KTsKLSAgICAgICAgICAgIG1fbmV3U2NvcGUtPmFkZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICAgICAg
fQotCisgICAgICAgIG5vZGUtPnNldFRyZWVTY29wZShtX25ld1Njb3BlKTsKKyAgICAgICAgbW92
ZU5vZGVMaXN0Q2FjaGVzKG5vZGUpOwogICAgICAgICBpZiAod2lsbE1vdmVUb05ld0RvY3VtZW50
KQogICAgICAgICAgICAgbW92ZU5vZGVUb05ld0RvY3VtZW50KG5vZGUsIG9sZERvY3VtZW50LCBu
ZXdEb2N1bWVudCk7CiAKQEAgLTEwMSw4ICs5NSw2IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFk
b3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9j
CiAgICAgICAgIG9sZERvY3VtZW50LT5ndWFyZERlcmVmKCk7CiAgICAgfQogCi0gICAgbm9kZS0+
c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVU
b05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgb2xkRG9jdW1lbnREaWRNb3ZlVG9O
ZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBvbGREb2N1bWVudDsKQEAgLTExMiw0ICsxMDQsMTcg
QEAgaW5saW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5v
ZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2MKICAgICBBU1NFUlQoZGlkTW92ZVRvTmV3RG9jdW1l
bnRXYXNDYWxsZWQpOwogfQogCitpbmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9k
ZUxpc3RDYWNoZXMoTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUtPmhhc1JhcmVE
YXRhKCkpCisgICAgICAgIHJldHVybjsKKyAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9k
ZS0+cmFyZURhdGEoKTsKKyAgICBpZiAoIXJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hlcygpOwor
ICAgIGlmIChtX29sZFNjb3BlKQorICAgICAgICBtX29sZFNjb3BlLT5yZW1vdmVOb2RlTGlzdENh
Y2hlKCk7CisgICAgbV9uZXdTY29wZS0+YWRkTm9kZUxpc3RDYWNoZSgpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaAppbmRleCBkMmJkNGQ0ZjAxZTdkMjNjYzYzMDVj
MTM4MjAwNTU2NTE2ZTU5MjA1Li4xOGI0MzY0MDBkMTA1ZmEzZjdjYzFiNjAyN2M1YjI5NjUzYjFk
MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgbW92ZVRyZWVUb05ld1Njb3BlKE5vZGUq
KSBjb25zdDsKKyAgICB2b2lkIG1vdmVOb2RlTGlzdENhY2hlcyhOb2RlKikgY29uc3Q7CiAgICAg
dm9pZCBtb3ZlVHJlZVRvTmV3RG9jdW1lbnQoTm9kZSosIERvY3VtZW50KiBvbGREb2N1bWVudCwg
RG9jdW1lbnQqIG5ld0RvY3VtZW50KSBjb25zdDsKICAgICB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1
bWVudChOb2RlKiwgRG9jdW1lbnQqIG9sZERvY3VtZW50LCBEb2N1bWVudCogbmV3RG9jdW1lbnQp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rp
b25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5NDM4ZjQ1OWRjZmExMzQuLjVi
ZjU0NTQxMzIzYzA3OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCIK
IAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgog
I2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMThjNWNkMmY3MWMzZmRiNDhkNTQ2
MGFkN2ZmODg4MTk5YzgyNmFiYS4uZDIwNzgzMDg0OGI1MjMxMGNjYmY1OTMyZDYyODIxYjBlMDU2
Mzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVO
b2RlQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNw
cAppbmRleCAxNDUyZjg4MDNmYWJjNTcwYTI1NGZhNWEyZTk2ZTQwZjE0ZGVhOWM1Li4yODFmZGJk
ZjMyYmQ1MDUxY2RlYmQyNzVmZGYwNjk0NWZhYmVlZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21t
YW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126707</attachid>
            <date>2012-02-12 20:39:54 -0800</date>
            <delta_ts>2012-03-29 04:45:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120213133952.patch</filename>
            <type>text/plain</type>
            <size>27208</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMGNmZmJlZGI3YzAz
YTM3YTY2Y2JkYmIxNGI3ZDExZGEyZjE4Ni4uNjlhZGUxMmYyODFiYmZhYjBhNzM1MzUwNTk0MjE5
NmIzYjYzNGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAyLTA4ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3Rvcmlu
Z10gUmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgx
NgorCisgICAgICAgIE5vdyBOb2RlOjpkb2N1bWVudCgpIHJldHVybiBtX3RyZWVTY29wZS0+cm9v
dFRyZWVTY29wZSgpIGluc3RlYWQgb2YgTm9kZTo6bV9kb2N1bWVudC4KKyAgICAgICAgRWFjaCBu
b2RlIGluIHNoYWRvdyB0cmVlIGlzIG5vIGxvbmdlciBuZWVkIGl0cyBOb2RlUmFyZURhdGEgaW5z
dGFuY2UgdG8gcG9pbnQgdGhlIFNoYWRvd1Jvb3QuCisKKyAgICAgICAgLSBOb2RlOiBSZXBsYWNl
ZCBOb2RlOjptX2RvY3VlbnQgd2l0aCBOb2RlOjptX3RyZWVTY29wZS4gc2V0RG9jdW1lbnQoKSBp
cyBnb25lLgorICAgICAgICAtIE5vZGVSYXJlRGF0YTogUmVtb3ZlZCBtX3RyZWVTY29wZQorICAg
ICAgICAtIFRyZWVTY29wZTogQWRkZWQgbV9yb290VHJlZVNjb3BlIHRvIG1ha2UgTm9kZTo6ZG9j
dW1lbnQoKSBmYXN0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aXNJblNoYWRvd1RyZWUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgorICAgICAgICAqIGRv
bS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJh
cmVEYXRhKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDog
QWRkZWQgbV9kb2N1ZW50IHdoaWNoIHBvaW50cyB0aGUgcm9vdCBEb2N1bWVudCBvYmplY3Qgb2Yg
dGhlIHNjb3BlIHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6On5UcmVlU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92
ZVRyZWVUb05ld1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1v
dmVOb2RlVG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlTm9kZUxpc3RDYWNoZXMpOiBFeHRyYWN0ZWQuCisgICAgICAgICogZG9tL1RyZWVTY29w
ZUFkb3B0ZXIuaDoKKwogMjAxMi0wMi0wOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0aGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9uIHRo
ZSBtYWluIHRocmVhZCB3aGVuIHdlIGhhdmUgc2xvdyByZXBhaW50IG9iamVjdHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IDdlOTI5MzY3Mjk5MTFmZDVjZjE4ZTEyYzg0ZGE0YzUxZmQ5ZWQw
MTAuLjRlN2NlZGQ1ZGZmYzlmMDY0ZDhiYTZmOTgyOWM1M2UzZTcwZTRiY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIHVpbnQ2NF90IERvY3VtZW50OjpzX2ds
b2JhbFRyZWVWZXJzaW9uID0gMDsKIAogRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgIDogQ29udGFp
bmVyTm9kZSgwKQotICAgICwgVHJlZVNjb3BlKHRoaXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywg
dGhpcykKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9k
ZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNlKQpA
QCAtNDM4LDggKzQzOCw2IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fd2hlZWxFdmVu
dEhhbmRsZXJDb3VudCgwKQogICAgICwgbV9wZW5kaW5nVGFza3NUaW1lcih0aGlzLCAmRG9jdW1l
bnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpCiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7Ci0K
ICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQgPSBmYWxzZTsKIAogICAgIG1fcHJp
bnRpbmcgPSBmYWxzZTsKQEAgLTU0NCw3ICs1NDIsNiBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkK
ICAgICAvLyBpZiB0aGUgRG9jdW1lbnRQYXJzZXIgb3V0bGl2ZXMgdGhlIERvY3VtZW50IGl0IHdv
bid0IGNhdXNlIGJhZG5lc3MuCiAgICAgQVNTRVJUKCFtX3BhcnNlciB8fCBtX3BhcnNlci0+cmVm
Q291bnQoKSA9PSAxKTsKICAgICBkZXRhY2hQYXJzZXIoKTsKLSAgICBtX2RvY3VtZW50ID0gMDsK
ICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKICAgICBtX3JlbmRlckFyZW5h
LmNsZWFyKCk7CkBAIC02NTYsOCArNjUzLDggQEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1l
bnRCeUFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkKIHZvaWQgRG9jdW1lbnQ6OmJ1aWxkQWNj
ZXNzS2V5TWFwKFRyZWVTY29wZSogc2NvcGUpCiB7CiAgICAgQVNTRVJUKHNjb3BlKTsKLSAgICBO
b2RlKiByb290Tm9kZSA9IHNjb3BlLT5yb290Tm9kZSgpOwotICAgIGZvciAoTm9kZSogbm9kZSA9
IHJvb3ROb2RlOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZSkp
IHsKKyAgICBOb2RlKiBzY29wZU5vZGUgPSBzY29wZS0+c2NvcGVOb2RlKCk7CisgICAgZm9yIChO
b2RlKiBub2RlID0gc2NvcGVOb2RlOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9k
ZShzY29wZU5vZGUpKSB7CiAgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obm9kZSk7CkBAIC0xMTU0LDEzICsxMTUxLDEzIEBAIHZvaWQgRG9jdW1lbnQ6
OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6OnN1
Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERv
Y3VtZW50KCkpCisgICAgaWYgKGlzWEhUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImFw
cGxpY2F0aW9uL3hodG1sK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQo
KSkKKyAgICBpZiAoaXNTVkdEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImltYWdlL3N2Zyt4
bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT54bWxTdGFuZGFsb25lKCkpCisgICAgaWYgKHhtbFN0
YW5kYWxvbmUoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1l
bnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiAidGV4dC9odG1sIjsKIAogICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBsb2FkZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTRiZGFkNjg1Y2MzNGRj
ZTJkYjA2YzYyMDc5Y2JkYzlmNTE0Y2VjMi4uOTY3NDZkODRmMTk1ZDA0ZGMxNTczOWQ2MWZlOTc5
Zjk2YzA3NjJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE0NjQsMTQgKzE0NjQsOSBAQCBw
cml2YXRlOgogCiAvLyBQdXQgdGhlc2UgbWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWly
ZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0
aGVtLgogCi1pbmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9kZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHRoaXMgPT0gbV9kb2N1bWVudDsKLX0KLQogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1l
bnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0
eXBlKQotICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKGRvY3Vt
ZW50KQogICAgICwgbV9wcmV2aW91cygwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX3JlbmRl
cmVyKDApCkBAIC0xNDgzLDYgKzE0NzgsMzEgQEAgaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAjZW5kaWYKIH0KIAoraW5saW5lIERv
Y3VtZW50KiBOb2RlOjpkb2N1bWVudEludGVybmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTElL
RUxZKDAgIT0gbV90cmVlU2NvcGUpID8gbV90cmVlU2NvcGUtPnJvb3REb2N1bWVudCgpIDogMDsK
K30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKHRoaXMpOworICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQgcHJl
dmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVj
dG9yCisgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5cGUo
KS4KKyAgICBBU1NFUlQoZG9jdW1lbnRJbnRlcm5hbCgpIHx8IChub2RlVHlwZSgpID09IERPQ1VN
RU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7CisgICAgcmV0dXJuIGRvY3VtZW50SW50
ZXJuYWwoKTsKK30KKworaW5saW5lIGJvb2wgTm9kZTo6aXNUcmVlU2NvcGUoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIElzVHJlZVNjb3BlIGZs
YWcgb25jZSB3ZSBpbnRyb2R1Y2UgaXQgaW4gTm9kZUZsYWdzLgorICAgIHJldHVybiBMSUtFTFko
MCAhPSBtX3RyZWVTY29wZSkgJiYgdGhpcyA9PSBtX3RyZWVTY29wZS0+c2NvcGVOb2RlKCk7Cit9
CisKK2lubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gTElLRUxZKDAgIT0gbV90cmVlU2NvcGUpICYmIHRoaXMgPT0gbV90cmVlU2NvcGUtPnJvb3RE
b2N1bWVudCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBEb2N1
bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggZjdjZmFk
ZmNjNzlmMzFkNTE2NjNlYWFjMDQyYjM0NWRhNzM0YzE5YS4uNTVlYjQ0Y2UzNTg4N2I5MWRhNDVk
YTkzZWUyN2I0ZWQwNDJhMWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmNwcApAQCAtMzUsMTEgKzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIERvY3VtZW50RnJh
Z21lbnQ6OkRvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25U
eXBlIGNvbnN0cnVjdGlvblR5cGUpCiAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25z
dHJ1Y3Rpb25UeXBlKQogewotICAgIEFTU0VSVChkb2N1bWVudCk7CiB9CiAKIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKIHsKKyAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE9yZGVyZWRNYXAuY3BwCmluZGV4IDg4NmI4YmYwODUzYTM2NTlhYWNlNzBhY2JiM2QwNzdh
NzQ2ZDUwMjMuLjNkNGUzNmE3NTJiNTJhNTM1YzYzNTRiZDRkNzhlYzdmMTExNTg4ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC0xMTgsNyArMTE4LDcg
QEAgaW5saW5lIEVsZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KEF0b21pY1N0cmluZ0lt
cGwqIGtleSwgY29uc3QgVHJlZVNjb3BlKgogCiAgICAgaWYgKG1fZHVwbGljYXRlQ291bnRzLmNv
bnRhaW5zKGtleSkpIHsKICAgICAgICAgLy8gV2Uga25vdyB0aGVyZSdzIGF0IGxlYXN0IG9uZSBu
b2RlIHRoYXQgbWF0Y2hlczsgaXRlcmF0ZSB0byBmaW5kIHRoZSBmaXJzdCBvbmUuCi0gICAgICAg
IGZvciAoTm9kZSogbm9kZSA9IHNjb3BlLT5yb290Tm9kZSgpLT5maXJzdENoaWxkKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBu
b2RlID0gc2NvcGUtPnNjb3BlTm9kZSgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2Rl
LT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZWxlbWVudCA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAzOWI4ZmE4
OTVjZGY3YjIxNDM4OTNiOWRkNWY1Mjc5ZDM2ZTZkZDA0Li4yZjE2ZmNiZjMxMzU5MDg5M2E4Y2Ex
M2JmMTAzMTkzZWY3OTE3ZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAg
Tm9kZTo6fk5vZGUoKQogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBkZXRhY2goKTsKIAot
ICAgIERvY3VtZW50KiBkb2MgPSBtX2RvY3VtZW50OworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1
bWVudEludGVybmFsKCk7CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFi
bGVkKCkgJiYgZG9jICYmIGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0cygpKQogICAgICAgICBkb2Mt
PmF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlTm9kZUZvclVzZSh0aGlzKTsKICAgICAKQEAgLTQwOCw0
MSArNDA4LDYgQEAgTm9kZTo6fk5vZGUoKQogICAgICAgICBkb2MtPmd1YXJkRGVyZWYoKTsKIH0K
IAotdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgQVNT
RVJUKCFpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCk7Ci0gICAgaWYgKGlu
RG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7Ci19Ci0KLU5vZGVSYXJlRGF0YSogTm9kZTo6c2V0
VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCi17Ci0gICAgaWYgKCFzY29wZSkgewotICAgICAg
ICBpZiAoaGFzUmFyZURhdGEoKSkgewotICAgICAgICAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0g
cmFyZURhdGEoKTsKLSAgICAgICAgICAgIGRhdGEtPnNldFRyZWVTY29wZSgwKTsKLSAgICAgICAg
ICAgIHJldHVybiBkYXRhOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
Ci0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKLSAgICBkYXRhLT5z
ZXRUcmVlU2NvcGUoc2NvcGUpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1UcmVlU2NvcGUqIE5v
ZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFVzaW5nIG1fZG9jdW1lbnQg
ZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4gc2VlIGNvbW1lbnQgd2l0aCBkb2N1bWVudCgpIGluIHRo
ZSBoZWFkZXIgZmlsZS4KLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybiBt
X2RvY3VtZW50OwotICAgIFRyZWVTY29wZSogc2NvcGUgPSByYXJlRGF0YSgpLT50cmVlU2NvcGUo
KTsKLSAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IG1fZG9jdW1lbnQ7Ci19Ci0KIE5vZGVSYXJl
RGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgp
KTsKQEAgLTE1MjcsNyArMTQ5Miw3IEBAIENvbnRhaW5lck5vZGUqIE5vZGU6Om5vblNoYWRvd0Jv
dW5kYXJ5UGFyZW50Tm9kZSgpIGNvbnN0CiAKIGJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUoKQog
ewotICAgIHJldHVybiB0cmVlU2NvcGUoKSAhPSBkb2N1bWVudCgpOworICAgIHJldHVybiB0cmVl
U2NvcGUoKSAmJiAhdHJlZVNjb3BlKCktPmlzRG9jdW1lbnRTY29wZSgpOwogfQogCiBFbGVtZW50
KiBOb2RlOjpwYXJlbnRPckhvc3RFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDMxMWJk
NDExN2NmZjllNzQwYWY2MGJmZmNiNzk2YmYwMGMzODkwNjAuLjg1NmRmNDIxZDdmNWMyZWM4MTli
MTM4MzZlYTI4N2Q1MGY2ZDY2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjIzLDYgKzIyMyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGFyYWN0ZXJEYXRhTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0RvY3VtZW50Tm9kZSgpIGNvbnN0OwogICAgIGJvb2wg
aXNTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1NoYWRvd1Jvb3RPclNWR1No
YWRvd1Jvb3RGbGFnKSAmJiAhaXNTVkdFbGVtZW50KCk7IH0KKyAgICBib29sIGlzVHJlZVNjb3Bl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzQ29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgTm9kZSogc2hhZG93QW5jZXN0b3JOb2RlKCkgY29uc3Q7CkBA
IC0zOTYsMjIgKzM5NywxNSBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkb2N1bWVu
dCBhc3NvY2lhdGVkIHdpdGggdGhpcyBub2RlLiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5V
TEwsIGV4Y2VwdCBpbiB0aGUgY2FzZSAKICAgICAvLyBvZiBhIERvY3VtZW50VHlwZSBub2RlIHRo
YXQgaXMgbm90IHVzZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0LiBBIERvY3VtZW50IG5vZGUgcmV0
dXJucyBpdHNlbGYuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCh0aGlzKTsKLSAgICAgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2Vm
dWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9y
IG9yIGRlc3RydWN0b3IKLSAgICAgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNh
bGwgdG8gbm9kZVR5cGUoKS4KLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgKG5vZGVUeXBl
KCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKLSAgICAgICAgcmV0
dXJuIG1fZG9jdW1lbnQ7Ci0gICAgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Owog
Ci0gICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKKyAgICBUcmVlU2NvcGUqIHRyZWVT
Y29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9CiAKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhpcyBub2RlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRvY3VtZW50IGFuZCBpcyBpbiBp
dHMgYXNzb2NpYXRlZCBkb2N1bWVudCdzCiAgICAgLy8gbm9kZSB0cmVlLCBmYWxzZSBvdGhlcndp
c2UuCi0gICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QgCi0gICAgeyAKLSAgICAgICAgQVNTRVJU
KG1fZG9jdW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAgICBib29sIGluRG9j
dW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHJlZVNjb3BlIHx8ICFnZXRG
bGFnKEluRG9jdW1lbnRGbGFnKSk7CiAgICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRG
bGFnKTsKICAgICB9CiAKQEAgLTcyMyw5ICs3MTcsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgLy8gVGhlc2UgQVBJIHNob3VsZCBiZSBvbmx5IHVzZWQgZm9yIGEgdHJlZSBzY29wZSBt
aWdyYXRpb24uCi0gICAgLy8gc2V0VHJlZVNjb3BlKCkgcmV0dXJucyBOb2RlUmFyZURhdGEgdG8g
c2F2ZSBleHRyYSBub2RlUmFyZURhdGEoKSBpbnZvY2F0aW9ucyBvbiB0aGUgY2FsbGVyIHNpdGUu
Ci0gICAgTm9kZVJhcmVEYXRhKiBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7Ci0gICAgdm9pZCBz
ZXREb2N1bWVudChEb2N1bWVudCopOworICAgIERvY3VtZW50KiBkb2N1bWVudEludGVybmFsKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkgeyBtX3RyZWVT
Y29wZSA9IHNjb3BlOyB9CiAKICAgICBlbnVtIEVkaXRhYmxlTGV2ZWwgeyBFZGl0YWJsZSwgUmlj
aGx5RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0YWJsZUxldmVs
KSBjb25zdDsKQEAgLTc2NSw3ICs3NTgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBtdXRh
YmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAg
IFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgTm9kZSogbV9wcmV2aW91czsKICAgICBOb2Rl
KiBtX25leHQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCmluZGV4IDc3YjkyMGQxYjUzYTVlMWMxYmVmMjYzNGQwMzFhMmViMTRmYWNjNzgu
LmNmYzQzM2ZkZGU5YjgwOWY4NDM1NWQwNmY3NjgxZWM1YjBkMzI2NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTGFiZWxzTm9kZUxpc3Q7Ci1jbGFzcyBUcmVlU2NvcGU7CiAKIHN0cnVjdCBOb2RlTGlz
dHNOb2RlRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZUxpc3RzTm9kZURhdGEp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTk0LDggKzkzLDcgQEAgY2xhc3MgTm9kZVJh
cmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFyZURhdGEpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9kZVJhcmVEYXRhKCkKLSAgICAg
ICAgOiBtX3RyZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgwKQorICAgICAg
ICA6IG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKICAgICAgICAg
LCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNl
ZChmYWxzZSkKQEAgLTEyMCw5ICsxMTgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByYXJl
RGF0YU1hcCgpLmdldChub2RlKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJl
ZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0KLSAgICAKICAg
ICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9CiAgICAgdm9p
ZCBzZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlzdHMpIHsgbV9u
b2RlTGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKSBj
b25zdCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpAQCAtMjM3LDcgKzIzMiw2IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVOb2RlTGlzdHMoTm9kZSopOwogCi0g
ICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+
IG1fbm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBP
d25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAppbmRleCAyOTBiZTNmNmQ0NTI3OTcxZDI4OTA2YmFlM2I3Yjg4MDA2MjIwOGIy
Li41YzFlZDVjMjRmZjZiOTFlOGIzZWMxNTQ5ODJiNGQzM2M0MjI1NzEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCkBAIC0zOSwxOCArMzksMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBEb2N1
bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNjb3Bl
KHRoaXMpCisgICAgOiBEb2N1bWVudEZyYWdtZW50KDAsIENyZWF0ZVNoYWRvd1Jvb3QpCisgICAg
LCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX2FwcGx5QXV0aG9yU2hlZXRzKGZh
bHNlKQogICAgICwgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudChmYWxzZSkKIHsKICAgICBBU1NF
UlQoZG9jdW1lbnQpOwotICAgIAotICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2Nv
cGUuCi0gICAgc2V0UGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKLSAgICAvLyBTaGFkb3cgdHJl
ZSBzY29wZXMgaGF2ZSB0aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgotICAg
IC8vIFRoaXMgd2F5LCBkaXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNj
b3BlIHBvaW50ZXIuCi0gICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOwog
fQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmlu
ZGV4IDcxMzg0NDYyZWFkNGQxZDYyNzVjNmJmZTgwM2FkNGJhMTU4ZWVkMWUuLjdjMjJhYTU5NWQz
ZWFjZDc0ZmU1ODQ1Mjc0MmUzY2Q2YjFhMzU3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
CkBAIC00MCwxNiArNDAsMjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290
Tm9kZSkKLSAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCi0gICAgLCBtX3BhcmVudFRyZWVTY29w
ZSgwKQorVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSogc2NvcGVOb2RlLCBEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgOiBtX3Njb3BlTm9kZShzY29wZU5vZGUpCisgICAgLCBtX3Bh
cmVudFRyZWVTY29wZShzY29wZU5vZGUgPT0gZG9jdW1lbnQgPyAwIDogZG9jdW1lbnQpCisgICAg
LCBtX3Jvb3REb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fbnVtTm9kZUxpc3RDYWNoZXMoMCkK
IHsKLSAgICBBU1NFUlQocm9vdE5vZGUpOworICAgIEFTU0VSVChzY29wZU5vZGUpOworICAgIC8v
IFRyZWVTY29wZS1taXhlZCBvYmplY3RzIG5lZWQgdG8gY29udHJvbCBndWFyZC1yZWYgY291bnQg
YnkKKyAgICAvLyBpdHNlbGYgaW5zdGVhZCBvZiBkZWxlZ2F0aW5nIGl0IHRvIE5vZGUgY29uc3Ry
dWN0b3IvZGVzdHJ1Y3RvcgorICAgIC8vIGJlY2F1c2UgdGhlIFRyZWVTY29wZSBvYmplY3QsIHdo
aWNoIGhvbGRzIHRoZSBEb2N1bWVudCByZWZlcmVuY2UsCisgICAgLy8gaXMgbm90IGF2YWlsYWJs
ZSBhdCB0aGF0IHRpbWluZy4KKyAgICBBU1NFUlQoIXNjb3BlTm9kZS0+dHJlZVNjb3BlKCkpOwor
ICAgIHNjb3BlTm9kZS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAgIGlmICghaXNEb2N1bWVudFNj
b3BlKCkpCisgICAgICAgIG1fcm9vdERvY3VtZW50LT5ndWFyZFJlZigpOwogfQogCiBUcmVlU2Nv
cGU6On5UcmVlU2NvcGUoKQogeworICAgIGlmICghaXNEb2N1bWVudFNjb3BlKCkpCisgICAgICAg
IG1fcm9vdERvY3VtZW50LT5ndWFyZERlcmVmKCk7CisgICAgQVNTRVJUKG1fc2NvcGVOb2RlLT50
cmVlU2NvcGUoKSk7CisgICAgbV9zY29wZU5vZGUtPnNldFRyZWVTY29wZSgwKTsKIH0KIAogdm9p
ZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkKQEAgLTYxLDExICs3NCwxMiBAQCB2
b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQogdm9pZCBUcmVlU2NvcGU6OnNl
dFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogewogICAgIC8vIEEg
ZG9jdW1lbnQgbm9kZSBjYW5ub3QgYmUgcmUtcGFyZW50ZWQuCi0gICAgQVNTRVJUKCFyb290Tm9k
ZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQoIWlzRG9jdW1lbnRTY29wZSgpKTsK
ICAgICAvLyBFdmVyeSBzY29wZSBvdGhlciB0aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNj
b3BlLgogICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29w
ZSA9IG5ld1BhcmVudFNjb3BlOworICAgIG1fcm9vdERvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUt
PnJvb3REb2N1bWVudCgpOwogfQogCiBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlk
KGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdApAQCAtMTA3LDcgKzEyMSw3IEBA
IEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJs
KSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICBzaXplX3QgaGFzaFBvcyA9IHVybC5maW5k
KCcjJyk7CiAgICAgU3RyaW5nIG5hbWUgPSAoaGFzaFBvcyA9PSBub3RGb3VuZCA/IHVybCA6IHVy
bC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBsKCk7Ci0gICAgaWYgKHJvb3ROb2RlKCktPmRv
Y3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKHJvb3REb2N1bWVudCgpLT5pc0hU
TUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQq
PihtX2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50QnlMb3dlcmNhc2VkTWFwTmFtZShBdG9taWNT
dHJpbmcobmFtZS5sb3dlcigpKS5pbXBsKCksIHRoaXMpKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50QnlNYXBOYW1l
KEF0b21pY1N0cmluZyhuYW1lKS5pbXBsKCksIHRoaXMpKTsKIH0KQEAgLTExOCwxMCArMTMyLDEw
IEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6ZmluZEFuY2hvcihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gZ2V0RWxlbWVudEJ5
SWQobmFtZSkpCiAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIGZvciAoTm9kZSogbm9kZSA9
IHJvb3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZU5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZl
cnNlTmV4dE5vZGUoKSkgewogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShhVGFnKSkgewog
ICAgICAgICAgICAgSFRNTEFuY2hvckVsZW1lbnQqIGFuY2hvciA9IHN0YXRpY19jYXN0PEhUTUxB
bmNob3JFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBpZiAocm9vdE5vZGUoKS0+ZG9jdW1l
bnQoKS0+aW5RdWlya3NNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChyb290RG9jdW1lbnQoKS0+
aW5RdWlya3NNb2RlKCkpIHsKICAgICAgICAgICAgICAgICAvLyBRdWlya3MgbW9kZSwgY2FzZSBp
bnNlbnNpdGl2ZSBjb21wYXJpc29uIG9mIG5hbWVzLgogICAgICAgICAgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShhbmNob3ItPm5hbWUoKSwgbmFtZSkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBhbmNob3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggYjU4YmJkYzgzYTMzMzhk
ZjAzMGJjODkzNjRlOTA0OGM5YTZlZjQ2Yy4uYjVkNDRkMzE2MmFmZjMxNjgzOTdlOWNhZWM2ZGI1
ZWY2NmUyYjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzMsNiArMzMsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250YWluZXJOb2RlOworY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwpAQCAt
NDYsNiArNDcsOCBAQCBjbGFzcyBUcmVlU2NvcGUgewogcHVibGljOgogICAgIFRyZWVTY29wZSog
cGFyZW50VHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0KICAg
ICB2b2lkIHNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqKTsKKyAgICBEb2N1bWVudCogcm9v
dERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RG9jdW1lbnQ7IH0KKyAgICBib29sIGlz
RG9jdW1lbnRTY29wZSgpIGNvbnN0OwogCiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29u
c3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBoYXNFbGVtZW50V2l0aElkKEF0b21p
Y1N0cmluZ0ltcGwqIGlkKSBjb25zdDsKQEAgLTczLDE3ICs3NiwyMCBAQCBwdWJsaWM6CiAgICAg
Ly8gVXNlZCBieSB0aGUgYmFzaWMgRE9NIG11dGF0aW9uIG1ldGhvZHMgKGUuZy4sIGFwcGVuZENo
aWxkKCkpLgogICAgIHZvaWQgYWRvcHRJZk5lZWRlZChOb2RlKik7CiAKLSAgICBDb250YWluZXJO
b2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7IH0KKyAgICBDb250YWlu
ZXJOb2RlKiBzY29wZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqKTsKKyAgICBUcmVlU2NvcGUoQ29u
dGFpbmVyTm9kZSosIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+VHJlZVNjb3BlKCk7CiAKICAg
ICB2b2lkIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7CiAKIHByaXZhdGU6Ci0gICAgQ29udGFpbmVy
Tm9kZSogbV9yb290Tm9kZTsKKyAgICBDb250YWluZXJOb2RlKiBtX3Njb3BlTm9kZTsKICAgICBU
cmVlU2NvcGUqIG1fcGFyZW50VHJlZVNjb3BlOworICAgIC8vIG1fcm9vdERvY3VtZW50IGlzIGEg
Y2FjaGUgYW5kIHNob3VsZCBiZSBzeW5jZWQgd2l0aCBtX3BhcmVudFRyZWVTY29wZS0+cm9vdERv
Y3VtZW50KCkKKyAgICAvLyBleGNlcHQgbV9wYXJlbnRUcmVlU2NvcGUgaXMgbnVsbCwgd2hpY2gg
bWVhbnMgdGhpcyBpcyBhIHJvb3Qgc2NvcGUuCisgICAgRG9jdW1lbnQqIG1fcm9vdERvY3VtZW50
OwogCiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1fZWxlbWVudHNCeUlkOwogICAgIERvY3VtZW50
T3JkZXJlZE1hcCBtX2ltYWdlTWFwc0J5TmFtZTsKQEAgLTEwMiw2ICsxMDgsMTEgQEAgaW5saW5l
IGJvb2wgVHJlZVNjb3BlOjpjb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRv
bWljU3RyaW5nJiBpZCkgY28KICAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQuY29udGFpbnNNdWx0
aXBsZShpZC5pbXBsKCkpOwogfQogCitpbmxpbmUgYm9vbCBUcmVlU2NvcGU6OmlzRG9jdW1lbnRT
Y29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3BhcmVudFRyZWVTY29wZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVHJlZVNjb3BlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAppbmRleCA3MjdkZjJmMTIzZWI0NDg3MzllZDA5MWJi
YWE3YTQ5NGU5YzVhNDU5Li5kZmZkZmYzMjA3ZmRmNGE3NDMwOGEzZTlmNzg0NWVhZmEwMDJlN2M5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00NCwyMSArNDQs
MTUgQEAgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSogcm9v
dCkgY29uc3QKICAgICAvLyB0aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBj
aGFuZ2VzIG1hZGUgdG8gaXQgd2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJzaW9uCiAg
ICAgLy8gb2YgdGhlIGRvY3VtZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVhc2luZyB0aGUg
RE9NVHJlZVZlcnNpb24gb2YgdGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKICAgICAvLyB3ZSBl
bnN1cmUgdGhhdCB0aGUgY29sbGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRhdGVkIGFzIG5l
ZWRlZCB3aGVuIHRoZSBlbGVtZW50IGlzIG1vdmVkIGJhY2suCi0gICAgRG9jdW1lbnQqIG9sZERv
Y3VtZW50ID0gbV9vbGRTY29wZSA/IG1fb2xkU2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCkg
OiAwOwotICAgIERvY3VtZW50KiBuZXdEb2N1bWVudCA9IG1fbmV3U2NvcGUtPnJvb3ROb2RlKCkt
PmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gbV9vbGRTY29wZSA/IG1f
b2xkU2NvcGUtPnNjb3BlTm9kZSgpLT5kb2N1bWVudCgpIDogMDsKKyAgICBEb2N1bWVudCogbmV3
RG9jdW1lbnQgPSBtX25ld1Njb3BlLT5zY29wZU5vZGUoKS0+ZG9jdW1lbnQoKTsKICAgICBib29s
IHdpbGxNb3ZlVG9OZXdEb2N1bWVudCA9IG9sZERvY3VtZW50ICE9IG5ld0RvY3VtZW50OwogICAg
IGlmIChvbGREb2N1bWVudCAmJiB3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCiAgICAgICAgIG9sZERv
Y3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gcm9v
dDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkpIHsKLSAgICAgICAg
Tm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnNldFRyZWVTY29wZShuZXdEb2N1bWVudCA9
PSBtX25ld1Njb3BlID8gMCA6IG1fbmV3U2NvcGUpOwotICAgICAgICBpZiAocmFyZURhdGEgJiYg
cmFyZURhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgICAgICByYXJlRGF0YS0+bm9kZUxpc3Rz
KCktPmludmFsaWRhdGVDYWNoZXMoKTsKLSAgICAgICAgICAgIGlmIChtX29sZFNjb3BlKQotICAg
ICAgICAgICAgICAgIG1fb2xkU2NvcGUtPnJlbW92ZU5vZGVMaXN0Q2FjaGUoKTsKLSAgICAgICAg
ICAgIG1fbmV3U2NvcGUtPmFkZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICAgICAgfQotCisgICAgICAg
IG5vZGUtPnNldFRyZWVTY29wZShtX25ld1Njb3BlKTsKKyAgICAgICAgbW92ZU5vZGVMaXN0Q2Fj
aGVzKG5vZGUpOwogICAgICAgICBpZiAod2lsbE1vdmVUb05ld0RvY3VtZW50KQogICAgICAgICAg
ICAgbW92ZU5vZGVUb05ld0RvY3VtZW50KG5vZGUsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7
CiAKQEAgLTEwMSw4ICs5NSw2IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVO
b2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgICAgIG9s
ZERvY3VtZW50LT5ndWFyZERlcmVmKCk7CiAgICAgfQogCi0gICAgbm9kZS0+c2V0RG9jdW1lbnQo
bmV3RG9jdW1lbnQpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVUb05ld0RvY3VtZW50
V2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdh
c0NhbGxlZFdpdGggPSBvbGREb2N1bWVudDsKQEAgLTExMiw0ICsxMDQsMTcgQEAgaW5saW5lIHZv
aWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUqIG5vZGUsIERv
Y3VtZW50KiBvbGREb2MKICAgICBBU1NFUlQoZGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQp
OwogfQogCitpbmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZUxpc3RDYWNoZXMo
Tm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUtPmhhc1JhcmVEYXRhKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+cmFyZURhdGEo
KTsKKyAgICBpZiAoIXJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hlcygpOworICAgIGlmIChtX29s
ZFNjb3BlKQorICAgICAgICBtX29sZFNjb3BlLT5yZW1vdmVOb2RlTGlzdENhY2hlKCk7CisgICAg
bV9uZXdTY29wZS0+YWRkTm9kZUxpc3RDYWNoZSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZUFkb3B0ZXIuaAppbmRleCBkMmJkNGQ0ZjAxZTdkMjNjYzYzMDVjMTM4MjAwNTU2NTE2
ZTU5MjA1Li4xOGI0MzY0MDBkMTA1ZmEzZjdjYzFiNjAyN2M1YjI5NjUzYjFkMmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgbW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqKSBjb25zdDsKKyAg
ICB2b2lkIG1vdmVOb2RlTGlzdENhY2hlcyhOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBtb3ZlVHJl
ZVRvTmV3RG9jdW1lbnQoTm9kZSosIERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQqIG5l
d0RvY3VtZW50KSBjb25zdDsKICAgICB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiwg
RG9jdW1lbnQqIG9sZERvY3VtZW50LCBEb2N1bWVudCogbmV3RG9jdW1lbnQpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4
IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5NDM4ZjQ1OWRjZmExMzQuLjViZjU0NTQxMzIzYzA3
OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCIKIAorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1v
dmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMThjNWNkMmY3MWMzZmRiNDhkNTQ2MGFkN2ZmODg4MTk5
YzgyNmFiYS4uZDIwNzgzMDg0OGI1MjMxMGNjYmY1OTMyZDYyODIxYjBlMDU2Mzc5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5o
IgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAppbmRleCAxNDUy
Zjg4MDNmYWJjNTcwYTI1NGZhNWEyZTk2ZTQwZjE0ZGVhOWM1Li4yODFmZGJkZjMyYmQ1MDUxY2Rl
YmQyNzVmZGYwNjk0NWZhYmVlZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZU5vZGVQ
cmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDc5MTlkNzYxZTUxOWI4NTA2Zjc1NjhiZmE2
ZDNiZDY4ZDMxY2Q0N2IuLjllMDYyN2JhM2EwY2NmNDhmN2YzNzY3ODAyYmZmMGIyMjU1NDIwOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0yNzAsOCArMjcwLDgg
QEAgc3RhdGljIEhUTUxJbnB1dEVsZW1lbnQqIGFzRmlsZUlucHV0KE5vZGUqIG5vZGUpCiAgICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKTsK
IAogICAgIC8vIElmIHRoaXMgaXMgYSBidXR0b24gaW5zaWRlIG9mIHRoZSBhIGZpbGUgaW5wdXQs
IG1vdmUgdXAgdG8gdGhlIGZpbGUgaW5wdXQuCi0gICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1
dEVsZW1lbnQtPmlzVGV4dEJ1dHRvbigpICYmIGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPnJv
b3ROb2RlKCktPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBpbnB1dEVsZW1lbnQgPSBpbnB1dEVs
ZW1lbnQtPnRyZWVTY29wZSgpLT5yb290Tm9kZSgpLT5zaGFkb3dIb3N0KCktPnRvSW5wdXRFbGVt
ZW50KCk7CisgICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzVGV4dEJ1dHRv
bigpICYmIGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPnNjb3BlTm9kZSgpLT5pc1NoYWRvd1Jv
b3QoKSkKKyAgICAgICAgaW5wdXRFbGVtZW50ID0gaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+
c2NvcGVOb2RlKCktPnNoYWRvd0hvc3QoKS0+dG9JbnB1dEVsZW1lbnQoKTsKIAogICAgIHJldHVy
biBpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5pc0ZpbGVVcGxvYWQoKSA/IGlucHV0RWxl
bWVudCA6IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXgg
NTE0MjZhMzA4NjI0Yjk4NTg4YjBlMDZmOTFjYjZkNjQ4MWFjOGY4YS4uY2UxOGEwNDdhYTYwMjhi
ODAyZWYwNDQ0ZTZkMGZkNTFmZjJlODY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcApAQCAtMzIwLDEwICszMjAsMTAgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFk
dmFuY2VGb2N1c0luRG9jdW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWIK
IHN0YXRpYyBpbmxpbmUgTm9kZSogb3duZXJPZlRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQog
ewogICAgIEFTU0VSVChzY29wZSk7Ci0gICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5pc1NoYWRv
d1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIHNjb3BlLT5yb290Tm9kZSgpLT5zaGFkb3dIb3N0KCk7
Ci0gICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAg
ICByZXR1cm4gc2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxl
bWVudCgpOworICAgIGlmIChzY29wZS0+c2NvcGVOb2RlKCktPmlzU2hhZG93Um9vdCgpKQorICAg
ICAgICByZXR1cm4gc2NvcGUtPnNjb3BlTm9kZSgpLT5zaGFkb3dIb3N0KCk7CisgICAgaWYgKHNj
b3BlLT5zY29wZU5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIHNj
b3BlLT5zY29wZU5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQyMCwxOCArNDIwLDE4IEBAIE5vZGUqIEZvY3VzQ29udHJv
bGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUoVHJlZVNjb3BlKiBzY29wZSwgTm9kZSogc3RhcnQsIEtl
eWJvYXJkCiAgICAgLy8gTG9vayBmb3IgdGhlIGZpcnN0IG5vZGUgaW4gdGhlIHNjb3BlIHRoYXQ6
CiAgICAgLy8gMSkgaGFzIHRoZSBsb3dlc3QgdGFiaW5kZXggdGhhdCBpcyBoaWdoZXIgdGhhbiBz
dGFydCdzIHRhYmluZGV4IChvciAwLCBpZiBzdGFydCBpcyBudWxsKSwgYW5kCiAgICAgLy8gMikg
Y29tZXMgZmlyc3QgaW4gdGhlIHNjb3BlLCBpZiB0aGVyZSdzIGEgdGllLgotICAgIGlmIChOb2Rl
KiB3aW5uZXIgPSBuZXh0Tm9kZVdpdGhHcmVhdGVyVGFiSW5kZXgoc2NvcGUtPnJvb3ROb2RlKCks
IHN0YXJ0ID8gc3RhcnQtPnRhYkluZGV4KCkgOiAwLCBldmVudCkpCisgICAgaWYgKE5vZGUqIHdp
bm5lciA9IG5leHROb2RlV2l0aEdyZWF0ZXJUYWJJbmRleChzY29wZS0+c2NvcGVOb2RlKCksIHN0
YXJ0ID8gc3RhcnQtPnRhYkluZGV4KCkgOiAwLCBldmVudCkpCiAgICAgICAgIHJldHVybiB3aW5u
ZXI7CiAKICAgICAvLyBUaGVyZSBhcmUgbm8gbm9kZXMgd2l0aCBhIHRhYmluZGV4IGdyZWF0ZXIg
dGhhbiBzdGFydCdzIHRhYmluZGV4LAogICAgIC8vIHNvIGZpbmQgdGhlIGZpcnN0IG5vZGUgd2l0
aCBhIHRhYmluZGV4IG9mIDAuCi0gICAgcmV0dXJuIG5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgo
c2NvcGUtPnJvb3ROb2RlKCksIDAsIGV2ZW50KTsKKyAgICByZXR1cm4gbmV4dE5vZGVXaXRoRXhh
Y3RUYWJJbmRleChzY29wZS0+c2NvcGVOb2RlKCksIDAsIGV2ZW50KTsKIH0KIAogTm9kZSogRm9j
dXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZU5vZGUoVHJlZVNjb3BlKiBzY29wZSwgTm9k
ZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIE5vZGUqIGxhc3Q7Ci0gICAg
Zm9yIChsYXN0ID0gc2NvcGUtPnJvb3ROb2RlKCk7IGxhc3QtPmxhc3RDaGlsZCgpOyBsYXN0ID0g
bGFzdC0+bGFzdENoaWxkKCkpIHsgfQorICAgIGZvciAobGFzdCA9IHNjb3BlLT5zY29wZU5vZGUo
KTsgbGFzdC0+bGFzdENoaWxkKCk7IGxhc3QgPSBsYXN0LT5sYXN0Q2hpbGQoKSkgeyB9CiAKICAg
ICAvLyBGaXJzdCB0cnkgdG8gZmluZCB0aGUgbGFzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0IGNv
bWVzIGJlZm9yZSBzdGFydCBhbmQgaGFzIHRoZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0LgogICAg
IC8vIElmIHN0YXJ0IGlzIG51bGwsIGZpbmQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2NvcGUgd2l0
aCBhIHRhYmluZGV4IG9mIDAuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134547</attachid>
            <date>2012-03-29 04:46:02 -0700</date>
            <delta_ts>2012-06-13 00:24:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120329204600.patch</filename>
            <type>text/plain</type>
            <size>25001</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVkZTkxMTE1OGIwMGY2
ZTY2YTljMmRiMzIzMzQzODkzNmM5NzE0ZS4uN2JjNjE1MGU1YjRlZDFlYTMwYTIzMjQ2YjM5NWY2
ZDFhMDRlMGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAzLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3Rvcmlu
Z10gUmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgx
NgorCisgICAgICAgIE5vdyBOb2RlOjpkb2N1bWVudCgpIHJldHVybiBtX3RyZWVTY29wZS0+cm9v
dFRyZWVTY29wZSgpIGluc3RlYWQgb2YgTm9kZTo6bV9kb2N1bWVudC4KKyAgICAgICAgRWFjaCBu
b2RlIGluIHNoYWRvdyB0cmVlIGlzIG5vIGxvbmdlciBuZWVkIGl0cyBOb2RlUmFyZURhdGEgaW5z
dGFuY2UgdG8gcG9pbnQgdGhlIFNoYWRvd1Jvb3QuCisKKyAgICAgICAgLSBOb2RlOiBSZXBsYWNl
ZCBOb2RlOjptX2RvY3VlbnQgd2l0aCBOb2RlOjptX3RyZWVTY29wZS4gc2V0RG9jdW1lbnQoKSBp
cyBnb25lLgorICAgICAgICAtIE5vZGVSYXJlRGF0YTogUmVtb3ZlZCBtX3RyZWVTY29wZQorICAg
ICAgICAtIFRyZWVTY29wZTogQWRkZWQgbV9yb290VHJlZVNjb3BlIHRvIG1ha2UgTm9kZTo6ZG9j
dW1lbnQoKSBmYXN0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aXNJblNoYWRvd1RyZWUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgorICAgICAgICAqIGRv
bS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJh
cmVEYXRhKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDog
QWRkZWQgbV9kb2N1ZW50IHdoaWNoIHBvaW50cyB0aGUgcm9vdCBEb2N1bWVudCBvYmplY3Qgb2Yg
dGhlIHNjb3BlIHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6On5UcmVlU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92
ZVRyZWVUb05ld1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1v
dmVOb2RlVG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlTm9kZUxpc3RDYWNoZXMpOiBFeHRyYWN0ZWQuCisgICAgICAgICogZG9tL1RyZWVTY29w
ZUFkb3B0ZXIuaDoKKwogMjAxMi0wMy0yNyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbmluaXRpYWxpemVkIGFjY2VzcyBpbiBT
aW1wbGVGb250RGF0YVNraWE6OnBsYXRmb3JtSW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggOTZmOWNjOTlmYzYxYmZhNjY4ZGIzNDU2YTY1YjZkYmQ3OThkMzI4Yy4uMjhmMmRlOGYxZGU2
ZDVhNzc5MGU2ZGY5M2UyZjdlNTlmNjY4ZWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC00MDksNyArNDA5LDcgQEAgdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24g
PSAwOwogCiBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgOiBDb250YWluZXJOb2RlKDAsIENyZWF0
ZURvY3VtZW50KQotICAgICwgVHJlZVNjb3BlKHRoaXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywg
dGhpcykKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9k
ZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNlKQpA
QCAtNDY4LDggKzQ2OCw2IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fdG91Y2hFdmVu
dEhhbmRsZXJDb3VudCgwKQogICAgICwgbV9wZW5kaW5nVGFza3NUaW1lcih0aGlzLCAmRG9jdW1l
bnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpCiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7Ci0K
ICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQgPSBmYWxzZTsKIAogICAgIG1fcHJp
bnRpbmcgPSBmYWxzZTsKQEAgLTU3MSw4ICs1NjksNiBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkK
ICAgICAvLyBpZiB0aGUgRG9jdW1lbnRQYXJzZXIgb3V0bGl2ZXMgdGhlIERvY3VtZW50IGl0IHdv
bid0IGNhdXNlIGJhZG5lc3MuCiAgICAgQVNTRVJUKCFtX3BhcnNlciB8fCBtX3BhcnNlci0+cmVm
Q291bnQoKSA9PSAxKTsKICAgICBkZXRhY2hQYXJzZXIoKTsKLSAgICBtX2RvY3VtZW50ID0gMDsK
LQogICAgIG1fcmVuZGVyQXJlbmEuY2xlYXIoKTsKIAogICAgIGNsZWFyQVhPYmplY3RDYWNoZSgp
OwpAQCAtMTIxMSwxMyArMTIwNywxMyBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50KGNvbnN0
IFN0cmluZyYgY29udGVudCkKIAogU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQorICAgIGlm
IChpc1hIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJhcHBsaWNhdGlvbi94aHRtbCt4
bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpCisgICAgaWYgKGlzU1ZH
RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIjsKLSAgICBpZiAobV9k
b2N1bWVudC0+eG1sU3RhbmRhbG9uZSgpKQorICAgIGlmICh4bWxTdGFuZGFsb25lKCkpCiAgICAg
ICAgIHJldHVybiAidGV4dC94bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVu
dCgpKQorICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gInRleHQvaHRt
bCI7CiAKICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbG9hZGVyKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGQyNTVlOTdlMGMyMThjODQxOTIxZmMwODFjYTVmZmZl
YmJhOWMzY2EuLjRhMTNmYTQzN2ExZDBkNmViMjE0NTI5MWUzODljZmFlOTJhZGQxZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0xNDc2LDE0ICsxNDc2LDkgQEAgcHJpdmF0ZToKIAogLy8gUHV0
IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50IGRl
ZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbS4KIAotaW5saW5lIGJv
b2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAotewotICAgIHJldHVybiB0aGlzID09IG1f
ZG9jdW1lbnQ7Ci19Ci0KIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwgQ29u
c3RydWN0aW9uVHlwZSB0eXBlKQogICAgIDogbV9ub2RlRmxhZ3ModHlwZSkKLSAgICAsIG1fZG9j
dW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3RyZWVTY29wZShkb2N1bWVudCkKICAgICAsIG1fcHJl
dmlvdXMoMCkKICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9yZW5kZXJlcigwKQpAQCAtMTQ5Niw2
ICsxNDkxLDI2IEBAIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3Ry
dWN0aW9uVHlwZSB0eXBlKQogICAgIEluc3BlY3RvckNvdW50ZXJzOjppbmNyZW1lbnRDb3VudGVy
KEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAKK2lubGluZSBEb2N1bWVudCog
Tm9kZTo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIEFTU0VSVCh0aGlzKTsKKyAgICAvLyBGSVhN
RTogYmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1l
bnQoKSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgorICAgIC8vIGR1ZSB0byB0aGUg
dmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCisgICAgQVNTRVJUKG1fdHJlZVNj
b3BlLT5yb290RG9jdW1lbnQoKSB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUg
JiYgIWluRG9jdW1lbnQoKSkpOworICAgIHJldHVybiBtX3RyZWVTY29wZS0+cm9vdERvY3VtZW50
KCk7Cit9CisKK2lubGluZSBib29sIE5vZGU6OmlzVHJlZVNjb3BlKCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBJc1RyZWVTY29wZSBmbGFnIG9u
Y2Ugd2UgaW50cm9kdWNlIGl0IGluIE5vZGVGbGFncy4KKyAgICByZXR1cm4gdGhpcyA9PSBtX3Ry
ZWVTY29wZS0+cm9vdE5vZGUoKTsKK30KKworaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiB0aGlzID09IG1fdHJlZVNjb3BlLT5yb290RG9jdW1l
bnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRG9jdW1lbnRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IGY3Y2ZhZGZjYzc5
ZjMxZDUxNjYzZWFhYzA0MmIzNDVkYTczNGMxOWEuLjU1ZWI0NGNlMzU4ODdiOTFkYTQ1ZGE5M2Vl
MjdiNGVkMDQyYTFkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAK
QEAgLTM1LDExICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBEb2N1bWVudEZyYWdtZW50
OjpEb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBj
b25zdHJ1Y3Rpb25UeXBlKQogICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgY29uc3RydWN0
aW9uVHlwZSkKIHsKLSAgICBBU1NFUlQoZG9jdW1lbnQpOwogfQogCiBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
CiB7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3Vt
ZW50RnJhZ21lbnQoZG9jdW1lbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNw
cAppbmRleCBlZDRiOTZjNzc0YzcwM2Y4YjdkNTIzY2Y1ZDVmYWU1YzEyNmUzZGZhLi5mZGI2NTEx
OTFmZWViNDQyYjg4YjRmNWEyNjJhMWQzNTE4OTc1MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRUeXBlLmNwcApAQCAtMzQsNiArMzQsOCBAQCBEb2N1bWVudFR5cGU6OkRvY3VtZW50VHlwZShE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJgogICAg
ICwgbV9wdWJsaWNJZChwdWJsaWNJZCkKICAgICAsIG1fc3lzdGVtSWQoc3lzdGVtSWQpCiB7Cisg
ICAgaWYgKCF0cmVlU2NvcGUoKSkKKyAgICAgICAgc2V0T3JwaGFuVHJlZVNjb3BlKCk7CiB9CiAK
IEtVUkwgRG9jdW1lbnRUeXBlOjpiYXNlVVJJKCkgY29uc3QKQEAgLTc1LDQgKzc3LDEwIEBAIHZv
aWQgRG9jdW1lbnRUeXBlOjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAgICBOb2RlOjpyZW1vdmVk
RnJvbURvY3VtZW50KCk7CiB9CiAKK3ZvaWQgTm9kZTo6c2V0T3JwaGFuVHJlZVNjb3BlKCkKK3sK
KyAgICBBU1NFUlQoIW1fdHJlZVNjb3BlICYmIG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9O
T0RFKTsKKyAgICBtX3RyZWVTY29wZSA9IFRyZWVTY29wZTo6b3JwaGFuSW5zdGFuY2UoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDUzNDBjYjRlMjQ2MmI4NmI1MGEyZTVmNjgxNjk5NDIy
YTNkZTJhM2YuLjAwZDAxNWI0YzliNDk3NTZiN2ExOTFkZTA5YzI1Mzg3ZTk1Y2ZiZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKHJl
bmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZG9j
dW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IHRyZWVTY29wZSgpID8gZG9jdW1lbnQoKSA6IDA7
CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZG9jICYm
IGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0cygpKQogICAgICAgICBkb2MtPmF4T2JqZWN0Q2FjaGUo
KS0+cmVtb3ZlTm9kZUZvclVzZSh0aGlzKTsKICAgICAKQEAgLTQyMSw0MSArNDIxLDYgQEAgTm9k
ZTo6fk5vZGUoKQogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3Bl
Y3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAKLXZvaWQgTm9kZTo6c2V0RG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIEFTU0VSVCghaW5Eb2N1bWVudCgpIHx8IG1fZG9j
dW1lbnQgPT0gZG9jdW1lbnQpOwotICAgIGlmIChpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9
PSBkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kb2N1bWVudCA9IGRvY3VtZW50
OwotfQotCi1Ob2RlUmFyZURhdGEqIE5vZGU6OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3Bl
KQotewotICAgIGlmICghc2NvcGUpIHsKLSAgICAgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKLSAg
ICAgICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IHJhcmVEYXRhKCk7Ci0gICAgICAgICAgICBk
YXRhLT5zZXRUcmVlU2NvcGUoMCk7Ci0gICAgICAgICAgICByZXR1cm4gZGF0YTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9
IGVuc3VyZVJhcmVEYXRhKCk7Ci0gICAgZGF0YS0+c2V0VHJlZVNjb3BlKHNjb3BlKTsKLSAgICBy
ZXR1cm4gZGF0YTsKLX0KLQotVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBVc2luZyBtX2RvY3VtZW50IGRpcmVjdGx5IGlzIG5vdCBnb29kIC0+IHNl
ZSBjb21tZW50IHdpdGggZG9jdW1lbnQoKSBpbiB0aGUgaGVhZGVyIGZpbGUuCi0gICAgaWYgKCFo
YXNSYXJlRGF0YSgpKQotICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICBUcmVlU2NvcGUq
IHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7Ci0gICAgcmV0dXJuIHNjb3BlID8gc2Nv
cGUgOiBtX2RvY3VtZW50OwotfQotCiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CkBAIC00ODIsNyArNDQ3LDcgQEAgT3du
UHRyPE5vZGVSYXJlRGF0YT4gTm9kZTo6Y3JlYXRlUmFyZURhdGEoKQogdm9pZCBOb2RlOjpjbGVh
clJhcmVEYXRhKCkKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7Ci0gICAgaWYgKHRyZWVT
Y29wZSgpICYmIHJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQorICAgIGlmIChyYXJlRGF0YSgpLT5u
b2RlTGlzdHMoKSkKICAgICAgICAgdHJlZVNjb3BlKCktPnJlbW92ZU5vZGVMaXN0Q2FjaGUoKTsK
IAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCkBAIC0xNTE3LDcgKzE0ODIsNyBAQCBD
b250YWluZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSBjb25zdAog
CiBib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJlZVNj
b3BlKCkgIT0gZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gIXRyZWVTY29wZSgpLT5pc0RvY3VtZW50
U2NvcGUoKTsKIH0KIAogRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCAxOTY2MWY2NmJiYjdkYzEwMTliYmIzMmM0MjdkMjQ2MDg2NzU2YzA1
Li40NGM4YWIzYjJkNDlmZDNkYWEwOTc3ZWFjOGUxMDMyNWZkZGY5MGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTIxNiw2ICsyMTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ2hhcmFjdGVy
RGF0YU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNEb2N1bWVudE5v
ZGUoKSBjb25zdDsKICAgICBib29sIGlzU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSXNTaGFkb3dSb290RmxhZyk7IH0KKyAgICBib29sIGlzVHJlZVNjb3BlKCkgY29uc3Q7CiAK
ICAgICBOb2RlKiBzaGFkb3dBbmNlc3Rvck5vZGUoKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIDAs
IGEgU2hhZG93Um9vdCwgb3IgYSBsZWdhY3kgc2hhZG93IHJvb3QuCkBAIC0zOTEsMjIgKzM5Miwx
NSBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkb2N1bWVudCBhc3NvY2lhdGVkIHdp
dGggdGhpcyBub2RlLiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBpbiB0
aGUgY2FzZSAKICAgICAvLyBvZiBhIERvY3VtZW50VHlwZSBub2RlIHRoYXQgaXMgbm90IHVzZWQg
d2l0aCBhbnkgRG9jdW1lbnQgeWV0LiBBIERvY3VtZW50IG5vZGUgcmV0dXJucyBpdHNlbGYuCi0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0aGlz
KTsKLSAgICAgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50
cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IK
LSAgICAgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5cGUo
KS4KLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRf
VFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7
Ci0gICAgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCi0gICAgVHJlZVNjb3Bl
KiB0cmVlU2NvcGUoKSBjb25zdDsKKyAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJlZVNjb3BlOyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBub2Rl
IGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRvY3VtZW50IGFuZCBpcyBpbiBpdHMgYXNzb2NpYXRlZCBk
b2N1bWVudCdzCiAgICAgLy8gbm9kZSB0cmVlLCBmYWxzZSBvdGhlcndpc2UuCi0gICAgYm9vbCBp
bkRvY3VtZW50KCkgY29uc3QgCi0gICAgeyAKLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwg
IWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAgICBib29sIGluRG9jdW1lbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHJlZVNjb3BlIHx8ICFnZXRGbGFnKEluRG9jdW1lbnRG
bGFnKSk7CiAgICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CiAK
QEAgLTcxMSwxMSArNzA1LDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEhhc0N1c3RvbVN0
eWxlRm9yUmVuZGVyZXIoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3VzdG9tU3R5bGVGb3JSZW5kZXJl
ckZsYWcpOyB9CiAgICAgdm9pZCBjbGVhckhhc0N1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKSB7IGNs
ZWFyRmxhZyhIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyRmxhZyk7IH0KIAorICAgIHZvaWQgc2V0
T3JwaGFuVHJlZVNjb3BlKCk7CiBwcml2YXRlOgotICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUg
b25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgotICAgIC8vIHNldFRyZWVTY29w
ZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52
b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRlLgotICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNj
b3BlKFRyZWVTY29wZSopOwotICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKKyAgICAv
LyBUaGlzIEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9u
LgorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpIHsgbV90cmVlU2NvcGUg
PSBzY29wZTsgfQogCiAgICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJpY2hseUVk
aXRhYmxlIH07CiAgICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVMZXZlbCkgY29u
c3Q7CkBAIC03NTUsNyArNzQ4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgbXV0YWJsZSB1
aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBUcmVl
U2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9kZSogbV9u
ZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAppbmRleCBmYzE3ZjJkMmY2YTkxMTIzYTE2MDg1MjYzNDY3Yjg4NmFjYWM5M2NlLi44NDc5
ZWNkNzA3NTY2NTg5NGZmZTJkNjU0MGM5NmY3ZWJlNTE5N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCkBAIC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IExhYmVsc05vZGVMaXN0OwotY2xhc3MgVHJlZVNjb3BlOwogCiBzdHJ1Y3QgTm9kZUxpc3RzTm9k
ZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVMaXN0c05vZGVEYXRhKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC05MCw4ICs4OSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0
YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgIAogICAgIE5vZGVSYXJlRGF0YSgpCi0gICAgICAgIDog
bV90cmVlU2NvcGUoMCkKLSAgICAgICAgLCBtX2NoaWxkTm9kZUxpc3QoMCkKKyAgICAgICAgOiBt
X2NoaWxkTm9kZUxpc3QoMCkKICAgICAgICAgLCBtX3RhYkluZGV4KDApCiAgICAgICAgICwgbV90
YWJJbmRleFdhc1NldEV4cGxpY2l0bHkoZmFsc2UpCiAgICAgICAgICwgbV9pc0ZvY3VzZWQoZmFs
c2UpCkBAIC0xMTksOSArMTE3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmFyZURhdGFN
YXAoKS5nZXQobm9kZSk7CiAgICAgfQogCi0gICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX3RyZWVTY29wZTsgfQotICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29w
ZSogdHJlZVNjb3BlKSB7IG1fdHJlZVNjb3BlID0gdHJlZVNjb3BlOyB9Ci0gICAgCiAgICAgdm9p
ZCBjbGVhck5vZGVMaXN0cygpIHsgbV9ub2RlTGlzdHMuY2xlYXIoKTsgfQogICAgIHZvaWQgc2V0
Tm9kZUxpc3RzKFBhc3NPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IGxpc3RzKSB7IG1fbm9kZUxp
c3RzID0gbGlzdHM7IH0KICAgICBOb2RlTGlzdHNOb2RlRGF0YSogbm9kZUxpc3RzKCkgY29uc3Qg
eyByZXR1cm4gbV9ub2RlTGlzdHMuZ2V0KCk7IH0KQEAgLTI2MCw3ICsyNTUsNiBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTm9kZUxpc3RzKE5vZGUqKTsKIAotICAgIFRy
ZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25v
ZGVMaXN0czsKICAgICBDaGlsZE5vZGVMaXN0KiBtX2NoaWxkTm9kZUxpc3Q7CiAgICAgT3duUHRy
PEV2ZW50VGFyZ2V0RGF0YT4gbV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5jcHAKaW5kZXggOTdjZWM5NTIyNmE4ODAxZTY3M2FjMjI1MzNiOGUxNWE0NDg1MTRiYy4uNWZi
MDFlZjM0MjI4MjAxNjkzNzRiYTlkZjIzYzQ2MmE2MzA1MWNjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcApAQCAtNDMsOCArNDMsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFk
b3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IERvY3VtZW50RnJh
Z21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCi0gICAgLCBUcmVlU2NvcGUodGhpcykK
KyAgICA6IERvY3VtZW50RnJhZ21lbnQoMCwgQ3JlYXRlU2hhZG93Um9vdCkKKyAgICAsIFRyZWVT
Y29wZSh0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0KDApCiAg
ICAgLCBtX2FwcGx5QXV0aG9yU2hlZXRzKGZhbHNlKQpAQCAtNTQsOSArNTQsNyBAQCBTaGFkb3dS
b290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAKICAgICAvLyBBc3N1bWUg
ZG9jdW1lbnQgYXMgcGFyZW50IHNjb3BlLgogICAgIHNldFBhcmVudFRyZWVTY29wZShkb2N1bWVu
dCk7Ci0gICAgLy8gU2hhZG93IHRyZWUgc2NvcGVzIGhhdmUgdGhlIHNjb3BlIHBvaW50ZXIgcG9p
bnQgdG8gdGhlbXNlbHZlcy4KLSAgICAvLyBUaGlzIHdheSwgZGlyZWN0IGNoaWxkcmVuIHdpbGwg
cmVjZWl2ZSB0aGUgY29ycmVjdCBzY29wZSBwb2ludGVyLgotICAgIGVuc3VyZVJhcmVEYXRhKCkt
PnNldFRyZWVTY29wZSh0aGlzKTsKKyAgICByb290RG9jdW1lbnQoKS0+Z3VhcmRSZWYoKTsKIH0K
IAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpAQCAtNjgsNiArNjYsNyBAQCBTaGFkb3dSb290
Ojp+U2hhZG93Um9vdCgpCiAgICAgLy8gYXMgd2VsbCBhcyBOb2RlLiBTZWUgYSBjb21tZW50IG9u
IFRyZWVTY29wZS5oIGZvciB0aGUgcmVhc29uLgogICAgIGlmIChoYXNSYXJlRGF0YSgpKQogICAg
ICAgICBjbGVhclJhcmVEYXRhKCk7CisgICAgcm9vdERvY3VtZW50KCktPmd1YXJkRGVyZWYoKTsK
IH0KIAogc3RhdGljIGJvb2wgYWxsb3dzQXV0aG9yU2hhZG93Um9vdChFbGVtZW50KiBlbGVtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAzNzZmYmMzYmY3NDQxYjU5N2RkOWFlOGE2
NDlkZjI1ZTc5MTAxYzM3Li5iOGE3M2NkNDQ2OGIwNjg1ODYzZDJhZDllODNhMDEyZjI2MDUzZTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNDQsMTYgKzQ0LDM2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotVHJlZVNjb3BlOjpU
cmVlU2NvcGUoQ29udGFpbmVyTm9kZSogcm9vdE5vZGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShD
b250YWluZXJOb2RlKiByb290Tm9kZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogbV9yb290
Tm9kZShyb290Tm9kZSkKLSAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX3BhcmVu
dFRyZWVTY29wZShyb290Tm9kZSA9PSBkb2N1bWVudCA/IDAgOiBkb2N1bWVudCkKKyAgICAsIG1f
cm9vdERvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogewog
ICAgIEFTU0VSVChyb290Tm9kZSk7CisgICAgLy8gVHJlZVNjb3BlLW1peGVkIG9iamVjdHMgbmVl
ZCB0byBjb250cm9sIGd1YXJkLXJlZiBjb3VudCBieQorICAgIC8vIGl0c2VsZiBpbnN0ZWFkIG9m
IGRlbGVnYXRpbmcgaXQgdG8gTm9kZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yCisgICAgLy8gYmVj
YXVzZSB0aGUgVHJlZVNjb3BlIG9iamVjdCwgd2hpY2ggaG9sZHMgdGhlIERvY3VtZW50IHJlZmVy
ZW5jZSwKKyAgICAvLyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoYXQgdGltaW5nLgorICAgIEFTU0VS
VCghcm9vdE5vZGUtPnRyZWVTY29wZSgpKTsKKyAgICByb290Tm9kZS0+c2V0VHJlZVNjb3BlKHRo
aXMpOworfQorCitUcmVlU2NvcGU6OlRyZWVTY29wZSgpCisgICAgOiBtX3Jvb3ROb2RlKDApCisg
ICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9yb290RG9jdW1lbnQoMCkKKyAgICAs
IG1fbnVtTm9kZUxpc3RDYWNoZXMoMCkKK3sKIH0KIAogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkK
IHsKKyAgICBBU1NFUlQobV9yb290Tm9kZSB8fCB0aGlzID09IG9ycGhhbkluc3RhbmNlKCkpOwor
ICAgIGlmIChtX3Jvb3ROb2RlKSB7CisgICAgICAgIEFTU0VSVChtX3Jvb3ROb2RlLT50cmVlU2Nv
cGUoKSA9PSB0aGlzKTsKKyAgICAgICAgbV9yb290Tm9kZS0+c2V0VHJlZVNjb3BlKDApOworICAg
IH0KIH0KIAogdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkKQEAgLTY1LDEx
ICs4NSwxMiBAQCB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQogdm9pZCBU
cmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQog
ewogICAgIC8vIEEgZG9jdW1lbnQgbm9kZSBjYW5ub3QgYmUgcmUtcGFyZW50ZWQuCi0gICAgQVNT
RVJUKCFyb290Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQoIWlzRG9jdW1l
bnRTY29wZSgpICYmICFpc09ycGhhbigpKTsKICAgICAvLyBFdmVyeSBzY29wZSBvdGhlciB0aGFu
IGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNjb3BlLgogICAgIEFTU0VSVChuZXdQYXJlbnRTY29w
ZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIG1fcm9v
dERvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQogCiBFbGVtZW50
KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElk
KSBjb25zdApAQCAtMTExLDcgKzEzMiw3IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6Omdl
dEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAg
ICBzaXplX3QgaGFzaFBvcyA9IHVybC5maW5kKCcjJyk7CiAgICAgU3RyaW5nIG5hbWUgPSAoaGFz
aFBvcyA9PSBub3RGb3VuZCA/IHVybCA6IHVybC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBs
KCk7Ci0gICAgaWYgKHJvb3ROb2RlKCktPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCisg
ICAgaWYgKHJvb3REb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50
QnlMb3dlcmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmcobmFtZS5sb3dlcigpKS5pbXBsKCksIHRo
aXMpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFw
c0J5TmFtZS5nZXRFbGVtZW50QnlNYXBOYW1lKEF0b21pY1N0cmluZyhuYW1lKS5pbXBsKCksIHRo
aXMpKTsKIH0KQEAgLTEyNSw3ICsxNDYsNyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmZpbmRBbmNo
b3IoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3ROb2RlKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgaWYgKG5v
ZGUtPmhhc1RhZ05hbWUoYVRhZykpIHsKICAgICAgICAgICAgIEhUTUxBbmNob3JFbGVtZW50KiBh
bmNob3IgPSBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCo+KG5vZGUpOwotICAgICAgICAg
ICAgaWYgKHJvb3ROb2RlKCktPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSB7CisgICAgICAg
ICAgICBpZiAocm9vdERvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gUXVpcmtzIG1vZGUsIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBvZiBuYW1lcy4K
ICAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYW5jaG9yLT5uYW1lKCksIG5h
bWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW5jaG9yOwpAQCAtMTUwLDYgKzE3MSw3
IEBAIHZvaWQgVHJlZVNjb3BlOjphZG9wdElmTmVlZGVkKE5vZGUqIG5vZGUpCiAgICAgQVNTRVJU
KG5vZGUpOwogICAgIEFTU0VSVCghbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CiAgICAgQVNTRVJU
KCFub2RlLT5tX2RlbGV0aW9uSGFzQmVndW4pOworICAgIEFTU0VSVCghaXNPcnBoYW4oKSk7CiAg
ICAgVHJlZVNjb3BlQWRvcHRlciBhZG9wdGVyKG5vZGUsIHRoaXMpOwogICAgIGlmIChhZG9wdGVy
Lm5lZWRzU2NvcGVDaGFuZ2UoKSkKICAgICAgICAgYWRvcHRlci5leGVjdXRlKCk7CkBAIC0xNjYs
NiArMTg4LDggQEAgc3RhdGljIE5vZGUqIGZvY3VzZWRGcmFtZU93bmVyRWxlbWVudChGcmFtZSog
Zm9jdXNlZEZyYW1lLCBGcmFtZSogY3VycmVudEZyYW1lKQogCiBOb2RlKiBUcmVlU2NvcGU6OmZv
Y3VzZWROb2RlKCkKIHsKKyAgICBBU1NFUlQoIWlzT3JwaGFuKCkpOworCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gcm9vdE5vZGUoKS0+ZG9jdW1lbnQoKTsKICAgICBOb2RlKiBub2RlID0gZG9j
dW1lbnQtPmZvY3VzZWROb2RlKCk7CiAgICAgaWYgKCFub2RlICYmIGRvY3VtZW50LT5wYWdlKCkp
CkBAIC0xODUsNSArMjA5LDExIEBAIE5vZGUqIFRyZWVTY29wZTo6Zm9jdXNlZE5vZGUoKQogICAg
IHJldHVybiBub2RlOwogfQogCitUcmVlU2NvcGUqIFRyZWVTY29wZTo6b3JwaGFuSW5zdGFuY2Uo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVHJlZVNjb3BlLCBpbnN0YW5jZSwgKCkpOwor
ICAgIHJldHVybiAmaW5zdGFuY2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5oCmluZGV4IDU3MTlmOTVkMGVlYTJiODZlMzMxZWI4MDZlNDEyYWIyYmVj
NmM0ZjUuLjBmMGZiNzExNzdkOThmYmIwNzU2OGE3MDE2MTg2NzE3OWNkYWE4ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29udGFpbmVyTm9kZTsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEhUTUxNYXBFbGVtZW50OwogY2xhc3MgTm9kZTsKQEAgLTQ0LDggKzQ1LDEzIEBAIGNsYXNz
IFRyZWVTY29wZSB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwogCiBwdWJsaWM6CisgICAg
c3RhdGljIFRyZWVTY29wZSogb3JwaGFuSW5zdGFuY2UoKTsKKwogICAgIFRyZWVTY29wZSogcGFy
ZW50VHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0KICAgICB2
b2lkIHNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqKTsKKyAgICBEb2N1bWVudCogcm9vdERv
Y3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RG9jdW1lbnQ7IH0KKyAgICBDb250YWluZXJO
b2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7IH0KKyAgICBib29sIGlz
RG9jdW1lbnRTY29wZSgpIGNvbnN0OwogCiAgICAgTm9kZSogZm9jdXNlZE5vZGUoKTsKICAgICBF
bGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKQEAgLTc1
LDE3ICs4MSwyMSBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCBieSB0aGUgYmFzaWMgRE9NIG11dGF0
aW9uIG1ldGhvZHMgKGUuZy4sIGFwcGVuZENoaWxkKCkpLgogICAgIHZvaWQgYWRvcHRJZk5lZWRl
ZChOb2RlKik7CiAKLSAgICBDb250YWluZXJOb2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcm9vdE5vZGU7IH0KLQogcHJvdGVjdGVkOgotICAgIFRyZWVTY29wZShDb250YWluZXJOb2Rl
Kik7CisgICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCopOwogICAgIHZpcnR1
YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOworICAg
IGJvb2wgaXNPcnBoYW4oKSBjb25zdCB7IHJldHVybiB0aGlzID09IG9ycGhhbkluc3RhbmNlKCk7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUoKTsKKwogICAgIENvbnRhaW5lck5vZGUqIG1f
cm9vdE5vZGU7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29wZTsKKyAgICAvLyBtX3Jv
b3REb2N1bWVudCBpcyBhIGNhY2hlIGFuZCBzaG91bGQgYmUgc3luY2VkIHdpdGggbV9wYXJlbnRU
cmVlU2NvcGUtPnJvb3REb2N1bWVudCgpCisgICAgLy8gZXhjZXB0IG1fcGFyZW50VHJlZVNjb3Bl
IGlzIG51bGwsIHdoaWNoIG1lYW5zIHRoaXMgaXMgYSByb290IHNjb3BlLgorICAgIERvY3VtZW50
KiBtX3Jvb3REb2N1bWVudDsKIAogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJ
ZDsKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9pbWFnZU1hcHNCeU5hbWU7CkBAIC0xMDQsNiAr
MTE0LDExIEBAIGlubGluZSBib29sIFRyZWVTY29wZTo6Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRz
V2l0aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvCiAgICAgcmV0dXJuIG1fZWxlbWVudHNC
eUlkLmNvbnRhaW5zTXVsdGlwbGUoaWQuaW1wbCgpKTsKIH0KIAoraW5saW5lIGJvb2wgVHJlZVNj
b3BlOjppc0RvY3VtZW50U2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiAhbV9wYXJlbnRUcmVl
U2NvcGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFRyZWVTY29w
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5kZXggODJlYTQ3NzQ3
ODNiNWIxMDdkYmU3MTcyNmFiMmVhZjg2NzFiZjU5MS4uNGI1Nzk3YWEyNmE1Njc1YTQwMGJkMmE3
ZDA3ODRhOGVlYjlhNGM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNw
cApAQCAtNDUsMjEgKzQ1LDE1IEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05l
d1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAgICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWlu
IHN0YWxlIGRhdGEgYXMgY2hhbmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBE
T01UcmVlVmVyc2lvbgogICAgIC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5
IGluY3JlYXNpbmcgdGhlIERPTVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBo
ZXJlCiAgICAgLy8gd2UgZW5zdXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBp
bnZhbGlkYXRlZCBhcyBuZWVkZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgotICAg
IERvY3VtZW50KiBvbGREb2N1bWVudCA9IG1fb2xkU2NvcGUgPyBtX29sZFNjb3BlLT5yb290Tm9k
ZSgpLT5kb2N1bWVudCgpIDogMDsKLSAgICBEb2N1bWVudCogbmV3RG9jdW1lbnQgPSBtX25ld1Nj
b3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBvbGREb2N1bWVudCA9
IG1fb2xkU2NvcGUtPnJvb3REb2N1bWVudCgpOworICAgIERvY3VtZW50KiBuZXdEb2N1bWVudCA9
IG1fbmV3U2NvcGUtPnJvb3REb2N1bWVudCgpOwogICAgIGJvb2wgd2lsbE1vdmVUb05ld0RvY3Vt
ZW50ID0gb2xkRG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQ7CiAgICAgaWYgKG9sZERvY3VtZW50ICYm
IHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKICAgICAgICAgb2xkRG9jdW1lbnQtPmluY0RPTVRyZWVW
ZXJzaW9uKCk7CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSByb290OyBub2RlOyBub2RlID0gbm9k
ZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290KSkgewotICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVE
YXRhID0gbm9kZS0+c2V0VHJlZVNjb3BlKG5ld0RvY3VtZW50ID09IG1fbmV3U2NvcGUgPyAwIDog
bV9uZXdTY29wZSk7Ci0gICAgICAgIGlmIChyYXJlRGF0YSAmJiByYXJlRGF0YS0+bm9kZUxpc3Rz
KCkpIHsKLSAgICAgICAgICAgIHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hl
cygpOwotICAgICAgICAgICAgaWYgKG1fb2xkU2NvcGUpCi0gICAgICAgICAgICAgICAgbV9vbGRT
Y29wZS0+cmVtb3ZlTm9kZUxpc3RDYWNoZSgpOwotICAgICAgICAgICAgbV9uZXdTY29wZS0+YWRk
Tm9kZUxpc3RDYWNoZSgpOwotICAgICAgICB9Ci0KKyAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3Bl
KG1fbmV3U2NvcGUpOworICAgICAgICBtb3ZlTm9kZUxpc3RDYWNoZXMobm9kZSk7CiAgICAgICAg
IGlmICh3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCiAgICAgICAgICAgICBtb3ZlTm9kZVRvTmV3RG9j
dW1lbnQobm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIApAQCAtMTA2LDggKzEwMCw2
IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChO
b2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAg
ICBvbGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0Rv
Y3VtZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3VtZW50KTsKLQogI2lmbmRl
ZiBOREVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOwogICAg
IG9sZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gb2xkRG9jdW1l
bnQ7CkBAIC0xMjAsNCArMTEyLDE2IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1v
dmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgICAg
IG9sZERvY3VtZW50LT5ndWFyZERlcmVmKCk7CiB9CiAKK2lubGluZSB2b2lkIFRyZWVTY29wZUFk
b3B0ZXI6Om1vdmVOb2RlTGlzdENhY2hlcyhOb2RlKiBub2RlKSBjb25zdAoreworICAgIGlmICgh
bm9kZS0+aGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuOworICAgIE5vZGVSYXJlRGF0YSog
cmFyZURhdGEgPSBub2RlLT5yYXJlRGF0YSgpOworICAgIGlmICghcmFyZURhdGEtPm5vZGVMaXN0
cygpKQorICAgICAgICByZXR1cm47CisgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5pbnZhbGlk
YXRlQ2FjaGVzKCk7CisgICAgbV9vbGRTY29wZS0+cmVtb3ZlTm9kZUxpc3RDYWNoZSgpOworICAg
IG1fbmV3U2NvcGUtPmFkZE5vZGVMaXN0Q2FjaGUoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGVBZG9wdGVyLmgKaW5kZXggOTQyNTVmNDc5ZGEzMmI1MWNkZDQ3OGQwZDkxODQ0OGFj
MTQ4MmE4My4uOWNkYzQ2MTA3YzE3NDVjNjMwOWIxYjk3ZDcyZDg2NGNiZmM5NjUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIG1vdmVUcmVlVG9OZXdTY29wZShOb2RlKikgY29uc3Q7Cisg
ICAgdm9pZCBtb3ZlTm9kZUxpc3RDYWNoZXMoTm9kZSopIGNvbnN0OwogICAgIHZvaWQgbW92ZVRy
ZWVUb05ld0RvY3VtZW50KE5vZGUqLCBEb2N1bWVudCogb2xkRG9jdW1lbnQsIERvY3VtZW50KiBu
ZXdEb2N1bWVudCkgY29uc3Q7CiAgICAgdm9pZCBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQoTm9kZSos
IERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KSBjb25zdDsKICAg
ICB2b2lkIG1vdmVTaGFkb3dUcmVlVG9OZXdEb2N1bWVudChTaGFkb3dUcmVlKiwgRG9jdW1lbnQq
IG9sZERvY3VtZW50LCBEb2N1bWVudCogbmV3RG9jdW1lbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA1YTIxNDNjNjNk
NDUwNTU1Y2VmMzk4MGI3OTQzOGY0NTlkY2ZhMTM0Li41YmY1NDU0MTMyM2MwNzllYTdkNmMyN2Nm
ODgzMDljZTkwZDM3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVT
ZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxl
Y3Rpb25Db21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk1vdmVTZWxlY3Rpb25Db21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZU5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1h
bmQuY3BwCmluZGV4IDE4YzVjZDJmNzFjM2ZkYjQ4ZDU0NjBhZDdmZjg4ODE5OWM4MjZhYmEuLmQy
MDc4MzA4NDhiNTIzMTBjY2JmNTkzMmQ2MjgyMWIwZTA1NjM3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZUNvbW1hbmQuaCIKIAorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVBy
ZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1v
dmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKaW5kZXggMTQ1MmY4ODAzZmFiYzU3
MGEyNTRmYTVhMmU5NmU0MGYxNGRlYTljNS4uMjgxZmRiZGYzMmJkNTA1MWNkZWJkMjc1ZmRmMDY5
NDVmYWJlZWYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2Rl
UHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlUHJlc2VydmluZ0No
aWxkcmVuQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2Rl
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147249</attachid>
            <date>2012-06-13 00:24:24 -0700</date>
            <delta_ts>2012-06-27 01:56:54 -0700</delta_ts>
            <desc>Updated to ToT</desc>
            <filename>bug-59816-20120613162423.patch</filename>
            <type>text/plain</type>
            <size>25041</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmOWQ2NmJiMjA3ZmMw
NTI3Y2I2NzQ3YzA1NWNjYTY5NTA3NGNiYi4uOTJkZTI0NzkwZWM0ZTg5OTg5OWVjOGZkMGY1ZGFk
YzJkYzc4NGYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA2LTEyICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3Rvcmlu
Z10gUmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgx
NgorCisgICAgICAgIE5vdyBOb2RlOjpkb2N1bWVudCgpIHJldHVybiBtX3RyZWVTY29wZS0+cm9v
dFRyZWVTY29wZSgpIGluc3RlYWQgb2YgTm9kZTo6bV9kb2N1bWVudC4KKyAgICAgICAgRWFjaCBu
b2RlIGluIHNoYWRvdyB0cmVlIGlzIG5vIGxvbmdlciBuZWVkIGl0cyBOb2RlUmFyZURhdGEgaW5z
dGFuY2UgdG8gcG9pbnQgdGhlIFNoYWRvd1Jvb3QuCisKKyAgICAgICAgLSBOb2RlOiBSZXBsYWNl
ZCBOb2RlOjptX2RvY3VlbnQgd2l0aCBOb2RlOjptX3RyZWVTY29wZS4gc2V0RG9jdW1lbnQoKSBp
cyBnb25lLgorICAgICAgICAtIE5vZGVSYXJlRGF0YTogUmVtb3ZlZCBtX3RyZWVTY29wZQorICAg
ICAgICAtIFRyZWVTY29wZTogQWRkZWQgbV9yb290VHJlZVNjb3BlIHRvIG1ha2UgTm9kZTo6ZG9j
dW1lbnQoKSBmYXN0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aXNJblNoYWRvd1RyZWUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgorICAgICAgICAqIGRv
bS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJh
cmVEYXRhKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDog
QWRkZWQgbV9kb2N1ZW50IHdoaWNoIHBvaW50cyB0aGUgcm9vdCBEb2N1bWVudCBvYmplY3Qgb2Yg
dGhlIHNjb3BlIHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6On5UcmVlU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92
ZVRyZWVUb05ld1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1v
dmVOb2RlVG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlTm9kZUxpc3RDYWNoZXMpOiBFeHRyYWN0ZWQuCisgICAgICAgICogZG9tL1RyZWVTY29w
ZUFkb3B0ZXIuaDoKKwogMjAxMi0wNi0xMiAgV2VpIEphbWVzICA8amFtZXMud2VpQGludGVsLmNv
bT4KIAogICAgICAgICB3ZWJjb3JlIHNob3VsZCBkZXBlbmQgb24gd2ViY29yZV9hcm1fbmVvbiBm
b3Igb25seSBhcm0gdGFyZ2V0X2FyY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM3ODEz
NjgyNzQwMzBkNTQ4MGU4MjRiNTI4ODRlMWEzMTZjMDQzMTUuLjZiMGEwZDYwZThmZThkM2QwYzM5
NTZiYjFjOTU4OWViNTVmMmI5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI2LDcg
KzQyNiw3IEBAIHVpbnQ2NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAog
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlz
WEhUTUwsIGJvb2wgaXNIVE1MKQogICAgIDogQ29udGFpbmVyTm9kZSgwLCBDcmVhdGVEb2N1bWVu
dCkKLSAgICAsIFRyZWVTY29wZSh0aGlzKQorICAgICwgVHJlZVNjb3BlKHRoaXMsIHRoaXMpCiAg
ICAgLCBtX2d1YXJkUmVmQ291bnQoMCkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUoTm9RdWly
a3NNb2RlKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tlZChmYWxzZSkKQEAgLTQ5Niw4
ICs0OTYsNiBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1
cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2RpZERpc3BhdGNoVmlld3Bv
cnRQcm9wZXJ0aWVzQ2hhbmdlZChmYWxzZSkKICNlbmRpZgogewotICAgIG1fZG9jdW1lbnQgPSB0
aGlzOwotCiAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7CiAKICAg
ICBtX3ByaW50aW5nID0gZmFsc2U7CkBAIC02MDEsOCArNTk5LDYgQEAgRG9jdW1lbnQ6On5Eb2N1
bWVudCgpCiAgICAgLy8gaWYgdGhlIERvY3VtZW50UGFyc2VyIG91dGxpdmVzIHRoZSBEb2N1bWVu
dCBpdCB3b24ndCBjYXVzZSBiYWRuZXNzLgogICAgIEFTU0VSVCghbV9wYXJzZXIgfHwgbV9wYXJz
ZXItPnJlZkNvdW50KCkgPT0gMSk7CiAgICAgZGV0YWNoUGFyc2VyKCk7Ci0gICAgbV9kb2N1bWVu
dCA9IDA7Ci0KICAgICBtX3JlbmRlckFyZW5hLmNsZWFyKCk7CiAKICAgICBjbGVhckFYT2JqZWN0
Q2FjaGUoKTsKQEAgLTEzMzUsMTMgKzEzMzEsMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVu
dChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAKIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlN
RVR5cGUoKSBjb25zdAogewotICAgIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkK
KyAgICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24v
eGh0bWwreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlm
IChpc1NWR0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0gICAg
aWYgKG1fZG9jdW1lbnQtPnhtbFN0YW5kYWxvbmUoKSkKKyAgICBpZiAoeG1sU3RhbmRhbG9uZSgp
KQogICAgICAgICByZXR1cm4gInRleHQveG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNIVE1M
RG9jdW1lbnQoKSkKKyAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJ0
ZXh0L2h0bWwiOwogCiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxv
YWRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwNGM1YzQ2YzZlNDkyYjRjODBkMjE1NTU5
YmUzNDE1ODliYjhjY2VkLi4yOGYyYzQwZjdhMjNjMDA3ZDEwNjJiOWUyZWY0NWJmM2U5NGZmZjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTQ5MCwxNCArMTQ5MCw5IEBAIHByaXZhdGU6CiAK
IC8vIFB1dCB0aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBEb2N1
bWVudCBkZWZpbml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCiAKLWlu
bGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGhp
cyA9PSBtX2RvY3VtZW50OwotfQotCiBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1l
bnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAg
LCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2NvcGUoZG9jdW1lbnQpCiAgICAg
LCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKQEAg
LTE1MTIsNiArMTUwNywyNiBAQCBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQs
IENvbnN0cnVjdGlvblR5cGUgdHlwZSkKIAogTm9kZSogZXZlbnRUYXJnZXROb2RlRm9yRG9jdW1l
bnQoRG9jdW1lbnQqKTsKIAoraW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVudCgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKHRoaXMpOworICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNl
ZnVsLCBidXQgcHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3Rv
ciBvciBkZXN0cnVjdG9yCisgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwg
dG8gbm9kZVR5cGUoKS4KKyAgICBBU1NFUlQobV90cmVlU2NvcGUtPnJvb3REb2N1bWVudCgpIHx8
IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7Cisg
ICAgcmV0dXJuIG1fdHJlZVNjb3BlLT5yb290RG9jdW1lbnQoKTsKK30KKworaW5saW5lIGJvb2wg
Tm9kZTo6aXNUcmVlU2NvcGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSByZXBsYWNlZCB3aXRoIElzVHJlZVNjb3BlIGZsYWcgb25jZSB3ZSBpbnRyb2R1Y2UgaXQgaW4g
Tm9kZUZsYWdzLgorICAgIHJldHVybiB0aGlzID09IG1fdHJlZVNjb3BlLT5yb290Tm9kZSgpOwor
fQorCitpbmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9kZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRoaXMgPT0gbV90cmVlU2NvcGUtPnJvb3REb2N1bWVudCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5jcHAKaW5kZXggZjdjZmFkZmNjNzlmMzFkNTE2NjNlYWFjMDQyYjM0NWRh
NzM0YzE5YS4uNTVlYjQ0Y2UzNTg4N2I5MWRhNDVkYTkzZWUyN2I0ZWQwNDJhMWRiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcApAQCAtMzUsMTEgKzM1LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIERvY3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJhZ21lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCiAgICAg
OiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogewotICAgIEFTU0VS
VChkb2N1bWVudCk7CiB9CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRG9jdW1lbnRG
cmFnbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKKyAgICBBU1NFUlQoZG9jdW1l
bnQpOwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4IGNkMWQ0ODUzNDY5OWJh
ODU5YTFmMzNhMWJkMmM2ZjkxY2I4NGUzODQuLjVjMWU4ZDEzZDZhNDY4OWZlN2YwZmEwNWZmY2U2
MmFhYmM4YWU4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCkBAIC0zNCw2ICsz
NCw4IEBAIERvY3VtZW50VHlwZTo6RG9jdW1lbnRUeXBlKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmCiAgICAgLCBtX3B1YmxpY0lkKHB1YmxpY0lk
KQogICAgICwgbV9zeXN0ZW1JZChzeXN0ZW1JZCkKIHsKKyAgICBpZiAoIXRyZWVTY29wZSgpKQor
ICAgICAgICBzZXRPcnBoYW5UcmVlU2NvcGUoKTsKIH0KIAogS1VSTCBEb2N1bWVudFR5cGU6OmJh
c2VVUkkoKSBjb25zdApAQCAtODAsNCArODIsMTAgQEAgdm9pZCBEb2N1bWVudFR5cGU6OnJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgIE5vZGU6OnJlbW92ZWRG
cm9tKGluc2VydGlvblBvaW50KTsKIH0KIAordm9pZCBOb2RlOjpzZXRPcnBoYW5UcmVlU2NvcGUo
KQoreworICAgIEFTU0VSVCghbV90cmVlU2NvcGUgJiYgbm9kZVR5cGUoKSA9PSBET0NVTUVOVF9U
WVBFX05PREUpOworICAgIG1fdHJlZVNjb3BlID0gVHJlZVNjb3BlOjpvcnBoYW5JbnN0YW5jZSgp
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggM2ZiMmQ5ZDljMGE3MDc5ZGFkN2RhNzE2ZTZi
OGZlNTVlMzAzNmYxNi4uNWZiODk4NDhlNmQ5ZTU3ZjE4NDc3MDg2YWMwZjYzZmQzMDBkMWY2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcApAQCAtNDA2LDcgKzQwNiw3IEBAIE5vZGU6On5Ob2RlKCkKICAgICBp
ZiAocmVuZGVyZXIoKSkKICAgICAgICAgZGV0YWNoKCk7CiAKLSAgICBEb2N1bWVudCogZG9jID0g
bV9kb2N1bWVudDsKKyAgICBEb2N1bWVudCogZG9jID0gdHJlZVNjb3BlKCkgPyBkb2N1bWVudCgp
IDogMDsKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBk
b2MgJiYgZG9jLT5heE9iamVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RD
YWNoZSgpLT5yZW1vdmVOb2RlRm9yVXNlKHRoaXMpOwogICAgIApAQCAtNDIxLDQxICs0MjEsNiBA
QCBOb2RlOjp+Tm9kZSgpCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIo
SW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwg
bV9kb2N1bWVudCA9PSBkb2N1bWVudCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3Vt
ZW50ID09IGRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RvY3VtZW50ID0gZG9j
dW1lbnQ7Ci19Ci0KLU5vZGVSYXJlRGF0YSogTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSog
c2NvcGUpCi17Ci0gICAgaWYgKCFzY29wZSkgewotICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkg
ewotICAgICAgICAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gcmFyZURhdGEoKTsKLSAgICAgICAg
ICAgIGRhdGEtPnNldFRyZWVTY29wZSgwKTsKLSAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgTm9kZVJhcmVEYXRhKiBk
YXRhID0gZW5zdXJlUmFyZURhdGEoKTsKLSAgICBkYXRhLT5zZXRUcmVlU2NvcGUoc2NvcGUpOwot
ICAgIHJldHVybiBkYXRhOwotfQotCi1UcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0
Ci17Ci0gICAgLy8gRklYTUU6IFVzaW5nIG1fZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2Qg
LT4gc2VlIGNvbW1lbnQgd2l0aCBkb2N1bWVudCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KLSAgICBp
ZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIFRyZWVT
Y29wZSogc2NvcGUgPSByYXJlRGF0YSgpLT50cmVlU2NvcGUoKTsKLSAgICByZXR1cm4gc2NvcGUg
PyBzY29wZSA6IG1fZG9jdW1lbnQ7Ci19Ci0KIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEo
KSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAgLTQ4Miw3ICs0NDcsNyBA
QCBPd25QdHI8Tm9kZVJhcmVEYXRhPiBOb2RlOjpjcmVhdGVSYXJlRGF0YSgpCiB2b2lkIE5vZGU6
OmNsZWFyUmFyZURhdGEoKQogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICBpZiAo
dHJlZVNjb3BlKCkgJiYgcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkpCisgICAgaWYgKHJhcmVEYXRh
KCktPm5vZGVMaXN0cygpKQogICAgICAgICB0cmVlU2NvcGUoKS0+cmVtb3ZlTm9kZUxpc3RDYWNo
ZSgpOwogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKQEAgLTE1MzEsNyArMTQ5Niw3
IEBAIENvbnRhaW5lck5vZGUqIE5vZGU6Om5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpIGNv
bnN0CiAKIGJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUoKSBjb25zdAogewotICAgIHJldHVybiB0
cmVlU2NvcGUoKSAhPSBkb2N1bWVudCgpOworICAgIHJldHVybiAhdHJlZVNjb3BlKCktPmlzRG9j
dW1lbnRTY29wZSgpOwogfQogCiBFbGVtZW50KiBOb2RlOjpwYXJlbnRPckhvc3RFbGVtZW50KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCmluZGV4IDUzMDg0ZDcxNDk2NDg1NDM5ODU1N2Q1NWY1NmUxMzJjMjUw
NmYzYTIuLjVhOGExNDVkMzA1NjI1MWFhOTg4Y2QwNTRhZjk5ZTk2NDU3MmVkNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaApAQCAtMjE3LDYgKzIxNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFt
ZU93bmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0RvY3Vt
ZW50Tm9kZSgpIGNvbnN0OwogICAgIGJvb2wgaXNTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4g
Z2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKTsgfQorICAgIGJvb2wgaXNUcmVlU2NvcGUoKSBjb25z
dDsKICAgICBib29sIGluTmFtZWRGbG93KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJbk5hbWVk
Rmxvd0ZsYWcpOyB9CiAgICAgYm9vbCBoYXNBdHRyTGlzdCgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSGFzQXR0ckxpc3RGbGFnKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tQ2FsbGJhY2tzKCkgY29u
c3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQpAQCAtNDA1LDIy
ICs0MDYsMTUgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0aGUgZG9jdW1lbnQgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgbm9kZS4gVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBOVUxMLCBleGNl
cHQgaW4gdGhlIGNhc2UgCiAgICAgLy8gb2YgYSBEb2N1bWVudFR5cGUgbm9kZSB0aGF0IGlzIG5v
dCB1c2VkIHdpdGggYW55IERvY3VtZW50IHlldC4gQSBEb2N1bWVudCBub2RlIHJldHVybnMgaXRz
ZWxmLgotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQodGhpcyk7Ci0gICAgICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQg
cHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0
cnVjdG9yCi0gICAgICAgIC8vIGR1ZSB0byB0aGUgdmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5v
ZGVUeXBlKCkuCi0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8IChub2RlVHlwZSgpID09IERP
Q1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7Ci0gICAgICAgIHJldHVybiBtX2Rv
Y3VtZW50OwotICAgIH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAotICAgIFRy
ZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3Q7CisgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBj
b25zdCB7IHJldHVybiBtX3RyZWVTY29wZTsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
aXMgbm9kZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBkb2N1bWVudCBhbmQgaXMgaW4gaXRzIGFzc29j
aWF0ZWQgZG9jdW1lbnQncwogICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAg
IGJvb2wgaW5Eb2N1bWVudCgpIGNvbnN0IAotICAgIHsgCi0gICAgICAgIEFTU0VSVChtX2RvY3Vt
ZW50IHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CisgICAgYm9vbCBpbkRvY3VtZW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3RyZWVTY29wZSB8fCAhZ2V0RmxhZyhJbkRv
Y3VtZW50RmxhZykpOwogICAgICAgICByZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAg
ICAgfQogCkBAIC03NDAsMTUgKzczNCwxNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldEhh
c0N1c3RvbUNhbGxiYWNrcygpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NGbGFn
KTsgfQogCisgICAgdm9pZCBzZXRPcnBoYW5UcmVlU2NvcGUoKTsKIHByaXZhdGU6CisKICAgICBm
cmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsKIAogICAgIHZvaWQg
cmVtb3ZlZExhc3RSZWYoKTsKIAogICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUgb25seSB1c2Vk
IGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgotICAgIC8vIHNldFRyZWVTY29wZSgpIHJldHVy
bnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMg
b24gdGhlIGNhbGxlciBzaXRlLgotICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNjb3BlKFRyZWVT
Y29wZSopOwogICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHNldFRy
ZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKSB7IG1fdHJlZVNjb3BlID0gc2NvcGU7IH0KIAogICAg
IGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAgIGJv
b2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwpIGNvbnN0OwpAQCAtNzkyLDcgKzc4
Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIG11dGFibGUgdWludDMyX3QgbV9ub2RlRmxh
Z3M7Ci0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29w
ZTsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKICAgICBSZW5kZXJP
YmplY3QqIG1fcmVuZGVyZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggZWFlZjlh
NWE0M2FjOGZmMjU3NDlhOWIyYjBiYzMyYmViMjNiZmZkNS4uMGIwYjMzZGQ4ZjJmMzFiZmExOTQz
OGFlYWI1M2EzOGFhYWY3YjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtNDYs
NyArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExhYmVsc05vZGVMaXN0Owog
Y2xhc3MgUmFkaW9Ob2RlTGlzdDsKLWNsYXNzIFRyZWVTY29wZTsKIAogc3RydWN0IE5vZGVMaXN0
c05vZGVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlTGlzdHNOb2RlRGF0YSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTQsOCArOTMsNyBAQCBjbGFzcyBOb2RlUmFy
ZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0YSk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKICAgICBOb2RlUmFyZURhdGEoKQotICAgICAg
ICA6IG1fdHJlZVNjb3BlKDApCi0gICAgICAgICwgbV9jaGlsZE5vZGVMaXN0KDApCisgICAgICAg
IDogbV9jaGlsZE5vZGVMaXN0KDApCiAgICAgICAgICwgbV90YWJJbmRleCgwKQogICAgICAgICAs
IG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNGb2N1c2Vk
KGZhbHNlKQpAQCAtMTIzLDkgKzEyMSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJhcmVE
YXRhTWFwKCkuZ2V0KG5vZGUpOwogICAgIH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkg
Y29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVl
U2NvcGUqIHRyZWVTY29wZSkgeyBtX3RyZWVTY29wZSA9IHRyZWVTY29wZTsgfQotICAgIAogICAg
IHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2b2lk
IHNldE5vZGVMaXN0cyhQYXNzT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBtX25v
ZGVMaXN0cyA9IGxpc3RzOyB9CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygpIGNv
bnN0IHsgcmV0dXJuIG1fbm9kZUxpc3RzLmdldCgpOyB9CkBAIC0yNjQsNyArMjU5LDYgQEAgcHJv
dGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZU5vZGVMaXN0cyhOb2RlKik7CiAKLSAg
ICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4g
bV9ub2RlTGlzdHM7CiAgICAgQ2hpbGROb2RlTGlzdCogbV9jaGlsZE5vZGVMaXN0OwogICAgIE93
blB0cjxFdmVudFRhcmdldERhdGE+IG1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCmluZGV4IDJjNTc1NjBiZjI2ZjMyNzcyMjNjNDhiZTQ5NTc0ZGU0NGZkNzIwNWUu
LjdmYzMxMGJlM2E2MWRjNmM2ZGRkZmFjYWE4YTdjZTQzMTE3OGRjMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKQEAgLTQ1LDggKzQ1LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBEb2N1bWVu
dEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNjb3BlKHRo
aXMpCisgICAgOiBEb2N1bWVudEZyYWdtZW50KDAsIENyZWF0ZVNoYWRvd1Jvb3QpCisgICAgLCBU
cmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYoMCkKICAgICAsIG1fbmV4dCgw
KQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKQEAgLTU3LDkgKzU3LDcgQEAgU2hh
ZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgCiAgICAgLy8gQXNz
dW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29wZS4KICAgICBzZXRQYXJlbnRUcmVlU2NvcGUoZG9j
dW1lbnQpOwotICAgIC8vIFNoYWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBwb2ludGVy
IHBvaW50IHRvIHRoZW1zZWx2ZXMuCi0gICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGlsZHJlbiB3
aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1cmVSYXJlRGF0
YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAgcm9vdERvY3VtZW50KCktPmd1YXJkUmVmKCk7
CiB9CiAKIFNoYWRvd1Jvb3Q6On5TaGFkb3dSb290KCkKQEAgLTcxLDYgKzY5LDcgQEAgU2hhZG93
Um9vdDo6flNoYWRvd1Jvb3QoKQogICAgIC8vIGFzIHdlbGwgYXMgTm9kZS4gU2VlIGEgY29tbWVu
dCBvbiBUcmVlU2NvcGUuaCBmb3IgdGhlIHJlYXNvbi4KICAgICBpZiAoaGFzUmFyZURhdGEoKSkK
ICAgICAgICAgY2xlYXJSYXJlRGF0YSgpOworICAgIHJvb3REb2N1bWVudCgpLT5ndWFyZERlcmVm
KCk7CiB9CiAKIHN0YXRpYyBib29sIGFsbG93c0F1dGhvclNoYWRvd1Jvb3QoRWxlbWVudCogZWxl
bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggODMyMmZjYjM4YWY1OTYwODY5MGQx
ODI3ODZjYzg5NzhlOTY2NGFkZS4uNzgwNGIwNzQ3YTVjMjhhNjQ0NzYxY2RlODJkM2E1YmViNzNl
MjBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTQ5LDE2ICs0OSwzNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVRyZWVTY29w
ZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKQorVHJlZVNjb3BlOjpUcmVlU2Nv
cGUoQ29udGFpbmVyTm9kZSogcm9vdE5vZGUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1f
cm9vdE5vZGUocm9vdE5vZGUpCi0gICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9w
YXJlbnRUcmVlU2NvcGUocm9vdE5vZGUgPT0gZG9jdW1lbnQgPyAwIDogZG9jdW1lbnQpCisgICAg
LCBtX3Jvb3REb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fbnVtTm9kZUxpc3RDYWNoZXMoMCkK
IHsKICAgICBBU1NFUlQocm9vdE5vZGUpOworICAgIC8vIFRyZWVTY29wZS1taXhlZCBvYmplY3Rz
IG5lZWQgdG8gY29udHJvbCBndWFyZC1yZWYgY291bnQgYnkKKyAgICAvLyBpdHNlbGYgaW5zdGVh
ZCBvZiBkZWxlZ2F0aW5nIGl0IHRvIE5vZGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvcgorICAgIC8v
IGJlY2F1c2UgdGhlIFRyZWVTY29wZSBvYmplY3QsIHdoaWNoIGhvbGRzIHRoZSBEb2N1bWVudCBy
ZWZlcmVuY2UsCisgICAgLy8gaXMgbm90IGF2YWlsYWJsZSBhdCB0aGF0IHRpbWluZy4KKyAgICBB
U1NFUlQoIXJvb3ROb2RlLT50cmVlU2NvcGUoKSk7CisgICAgcm9vdE5vZGUtPnNldFRyZWVTY29w
ZSh0aGlzKTsKK30KKworVHJlZVNjb3BlOjpUcmVlU2NvcGUoKQorICAgIDogbV9yb290Tm9kZSgw
KQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKKyAgICAsIG1fcm9vdERvY3VtZW50KDApCisg
ICAgLCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCit7CiB9CiAKIFRyZWVTY29wZTo6flRyZWVTY29w
ZSgpCiB7CisgICAgQVNTRVJUKG1fcm9vdE5vZGUgfHwgdGhpcyA9PSBvcnBoYW5JbnN0YW5jZSgp
KTsKKyAgICBpZiAobV9yb290Tm9kZSkgeworICAgICAgICBBU1NFUlQobV9yb290Tm9kZS0+dHJl
ZVNjb3BlKCkgPT0gdGhpcyk7CisgICAgICAgIG1fcm9vdE5vZGUtPnNldFRyZWVTY29wZSgwKTsK
KyAgICB9CisKICAgICBpZiAobV9zZWxlY3Rpb24pIHsKICAgICAgICAgbV9zZWxlY3Rpb24tPmNs
ZWFyVHJlZVNjb3BlKCk7CiAgICAgICAgIG1fc2VsZWN0aW9uID0gMDsKQEAgLTc0LDExICs5NSwx
MiBAQCB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQogdm9pZCBUcmVlU2Nv
cGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogewogICAg
IC8vIEEgZG9jdW1lbnQgbm9kZSBjYW5ub3QgYmUgcmUtcGFyZW50ZWQuCi0gICAgQVNTRVJUKCFy
b290Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQoIWlzRG9jdW1lbnRTY29w
ZSgpICYmICFpc09ycGhhbigpKTsKICAgICAvLyBFdmVyeSBzY29wZSBvdGhlciB0aGFuIGRvY3Vt
ZW50IG5lZWRzIGEgcGFyZW50IHNjb3BlLgogICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAK
ICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIG1fcm9vdERvY3Vt
ZW50ID0gbmV3UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQogCiBFbGVtZW50KiBUcmVl
U2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25z
dApAQCAtMTMzLDcgKzE1NSw3IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdl
TWFwKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICBzaXpl
X3QgaGFzaFBvcyA9IHVybC5maW5kKCcjJyk7CiAgICAgU3RyaW5nIG5hbWUgPSAoaGFzaFBvcyA9
PSBub3RGb3VuZCA/IHVybCA6IHVybC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBsKCk7Ci0g
ICAgaWYgKHJvb3ROb2RlKCktPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYg
KHJvb3REb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50QnlMb3dl
cmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmcobmFtZS5sb3dlcigpKS5pbXBsKCksIHRoaXMpKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFt
ZS5nZXRFbGVtZW50QnlNYXBOYW1lKEF0b21pY1N0cmluZyhuYW1lKS5pbXBsKCksIHRoaXMpKTsK
IH0KQEAgLTE3Miw3ICsxOTQsNyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmZpbmRBbmNob3IoY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3ROb2RlKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoYVRhZykpIHsKICAgICAgICAgICAgIEhUTUxBbmNob3JFbGVtZW50KiBhbmNob3Ig
PSBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgICAgaWYg
KHJvb3ROb2RlKCktPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSB7CisgICAgICAgICAgICBp
ZiAocm9vdERvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8g
UXVpcmtzIG1vZGUsIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBvZiBuYW1lcy4KICAgICAg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYW5jaG9yLT5uYW1lKCksIG5hbWUpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW5jaG9yOwpAQCAtMjAyLDYgKzIyNCw3IEBAIHZv
aWQgVHJlZVNjb3BlOjphZG9wdElmTmVlZGVkKE5vZGUqIG5vZGUpCiAgICAgQVNTRVJUKG5vZGUp
OwogICAgIEFTU0VSVCghbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CiAgICAgQVNTRVJUKCFub2Rl
LT5tX2RlbGV0aW9uSGFzQmVndW4pOworICAgIEFTU0VSVCghaXNPcnBoYW4oKSk7CiAgICAgVHJl
ZVNjb3BlQWRvcHRlciBhZG9wdGVyKG5vZGUsIHRoaXMpOwogICAgIGlmIChhZG9wdGVyLm5lZWRz
U2NvcGVDaGFuZ2UoKSkKICAgICAgICAgYWRvcHRlci5leGVjdXRlKCk7CkBAIC0yMTgsNiArMjQx
LDggQEAgc3RhdGljIE5vZGUqIGZvY3VzZWRGcmFtZU93bmVyRWxlbWVudChGcmFtZSogZm9jdXNl
ZEZyYW1lLCBGcmFtZSogY3VycmVudEZyYW1lKQogCiBOb2RlKiBUcmVlU2NvcGU6OmZvY3VzZWRO
b2RlKCkKIHsKKyAgICBBU1NFUlQoIWlzT3JwaGFuKCkpOworCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gcm9vdE5vZGUoKS0+ZG9jdW1lbnQoKTsKICAgICBOb2RlKiBub2RlID0gZG9jdW1lbnQt
PmZvY3VzZWROb2RlKCk7CiAgICAgaWYgKCFub2RlICYmIGRvY3VtZW50LT5wYWdlKCkpCkBAIC0y
NzAsNSArMjk1LDExIEBAIFRyZWVTY29wZSogY29tbW9uVHJlZVNjb3BlKE5vZGUqIG5vZGVBLCBO
b2RlKiBub2RlQikKICAgICByZXR1cm4gdHJlZVNjb3Blc0FbaW5kZXhBXSA9PSB0cmVlU2NvcGVz
QltpbmRleEJdID8gdHJlZVNjb3Blc0FbaW5kZXhBXSA6IDA7CiB9CiAKK1RyZWVTY29wZSogVHJl
ZVNjb3BlOjpvcnBoYW5JbnN0YW5jZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUcmVl
U2NvcGUsIGluc3RhbmNlLCAoKSk7CisgICAgcmV0dXJuICZpbnN0YW5jZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggNWVjYzAzOTJmMzcx
NzBiZWUzMDUzOTkyMTQyNDk3Y2ZhYjdhY2IwYi4uNWQ1Njg3NmEzOTQzNjg0YjcxNTZkZWEzY2Ri
NmNhNWVhNGYwYzBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzQsNiArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBET01TZWxl
Y3Rpb247CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKIGNsYXNzIE5vZGU7CkBAIC00NSw4ICs0NiwxMyBAQCBjbGFzcyBUcmVlU2NvcGUgewog
ICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKIAogcHVibGljOgorICAgIHN0YXRpYyBUcmVlU2Nv
cGUqIG9ycGhhbkluc3RhbmNlKCk7CisKICAgICBUcmVlU2NvcGUqIHBhcmVudFRyZWVTY29wZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50VHJlZVNjb3BlOyB9CiAgICAgdm9pZCBzZXRQYXJlbnRU
cmVlU2NvcGUoVHJlZVNjb3BlKik7CisgICAgRG9jdW1lbnQqIHJvb3REb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdERvY3VtZW50OyB9CisgICAgQ29udGFpbmVyTm9kZSogcm9vdE5vZGUo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9CisgICAgYm9vbCBpc0RvY3VtZW50U2NvcGUo
KSBjb25zdDsKIAogICAgIE5vZGUqIGZvY3VzZWROb2RlKCk7CiAgICAgRWxlbWVudCogZ2V0RWxl
bWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CkBAIC04MCwxNyArODYsMjEgQEAg
cHVibGljOgogICAgIC8vIFVzZWQgYnkgdGhlIGJhc2ljIERPTSBtdXRhdGlvbiBtZXRob2RzIChl
LmcuLCBhcHBlbmRDaGlsZCgpKS4KICAgICB2b2lkIGFkb3B0SWZOZWVkZWQoTm9kZSopOwogCi0g
ICAgQ29udGFpbmVyTm9kZSogcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9
Ci0KIHByb3RlY3RlZDoKLSAgICBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOworICAgIFRyZWVT
Y29wZShDb250YWluZXJOb2RlKiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUo
KTsKIAogICAgIHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKKyAgICBib29sIGlzT3JwaGFu
KCkgY29uc3QgeyByZXR1cm4gdGhpcyA9PSBvcnBoYW5JbnN0YW5jZSgpOyB9CiAKIHByaXZhdGU6
CisgICAgVHJlZVNjb3BlKCk7CisKICAgICBDb250YWluZXJOb2RlKiBtX3Jvb3ROb2RlOwogICAg
IFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CisgICAgLy8gbV9yb290RG9jdW1lbnQgaXMg
YSBjYWNoZSBhbmQgc2hvdWxkIGJlIHN5bmNlZCB3aXRoIG1fcGFyZW50VHJlZVNjb3BlLT5yb290
RG9jdW1lbnQoKQorICAgIC8vIGV4Y2VwdCBtX3BhcmVudFRyZWVTY29wZSBpcyBudWxsLCB3aGlj
aCBtZWFucyB0aGlzIGlzIGEgcm9vdCBzY29wZS4KKyAgICBEb2N1bWVudCogbV9yb290RG9jdW1l
bnQ7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CiAgICAgRG9jdW1l
bnRPcmRlcmVkTWFwIG1faW1hZ2VNYXBzQnlOYW1lOwpAQCAtMTEzLDYgKzEyMywxMSBAQCBpbmxp
bmUgYm9vbCBUcmVlU2NvcGU6OmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBB
dG9taWNTdHJpbmcmIGlkKSBjbwogCiBUcmVlU2NvcGUqIGNvbW1vblRyZWVTY29wZShOb2RlKiwg
Tm9kZSopOwogCitpbmxpbmUgYm9vbCBUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFtX3BhcmVudFRyZWVTY29wZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gVHJlZVNjb3BlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcAppbmRleCAyZjEwNGZhOTAzNDhjMTgwODM2ZWEyYzM4ZGJmZTkxMDk3NDU4
MzY2Li5iZDEwYmE5N2E1NWMxOWEzNDM4ZTAyNGEzOGU1ZGQ2NjZiOTkwN2Q4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00NSwyMSArNDUsMTUgQEAgdm9pZCBU
cmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSogcm9vdCkgY29uc3QKICAg
ICAvLyB0aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBjaGFuZ2VzIG1hZGUg
dG8gaXQgd2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJzaW9uCiAgICAgLy8gb2YgdGhl
IGRvY3VtZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVhc2luZyB0aGUgRE9NVHJlZVZlcnNp
b24gb2YgdGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKICAgICAvLyB3ZSBlbnN1cmUgdGhhdCB0
aGUgY29sbGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRhdGVkIGFzIG5lZWRlZCB3aGVuIHRo
ZSBlbGVtZW50IGlzIG1vdmVkIGJhY2suCi0gICAgRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gbV9v
bGRTY29wZSA/IG1fb2xkU2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCkgOiAwOwotICAgIERv
Y3VtZW50KiBuZXdEb2N1bWVudCA9IG1fbmV3U2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCk7
CisgICAgRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gbV9vbGRTY29wZS0+cm9vdERvY3VtZW50KCk7
CisgICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbV9uZXdTY29wZS0+cm9vdERvY3VtZW50KCk7
CiAgICAgYm9vbCB3aWxsTW92ZVRvTmV3RG9jdW1lbnQgPSBvbGREb2N1bWVudCAhPSBuZXdEb2N1
bWVudDsKICAgICBpZiAob2xkRG9jdW1lbnQgJiYgd2lsbE1vdmVUb05ld0RvY3VtZW50KQogICAg
ICAgICBvbGREb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSog
bm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7
Ci0gICAgICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRUcmVlU2NvcGUobmV3
RG9jdW1lbnQgPT0gbV9uZXdTY29wZSA/IDAgOiBtX25ld1Njb3BlKTsKLSAgICAgICAgaWYgKHJh
cmVEYXRhICYmIHJhcmVEYXRhLT5ub2RlTGlzdHMoKSkgewotICAgICAgICAgICAgcmFyZURhdGEt
Pm5vZGVMaXN0cygpLT5pbnZhbGlkYXRlQ2FjaGVzKCk7Ci0gICAgICAgICAgICBpZiAobV9vbGRT
Y29wZSkKLSAgICAgICAgICAgICAgICBtX29sZFNjb3BlLT5yZW1vdmVOb2RlTGlzdENhY2hlKCk7
Ci0gICAgICAgICAgICBtX25ld1Njb3BlLT5hZGROb2RlTGlzdENhY2hlKCk7Ci0gICAgICAgIH0K
LQorICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7CisgICAgICAgIG1vdmVO
b2RlTGlzdENhY2hlcyhub2RlKTsKICAgICAgICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkK
ICAgICAgICAgICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVudChub2RlLCBvbGREb2N1bWVudCwgbmV3
RG9jdW1lbnQpOwogCkBAIC0xMDAsOCArOTQsNiBAQCBpbmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9w
dGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1lbnQoTm9kZSogbm9kZSwgRG9jdW1lbnQqIG9sZERvYwog
ICAgIGlmIChvbGREb2N1bWVudCkKICAgICAgICAgb2xkRG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0
b3JzVG9OZXdEb2N1bWVudChub2RlLCBuZXdEb2N1bWVudCk7CiAKLSAgICBub2RlLT5zZXREb2N1
bWVudChuZXdEb2N1bWVudCk7Ci0KICNpZm5kZWYgTkRFQlVHCiAgICAgZGlkTW92ZVRvTmV3RG9j
dW1lbnRXYXNDYWxsZWQgPSBmYWxzZTsKICAgICBvbGREb2N1bWVudERpZE1vdmVUb05ld0RvY3Vt
ZW50V2FzQ2FsbGVkV2l0aCA9IG9sZERvY3VtZW50OwpAQCAtMTE0LDQgKzEwNiwxNiBAQCBpbmxp
bmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1lbnQoTm9kZSogbm9k
ZSwgRG9jdW1lbnQqIG9sZERvYwogICAgICAgICBvbGREb2N1bWVudC0+Z3VhcmREZXJlZigpOwog
fQogCitpbmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZUxpc3RDYWNoZXMoTm9k
ZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUtPmhhc1JhcmVEYXRhKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+cmFyZURhdGEoKTsK
KyAgICBpZiAoIXJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHJh
cmVEYXRhLT5ub2RlTGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hlcygpOworICAgIG1fb2xkU2NvcGUt
PnJlbW92ZU5vZGVMaXN0Q2FjaGUoKTsKKyAgICBtX25ld1Njb3BlLT5hZGROb2RlTGlzdENhY2hl
KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9w
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCmluZGV4IGQyYmQ0
ZDRmMDFlN2QyM2NjNjMwNWMxMzgyMDA1NTY1MTZlNTkyMDUuLjE4YjQzNjQwMGQxMDVmYTNmN2Nj
MWI2MDI3YzViMjk2NTNiMWQyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGVBZG9wdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIu
aApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtb3ZlVHJl
ZVRvTmV3U2NvcGUoTm9kZSopIGNvbnN0OworICAgIHZvaWQgbW92ZU5vZGVMaXN0Q2FjaGVzKE5v
ZGUqKSBjb25zdDsKICAgICB2b2lkIG1vdmVUcmVlVG9OZXdEb2N1bWVudChOb2RlKiwgRG9jdW1l
bnQqIG9sZERvY3VtZW50LCBEb2N1bWVudCogbmV3RG9jdW1lbnQpIGNvbnN0OwogICAgIHZvaWQg
bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUqLCBEb2N1bWVudCogb2xkRG9jdW1lbnQsIERvY3Vt
ZW50KiBuZXdEb2N1bWVudCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
b3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNWEyMTQzYzYzZDQ1MDU1NWNlZjM5ODBiNzk0
MzhmNDU5ZGNmYTEzNC4uNWJmNTQ1NDEzMjNjMDc5ZWE3ZDZjMjdjZjg4MzA5Y2U5MGQzNzcyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb3ZlU2Vs
ZWN0aW9uQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAppbmRleCAxOGM1
Y2QyZjcxYzNmZGI0OGQ1NDYwYWQ3ZmY4ODgxOTljODI2YWJhLi5kMjA3ODMwODQ4YjUyMzEwY2Ni
ZjU5MzJkNjI4MjFiMGUwNTYzNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbW92ZU5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZU5vZGVDb21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlJlbW92ZU5vZGVDb21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5D
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdD
aGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IDE0NTJmODgwM2ZhYmM1NzBhMjU0ZmE1YTJlOTZlNDBm
MTRkZWE5YzUuLjI4MWZkYmRmMzJiZDUwNTFjZGViZDI3NWZkZjA2OTQ1ZmFiZWVmM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJl
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNl
cnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuaCIK
IAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149707</attachid>
            <date>2012-06-27 01:57:01 -0700</date>
            <delta_ts>2012-06-27 02:12:28 -0700</delta_ts>
            <desc>WIP: Naive version</desc>
            <filename>bug-59816-20120627175701.patch</filename>
            <type>text/plain</type>
            <size>12427</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3
ZjE5MGIyNjk4OTljODczY2MyOTJiNjA1NjU1MGQxNTk4NzdjYWM0Li5iOGJkODRiMTQ5ZDA0NGVm
NmU4ZjUyM2ZhZWZjZjJkZDQ0OWFiZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQy
OCw3ICs0MjgsNyBAQCB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7
CiAKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9j
dW1lbnQpCi0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCB0aGlz
KQogICAgICwgbV9ndWFyZFJlZkNvdW50KDApCiAgICAgLCBtX2NvbnRleHRGZWF0dXJlcyhDb250
ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUo
Tm9RdWlya3NNb2RlKQpAQCAtNDk5LDcgKzQ5OSw4IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAg
ICAsIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlm
CiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOworICAg
IHNldFJvb3REb2N1bWVudCh0aGlzKTsKIAogICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVW
YWxpZCA9IGZhbHNlOwogCkBAIC02MDYsNyArNjA3LDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgp
CiAgICAgLy8gaWYgdGhlIERvY3VtZW50UGFyc2VyIG91dGxpdmVzIHRoZSBEb2N1bWVudCBpdCB3
b24ndCBjYXVzZSBiYWRuZXNzLgogICAgIEFTU0VSVCghbV9wYXJzZXIgfHwgbV9wYXJzZXItPnJl
ZkNvdW50KCkgPT0gMSk7CiAgICAgZGV0YWNoUGFyc2VyKCk7Ci0gICAgbV9kb2N1bWVudCA9IDA7
CisgICAgbV90cmVlU2NvcGUgPSAwOwogCiAgICAgbV9yZW5kZXJBcmVuYS5jbGVhcigpOwogCkBA
IC0xMzQxLDEzICsxMzQyLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnQoY29uc3QgU3Ry
aW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29u
c3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisgICAgRG9jdW1l
bnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRvYy0+aXNYSFRNTERvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0bWwreG1sIjsKLSAgICBpZiAobV9kb2N1bWVu
dC0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+eG1sU3RhbmRh
bG9uZSgpKQorICAgIGlmIChkb2MtPnhtbFN0YW5kYWxvbmUoKSkKICAgICAgICAgcmV0dXJuICJ0
ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYg
KGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAg
ICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCA2ODg4NWZiMzNmNDk1MjE0YzMxYTM3MDMzOGZlYzgwNGI0YjExY2Fk
Li43MzVjYzRjMjViMjY0ZDRiYmFlZDEwOGE4YzQxMmEzN2QxZTkxMjZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtMTUwMSwxNCArMTUwMSwzMCBAQCBwcml2YXRlOgogCiAvLyBQdXQgdGhlc2Ug
bWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlv
biwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgogCitpbmxpbmUgRG9jdW1lbnQq
IE5vZGU6OmRvY3VtZW50SW50ZXJuYWwoKSBjb25zdAoreworICAgIGlmICghbV90cmVlU2NvcGUp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3RyZWVTY29wZS0+cm9vdERvY3VtZW50
KCk7Cit9CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1lbnQoKSBjb25zdAoreworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGRvY3VtZW50SW50ZXJuYWwoKTsKKyAgICAvLyBGSVhNRTog
YmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1lbnQo
KSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgorICAgIC8vIGR1ZSB0byB0aGUgdmly
dHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCisgICAgQVNTRVJUKGRvY3VtZW50IHx8
IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7Cisg
ICAgcmV0dXJuIGRvY3VtZW50OworfQorCiBpbmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9k
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXMgPT0gbV9kb2N1bWVudDsKKyAgICByZXR1cm4g
dGhpcyA9PSBkb2N1bWVudEludGVybmFsKCk7CiB9CiAKIGlubGluZSBOb2RlOjpOb2RlKERvY3Vt
ZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgIDogbV9ub2RlRmxhZ3Mo
dHlwZSkKLSAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3RyZWVTY29wZShkb2N1
bWVudCkKICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9yZW5k
ZXJlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGFlMzk0NWJlNWQwYzBkZWQ4ZGVjZjAwYzU5OWQ0
ZjI4MjMxOTEwNjIuLjRlZjBlNWQ5ZWU5ODNkYTMzMGZlYWVhYWYwZTA1NzQzMzJlZDVlNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYg
KHJlbmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1f
ZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBp
ZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5h
eE9iamVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1v
dmVOb2RlRm9yVXNlKHRoaXMpOwogICAgIApAQCAtNDIxLDM5ICs0MjEsMTQgQEAgTm9kZTo6fk5v
ZGUoKQogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNv
dW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAKLXZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50KQordm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkK
IHsKLSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KTsK
LSAgICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKLX0KLQotTm9kZVJhcmVEYXRh
KiBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKLXsKLSAgICBpZiAoIXNjb3Bl
KSB7Ci0gICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0gICAgICAgICAgICBOb2RlUmFyZURh
dGEqIGRhdGEgPSByYXJlRGF0YSgpOwotICAgICAgICAgICAgZGF0YS0+c2V0VHJlZVNjb3BlKDAp
OwotICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOwot
ICAgIGRhdGEtPnNldFRyZWVTY29wZShzY29wZSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgbV90
cmVlU2NvcGUgPSBzY29wZTsKIH0KIAogVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBVc2luZyBtX2RvY3VtZW50IGRpcmVjdGx5IGlzIG5vdCBnb29k
IC0+IHNlZSBjb21tZW50IHdpdGggZG9jdW1lbnQoKSBpbiB0aGUgaGVhZGVyIGZpbGUuCi0gICAg
aWYgKCFoYXNSYXJlRGF0YSgpKQotICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICBUcmVl
U2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7Ci0gICAgcmV0dXJuIHNjb3Bl
ID8gc2NvcGUgOiBtX2RvY3VtZW50OworICAgIHJldHVybiBtX3RyZWVTY29wZTsKIH0KIAogTm9k
ZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CkBAIC0yODA1LDcgKzI3ODAsNyBAQCB2
b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CiAgICAgVHJlZVNoYXJlZDxOb2RlLCBDb250
YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgU2Ny
aXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fZG9jdW1lbnQsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6RE9NKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKGRvY3Vt
ZW50KCksIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fbmV4dCk7CiAgICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3ByZXZpb3VzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IGM5YzI2NzRkMjdjNWNjMWUzMDQ4ZjBmNTMwMzc3ZWMzNjFkNjkxYmEuLmEwZGY1MWUwM2Y1
ZTk0NzU5OTY5YjhkYTk1ZmI2NDMxMDgzNDYzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDA3LDE0ICs0
MDcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkb2N1bWVudCBhc3NvY2lhdGVk
IHdpdGggdGhpcyBub2RlLiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBp
biB0aGUgY2FzZSAKICAgICAvLyBvZiBhIERvY3VtZW50VHlwZSBub2RlIHRoYXQgaXMgbm90IHVz
ZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0LiBBIERvY3VtZW50IG5vZGUgcmV0dXJucyBpdHNlbGYu
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0
aGlzKTsKLSAgICAgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2
ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0
b3IKLSAgICAgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5
cGUoKS4KLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1F
TlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1l
bnQ7Ci0gICAgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgVHJlZVNj
b3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKIApAQCAtNDIyLDcgKzQxNSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBub2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGluRG9jdW1lbnQoKSBj
b25zdCAKICAgICB7IAotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRv
Y3VtZW50RmxhZykpOworICAgICAgICBBU1NFUlQobV90cmVlU2NvcGUgfHwgIWdldEZsYWcoSW5E
b2N1bWVudEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVudEZsYWcpOwog
ICAgIH0KIApAQCAtNzMzLDE2ICs3MjYsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRI
YXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxh
Zyk7IH0KIAorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOworICAgIERvY3VtZW50
KiBkb2N1bWVudEludGVybmFsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKICAgICB2b2lkIHJlbW92ZWRMYXN0
UmVmKCk7CiAKLSAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0cmVl
IHNjb3BlIG1pZ3JhdGlvbi4KLSAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVSYXJl
RGF0YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBjYWxs
ZXIgc2l0ZS4KLSAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKLSAg
ICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0KICAgICBlbnVtIEVkaXRhYmxlTGV2ZWwg
eyBFZGl0YWJsZSwgUmljaGx5RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJs
ZShFZGl0YWJsZUxldmVsKSBjb25zdDsKICAgICBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2liaWxp
dHkoRWRpdGFibGVMZXZlbCkgY29uc3Q7CkBAIC03ODUsNyArNzc2LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVudCog
bV9kb2N1bWVudDsKKyAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJl
dmlvdXM7CiAgICAgTm9kZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBiN2YzNTllNjAxNTVmNjY1ZDZmYzcyNmU5
ZjliZWQ1NDNkNWQ4NTg2Li5mYWNjNjc3YjZiYTlhMDBhYTgzYmM1ZDFmYWU4ZDJiODllMDkxODc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xODAsOCArMTgwLDcgQEAgY2xhc3Mg
Tm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFyZURhdGEpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9kZVJhcmVEYXRhKCkK
LSAgICAgICAgOiBtX3RyZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgwKQor
ICAgICAgICA6IG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKICAg
ICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX2lz
Rm9jdXNlZChmYWxzZSkKQEAgLTIwOSw5ICsyMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByYXJlRGF0YU1hcCgpLmdldChub2RlKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVT
Y29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVlU2Nv
cGUoVHJlZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0KLSAg
ICAKICAgICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9CiAg
ICAgdm9pZCBzZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlzdHMp
IHsgbV9ub2RlTGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlz
dHMoKSBjb25zdCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpAQCAtMzUwLDcgKzM0Niw2
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVOb2RlTGlzdHMoTm9kZSop
OwogCi0gICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9k
ZURhdGE+IG1fbm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsK
ICAgICBPd25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAppbmRleCAyYzU3NTYwYmYyNmYzMjc3MjIzYzQ4YmU0OTU3NGRlNDRm
ZDcyMDVlLi5jNTEzNTE4NDA3MjRkMjQwZmUzNTlmYmE5ZDRjZGI3ZTdmNWYwMDc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBE
b2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNj
b3BlKHRoaXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYo
MCkKICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKQEAg
LTU5LDcgKzU5LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgc2V0UGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKICAgICAvLyBTaGFkb3cgdHJlZSBz
Y29wZXMgaGF2ZSB0aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgogICAgIC8v
IFRoaXMgd2F5LCBkaXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3Bl
IHBvaW50ZXIuCi0gICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAg
IHNldFRyZWVTY29wZSh0aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCA1NjQyZmNmOGRkMzNmYmMxZmJmMjAzYmRkYjFmYjhi
ZTI1MzdhZWZiLi4yYWU5ODRlZDQyZmIxODc1YWE1NmY2ZWM5YTA4MGRjZGJlYzRkYjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNTEsOCArNTEsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVRyZWVTY29wZTo6VHJlZVNjb3Bl
KENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKQorVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFpbmVy
Tm9kZSogcm9vdE5vZGUsIERvY3VtZW50KiByb290RG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2Rl
KHJvb3ROb2RlKQorICAgICwgbV9yb290RG9jdW1lbnQocm9vdERvY3VtZW50KQogICAgICwgbV9w
YXJlbnRUcmVlU2NvcGUoMCkKICAgICAsIG1fbnVtTm9kZUxpc3RDYWNoZXMoMCkKIHsKQEAgLTgx
LDYgKzgyLDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUq
IG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAKICAgICBtX3Bh
cmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIG1fcm9vdERvY3VtZW50ID0gbmV3
UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQogCiBFbGVtZW50KiBUcmVlU2NvcGU6Omdl
dEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5oCmluZGV4IDVlY2MwMzkyZjM3MTcwYmVlMzA1Mzk5MjE0MjQ5N2NmYWI3YWNi
MGIuLmQwYTY1MDA1YTBlYzA2NmY0N2YwOWMzYzVlNzY1ZTg0NDJhMTU2ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb250YWluZXJOb2RlOwogY2xhc3MgRE9NU2VsZWN0aW9uOworY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwpAQCAtODEs
MTUgKzgyLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkb3B0SWZOZWVkZWQoTm9kZSopOwogCiAg
ICAgQ29udGFpbmVyTm9kZSogcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9
CisgICAgRG9jdW1lbnQqIHJvb3REb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdERvY3Vt
ZW50OyB9CisgICAgdm9pZCBzZXRSb290RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KSB7IG1f
cm9vdERvY3VtZW50ID0gZG9jdW1lbnQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFRyZWVTY29wZShD
b250YWluZXJOb2RlKik7CisgICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCop
OwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3Bl
RGF0YSgpOwogCiBwcml2YXRlOgogICAgIENvbnRhaW5lck5vZGUqIG1fcm9vdE5vZGU7CisgICAg
RG9jdW1lbnQqIG1fcm9vdERvY3VtZW50OwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2Nv
cGU7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5kZXggODhlMWE2ZmQ1ZGUxM2VkZjdmNzAzOTJh
YWFhOTEyYWRmZDZmZTcyNy4uZDMyNGYzNGNmMjA3NjA3YWJhMTQxMGMyYTEwMzBlNDBlMmUwNjhi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtNDcsNyArNDcs
OCBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290
KSBjb25zdAogICAgICAgICBvbGREb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAg
IGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRO
b2RlKHJvb3QpKSB7Ci0gICAgICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRU
cmVlU2NvcGUobmV3RG9jdW1lbnQgPT0gbV9uZXdTY29wZSA/IDAgOiBtX25ld1Njb3BlKTsKKyAg
ICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG1fbmV3U2NvcGUpOworICAgICAgICBOb2RlUmFyZURh
dGEqIHJhcmVEYXRhID0gbm9kZS0+aGFzUmFyZURhdGEoKSA/IG5vZGUtPnJhcmVEYXRhKCkgOiAw
OwogICAgICAgICBpZiAocmFyZURhdGEgJiYgcmFyZURhdGEtPm5vZGVMaXN0cygpKQogICAgICAg
ICAgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5hZG9wdFRyZWVTY29wZShtX29sZFNjb3BlLCBt
X25ld1Njb3BlLCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogCkBAIC05MSw4ICs5Miw2IEBA
IGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2Rl
KiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAgICBv
bGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3Vt
ZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3VtZW50KTsKLQogI2lmbmRlZiBO
REVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOwogICAgIG9s
ZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gb2xkRG9jdW1lbnQ7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149709</attachid>
            <date>2012-06-27 02:12:35 -0700</date>
            <delta_ts>2012-06-29 00:46:41 -0700</delta_ts>
            <desc>WIP: Naive version</desc>
            <filename>bug-59816-20120627181234.patch</filename>
            <type>text/plain</type>
            <size>13900</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3
ZjE5MGIyNjk4OTljODczY2MyOTJiNjA1NjU1MGQxNTk4NzdjYWM0Li5iOGJkODRiMTQ5ZDA0NGVm
NmU4ZjUyM2ZhZWZjZjJkZDQ0OWFiZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQy
OCw3ICs0MjgsNyBAQCB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7
CiAKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9j
dW1lbnQpCi0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCB0aGlz
KQogICAgICwgbV9ndWFyZFJlZkNvdW50KDApCiAgICAgLCBtX2NvbnRleHRGZWF0dXJlcyhDb250
ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUo
Tm9RdWlya3NNb2RlKQpAQCAtNDk5LDcgKzQ5OSw4IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAg
ICAsIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlm
CiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOworICAg
IHNldFJvb3REb2N1bWVudCh0aGlzKTsKIAogICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVW
YWxpZCA9IGZhbHNlOwogCkBAIC02MDYsNyArNjA3LDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgp
CiAgICAgLy8gaWYgdGhlIERvY3VtZW50UGFyc2VyIG91dGxpdmVzIHRoZSBEb2N1bWVudCBpdCB3
b24ndCBjYXVzZSBiYWRuZXNzLgogICAgIEFTU0VSVCghbV9wYXJzZXIgfHwgbV9wYXJzZXItPnJl
ZkNvdW50KCkgPT0gMSk7CiAgICAgZGV0YWNoUGFyc2VyKCk7Ci0gICAgbV9kb2N1bWVudCA9IDA7
CisgICAgbV90cmVlU2NvcGUgPSAwOwogCiAgICAgbV9yZW5kZXJBcmVuYS5jbGVhcigpOwogCkBA
IC0xMzQxLDEzICsxMzQyLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnQoY29uc3QgU3Ry
aW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29u
c3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisgICAgRG9jdW1l
bnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRvYy0+aXNYSFRNTERvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0bWwreG1sIjsKLSAgICBpZiAobV9kb2N1bWVu
dC0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+eG1sU3RhbmRh
bG9uZSgpKQorICAgIGlmIChkb2MtPnhtbFN0YW5kYWxvbmUoKSkKICAgICAgICAgcmV0dXJuICJ0
ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYg
KGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAg
ICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCA2ODg4NWZiMzNmNDk1MjE0YzMxYTM3MDMzOGZlYzgwNGI0YjExY2Fk
Li43MzVjYzRjMjViMjY0ZDRiYmFlZDEwOGE4YzQxMmEzN2QxZTkxMjZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtMTUwMSwxNCArMTUwMSwzMCBAQCBwcml2YXRlOgogCiAvLyBQdXQgdGhlc2Ug
bWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlv
biwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgogCitpbmxpbmUgRG9jdW1lbnQq
IE5vZGU6OmRvY3VtZW50SW50ZXJuYWwoKSBjb25zdAoreworICAgIGlmICghbV90cmVlU2NvcGUp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3RyZWVTY29wZS0+cm9vdERvY3VtZW50
KCk7Cit9CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1lbnQoKSBjb25zdAoreworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGRvY3VtZW50SW50ZXJuYWwoKTsKKyAgICAvLyBGSVhNRTog
YmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1lbnQo
KSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgorICAgIC8vIGR1ZSB0byB0aGUgdmly
dHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCisgICAgQVNTRVJUKGRvY3VtZW50IHx8
IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7Cisg
ICAgcmV0dXJuIGRvY3VtZW50OworfQorCiBpbmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9k
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXMgPT0gbV9kb2N1bWVudDsKKyAgICByZXR1cm4g
dGhpcyA9PSBkb2N1bWVudEludGVybmFsKCk7CiB9CiAKIGlubGluZSBOb2RlOjpOb2RlKERvY3Vt
ZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgIDogbV9ub2RlRmxhZ3Mo
dHlwZSkKLSAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3RyZWVTY29wZShkb2N1
bWVudCkKICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9yZW5k
ZXJlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGFlMzk0NWJlNWQwYzBkZWQ4ZGVjZjAwYzU5OWQ0
ZjI4MjMxOTEwNjIuLjRlZjBlNWQ5ZWU5ODNkYTMzMGZlYWVhYWYwZTA1NzQzMzJlZDVlNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYg
KHJlbmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1f
ZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBp
ZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5h
eE9iamVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1v
dmVOb2RlRm9yVXNlKHRoaXMpOwogICAgIApAQCAtNDIxLDM5ICs0MjEsMTQgQEAgTm9kZTo6fk5v
ZGUoKQogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNv
dW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAKLXZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50KQordm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkK
IHsKLSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KTsK
LSAgICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKLX0KLQotTm9kZVJhcmVEYXRh
KiBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKLXsKLSAgICBpZiAoIXNjb3Bl
KSB7Ci0gICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0gICAgICAgICAgICBOb2RlUmFyZURh
dGEqIGRhdGEgPSByYXJlRGF0YSgpOwotICAgICAgICAgICAgZGF0YS0+c2V0VHJlZVNjb3BlKDAp
OwotICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOwot
ICAgIGRhdGEtPnNldFRyZWVTY29wZShzY29wZSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgbV90
cmVlU2NvcGUgPSBzY29wZTsKIH0KIAogVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBVc2luZyBtX2RvY3VtZW50IGRpcmVjdGx5IGlzIG5vdCBnb29k
IC0+IHNlZSBjb21tZW50IHdpdGggZG9jdW1lbnQoKSBpbiB0aGUgaGVhZGVyIGZpbGUuCi0gICAg
aWYgKCFoYXNSYXJlRGF0YSgpKQotICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICBUcmVl
U2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7Ci0gICAgcmV0dXJuIHNjb3Bl
ID8gc2NvcGUgOiBtX2RvY3VtZW50OworICAgIHJldHVybiBtX3RyZWVTY29wZTsKIH0KIAogTm9k
ZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CkBAIC0yODA1LDcgKzI3ODAsNyBAQCB2
b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CiAgICAgVHJlZVNoYXJlZDxOb2RlLCBDb250
YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgU2Ny
aXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fZG9jdW1lbnQsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6RE9NKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKGRvY3Vt
ZW50KCksIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fbmV4dCk7CiAgICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3ByZXZpb3VzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IGM5YzI2NzRkMjdjNWNjMWUzMDQ4ZjBmNTMwMzc3ZWMzNjFkNjkxYmEuLmEwZGY1MWUwM2Y1
ZTk0NzU5OTY5YjhkYTk1ZmI2NDMxMDgzNDYzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDA3LDE0ICs0
MDcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkb2N1bWVudCBhc3NvY2lhdGVk
IHdpdGggdGhpcyBub2RlLiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBp
biB0aGUgY2FzZSAKICAgICAvLyBvZiBhIERvY3VtZW50VHlwZSBub2RlIHRoYXQgaXMgbm90IHVz
ZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0LiBBIERvY3VtZW50IG5vZGUgcmV0dXJucyBpdHNlbGYu
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0
aGlzKTsKLSAgICAgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2
ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0
b3IKLSAgICAgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5
cGUoKS4KLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1F
TlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1l
bnQ7Ci0gICAgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgVHJlZVNj
b3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKIApAQCAtNDIyLDcgKzQxNSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBub2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGluRG9jdW1lbnQoKSBj
b25zdCAKICAgICB7IAotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRv
Y3VtZW50RmxhZykpOworICAgICAgICBBU1NFUlQobV90cmVlU2NvcGUgfHwgIWdldEZsYWcoSW5E
b2N1bWVudEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVudEZsYWcpOwog
ICAgIH0KIApAQCAtNzMzLDE2ICs3MjYsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRI
YXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxh
Zyk7IH0KIAorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOworICAgIERvY3VtZW50
KiBkb2N1bWVudEludGVybmFsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKICAgICB2b2lkIHJlbW92ZWRMYXN0
UmVmKCk7CiAKLSAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0cmVl
IHNjb3BlIG1pZ3JhdGlvbi4KLSAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVSYXJl
RGF0YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBjYWxs
ZXIgc2l0ZS4KLSAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKLSAg
ICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0KICAgICBlbnVtIEVkaXRhYmxlTGV2ZWwg
eyBFZGl0YWJsZSwgUmljaGx5RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJs
ZShFZGl0YWJsZUxldmVsKSBjb25zdDsKICAgICBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2liaWxp
dHkoRWRpdGFibGVMZXZlbCkgY29uc3Q7CkBAIC03ODUsNyArNzc2LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVudCog
bV9kb2N1bWVudDsKKyAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJl
dmlvdXM7CiAgICAgTm9kZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBiN2YzNTllNjAxNTVmNjY1ZDZmYzcyNmU5
ZjliZWQ1NDNkNWQ4NTg2Li5mYWNjNjc3YjZiYTlhMDBhYTgzYmM1ZDFmYWU4ZDJiODllMDkxODc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xODAsOCArMTgwLDcgQEAgY2xhc3Mg
Tm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFyZURhdGEpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9kZVJhcmVEYXRhKCkK
LSAgICAgICAgOiBtX3RyZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgwKQor
ICAgICAgICA6IG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKICAg
ICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX2lz
Rm9jdXNlZChmYWxzZSkKQEAgLTIwOSw5ICsyMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByYXJlRGF0YU1hcCgpLmdldChub2RlKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVT
Y29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVlU2Nv
cGUoVHJlZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0KLSAg
ICAKICAgICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9CiAg
ICAgdm9pZCBzZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlzdHMp
IHsgbV9ub2RlTGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlz
dHMoKSBjb25zdCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpAQCAtMzUwLDcgKzM0Niw2
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVOb2RlTGlzdHMoTm9kZSop
OwogCi0gICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9k
ZURhdGE+IG1fbm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsK
ICAgICBPd25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAppbmRleCAyYzU3NTYwYmYyNmYzMjc3MjIzYzQ4YmU0OTU3NGRlNDRm
ZDcyMDVlLi5jNTEzNTE4NDA3MjRkMjQwZmUzNTlmYmE5ZDRjZGI3ZTdmNWYwMDc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBE
b2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNj
b3BlKHRoaXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYo
MCkKICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKQEAg
LTU5LDcgKzU5LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgc2V0UGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKICAgICAvLyBTaGFkb3cgdHJlZSBz
Y29wZXMgaGF2ZSB0aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgogICAgIC8v
IFRoaXMgd2F5LCBkaXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3Bl
IHBvaW50ZXIuCi0gICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAg
IHNldFRyZWVTY29wZSh0aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCA1NjQyZmNmOGRkMzNmYmMxZmJmMjAzYmRkYjFmYjhi
ZTI1MzdhZWZiLi4yYWU5ODRlZDQyZmIxODc1YWE1NmY2ZWM5YTA4MGRjZGJlYzRkYjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNTEsOCArNTEsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVRyZWVTY29wZTo6VHJlZVNjb3Bl
KENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKQorVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFpbmVy
Tm9kZSogcm9vdE5vZGUsIERvY3VtZW50KiByb290RG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2Rl
KHJvb3ROb2RlKQorICAgICwgbV9yb290RG9jdW1lbnQocm9vdERvY3VtZW50KQogICAgICwgbV9w
YXJlbnRUcmVlU2NvcGUoMCkKICAgICAsIG1fbnVtTm9kZUxpc3RDYWNoZXMoMCkKIHsKQEAgLTgx
LDYgKzgyLDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUq
IG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAKICAgICBtX3Bh
cmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIG1fcm9vdERvY3VtZW50ID0gbmV3
UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQogCiBFbGVtZW50KiBUcmVlU2NvcGU6Omdl
dEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5oCmluZGV4IDVlY2MwMzkyZjM3MTcwYmVlMzA1Mzk5MjE0MjQ5N2NmYWI3YWNi
MGIuLmQwYTY1MDA1YTBlYzA2NmY0N2YwOWMzYzVlNzY1ZTg0NDJhMTU2ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb250YWluZXJOb2RlOwogY2xhc3MgRE9NU2VsZWN0aW9uOworY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwpAQCAtODEs
MTUgKzgyLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkb3B0SWZOZWVkZWQoTm9kZSopOwogCiAg
ICAgQ29udGFpbmVyTm9kZSogcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9
CisgICAgRG9jdW1lbnQqIHJvb3REb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdERvY3Vt
ZW50OyB9CisgICAgdm9pZCBzZXRSb290RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KSB7IG1f
cm9vdERvY3VtZW50ID0gZG9jdW1lbnQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFRyZWVTY29wZShD
b250YWluZXJOb2RlKik7CisgICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCop
OwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3Bl
RGF0YSgpOwogCiBwcml2YXRlOgogICAgIENvbnRhaW5lck5vZGUqIG1fcm9vdE5vZGU7CisgICAg
RG9jdW1lbnQqIG1fcm9vdERvY3VtZW50OwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2Nv
cGU7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5kZXggODhlMWE2ZmQ1ZGUxM2VkZjdmNzAzOTJh
YWFhOTEyYWRmZDZmZTcyNy4uZDMyNGYzNGNmMjA3NjA3YWJhMTQxMGMyYTEwMzBlNDBlMmUwNjhi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtNDcsNyArNDcs
OCBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290
KSBjb25zdAogICAgICAgICBvbGREb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAg
IGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRO
b2RlKHJvb3QpKSB7Ci0gICAgICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRU
cmVlU2NvcGUobmV3RG9jdW1lbnQgPT0gbV9uZXdTY29wZSA/IDAgOiBtX25ld1Njb3BlKTsKKyAg
ICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG1fbmV3U2NvcGUpOworICAgICAgICBOb2RlUmFyZURh
dGEqIHJhcmVEYXRhID0gbm9kZS0+aGFzUmFyZURhdGEoKSA/IG5vZGUtPnJhcmVEYXRhKCkgOiAw
OwogICAgICAgICBpZiAocmFyZURhdGEgJiYgcmFyZURhdGEtPm5vZGVMaXN0cygpKQogICAgICAg
ICAgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5hZG9wdFRyZWVTY29wZShtX29sZFNjb3BlLCBt
X25ld1Njb3BlLCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogCkBAIC05MSw4ICs5Miw2IEBA
IGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2Rl
KiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAgICBv
bGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3Vt
ZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3VtZW50KTsKLQogI2lmbmRlZiBO
REVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOwogICAgIG9s
ZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gb2xkRG9jdW1lbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmlu
ZGV4IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5NDM4ZjQ1OWRjZmExMzQuLjViZjU0NTQxMzIz
YzA3OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCIKIAorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUg
IlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMTk2NTdhYzBmYzc3MjEyMjM1ODM1NzRiYzZiZDIw
ODFkM2RjNzY5Ni4uOGJlMjA3MDYxNGM0OTUzMTM4YTNjNTlmMDVmNDc1YmViM2JkYjQ0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFu
ZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAppbmRleCAx
NDUyZjg4MDNmYWJjNTcwYTI1NGZhNWEyZTk2ZTQwZjE0ZGVhOWM1Li4yODFmZGJkZjMyYmQ1MDUx
Y2RlYmQyNzVmZGYwNjk0NWZhYmVlZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZU5v
ZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150106</attachid>
            <date>2012-06-29 00:46:48 -0700</date>
            <delta_ts>2012-06-29 04:33:59 -0700</delta_ts>
            <desc>WIP: with a few peephole optimizations</desc>
            <filename>bug-59816-20120629164648.patch</filename>
            <type>text/plain</type>
            <size>27215</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBl
OTIxMDkwNjI0NWQ5NTlhZDA4YWY0NmM0NWI1Y2IxZGQyNGE2MGM2Li43YTM0YzFiZWE0YTNiNjNl
ZTg5MDdhNWFmNGZjYjI4YjFjZTcxMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQy
OCw3ICs0MjgsNyBAQCB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7
CiAKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9j
dW1lbnQpCi0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCB0aGlz
KQogICAgICwgbV9ndWFyZFJlZkNvdW50KDApCiAgICAgLCBtX2NvbnRleHRGZWF0dXJlcyhDb250
ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUo
Tm9RdWlya3NNb2RlKQpAQCAtNTAwLDcgKzUwMCw4IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAg
ICAsIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlm
CiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOworICAg
IHNldFJvb3REb2N1bWVudCh0aGlzKTsKIAogICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVW
YWxpZCA9IGZhbHNlOwogCkBAIC02NTAsNyArNjUxLDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgp
CiAgICAgaWYgKGhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGNsZWFyUmFyZURhdGEoKTsKIAotICAg
IG1fZG9jdW1lbnQgPSAwOworICAgIG1fdHJlZVNjb3BlID0gMDsKIAogICAgIEluc3BlY3RvckNv
dW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpEb2N1bWVudENvdW50
ZXIpOwogfQpAQCAtMTM0MywxMyArMTM0NCwxNCBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50
KGNvbnN0IFN0cmluZyYgY29udGVudCkKIAogU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1F
VHlwZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQor
ICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmIChkb2MtPmlzWEhUTUxEb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7Ci0gICAgaWYg
KG1fZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICBpZiAoZG9jLT5pc1NWR0RvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQt
PnhtbFN0YW5kYWxvbmUoKSkKKyAgICBpZiAoZG9jLT54bWxTdGFuZGFsb25lKCkpCiAgICAgICAg
IHJldHVybiAidGV4dC94bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgp
KQorICAgIGlmIChkb2MtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAidGV4dC9o
dG1sIjsKIAogICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZWNjZjhhNzc2YmJhNTRmZDBiY2UzZWIxYTAwMzFi
MzE2OWUxOTA3NC4uODU3OTQzNWY5NDUzNmQ2YmJkMWI3NGMwNjg2MTczMjEzYzM5NzRhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1MDcsMTQgKzE1MDcsMzAgQEAgcHJpdmF0ZToKIAogLy8g
UHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50
IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbS4KIAoraW5saW5l
IERvY3VtZW50KiBOb2RlOjpkb2N1bWVudEludGVybmFsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
dHJlZVNjb3BlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV90cmVlU2NvcGUtPnJv
b3REb2N1bWVudCgpOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6OmRvY3VtZW50KCkgY29u
c3QKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb2N1bWVudEludGVybmFsKCk7CisgICAg
Ly8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9m
IGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKKyAgICAvLyBkdWUg
dG8gdGhlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgorICAgIEFTU0VSVChk
b2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1l
bnQoKSkpOworICAgIHJldHVybiBkb2N1bWVudDsKK30KKwogaW5saW5lIGJvb2wgTm9kZTo6aXNE
b2N1bWVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7Cisg
ICAgcmV0dXJuIHRoaXMgPT0gZG9jdW1lbnRJbnRlcm5hbCgpOwogfQogCiBpbmxpbmUgTm9kZTo6
Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1f
bm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVl
U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKICAg
ICAsIG1fcmVuZGVyZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWlj
Tm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuaAppbmRleCA4
YjMzZTBkMGQ5OWY2OTFmMDM2MTg0NjRkNjlkNzlkMWVjZGIwZDI1Li5hMTQ2NzU5MzQxMDkyNWRi
MWI3NWJiZDQ1ODE2NDYxODE5ZTRlZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RHluYW1pY05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlz
dC5oCkBAIC03MywxMCArNzMsMTIgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIE5vZGUqIHJv
b3ROb2RlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX2NhY2hlcy5yb290ZWRBdERvY3Vt
ZW50ICYmIG1fb3duZXJOb2RlLT5pbkRvY3VtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9v
d25lck5vZGUtPmRvY3VtZW50KCk7Ci0gICAgICAgIHJldHVybiBtX293bmVyTm9kZS5nZXQoKTsK
KyAgICAgICAgQVNTRVJUKCFtX2NhY2hlcy5yb290Tm9kZSB8fCBmaW5kUm9vdE5vZGUoKSA9PSBt
X2NhY2hlcy5yb290Tm9kZSk7CisgICAgICAgIGlmICghbV9jYWNoZXMucm9vdE5vZGUpCisgICAg
ICAgICAgICBtX2NhY2hlcy5yb290Tm9kZSA9IGZpbmRSb290Tm9kZSgpOworICAgICAgICByZXR1
cm4gbV9jYWNoZXMucm9vdE5vZGU7CiAgICAgfQorCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9vd25lck5vZGUtPmRvY3VtZW50KCk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNvbnN0ID0gMDsKIApAQCAtOTEsMTEgKzkzLDEzIEBA
IHByb3RlY3RlZDoKICAgICAgICAgdm9pZCByZXNldCgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGxhc3RJdGVtID0gMDsKKyAgICAgICAgICAgIHJvb3ROb2RlID0gMDsKICAgICAgICAgICAgIGlz
TGVuZ3RoQ2FjaGVWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgaXNJdGVtQ2FjaGVWYWxpZCA9
IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgTm9kZSogbGFzdEl0ZW07CisgICAgICAgIE5v
ZGUqIHJvb3ROb2RlOwogICAgICAgICB1bnNpZ25lZCBjYWNoZWRMZW5ndGg7CiAgICAgICAgIHVu
c2lnbmVkIGxhc3RJdGVtT2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBpc0xlbmd0aENhY2hlVmFs
aWQgOiAxOwpAQCAtMTExLDYgKzExNSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBDYWNo
ZXMgbV9jYWNoZXM7CiAKIHByaXZhdGU6CisgICAgTm9kZSogZmluZFJvb3ROb2RlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChtX2NhY2hlcy5yb290ZWRBdERvY3VtZW50ICYmIG1fb3duZXJO
b2RlLT5pbkRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gbV9vd25lck5vZGUtPmRvY3Vt
ZW50KCk7CisgICAgICAgIHJldHVybiBtX293bmVyTm9kZS5nZXQoKTsKKyAgICB9CisKICAgICB2
aXJ0dWFsIGJvb2wgaXNEeW5hbWljTm9kZUxpc3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWJjMGM5YjUzZDM1YmJjMGRm
ZDU4OTVlNTIxZDAwOTJhYzJhMzlmOS4uNWFlZDgyM2FlZTY4MmEwZWM5OGZhMTAyOGVkN2M3YTA2
NGMxOTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjgwLDE1ICs2ODAsMjEgQEAgaW5s
aW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW0KICAgICAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKCpvbGQpOwog
fQogCi12b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUpCit2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWRJbnRlcm5hbChjb25zdCBBdHRy
aWJ1dGUmIGF0dHJpYnV0ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGRvY3VtZW50KCkt
PmluY0RPTVRyZWVWZXJzaW9uKCk7CisgICAgLy8gUGFzc2VzIGRvY3VlbnQgcGFyYW10ZXIganVz
dCBmb3Igc3BlZWQuCisgICAgLy8gV2UgbmVlZCBzcGVlZCBoZXJlIGJlY3Vhc2UgYXR0cmlidXRl
Q2hhbmdlZCgpIGlzIGEgc3VwZXIgaG9zdCBmdW5jdGlvbgorICAgIC8vIHdoZW4geW91IHJ1biBE
cm9tYWVvIGRvbS1hdHRyIGJlbmNobWFyay4KKworICAgIEFTU0VSVChkb2N1bWVudCA9PSB0aGlz
LT5kb2N1bWVudCgpKTsKKyAgICAKKyAgICBkb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsK
IAogICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyaWJ1dGUubmFtZSgpKSkgewogICAgICAg
ICBpZiAoYXR0cmlidXRlLnZhbHVlKCkgIT0gYXR0cmlidXRlRGF0YSgpLT5pZEZvclN0eWxlUmVz
b2x1dGlvbigpKSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLmlzTnVsbCgpKQogICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZURhdGEoKS0+c2V0SWRGb3JTdHlsZVJlc29sdXRpb24obnVsbEF0
b20pOwotICAgICAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpCisg
ICAgICAgICAgICBlbHNlIGlmIChkb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpCiAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlRGF0YSgpLT5zZXRJZEZvclN0eWxlUmVzb2x1dGlvbihhdHRyaWJ1dGUu
dmFsdWUoKS5sb3dlcigpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVEYXRhKCktPnNldElkRm9yU3R5bGVSZXNvbHV0aW9uKGF0dHJpYnV0ZS52YWx1ZSgpKTsK
QEAgLTY5Nyw4ICs3MDMsOCBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IEhUTUxOYW1lczo6bmFtZUF0dHIpCiAgICAgICAgIHNldEhhc05hbWUoIWF0dHJpYnV0ZS5pc051
bGwoKSk7CiAKLSAgICBpZiAoIW5lZWRzU3R5bGVSZWNhbGMoKSAmJiBkb2N1bWVudCgpLT5hdHRh
Y2hlZCgpKSB7Ci0gICAgICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVu
dCgpLT5zdHlsZVJlc29sdmVySWZFeGlzdHMoKTsKKyAgICBpZiAoIW5lZWRzU3R5bGVSZWNhbGMo
KSAmJiBkb2N1bWVudC0+YXR0YWNoZWQoKSkgeworICAgICAgICBTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVyID0gZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpOwogICAgICAgICBp
ZiAoIXN0eWxlUmVzb2x2ZXIgfHwgc3R5bGVSZXNvbHZlci0+aGFzU2VsZWN0b3JGb3JBdHRyaWJ1
dGUoYXR0cmlidXRlLm5hbWUoKS5sb2NhbE5hbWUoKSkpCiAgICAgICAgICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgfQpAQCAtNzExLDI2ICs3MTcsMjYgQEAgdm9pZCBFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0cmlidXRlLm5hbWUoKTsKICAgICBpZiAoYXR0ck5h
bWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikgewogICAgICAgICAvLyBhbnkgY2hhbmdl
IHRvIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBhdHRyaWJ1dGUgdHJpZ2dlcnMgYWNjZXNzaWJpbGl0
eSBmb2N1cyBjaGFuZ2UsIGJ1dCBkb2N1bWVudCBmb2N1cyByZW1haW5zIGludGFjdAotICAgICAg
ICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFu
Z2VkKHJlbmRlcmVyKCkpOworICAgICAgICBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5oYW5k
bGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChyZW5kZXJlcigpKTsKICAgICB9IGVsc2UgaWYgKGF0
dHJOYW1lID09IHJvbGVBdHRyKSB7CiAgICAgICAgIC8vIHRoZSByb2xlIGF0dHJpYnV0ZSBjYW4g
Y2hhbmdlIGF0IGFueSB0aW1lLCBhbmQgdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgbXVzdCBwaWNr
IHVwIHRoZXNlIGNoYW5nZXMKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5o
YW5kbGVBcmlhUm9sZUNoYW5nZWQocmVuZGVyZXIoKSk7CisgICAgICAgIGRvY3VtZW50LT5heE9i
amVjdENhY2hlKCktPmhhbmRsZUFyaWFSb2xlQ2hhbmdlZChyZW5kZXJlcigpKTsKICAgICB9IGVs
c2UgaWYgKGF0dHJOYW1lID09IGFyaWFfdmFsdWVub3dBdHRyKSB7CiAgICAgICAgIC8vIElmIHRo
ZSB2YWx1ZW5vdyBhdHRyaWJ1dGUgY2hhbmdlcywgQVggY2xpZW50cyBuZWVkIHRvIGJlIG5vdGlm
aWVkLgotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRp
b24ocmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOworICAg
ICAgICBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHJlbmRlcmVy
KCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKICAgICB9IGVsc2UgaWYg
KGF0dHJOYW1lID09IGFyaWFfbGFiZWxBdHRyIHx8IGF0dHJOYW1lID09IGFyaWFfbGFiZWxlZGJ5
QXR0ciB8fCBhdHRyTmFtZSA9PSBhbHRBdHRyIHx8IGF0dHJOYW1lID09IHRpdGxlQXR0cikgewog
ICAgICAgICAvLyBJZiB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50IGNoYW5nZXMgZHVlIHRvIGFu
IGF0dHJpYnV0ZSBjaGFuZ2UsIG5vdGlmeSBhY2Nlc3NpYmlsaXR5LgotICAgICAgICBkb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCktPmNvbnRlbnRDaGFuZ2VkKHJlbmRlcmVyKCkpOworICAgICAg
ICBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5jb250ZW50Q2hhbmdlZChyZW5kZXJlcigpKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfY2hlY2tlZEF0dHIpCi0gICAgICAgIGRv
Y3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hlY2tlZFN0YXRlQ2hhbmdlZChyZW5kZXJlcigp
KTsKKyAgICAgICAgZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Y2hlY2tlZFN0YXRlQ2hhbmdl
ZChyZW5kZXJlcigpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3NlbGVjdGVkQXR0
cikKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5zZWxlY3RlZENoaWxkcmVu
Q2hhbmdlZChyZW5kZXJlcigpKTsKKyAgICAgICAgZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+
c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQocmVuZGVyZXIoKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gYXJpYV9leHBhbmRlZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+aGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKHJlbmRlcmVyKCkpOworICAgICAgICBkb2N1
bWVudC0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2UocmVuZGVyZXIo
KSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9oaWRkZW5BdHRyKQotICAgICAgICBk
b2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChyZW5kZXJlcigpKTsK
KyAgICAgICAgZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHJlbmRl
cmVyKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfaW52YWxpZEF0dHIpCi0gICAg
ICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihyZW5kZXJl
cigpLCBBWE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXNDaGFuZ2VkLCB0cnVlKTsKKyAgICAg
ICAgZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihyZW5kZXJlcigp
LCBBWE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXNDaGFuZ2VkLCB0cnVlKTsKIH0KIAogLy8g
UmV0dXJucyB0cnVlIGlzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgaGFuZGxlci4K
QEAgLTc4Miw4ICs3ODgsOSBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMoY29u
c3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvciwgRnJhZwogICAgIC8vIFN0b3Jl
IHRoZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IGNoYW5nZWQgb24gdGhlIHN0YWNrIGluIGNhc2UK
ICAgICAvLyBhdHRyaWJ1dGVDaGFuZ2VkIG11dGF0ZXMgbV9hdHRyaWJ1dGVEYXRhLgogICAgIFZl
Y3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0dHJpYnV0ZXMgPSBtX2F0dHJpYnV0ZURhdGEtPmNsb25l
ZEF0dHJpYnV0ZVZlY3RvcigpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3Vt
ZW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNsb25lZEF0dHJpYnV0ZXMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoY2xvbmVkQXR0cmlidXRlc1tpXSk7
CisgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRJbnRlcm5hbChjbG9uZWRBdHRyaWJ1dGVzW2ldLCBk
b2N1bWVudCk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlcygpIGNvbnN0CkBAIC0x
OTk1LDIyICsyMDAyLDI1IEBAIHZvaWQgRWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAKIHZvaWQgRWxlbWVu
dDo6ZGlkQWRkQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogewotICAgIGF0
dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcywgYXR0cmlidXRlLmxvY2FsTmFtZSgp
LCBhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKTsKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkSW50ZXJuYWwoYXR0cmlidXRlLCBkb2N1bWVu
dCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3Vt
ZW50LCB0aGlzLCBhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKICAg
ICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlk
TW9kaWZ5QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogewotICAgIGF0dHJp
YnV0ZUNoYW5nZWQoYXR0cmlidXRlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcywgYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBh
dHRyaWJ1dGUudmFsdWUoKSk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkSW50ZXJuYWwoYXR0cmlidXRlLCBkb2N1bWVudCk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50
LCB0aGlzLCBhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKICAgICAv
LyBEbyBub3QgZGlzcGF0Y2ggYSBET01TdWJ0cmVlTW9kaWZpZWQgZXZlbnQgaGVyZTsgc2VlIGJ1
ZyA4MTE0MS4KIH0KIAogdm9pZCBFbGVtZW50OjpkaWRSZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkKIHsKLSAgICBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZShuYW1l
LCBudWxsQXRvbSkpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9N
QXR0cihkb2N1bWVudCgpLCB0aGlzLCBuYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGF0dHJpYnV0ZUNoYW5nZWRJbnRlcm5h
bChBdHRyaWJ1dGUobmFtZSwgbnVsbEF0b20pLCBkb2N1bWVudCk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKGRvY3VtZW50LCB0aGlzLCBuYW1lLmxvY2Fs
TmFtZSgpKTsKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IGU0ZjcwY2ZhYjhiYWZkOGI1MzhiNWNlZmUyMmY5ODliYjIzZTU5YTMu
LmVmOWExNGVkNjI0MDZlYzY4MTIwOTc2Y2UzM2VjMTJhMGU3OTBlMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtMjQxLDcgKzI0MSw3IEBAIHB1YmxpYzoKICAgICBOYW1lZE5vZGVNYXAqIGF0dHJp
YnV0ZXMoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciBh
biBhdHRyaWJ1dGUgaXMgYWRkZWQsIGNoYW5nZWQgb3IgcmVtb3ZlZC4KLSAgICB2aXJ0dWFsIHZv
aWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdHRyaWJ1dGUmKTsKKyAgICB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIHsgYXR0cmlidXRlQ2hhbmdlZElu
dGVybmFsKGF0dHJpYnV0ZSwgZG9jdW1lbnQoKSk7IH0KIAogICAgIC8vIE9ubHkgY2FsbGVkIGJ5
IHRoZSBwYXJzZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgZWxlbWVudCBjb25zdHJ1Y3Rpb24uCiAgICAg
dm9pZCBwYXJzZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiwgRnJhZ21l
bnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKQEAgLTQzOSw2ICs0MzksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250
YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUq
IGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwg
dm9pZCBhdHRyaWJ1dGVDaGFuZ2VkSW50ZXJuYWwoY29uc3QgQXR0cmlidXRlJiwgRG9jdW1lbnQq
KTsKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggNzllZjZiODMxMDE4NjZjZWYyN2Y0MzVmMzMyY2VkMzc4NzZkNWJkMi4uNmFhNDc1NWM5
MDk2NDlkYmIwMjExMWNhODVhZDgwYjE3MmZjN2E1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDA1
LDcgKzQwNSw3IEBAIE5vZGU6On5Ob2RlKCkKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAg
ZGV0YWNoKCk7CiAKLSAgICBEb2N1bWVudCogZG9jID0gbV9kb2N1bWVudDsKKyAgICBEb2N1bWVu
dCogZG9jID0gZG9jdW1lbnRJbnRlcm5hbCgpOwogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nl
c3NpYmlsaXR5RW5hYmxlZCgpICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSkK
ICAgICAgICAgZG9jLT5heE9iamVjdENhY2hlKCktPnJlbW92ZU5vZGVGb3JVc2UodGhpcyk7CiAg
ICAgCkBAIC00MjAsMzkgKzQyMCwxNCBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgSW5zcGVjdG9yQ291
bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsK
IH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIE5v
ZGU6OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQogewotICAgIEFTU0VSVCghaW5Eb2N1
bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpOwotICAgIGlmIChpbkRvY3VtZW50KCkg
fHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kb2N1
bWVudCA9IGRvY3VtZW50OwotfQotCi1Ob2RlUmFyZURhdGEqIE5vZGU6OnNldFRyZWVTY29wZShU
cmVlU2NvcGUqIHNjb3BlKQotewotICAgIGlmICghc2NvcGUpIHsKLSAgICAgICAgaWYgKGhhc1Jh
cmVEYXRhKCkpIHsKLSAgICAgICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IHJhcmVEYXRhKCk7
Ci0gICAgICAgICAgICBkYXRhLT5zZXRUcmVlU2NvcGUoMCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZGF0YTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIE5vZGVS
YXJlRGF0YSogZGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7Ci0gICAgZGF0YS0+c2V0VHJlZVNjb3Bl
KHNjb3BlKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICBtX3RyZWVTY29wZSA9IHNjb3BlOwogfQog
CiBUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFVz
aW5nIG1fZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4gc2VlIGNvbW1lbnQgd2l0aCBk
b2N1bWVudCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0g
ICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIFRyZWVTY29wZSogc2NvcGUgPSByYXJlRGF0
YSgpLT50cmVlU2NvcGUoKTsKLSAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IG1fZG9jdW1lbnQ7
CisgICAgcmV0dXJuIG1fdHJlZVNjb3BlOwogfQogCiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVE
YXRhKCkgY29uc3QKQEAgLTI4MjAsNyArMjc5NSw3IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBtZW1v
cnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6RE9NKTsKICAgICBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OjpyZXBvcnRNZW1v
cnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1l
bW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwotICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9y
dFBvaW50ZXIobV9kb2N1bWVudCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIG1l
bW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIoZG9jdW1lbnQoKSwgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpET00pOwogICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBv
aW50ZXIobV9uZXh0KTsKICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQ
b2ludGVyKG1fcHJldmlvdXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggOGM0NzdjMDVkZWFhYWZmMDdk
ZDI0MWQ2NDVhZjI1ZWViYjg3ODYyYi4uNDgxNDAyZmZkMTNkZDViODdlNTRkZGFjMjlkYzA2YjMy
NjI2ODE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00MDcsMTQgKzQwNyw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFJldHVybnMgdGhlIGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG5vZGUuIFRoaXMg
bWV0aG9kIG5ldmVyIHJldHVybnMgTlVMTCwgZXhjZXB0IGluIHRoZSBjYXNlIAogICAgIC8vIG9m
IGEgRG9jdW1lbnRUeXBlIG5vZGUgdGhhdCBpcyBub3QgdXNlZCB3aXRoIGFueSBEb2N1bWVudCB5
ZXQuIEEgRG9jdW1lbnQgbm9kZSByZXR1cm5zIGl0c2VsZi4KLSAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKHRoaXMpOwotICAgICAgICAvLyBGSVhN
RTogYmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1l
bnQoKSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgotICAgICAgICAvLyBkdWUgdG8g
dGhlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgotICAgICAgICBBU1NFUlQo
bV9kb2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9j
dW1lbnQoKSkpOwotICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICB9CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKICAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0
OwogCkBAIC00MjIsNyArNDE1LDcgQEAgcHVibGljOgogICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ug
b3RoZXJ3aXNlLgogICAgIGJvb2wgaW5Eb2N1bWVudCgpIGNvbnN0IAogICAgIHsgCi0gICAgICAg
IEFTU0VSVChtX2RvY3VtZW50IHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CisgICAgICAg
IEFTU0VSVChtX3RyZWVTY29wZSB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOwogICAgICAg
ICByZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAgICAgfQogCkBAIC03MzMsMTYgKzcy
NiwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpIHsg
c2V0RmxhZyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQogCisgICAgdm9pZCBzZXRU
cmVlU2NvcGUoVHJlZVNjb3BlKik7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50SW50ZXJuYWwoKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBDb250
YWluZXJOb2RlPjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIC8vIFRoZXNl
IEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgotICAg
IC8vIHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9k
ZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRlLgotICAgIE5vZGVSYXJl
RGF0YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwotICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9j
dW1lbnQqKTsKLQogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlFZGl0
YWJsZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwpIGNvbnN0
OwogICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShFZGl0YWJsZUxldmVsKSBjb25z
dDsKQEAgLTc4NSw3ICs3NzYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBtdXRhYmxlIHVp
bnQzMl90IG1fbm9kZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIFRyZWVT
Y29wZSogbV90cmVlU2NvcGU7CiAgICAgTm9kZSogbV9wcmV2aW91czsKICAgICBOb2RlKiBtX25l
eHQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oCmluZGV4IGI3ZjM1OWU2MDE1NWY2NjVkNmZjNzI2ZTlmOWJlZDU0M2Q1ZDg1ODYuLmZhY2M2
NzdiNmJhOWEwMGFhODNiYzVkMWZhZThkMmI4OWUwOTE4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgKQEAgLTE4MCw4ICsxODAsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOiAgICAKICAgICBOb2RlUmFyZURhdGEoKQotICAgICAgICA6IG1fdHJlZVNjb3Bl
KDApCi0gICAgICAgICwgbV9jaGlsZE5vZGVMaXN0KDApCisgICAgICAgIDogbV9jaGlsZE5vZGVM
aXN0KDApCiAgICAgICAgICwgbV90YWJJbmRleCgwKQogICAgICAgICAsIG1fdGFiSW5kZXhXYXNT
ZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNGb2N1c2VkKGZhbHNlKQpAQCAtMjA5
LDkgKzIwOCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KG5v
ZGUpOwogICAgIH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4g
bV90cmVlU2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRyZWVTY29w
ZSkgeyBtX3RyZWVTY29wZSA9IHRyZWVTY29wZTsgfQotICAgIAogICAgIHZvaWQgY2xlYXJOb2Rl
TGlzdHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2b2lkIHNldE5vZGVMaXN0cyhQ
YXNzT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBtX25vZGVMaXN0cyA9IGxpc3Rz
OyB9CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0dXJuIG1f
bm9kZUxpc3RzLmdldCgpOyB9CkBAIC0zNTAsNyArMzQ2LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0
ZToKICAgICB2b2lkIGNyZWF0ZU5vZGVMaXN0cyhOb2RlKik7CiAKLSAgICBUcmVlU2NvcGUqIG1f
dHJlZVNjb3BlOwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAg
ICAgQ2hpbGROb2RlTGlzdCogbV9jaGlsZE5vZGVMaXN0OwogICAgIE93blB0cjxFdmVudFRhcmdl
dERhdGE+IG1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4
IDJjNTc1NjBiZjI2ZjMyNzcyMjNjNDhiZTQ5NTc0ZGU0NGZkNzIwNWUuLmM1MTM1MTg0MDcyNGQy
NDBmZTM1OWZiYTlkNGNkYjdlN2Y1ZjAwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dSb290OjpTaGFk
b3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1l
bnQsIENyZWF0ZVNoYWRvd1Jvb3QpCi0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVT
Y29wZSh0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0KDApCiAg
ICAgLCBtX2FwcGx5QXV0aG9yU3R5bGVzKGZhbHNlKQpAQCAtNTksNyArNTksNyBAQCBTaGFkb3dS
b290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICBzZXRQYXJlbnRUcmVlU2Nv
cGUoZG9jdW1lbnQpOwogICAgIC8vIFNoYWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBw
b2ludGVyIHBvaW50IHRvIHRoZW1zZWx2ZXMuCiAgICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGls
ZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1cmVS
YXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwog
fQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAKaW5kZXggYTY3MzM1MTZkMDU3MzFjYjdhYWY0Zjg1NmJhMTliMmQ1NThjZWE2Zi4uZWM5
NWVlOThlOWQxYjljNjJmYjFiYTAyNjhjMmU0Y2ViODM5MjM2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24q
IFN0eWxlZEVsZW1lbnQ6OnN0eWxlKCkKICAgICByZXR1cm4gZW5zdXJlQXR0cmlidXRlRGF0YSgp
LT5lbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUodGhpcyktPmVuc3VyZUlubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24odGhpcyk7IAogfQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJp
YnV0ZUNoYW5nZWRJbnRlcm5hbChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogewogICAgIHBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAKQEAgLTE1NCw3
ICsxNTQsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoSW5saW5lU3R5
bGVDaGFuZ2UpOwogICAgIH0KIAotICAgIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoYXR0cmli
dXRlKTsKKyAgICBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkSW50ZXJuYWwoYXR0cmlidXRlLCBk
b2N1bWVudCk7CiB9CiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuaAppbmRleCBhYmQ0OWFkYzdjZmEwZjFlNWRiMTEwZGNkZjMxOGVlOGU2MjQ2MzdlLi43
YmJhOGM0NGY5ZWZmMTE4ODk3YzUzODhmYmFjNzdlYTRiZGJhYjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IFN0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgQ29uc3RydWN0
aW9uVHlwZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdHRy
aWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZEludGVy
bmFsKGNvbnN0IEF0dHJpYnV0ZSYsIERvY3VtZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpOwogCiAgICAgdmlydHVhbCBib29s
IGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCA1NjQyZmNmOGRkMzNm
YmMxZmJmMjAzYmRkYjFmYjhiZTI1MzdhZWZiLi4yYWU5ODRlZDQyZmIxODc1YWE1NmY2ZWM5YTA4
MGRjZGJlYzRkYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNTEsOCArNTEsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVRy
ZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKQorVHJlZVNjb3BlOjpU
cmVlU2NvcGUoQ29udGFpbmVyTm9kZSogcm9vdE5vZGUsIERvY3VtZW50KiByb290RG9jdW1lbnQp
CiAgICAgOiBtX3Jvb3ROb2RlKHJvb3ROb2RlKQorICAgICwgbV9yb290RG9jdW1lbnQocm9vdERv
Y3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKICAgICAsIG1fbnVtTm9kZUxpc3RD
YWNoZXMoMCkKIHsKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRy
ZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQYXJlbnRT
Y29wZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIG1f
cm9vdERvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQogCiBFbGVt
ZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVu
dElkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IDVlY2MwMzkyZjM3MTcwYmVlMzA1
Mzk5MjE0MjQ5N2NmYWI3YWNiMGIuLmQwYTY1MDA1YTBlYzA2NmY0N2YwOWMzYzVlNzY1ZTg0NDJh
MTU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgRE9NU2VsZWN0aW9uOwor
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBj
bGFzcyBOb2RlOwpAQCAtODEsMTUgKzgyLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkb3B0SWZO
ZWVkZWQoTm9kZSopOwogCiAgICAgQ29udGFpbmVyTm9kZSogcm9vdE5vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3ROb2RlOyB9CisgICAgRG9jdW1lbnQqIHJvb3REb2N1bWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdERvY3VtZW50OyB9CisgICAgdm9pZCBzZXRSb290RG9jdW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50KSB7IG1fcm9vdERvY3VtZW50ID0gZG9jdW1lbnQ7IH0KIAogcHJvdGVjdGVk
OgotICAgIFRyZWVTY29wZShDb250YWluZXJOb2RlKik7CisgICAgVHJlZVNjb3BlKENvbnRhaW5l
ck5vZGUqLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9p
ZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCiBwcml2YXRlOgogICAgIENvbnRhaW5lck5vZGUq
IG1fcm9vdE5vZGU7CisgICAgRG9jdW1lbnQqIG1fcm9vdERvY3VtZW50OwogICAgIFRyZWVTY29w
ZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50
c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5kZXggODhlMWE2
ZmQ1ZGUxM2VkZjdmNzAzOTJhYWFhOTEyYWRmZDZmZTcyNy4uZDMyNGYzNGNmMjA3NjA3YWJhMTQx
MGMyYTEwMzBlNDBlMmUwNjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVy
LmNwcApAQCAtNDcsNyArNDcsOCBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9O
ZXdTY29wZShOb2RlKiByb290KSBjb25zdAogICAgICAgICBvbGREb2N1bWVudC0+aW5jRE9NVHJl
ZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBu
b2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7Ci0gICAgICAgIE5vZGVSYXJlRGF0YSogcmFy
ZURhdGEgPSBub2RlLT5zZXRUcmVlU2NvcGUobmV3RG9jdW1lbnQgPT0gbV9uZXdTY29wZSA/IDAg
OiBtX25ld1Njb3BlKTsKKyAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG1fbmV3U2NvcGUpOwor
ICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+aGFzUmFyZURhdGEoKSA/IG5v
ZGUtPnJhcmVEYXRhKCkgOiAwOwogICAgICAgICBpZiAocmFyZURhdGEgJiYgcmFyZURhdGEtPm5v
ZGVMaXN0cygpKQogICAgICAgICAgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5hZG9wdFRyZWVT
Y29wZShtX29sZFNjb3BlLCBtX25ld1Njb3BlLCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwog
CkBAIC05MSw4ICs5Miw2IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2Rl
VG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERv
Y3VtZW50KQogICAgICAgICBvbGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3Vt
ZW50KG5vZGUsIG5ld0RvY3VtZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3Vt
ZW50KTsKLQogI2lmbmRlZiBOREVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxl
ZCA9IGZhbHNlOwogICAgIG9sZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRX
aXRoID0gb2xkRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01v
dmVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCmluZGV4IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5NDM4ZjQ1OWRj
ZmExMzQuLjViZjU0NTQxMzIzYzA3OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNlbGVjdGlvbkNv
bW1hbmQuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFn
bWVudC5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMTk2NTdhYzBmYzc3
MjEyMjM1ODM1NzRiYzZiZDIwODFkM2RjNzY5Ni4uOGJlMjA3MDYxNGM0OTUzMTM4YTNjNTlmMDVm
NDc1YmViM2JkYjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVO
b2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29t
bWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJSZW1vdmVOb2RlQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5D
b21tYW5kLmNwcAppbmRleCAxNDUyZjg4MDNmYWJjNTcwYTI1NGZhNWEyZTk2ZTQwZjE0ZGVhOWM1
Li4yODFmZGJkZjMyYmQ1MDUxY2RlYmQyNzVmZGYwNjk0NWZhYmVlZjNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hp
bGRyZW5Db21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgiCiAKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYzFmZmU4NThkNDMwMWJk
OGQ1ZjkyNWIzMWUyZjc3ZmZjMjRjMDFlMy4uNmVkNWQxNTdjZTg1NmMyZTJjZWQ3NzYzMWFlY2Q1
MjYwMjQzNWZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNTA5LDkgKzUwOSw5
IEBAIGJvb2wgU1ZHRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYgY2hpbGRDb250CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFNWR0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUp
Cit2b2lkIFNWR0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWRJbnRlcm5hbChjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFN0eWxlZEVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlKTsKKyAgICBTdHlsZWRFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkSW50ZXJuYWwoYXR0cmlidXRlLCBkb2N1bWVudCk7CiAKICAgICAvLyBXaGVuIGFu
IGFuaW1hdGVkIFNWRyBwcm9wZXJ0eSBjaGFuZ2VzIHRocm91Z2ggU1ZHIERPTSwgc3ZnQXR0cmli
dXRlQ2hhbmdlZCgpIGlzIGNhbGxlZCwgbm90IGF0dHJpYnV0ZUNoYW5nZWQoKS4KICAgICAvLyBO
ZXh0IHRpbWUgc29tZW9uZSB0cmllcyB0byBhY2Nlc3MgdGhlIFhNTCBhdHRyaWJ1dGVzLCB0aGUg
c3luY2hyb25pemF0aW9uIGNvZGUgc3RhcnRzLiBEdXJpbmcgdGhhdCBzeW5jaHJvbml6YXRpb24K
QEAgLTUyMiw4ICs1MjIsOCBAQCB2b2lkIFNWR0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpc0lk
QXR0cmlidXRlTmFtZShhdHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAgICBkb2N1bWVudCgpLT5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEFuaW1hdGlvbkVsZW1lbnRzRnJvbVRhcmdl
dCh0aGlzKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1v
dmVBbGxFbGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldCh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQt
PmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlQWxsQW5pbWF0aW9uRWxlbWVudHNGcm9tVGFy
Z2V0KHRoaXMpOworICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1v
dmVBbGxFbGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldCh0aGlzKTsKICAgICB9CiAKICAgICAvLyBD
aGFuZ2VzIHRvIHRoZSBzdHlsZSBhdHRyaWJ1dGUgYXJlIHByb2Nlc3NlZCBsYXppbHkgKHNlZSBF
bGVtZW50OjpnZXRBdHRyaWJ1dGUoKSBhbmQgcmVsYXRlZCBtZXRob2RzKSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCmluZGV4IDQ3MDIzNWFlZjAyNThkZDVlMzk2ZTI4YjY1YTA3YjU1ZTEwMGUyYTEu
LjA4MTdmNTZlZTY5YjgxM2Q5NzA5NDA1YzM5MGQ0ZmJmYmYwNjM1M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAgICAgU1ZHRWxlbWVudCogY29y
cmVzcG9uZGluZ0VsZW1lbnQoKTsKICAgICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNW
R0VsZW1lbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkSW50ZXJuYWwo
Y29uc3QgQXR0cmlidXRlJiwgRG9jdW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Owog
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5k
ZXJlcigpIE9WRVJSSURFOwpAQCAtMTIyLDcgKzEyMyw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSopIE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150138</attachid>
            <date>2012-06-29 04:34:05 -0700</date>
            <delta_ts>2012-07-04 21:54:16 -0700</delta_ts>
            <desc>WIP: Almost working</desc>
            <filename>bug-59816-20120629203405.patch</filename>
            <type>text/plain</type>
            <size>28919</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBl
OTIxMDkwNjI0NWQ5NTlhZDA4YWY0NmM0NWI1Y2IxZGQyNGE2MGM2Li5jZWQwZDhlYWExNWFlZTE2
NGNmNDg2M2JmMjM3ZWU4NDM1OWZhNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQy
OCw3ICs0MjgsNyBAQCB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7
CiAKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9j
dW1lbnQpCi0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCB0aGlz
KQogICAgICwgbV9ndWFyZFJlZkNvdW50KDApCiAgICAgLCBtX2NvbnRleHRGZWF0dXJlcyhDb250
ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUo
Tm9RdWlya3NNb2RlKQpAQCAtNTAwLDcgKzUwMCw4IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAg
ICAsIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlm
CiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOworICAg
IHNldFJvb3REb2N1bWVudCh0aGlzKTsKIAogICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVW
YWxpZCA9IGZhbHNlOwogCkBAIC02NTAsNyArNjUxLDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgp
CiAgICAgaWYgKGhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGNsZWFyUmFyZURhdGEoKTsKIAotICAg
IG1fZG9jdW1lbnQgPSAwOworICAgIHNldFRyZWVTY29wZSgwKTsKIAogICAgIEluc3BlY3RvckNv
dW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpEb2N1bWVudENvdW50
ZXIpOwogfQpAQCAtMTM0MywxMyArMTM0NCwxNCBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50
KGNvbnN0IFN0cmluZyYgY29udGVudCkKIAogU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1F
VHlwZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQor
ICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmIChkb2MtPmlzWEhUTUxEb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7Ci0gICAgaWYg
KG1fZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICBpZiAoZG9jLT5pc1NWR0RvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQt
PnhtbFN0YW5kYWxvbmUoKSkKKyAgICBpZiAoZG9jLT54bWxTdGFuZGFsb25lKCkpCiAgICAgICAg
IHJldHVybiAidGV4dC94bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgp
KQorICAgIGlmIChkb2MtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAidGV4dC9o
dG1sIjsKIAogICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZWNjZjhhNzc2YmJhNTRmZDBiY2UzZWIxYTAwMzFi
MzE2OWUxOTA3NC4uOWFlYzMwMmQ3NmZhZmU5MmI2YmJkYmM0OGFlZmExZjRkOGVhYzBjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1MDcsMTQgKzE1MDcsMzggQEAgcHJpdmF0ZToKIAogLy8g
UHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50
IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbS4KIAoraW5saW5l
IFRyZWVTY29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90cmVl
U2NvcGUgPT0gVHJlZVNjb3BlOjpudWxsSW5zdGFuY2UoKSA/IDAgOiBtX3RyZWVTY29wZTsKK30K
KworaW5saW5lIHZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCit7Cisg
ICAgbV90cmVlU2NvcGUgPSBzY29wZSA/IHNjb3BlIDogVHJlZVNjb3BlOjpudWxsSW5zdGFuY2Uo
KTsKK30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVudEludGVybmFsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV90cmVlU2NvcGUtPnJvb3REb2N1bWVudCgpOworfQorCitpbmxpbmUg
RG9jdW1lbnQqIE5vZGU6OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBkb2N1bWVudEludGVybmFsKCk7CisgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1
c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVj
dG9yIG9yIGRlc3RydWN0b3IKKyAgICAvLyBkdWUgdG8gdGhlIHZpcnR1YWwgZnVuY3Rpb24gY2Fs
bCB0byBub2RlVHlwZSgpLgorICAgIEFTU0VSVChkb2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBE
T0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1lbnQoKSkpOworICAgIHJldHVybiBkb2N1bWVu
dDsKK30KKwogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogewotICAg
IHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7CisgICAgcmV0dXJuIHRoaXMgPT0gZG9jdW1lbnRJ
bnRlcm5hbCgpOwogfQogCiBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENv
bnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX2Rv
Y3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2NvcGUoZG9jdW1lbnQgPyBkb2N1bWVudCA6
IFRyZWVTY29wZTo6bnVsbEluc3RhbmNlKCkpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBt
X25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EeW5hbWljTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxp
c3QuaAppbmRleCA4YjMzZTBkMGQ5OWY2OTFmMDM2MTg0NjRkNjlkNzlkMWVjZGIwZDI1Li5hMTQ2
NzU5MzQxMDkyNWRiMWI3NWJiZDQ1ODE2NDYxODE5ZTRlZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0R5
bmFtaWNOb2RlTGlzdC5oCkBAIC03MywxMCArNzMsMTIgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIE5vZGUqIHJvb3ROb2RlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX2NhY2hlcy5y
b290ZWRBdERvY3VtZW50ICYmIG1fb3duZXJOb2RlLT5pbkRvY3VtZW50KCkpCi0gICAgICAgICAg
ICByZXR1cm4gbV9vd25lck5vZGUtPmRvY3VtZW50KCk7Ci0gICAgICAgIHJldHVybiBtX293bmVy
Tm9kZS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKCFtX2NhY2hlcy5yb290Tm9kZSB8fCBmaW5kUm9v
dE5vZGUoKSA9PSBtX2NhY2hlcy5yb290Tm9kZSk7CisgICAgICAgIGlmICghbV9jYWNoZXMucm9v
dE5vZGUpCisgICAgICAgICAgICBtX2NhY2hlcy5yb290Tm9kZSA9IGZpbmRSb290Tm9kZSgpOwor
ICAgICAgICByZXR1cm4gbV9jYWNoZXMucm9vdE5vZGU7CiAgICAgfQorCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9vd25lck5vZGUtPmRvY3VtZW50KCk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNvbnN0ID0gMDsKIApAQCAtOTEs
MTEgKzkzLDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCByZXNldCgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGxhc3RJdGVtID0gMDsKKyAgICAgICAgICAgIHJvb3ROb2RlID0gMDsKICAg
ICAgICAgICAgIGlzTGVuZ3RoQ2FjaGVWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgaXNJdGVt
Q2FjaGVWYWxpZCA9IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgTm9kZSogbGFzdEl0ZW07
CisgICAgICAgIE5vZGUqIHJvb3ROb2RlOwogICAgICAgICB1bnNpZ25lZCBjYWNoZWRMZW5ndGg7
CiAgICAgICAgIHVuc2lnbmVkIGxhc3RJdGVtT2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBpc0xl
bmd0aENhY2hlVmFsaWQgOiAxOwpAQCAtMTExLDYgKzExNSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAg
bXV0YWJsZSBDYWNoZXMgbV9jYWNoZXM7CiAKIHByaXZhdGU6CisgICAgTm9kZSogZmluZFJvb3RO
b2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NhY2hlcy5yb290ZWRBdERvY3VtZW50
ICYmIG1fb3duZXJOb2RlLT5pbkRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gbV9vd25l
ck5vZGUtPmRvY3VtZW50KCk7CisgICAgICAgIHJldHVybiBtX293bmVyTm9kZS5nZXQoKTsKKyAg
ICB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljTm9kZUxpc3QoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWJjMGM5
YjUzZDM1YmJjMGRmZDU4OTVlNTIxZDAwOTJhYzJhMzlmOS4uNWFlZDgyM2FlZTY4MmEwZWM5OGZh
MTAyOGVkN2M3YTA2NGMxOTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjgwLDE1ICs2
ODAsMjEgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90
IGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW0KICAgICAgICAgZGlkTW9kaWZ5QXR0cmli
dXRlKCpvbGQpOwogfQogCi12b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWRJbnRlcm5h
bChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAg
IGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7CisgICAgLy8gUGFzc2VzIGRvY3VlbnQg
cGFyYW10ZXIganVzdCBmb3Igc3BlZWQuCisgICAgLy8gV2UgbmVlZCBzcGVlZCBoZXJlIGJlY3Vh
c2UgYXR0cmlidXRlQ2hhbmdlZCgpIGlzIGEgc3VwZXIgaG9zdCBmdW5jdGlvbgorICAgIC8vIHdo
ZW4geW91IHJ1biBEcm9tYWVvIGRvbS1hdHRyIGJlbmNobWFyay4KKworICAgIEFTU0VSVChkb2N1
bWVudCA9PSB0aGlzLT5kb2N1bWVudCgpKTsKKyAgICAKKyAgICBkb2N1bWVudC0+aW5jRE9NVHJl
ZVZlcnNpb24oKTsKIAogICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyaWJ1dGUubmFtZSgp
KSkgewogICAgICAgICBpZiAoYXR0cmlidXRlLnZhbHVlKCkgIT0gYXR0cmlidXRlRGF0YSgpLT5p
ZEZvclN0eWxlUmVzb2x1dGlvbigpKSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLmlzTnVs
bCgpKQogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZURhdGEoKS0+c2V0SWRGb3JTdHlsZVJlc29s
dXRpb24obnVsbEF0b20pOwotICAgICAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQoKS0+aW5RdWly
a3NNb2RlKCkpCisgICAgICAgICAgICBlbHNlIGlmIChkb2N1bWVudC0+aW5RdWlya3NNb2RlKCkp
CiAgICAgICAgICAgICAgICAgYXR0cmlidXRlRGF0YSgpLT5zZXRJZEZvclN0eWxlUmVzb2x1dGlv
bihhdHRyaWJ1dGUudmFsdWUoKS5sb3dlcigpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVEYXRhKCktPnNldElkRm9yU3R5bGVSZXNvbHV0aW9uKGF0dHJpYnV0
ZS52YWx1ZSgpKTsKQEAgLTY5Nyw4ICs3MDMsOCBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgfSBlbHNlIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IEhUTUxOYW1lczo6bmFtZUF0dHIpCiAgICAgICAgIHNldEhhc05hbWUoIWF0
dHJpYnV0ZS5pc051bGwoKSk7CiAKLSAgICBpZiAoIW5lZWRzU3R5bGVSZWNhbGMoKSAmJiBkb2N1
bWVudCgpLT5hdHRhY2hlZCgpKSB7Ci0gICAgICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXIgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVySWZFeGlzdHMoKTsKKyAgICBpZiAoIW5lZWRz
U3R5bGVSZWNhbGMoKSAmJiBkb2N1bWVudC0+YXR0YWNoZWQoKSkgeworICAgICAgICBTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygp
OwogICAgICAgICBpZiAoIXN0eWxlUmVzb2x2ZXIgfHwgc3R5bGVSZXNvbHZlci0+aGFzU2VsZWN0
b3JGb3JBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKS5sb2NhbE5hbWUoKSkpCiAgICAgICAgICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQpAQCAtNzExLDI2ICs3MTcsMjYgQEAgdm9p
ZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQog
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0cmlidXRlLm5hbWUoKTsKICAg
ICBpZiAoYXR0ck5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikgewogICAgICAgICAv
LyBhbnkgY2hhbmdlIHRvIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBhdHRyaWJ1dGUgdHJpZ2dlcnMg
YWNjZXNzaWJpbGl0eSBmb2N1cyBjaGFuZ2UsIGJ1dCBkb2N1bWVudCBmb2N1cyByZW1haW5zIGlu
dGFjdAotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKHJlbmRlcmVyKCkpOworICAgICAgICBkb2N1bWVudC0+YXhPYmplY3RD
YWNoZSgpLT5oYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChyZW5kZXJlcigpKTsKICAgICB9
IGVsc2UgaWYgKGF0dHJOYW1lID09IHJvbGVBdHRyKSB7CiAgICAgICAgIC8vIHRoZSByb2xlIGF0
dHJpYnV0ZSBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCBhbmQgdGhlIEFjY2Vzc2liaWxpdHlPYmpl
Y3QgbXVzdCBwaWNrIHVwIHRoZXNlIGNoYW5nZXMKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpLT5oYW5kbGVBcmlhUm9sZUNoYW5nZWQocmVuZGVyZXIoKSk7CisgICAgICAgIGRv
Y3VtZW50LT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFyaWFSb2xlQ2hhbmdlZChyZW5kZXJlcigp
KTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfdmFsdWVub3dBdHRyKSB7CiAgICAg
ICAgIC8vIElmIHRoZSB2YWx1ZW5vdyBhdHRyaWJ1dGUgY2hhbmdlcywgQVggY2xpZW50cyBuZWVk
IHRvIGJlIG5vdGlmaWVkLgotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBv
c3ROb3RpZmljYXRpb24ocmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQs
IHRydWUpOworICAgICAgICBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0
aW9uKHJlbmRlcmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKICAg
ICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfbGFiZWxBdHRyIHx8IGF0dHJOYW1lID09IGFy
aWFfbGFiZWxlZGJ5QXR0ciB8fCBhdHRyTmFtZSA9PSBhbHRBdHRyIHx8IGF0dHJOYW1lID09IHRp
dGxlQXR0cikgewogICAgICAgICAvLyBJZiB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50IGNoYW5n
ZXMgZHVlIHRvIGFuIGF0dHJpYnV0ZSBjaGFuZ2UsIG5vdGlmeSBhY2Nlc3NpYmlsaXR5LgotICAg
ICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNvbnRlbnRDaGFuZ2VkKHJlbmRlcmVy
KCkpOworICAgICAgICBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5jb250ZW50Q2hhbmdlZChy
ZW5kZXJlcigpKTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfY2hlY2tlZEF0dHIp
Ci0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hlY2tlZFN0YXRlQ2hhbmdl
ZChyZW5kZXJlcigpKTsKKyAgICAgICAgZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Y2hlY2tl
ZFN0YXRlQ2hhbmdlZChyZW5kZXJlcigpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlh
X3NlbGVjdGVkQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5zZWxl
Y3RlZENoaWxkcmVuQ2hhbmdlZChyZW5kZXJlcigpKTsKKyAgICAgICAgZG9jdW1lbnQtPmF4T2Jq
ZWN0Q2FjaGUoKS0+c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQocmVuZGVyZXIoKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9leHBhbmRlZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCkt
PmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKHJlbmRlcmVyKCkpOwor
ICAgICAgICBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBcmlhRXhwYW5kZWRDaGFu
Z2UocmVuZGVyZXIoKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9oaWRkZW5BdHRy
KQotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChy
ZW5kZXJlcigpKTsKKyAgICAgICAgZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRyZW5D
aGFuZ2VkKHJlbmRlcmVyKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfaW52YWxp
ZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNh
dGlvbihyZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXNDaGFuZ2VkLCB0
cnVlKTsKKyAgICAgICAgZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlv
bihyZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXNDaGFuZ2VkLCB0cnVl
KTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZl
bnQgaGFuZGxlci4KQEAgLTc4Miw4ICs3ODgsOSBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0
dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvciwgRnJhZwog
ICAgIC8vIFN0b3JlIHRoZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IGNoYW5nZWQgb24gdGhlIHN0
YWNrIGluIGNhc2UKICAgICAvLyBhdHRyaWJ1dGVDaGFuZ2VkIG11dGF0ZXMgbV9hdHRyaWJ1dGVE
YXRhLgogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0dHJpYnV0ZXMgPSBtX2F0dHJpYnV0
ZURhdGEtPmNsb25lZEF0dHJpYnV0ZVZlY3RvcigpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNsb25lZEF0
dHJpYnV0ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoY2xvbmVkQXR0
cmlidXRlc1tpXSk7CisgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRJbnRlcm5hbChjbG9uZWRBdHRy
aWJ1dGVzW2ldLCBkb2N1bWVudCk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlcygp
IGNvbnN0CkBAIC0xOTk1LDIyICsyMDAyLDI1IEBAIHZvaWQgRWxlbWVudDo6d2lsbE1vZGlmeUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAK
IHZvaWQgRWxlbWVudDo6ZGlkQWRkQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRl
KQogewotICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlKTsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcywgYXR0cmlidXRl
LmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkSW50ZXJuYWwoYXR0cmli
dXRlLCBkb2N1bWVudCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlE
T01BdHRyKGRvY3VtZW50LCB0aGlzLCBhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52
YWx1ZSgpKTsKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiB9CiAKIHZvaWQg
RWxlbWVudDo6ZGlkTW9kaWZ5QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQog
ewotICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcywgYXR0cmlidXRlLmxv
Y2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
dGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkSW50ZXJuYWwoYXR0cmlidXRl
LCBkb2N1bWVudCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01B
dHRyKGRvY3VtZW50LCB0aGlzLCBhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1
ZSgpKTsKICAgICAvLyBEbyBub3QgZGlzcGF0Y2ggYSBET01TdWJ0cmVlTW9kaWZpZWQgZXZlbnQg
aGVyZTsgc2VlIGJ1ZyA4MTE0MS4KIH0KIAogdm9pZCBFbGVtZW50OjpkaWRSZW1vdmVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKLSAgICBhdHRyaWJ1dGVDaGFuZ2VkKEF0
dHJpYnV0ZShuYW1lLCBudWxsQXRvbSkpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVtb3ZlRE9NQXR0cihkb2N1bWVudCgpLCB0aGlzLCBuYW1lLmxvY2FsTmFtZSgpKTsKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGF0dHJpYnV0ZUNo
YW5nZWRJbnRlcm5hbChBdHRyaWJ1dGUobmFtZSwgbnVsbEF0b20pLCBkb2N1bWVudCk7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKGRvY3VtZW50LCB0aGlz
LCBuYW1lLmxvY2FsTmFtZSgpKTsKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGU0ZjcwY2ZhYjhiYWZkOGI1MzhiNWNlZmUyMmY5
ODliYjIzZTU5YTMuLmVmOWExNGVkNjI0MDZlYzY4MTIwOTc2Y2UzM2VjMTJhMGU3OTBlMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaApAQCAtMjQxLDcgKzI0MSw3IEBAIHB1YmxpYzoKICAgICBOYW1lZE5v
ZGVNYXAqIGF0dHJpYnV0ZXMoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxl
ZCB3aGVuZXZlciBhbiBhdHRyaWJ1dGUgaXMgYWRkZWQsIGNoYW5nZWQgb3IgcmVtb3ZlZC4KLSAg
ICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdHRyaWJ1dGUmKTsKKyAgICB2
b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIHsgYXR0cmli
dXRlQ2hhbmdlZEludGVybmFsKGF0dHJpYnV0ZSwgZG9jdW1lbnQoKSk7IH0KIAogICAgIC8vIE9u
bHkgY2FsbGVkIGJ5IHRoZSBwYXJzZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgZWxlbWVudCBjb25zdHJ1
Y3Rpb24uCiAgICAgdm9pZCBwYXJzZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1
dGU+JiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKQEAgLTQzOSw2ICs0MzksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5n
ZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwor
ICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkSW50ZXJuYWwoY29uc3QgQXR0cmlidXRl
JiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVD
aGFuZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKaW5kZXggNzllZjZiODMxMDE4NjZjZWYyN2Y0MzVmMzMyY2VkMzc4NzZkNWJk
Mi4uOTNiMTIwZDRmYmZkZGI1OTcwNDg0NDAwZjI5NzMyMjY2YjNjM2Q4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcApAQCAtNDA1LDcgKzQwNSw3IEBAIE5vZGU6On5Ob2RlKCkKICAgICBpZiAocmVuZGVyZXIo
KSkKICAgICAgICAgZGV0YWNoKCk7CiAKLSAgICBEb2N1bWVudCogZG9jID0gbV9kb2N1bWVudDsK
KyAgICBEb2N1bWVudCogZG9jID0gZG9jdW1lbnRJbnRlcm5hbCgpOwogICAgIGlmIChBWE9iamVj
dENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0Q2Fj
aGVFeGlzdHMoKSkKICAgICAgICAgZG9jLT5heE9iamVjdENhY2hlKCktPnJlbW92ZU5vZGVGb3JV
c2UodGhpcyk7CiAgICAgCkBAIC00MjAsNDEgKzQyMCw2IEBAIE5vZGU6On5Ob2RlKCkKICAgICBJ
bnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6Tm9k
ZUNvdW50ZXIpOwogfQogCi12b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKLXsKLSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50
KTsKLSAgICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKLX0KLQotTm9kZVJhcmVE
YXRhKiBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKLXsKLSAgICBpZiAoIXNj
b3BlKSB7Ci0gICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0gICAgICAgICAgICBOb2RlUmFy
ZURhdGEqIGRhdGEgPSByYXJlRGF0YSgpOwotICAgICAgICAgICAgZGF0YS0+c2V0VHJlZVNjb3Bl
KDApOwotICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBlbnN1cmVSYXJlRGF0YSgp
OwotICAgIGRhdGEtPnNldFRyZWVTY29wZShzY29wZSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0K
LVRyZWVTY29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVXNp
bmcgbV9kb2N1bWVudCBkaXJlY3RseSBpcyBub3QgZ29vZCAtPiBzZWUgY29tbWVudCB3aXRoIGRv
Y3VtZW50KCkgaW4gdGhlIGhlYWRlciBmaWxlLgotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7Ci0gICAgVHJlZVNjb3BlKiBzY29wZSA9IHJhcmVEYXRh
KCktPnRyZWVTY29wZSgpOwotICAgIHJldHVybiBzY29wZSA/IHNjb3BlIDogbV9kb2N1bWVudDsK
LX0KLQogTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGhhc1JhcmVEYXRhKCkpOwpAQCAtMjgyMCw3ICsyNzg1LDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpET00pOwogICAgIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9y
dE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVw
b3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+
cmVwb3J0UG9pbnRlcihtX2RvY3VtZW50LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Cisg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0UG9pbnRlcihkb2N1bWVudCgpLCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OkRPTSk7CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVu
dGVkUG9pbnRlcihtX25leHQpOwogICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1l
bnRlZFBvaW50ZXIobV9wcmV2aW91cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA4YzQ3N2MwNWRlYWFh
ZmYwN2RkMjQxZDY0NWFmMjVlZWJiODc4NjJiLi5lMWZjZDBhMDE2NDc1ODNhZjRhZWQyMDZiMmM3
MGZhOTY5ZjliMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQwNywxNCArNDA3LDcgQEAgcHVibGljOgog
CiAgICAgLy8gUmV0dXJucyB0aGUgZG9jdW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbm9kZS4g
VGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBOVUxMLCBleGNlcHQgaW4gdGhlIGNhc2UgCiAgICAg
Ly8gb2YgYSBEb2N1bWVudFR5cGUgbm9kZSB0aGF0IGlzIG5vdCB1c2VkIHdpdGggYW55IERvY3Vt
ZW50IHlldC4gQSBEb2N1bWVudCBub2RlIHJldHVybnMgaXRzZWxmLgotICAgIERvY3VtZW50KiBk
b2N1bWVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodGhpcyk7Ci0gICAgICAgIC8v
IEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQgcHJldmVudHMgdGhlIHVzZSBvZiBk
b2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yCi0gICAgICAgIC8vIGR1
ZSB0byB0aGUgdmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCi0gICAgICAgIEFT
U0VSVChtX2RvY3VtZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAh
aW5Eb2N1bWVudCgpKSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIH0KKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkg
Y29uc3Q7CiAKQEAgLTQyMiw3ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gbm9kZSB0cmVlLCBm
YWxzZSBvdGhlcndpc2UuCiAgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QgCiAgICAgeyAKLSAg
ICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAg
ICAgICAgQVNTRVJUKHRyZWVTY29wZSgpIHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CiAg
ICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CiAKQEAgLTczMywx
NiArNzI2LDE0IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgc2V0SGFzQ3VzdG9tQ2FsbGJhY2tz
KCkgeyBzZXRGbGFnKHRydWUsIEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcpOyB9CiAKKyAgICB2b2lk
IHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnRJbnRlcm5h
bCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGUs
IENvbnRhaW5lck5vZGU+OwogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgLy8g
VGhlc2UgQVBJIHNob3VsZCBiZSBvbmx5IHVzZWQgZm9yIGEgdHJlZSBzY29wZSBtaWdyYXRpb24u
Ci0gICAgLy8gc2V0VHJlZVNjb3BlKCkgcmV0dXJucyBOb2RlUmFyZURhdGEgdG8gc2F2ZSBleHRy
YSBub2RlUmFyZURhdGEoKSBpbnZvY2F0aW9ucyBvbiB0aGUgY2FsbGVyIHNpdGUuCi0gICAgTm9k
ZVJhcmVEYXRhKiBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7Ci0gICAgdm9pZCBzZXREb2N1bWVu
dChEb2N1bWVudCopOwotCiAgICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJpY2hs
eUVkaXRhYmxlIH07CiAgICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVMZXZlbCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0VkaXRhYmxlVG9BY2Nlc3NpYmlsaXR5KEVkaXRhYmxlTGV2ZWwp
IGNvbnN0OwpAQCAtNzg1LDcgKzc3Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIG11dGFi
bGUgdWludDMyX3QgbV9ub2RlRmxhZ3M7Ci0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAg
VHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUq
IG1fbmV4dDsKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgKaW5kZXggYjdmMzU5ZTYwMTU1ZjY2NWQ2ZmM3MjZlOWY5YmVkNTQzZDVkODU4Ni4u
ZmFjYzY3N2I2YmE5YTAwYWE4M2JjNWQxZmFlOGQyYjg5ZTA5MTg3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaApAQCAtMTgwLDggKzE4MCw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6ICAgIAogICAgIE5vZGVSYXJlRGF0YSgpCi0gICAgICAgIDogbV90cmVl
U2NvcGUoMCkKLSAgICAgICAgLCBtX2NoaWxkTm9kZUxpc3QoMCkKKyAgICAgICAgOiBtX2NoaWxk
Tm9kZUxpc3QoMCkKICAgICAgICAgLCBtX3RhYkluZGV4KDApCiAgICAgICAgICwgbV90YWJJbmRl
eFdhc1NldEV4cGxpY2l0bHkoZmFsc2UpCiAgICAgICAgICwgbV9pc0ZvY3VzZWQoZmFsc2UpCkBA
IC0yMDksOSArMjA4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmFyZURhdGFNYXAoKS5n
ZXQobm9kZSk7CiAgICAgfQogCi0gICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdCB7IHJl
dHVybiBtX3RyZWVTY29wZTsgfQotICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSogdHJl
ZVNjb3BlKSB7IG1fdHJlZVNjb3BlID0gdHJlZVNjb3BlOyB9Ci0gICAgCiAgICAgdm9pZCBjbGVh
ck5vZGVMaXN0cygpIHsgbV9ub2RlTGlzdHMuY2xlYXIoKTsgfQogICAgIHZvaWQgc2V0Tm9kZUxp
c3RzKFBhc3NPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IGxpc3RzKSB7IG1fbm9kZUxpc3RzID0g
bGlzdHM7IH0KICAgICBOb2RlTGlzdHNOb2RlRGF0YSogbm9kZUxpc3RzKCkgY29uc3QgeyByZXR1
cm4gbV9ub2RlTGlzdHMuZ2V0KCk7IH0KQEAgLTM1MCw3ICszNDYsNiBAQCBwcm90ZWN0ZWQ6CiBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlTm9kZUxpc3RzKE5vZGUqKTsKIAotICAgIFRyZWVTY29w
ZSogbV90cmVlU2NvcGU7CiAgICAgT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0
czsKICAgICBDaGlsZE5vZGVMaXN0KiBtX2NoaWxkTm9kZUxpc3Q7CiAgICAgT3duUHRyPEV2ZW50
VGFyZ2V0RGF0YT4gbV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
aW5kZXggMmM1NzU2MGJmMjZmMzI3NzIyM2M0OGJlNDk1NzRkZTQ0ZmQ3MjA1ZS4uYzUxMzUxODQw
NzI0ZDI0MGZlMzU5ZmJhOWQ0Y2RiN2U3ZjVmMDA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYWRvd1Jvb3Q6
OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogRG9jdW1lbnRGcmFnbWVudChk
b2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKLSAgICAsIFRyZWVTY29wZSh0aGlzKQorICAgICwg
VHJlZVNjb3BlKHRoaXMsIGRvY3VtZW50KQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQo
MCkKICAgICAsIG1fYXBwbHlBdXRob3JTdHlsZXMoZmFsc2UpCkBAIC01OSw3ICs1OSw3IEBAIFNo
YWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHNldFBhcmVudFRy
ZWVTY29wZShkb2N1bWVudCk7CiAgICAgLy8gU2hhZG93IHRyZWUgc2NvcGVzIGhhdmUgdGhlIHNj
b3BlIHBvaW50ZXIgcG9pbnQgdG8gdGhlbXNlbHZlcy4KICAgICAvLyBUaGlzIHdheSwgZGlyZWN0
IGNoaWxkcmVuIHdpbGwgcmVjZWl2ZSB0aGUgY29ycmVjdCBzY29wZSBwb2ludGVyLgotICAgIGVu
c3VyZVJhcmVEYXRhKCktPnNldFRyZWVTY29wZSh0aGlzKTsKKyAgICBzZXRUcmVlU2NvcGUodGhp
cyk7CiB9CiAKIFNoYWRvd1Jvb3Q6On5TaGFkb3dSb290KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmNwcAppbmRleCBhNjczMzUxNmQwNTczMWNiN2FhZjRmODU2YmExOWIyZDU1OGNlYTZm
Li5lYzk1ZWU5OGU5ZDFiOWM2MmZiMWJhMDI2OGMyZTRjZWI4MzkyMzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogU3R5bGVkRWxlbWVudDo6c3R5bGUoKQogICAgIHJldHVybiBlbnN1cmVBdHRyaWJ1dGVE
YXRhKCktPmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSh0aGlzKS0+ZW5zdXJlSW5saW5lQ1NTU3R5
bGVEZWNsYXJhdGlvbih0aGlzKTsgCiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU3R5bGVkRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZEludGVybmFsKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlLCBEb2N1
bWVudCogZG9jdW1lbnQpCiB7CiAgICAgcGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIApAQCAt
MTU0LDcgKzE1NCw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhJbmxp
bmVTdHlsZUNoYW5nZSk7CiAgICAgfQogCi0gICAgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChh
dHRyaWJ1dGUpOworICAgIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWRJbnRlcm5hbChhdHRyaWJ1
dGUsIGRvY3VtZW50KTsKIH0KIAogdm9pZCBTdHlsZWRFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5oCmluZGV4IGFiZDQ5YWRjN2NmYTBmMWU1ZGIxMTBkY2RmMzE4ZWU4ZTYyNDYz
N2UuLjdiYmE4YzQ0ZjllZmYxMTg4OTdjNTM4OGZiYWM3N2VhNGJkYmFiNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBDb25z
dHJ1Y3Rpb25UeXBlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2Vk
SW50ZXJuYWwoY29uc3QgQXR0cmlidXRlJiwgRG9jdW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDU2NDJmY2Y4
ZGQzM2ZiYzFmYmYyMDNiZGRiMWZiOGJlMjUzN2FlZmIuLjVhYjQ5OTU5NmYxMzdjZWI4NDYwNmFl
NmQzZjlmMjU4NmFlYWI1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC01MSwxNCAr
NTEsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKK1RyZWVT
Y29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlLCBEb2N1bWVudCogcm9vdERv
Y3VtZW50KQogICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKKyAgICAsIG1fcm9vdERvY3VtZW50
KHJvb3REb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCiAgICAgLCBtX251bU5v
ZGVMaXN0Q2FjaGVzKDApCiB7CiAgICAgQVNTRVJUKHJvb3ROb2RlKTsKIH0KIAorVHJlZVNjb3Bl
OjpUcmVlU2NvcGUoKQorICAgIDogbV9yb290Tm9kZSgwKQorICAgICwgbV9yb290RG9jdW1lbnQo
MCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX251bU5vZGVMaXN0Q2FjaGVz
KDApCit7Cit9CisKKwogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKIHsKICAgICBpZiAobV9zZWxl
Y3Rpb24pIHsKQEAgLTgxLDYgKzkxLDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVT
Y29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQYXJlbnRTY29w
ZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIG1fcm9v
dERvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQogCiBFbGVtZW50
KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElk
KSBjb25zdApAQCAtMjc4LDUgKzI4OSwxMSBAQCBUcmVlU2NvcGUqIGNvbW1vblRyZWVTY29wZShO
b2RlKiBub2RlQSwgTm9kZSogbm9kZUIpCiAgICAgcmV0dXJuIHRyZWVTY29wZXNBW2luZGV4QV0g
PT0gdHJlZVNjb3Blc0JbaW5kZXhCXSA/IHRyZWVTY29wZXNBW2luZGV4QV0gOiAwOwogfQogCitU
cmVlU2NvcGUqIFRyZWVTY29wZTo6bnVsbEluc3RhbmNlKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFRyZWVTY29wZSwgaW5zdGFuY2UsICgpKTsKKyAgICByZXR1cm4gJmluc3RhbmNlOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAppbmRleCA1
ZWNjMDM5MmYzNzE3MGJlZTMwNTM5OTIxNDI0OTdjZmFiN2FjYjBiLi41NmY1NmJhMWEwNjBlNWFh
OTJiNzkyZTYyYjA0MjE5MzBhYmIwOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNs
YXNzIERPTVNlbGVjdGlvbjsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEhUTUxNYXBFbGVtZW50OwogY2xhc3MgTm9kZTsKQEAgLTgxLDE1ICs4MiwyMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZG9wdElmTmVlZGVkKE5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIHJv
b3ROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290Tm9kZTsgfQorICAgIERvY3VtZW50KiByb290
RG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3REb2N1bWVudDsgfQorICAgIHZvaWQgc2V0
Um9vdERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkgeyBtX3Jvb3REb2N1bWVudCA9IGRvY3Vt
ZW50OyB9CisKKyAgICBzdGF0aWMgVHJlZVNjb3BlKiBudWxsSW5zdGFuY2UoKTsKIAogcHJvdGVj
dGVkOgotICAgIFRyZWVTY29wZShDb250YWluZXJOb2RlKik7CisgICAgVHJlZVNjb3BlKENvbnRh
aW5lck5vZGUqLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAg
dm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCiBwcml2YXRlOgorICAgIFRyZWVTY29wZSgp
OworCiAgICAgQ29udGFpbmVyTm9kZSogbV9yb290Tm9kZTsKKyAgICBEb2N1bWVudCogbV9yb290
RG9jdW1lbnQ7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29wZTsKIAogICAgIERvY3Vt
ZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVB
ZG9wdGVyLmNwcAppbmRleCA4OGUxYTZmZDVkZTEzZWRmN2Y3MDM5MmFhYWE5MTJhZGZkNmZlNzI3
Li5kMzI0ZjM0Y2YyMDc2MDdhYmExNDEwYzJhMTAzMGU0MGUyZTA2OGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00Nyw3ICs0Nyw4IEBAIHZvaWQgVHJlZVNj
b3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAgICAgICAg
IG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgZm9yIChOb2RlKiBub2Rl
ID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkpIHsKLSAg
ICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnNldFRyZWVTY29wZShuZXdEb2N1
bWVudCA9PSBtX25ld1Njb3BlID8gMCA6IG1fbmV3U2NvcGUpOworICAgICAgICBub2RlLT5zZXRU
cmVlU2NvcGUobV9uZXdTY29wZSk7CisgICAgICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEgPSBu
b2RlLT5oYXNSYXJlRGF0YSgpID8gbm9kZS0+cmFyZURhdGEoKSA6IDA7CiAgICAgICAgIGlmIChy
YXJlRGF0YSAmJiByYXJlRGF0YS0+bm9kZUxpc3RzKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+
bm9kZUxpc3RzKCktPmFkb3B0VHJlZVNjb3BlKG1fb2xkU2NvcGUsIG1fbmV3U2NvcGUsIG9sZERv
Y3VtZW50LCBuZXdEb2N1bWVudCk7CiAKQEAgLTkxLDggKzkyLDYgQEAgaW5saW5lIHZvaWQgVHJl
ZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50
KiBvbGREb2MKICAgICBpZiAob2xkRG9jdW1lbnQpCiAgICAgICAgIG9sZERvY3VtZW50LT5tb3Zl
Tm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQobm9kZSwgbmV3RG9jdW1lbnQpOwogCi0gICAgbm9k
ZS0+c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGRpZE1v
dmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgb2xkRG9jdW1lbnREaWRNb3Zl
VG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBvbGREb2N1bWVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNWEyMTQzYzYzZDQ1
MDU1NWNlZjM5ODBiNzk0MzhmNDU5ZGNmYTEzNC4uNWJmNTQ1NDEzMjNjMDc5ZWE3ZDZjMjdjZjg4
MzA5Y2U5MGQzNzcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJNb3ZlU2VsZWN0aW9uQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVO
b2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5k
LmNwcAppbmRleCAxOTY1N2FjMGZjNzcyMTIyMzU4MzU3NGJjNmJkMjA4MWQzZGM3Njk2Li44YmUy
MDcwNjE0YzQ5NTMxMzhhM2M1OWYwNWY0NzViZWIzYmRiNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZU5vZGVDb21tYW5kLmgiCiAKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IDE0NTJmODgwM2ZhYmM1NzBh
MjU0ZmE1YTJlOTZlNDBmMTRkZWE5YzUuLjI4MWZkYmRmMzJiZDUwNTFjZGViZDI3NWZkZjA2OTQ1
ZmFiZWVmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVBy
ZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGls
ZHJlbkNvbW1hbmQuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5o
IgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cAppbmRleCBjMWZmZTg1OGQ0MzAxYmQ4ZDVmOTI1YjMxZTJmNzdmZmMyNGMwMWUzLi42ZWQ1ZDE1
N2NlODU2YzJlMmNlZDc3NjMxYWVjZDUyNjAyNDM1ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCkBAIC01MDksOSArNTA5LDkgQEAgYm9vbCBTVkdFbGVtZW50OjpjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnQKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU1ZHRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdl
ZEludGVybmFsKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlLCBEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUpOworICAg
IFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWRJbnRlcm5hbChhdHRyaWJ1dGUsIGRvY3Vt
ZW50KTsKIAogICAgIC8vIFdoZW4gYW4gYW5pbWF0ZWQgU1ZHIHByb3BlcnR5IGNoYW5nZXMgdGhy
b3VnaCBTVkcgRE9NLCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKCkgaXMgY2FsbGVkLCBub3QgYXR0cmli
dXRlQ2hhbmdlZCgpLgogICAgIC8vIE5leHQgdGltZSBzb21lb25lIHRyaWVzIHRvIGFjY2VzcyB0
aGUgWE1MIGF0dHJpYnV0ZXMsIHRoZSBzeW5jaHJvbml6YXRpb24gY29kZSBzdGFydHMuIER1cmlu
ZyB0aGF0IHN5bmNocm9uaXphdGlvbgpAQCAtNTIyLDggKzUyMiw4IEBAIHZvaWQgU1ZHRWxlbWVu
dDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS5uYW1lKCkpKSB7
Ci0gICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlQWxsQW5p
bWF0aW9uRWxlbWVudHNGcm9tVGFyZ2V0KHRoaXMpOwotICAgICAgICBkb2N1bWVudCgpLT5hY2Nl
c3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KHRo
aXMpOworICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1vdmVBbGxB
bmltYXRpb25FbGVtZW50c0Zyb21UYXJnZXQodGhpcyk7CisgICAgICAgIGRvY3VtZW50LT5hY2Nl
c3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KHRo
aXMpOwogICAgIH0KIAogICAgIC8vIENoYW5nZXMgdG8gdGhlIHN0eWxlIGF0dHJpYnV0ZSBhcmUg
cHJvY2Vzc2VkIGxhemlseSAoc2VlIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZSgpIGFuZCByZWxhdGVk
IG1ldGhvZHMpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNDcwMjM1YWVmMDI1OGRkNWUz
OTZlMjhiNjVhMDdiNTVlMTAwZTJhMS4uMDgxN2Y1NmVlNjliODEzZDk3MDk0MDVjMzkwZDRmYmZi
ZjA2MzUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC04OSw2ICs4OSw3IEBAIHB1Ymxp
YzoKICAgICBTVkdFbGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVudCgpOwogICAgIHZvaWQgc2V0
Q29ycmVzcG9uZGluZ0VsZW1lbnQoU1ZHRWxlbWVudCopOwogCisgICAgdmlydHVhbCB2b2lkIGF0
dHJpYnV0ZUNoYW5nZWRJbnRlcm5hbChjb25zdCBBdHRyaWJ1dGUmLCBEb2N1bWVudCopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CiAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CkBAIC0xMjIsNyArMTIzLDYg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdHRyaWJ1dGUm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0IE9WRVJSSURFOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2VzL2Ryb21hZW8vd2ViL3dlYnJ1
bm5lci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMvZHJvbWFlby93ZWIv
d2VicnVubmVyLmpzCmluZGV4IDMyNDQ0NjE2NGE2MDZiOTA0YjI5YTA4MjBkNzJmZTEyMDZhYmFh
MjYuLmY2YmY1MWFlNDI1NjQ3YzgzOGJkNTg1NGE2NGJkYzAyMzcxMTA0ZjcgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMvZHJvbWFlby93ZWIvd2VicnVubmVy
LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMvZHJvbWFlby93ZWIv
d2VicnVubmVyLmpzCkBAIC05Nyw3ICs5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1ciA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggKGN1ciAtIHN0YXJ0KSA8IDEw
MDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoIChjdXIgLSBzdGFydCkgPCAyMDAwMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4oKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gKG5ldyBEYXRlKCkp
LmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnVucysrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150872</attachid>
            <date>2012-07-04 21:54:22 -0700</date>
            <delta_ts>2012-07-04 23:14:35 -0700</delta_ts>
            <desc>Yet another trial with a tag bit</desc>
            <filename>bug-59816-20120705135421.patch</filename>
            <type>text/plain</type>
            <size>22464</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVkMmQ5YTc3NmI0M2ZjYTcxYzU2YTJm
NzBiYzk3M2MxNmI0YWI1ZDkuLjFkZGUwMjNkNWRhMDUyNDJkMWY0ZGFmOThjOWI2N2YwN2FkOWVk
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDctMDQgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBSZXBsYWNlIE5vZGUncyBE
b2N1bWVudCBwb2ludGVyIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VkIFRhZ2dlZFB0ciB0byBl
bmNhdXN1bGF0ZSB0YWdnZWQgcG9pbnRlciB3aGljaCBlbWJlZHMgb25lIGV4dHJhIGJpdAorICAg
ICAgICBpbiBpdHMgYWRkcmVzcyByZXByZXNlbnRhdGlvbi4KKworICAgICAgICAqIHd0Zi9UYWdn
ZWRQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoVGFnZ2VkUHRyKToKKyAg
ICAgICAgKFdURjo6VGFnZ2VkUHRyOjpUYWdnZWRQdHIpOgorICAgICAgICAoV1RGOjpUYWdnZWRQ
dHI6OnRhZ2dlZCk6CisgICAgICAgIChXVEY6OlRhZ2dlZFB0cjo6Z2V0KToKKyAgICAgICAgKFdU
Rjo6VGFnZ2VkUHRyOjpnZXRBc3N1bWluZ05vVGFnKToKKyAgICAgICAgKFdURjo6VGFnZ2VkUHRy
OjpzZXQpOgorCiAyMDEyLTA3LTAzICBZb25nIExpICA8eW9saUByaW0uY29tPgogCiAgICAgICAg
IFtCbGFja0JlcnJ5XSBUdXJuIG9uIERGR0pJVCBpbiBQbGF0Zm9ybS5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjNmODc5NTIwYWE0Y2Q5NGEzZjBlNjczMmZiMDRiYzliNjY4NzM2ZS4uMDRjNDcwMGFiMTU4YjU3
MDI4YTYyMDY2MzZhODA3ZjEwNmYxMjBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisy
MDEyLTA3LTA0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAg
IFtSZWZhY3RvcmluZ10gUmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJl
ZVNjb3BlIHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU5ODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQmVmb3JlIHRoaXMgY2hhbmdlLCBOb2RlOjp0cmVlU2NvcGUoKSBmZXRjaGVzIHRoZSBU
cmVlU2NvcGUgb2JqZWN0CisgICAgICAgIGZyb20gRWxlbWVudFJhcmVEYXRhLiBUaGlzIGFwcHJv
YWNoIGhhcyBzZXZlcmFsIHNob3J0Y29taW5nczoKKworICAgICAgICAtIHJhcmVEYXRhKCkgY2Fs
bCBpcyBzbG93IGR1ZSB0byBhIGhhc2h0YWJsZSBsb29rdXAuCisgICAgICAgIC0gSW4gc2hhZG93
IHRyZWUsIEVhY2ggbm9kZSBoYXMgaXRzIHRyZWUgc2NvcGUgaW4gRWxlbWVudFJhcmVEYXRhLAor
ICAgICAgICAgIHRoYXQgbWVhbnMgdGhlIHJhcmUtZGF0YSBpcyBubyBsb25nZXIgcmFyZSBpbiB0
aGF0IGNhc2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZ2V0IHJpZCBvZiBFbGVtZW50UmFyZURh
dGE6Om1fdHJlZVNjb3BlIGJ5IHJlcGxhY2luZworICAgICAgICBOb2RlOjptX2RvY3VtZW50IHdp
dGggTm9kZTo6bV90cmVlU2NvcGUuIEFuZCByZXRyaWV2ZXMgdGhlCisgICAgICAgIGRvY3VtZW50
IG9mIE5vZGUgdGhyb3VnaCBtX3RyZWVTY29wZS4KKworICAgICAgICBOb3RlIHRoYXQgTm9kZTo6
ZG9jdW1lbnQoKSBpcyBhIGhvdCBmdW5jdGlvbiBhbmQgbmFpdmUKKyAgICAgICAgcmVwbGFjZW1l
bm50IG9mIG1fZG9jdW1lbnQgd2l0aCBtX3RyZWVTY29wZSBjYW4gaHVydCB0aGUKKyAgICAgICAg
c3BlZWQuIFRoaXMgY2hhbmdlIGVtcGxveXMgc29tZSB0cmlja3MgdG8gYWRkcmVzcyBpdC4KKwor
ICAgICAgICAtIEl0IG1ha2VzIE5vZGU6Om1fdHJlZVNjb3BlIGEgdGFnZ2VkIHBvaW50ZXIsIHdo
b3NlIHRhZyBpbXBsaWVzCisgICAgICAgICAgdGhhdCBtX3RyZWVTY29wZSByZWZlcnMgU2hhZG93
Um9vdCwgbm90IERvY3VtZW50LiBJZiB0aGUgcG9pbnRlcgorICAgICAgICAgIGlzbid0IHRhZ2dl
ZCwgd2UgY2FuIGFzc3VtZSB0aGF0IG1fdHJlZVNjb3BlIGlzIGFjdHVhbGx5IGEKKyAgICAgICAg
ICBEb2N1bWVudCBhbmQgY2FuIHJldHVybiBpdCBhcyBhIERvY3VtZW50IHJhdGhlciB0aGFuIGlu
dm9raW5nCisgICAgICAgICAgVHJlZVNjb3BlOjpyb29vdERvY3VtZW50KCkuIFRoaXMgZWxpbWlu
YXRlcyBhbiBleHRyYSBkZXJlZmVyZW5jZQorICAgICAgICAgIGluIG1hbnkgY2FzZS4KKyAgICAg
ICAgLSBOb2RlOjptX3RyZWVTY29wZSBjYW4gYmUgbnVsbC4gQnV0IHdlIGRvbid0IHdhbnQgdG8g
aXNzdWUgYW55IGV4dHJhCisgICAgICAgICAgY29uZGl0aW9uYWwgc3RhdGVtZW50LiBTbyB0aGlz
IGNoYW5nZSByZXByZXNlbnRzIGEgbnVsbAorICAgICAgICAgIFRyZWVTY29wZSBhcyBUcmVlU2Nv
cGU6Om51bGxJbnN0YW5jZSgpLCB3aGljaCBzYXZlcyBvbmUgY29uZGl0aW9uYWwKKyAgICAgICAg
ICBzdGF0ZW1lbnQuCisKKyAgICAgICAgV2l0aCB0aGVzZSBjaGFuZ2VzLCB0aGUgTm9kZTo6ZG9j
dW1lbnQoKSBzbG93ZG93biBpcyBtaW5pbWl6ZWQgdG8KKyAgICAgICAgdW5ub3RpY2VhYmxlIHNp
emUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RvY3VtZW50
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1bWVudCk6CisgICAgICAg
ICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpO
b2RlUmFyZURhdGEpOgorICAgICAgICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vU2hh
ZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJl
ZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
Ojppc0RvY3VtZW50U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpudWxsSW5z
dGFuY2UpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpyb290RG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjpzZXRSb290RG9jdW1lbnQpOgorICAgICAgICAoVHJlZVNjb3BlKToK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0
aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5v
ZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hp
bGRyZW5Db21tYW5kLmNwcDoKKwogMjAxMi0wNy0wNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEy
MTgxMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RhZ2dlZFB0ci5oIGIvU291cmNlL1dU
Ri93dGYvVGFnZ2VkUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDEyMDJjMjE4Y2UwMzM3YjkxZDRkYmZhOTQ3
NTcwNDZiZTJhYjgwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RhZ2dlZFB0
ci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdURl9UYWdnZWRQdHJfaAorI2RlZmluZSBX
VEZfVGFnZ2VkUHRyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitjbGFzcyBUYWdnZWRQdHIgeworcHVibGljOgor
ICAgIGVudW0geyBUYWcgPSAxIH07CisKKyAgICBleHBsaWNpdCBUYWdnZWRQdHIoVCogcHRyLCBi
b29sIHRhZyA9IGZhbHNlKSB7IHNldChwdHIsIHRhZyk7IH0KKyAgICBib29sIHRhZ2dlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWUgJiBUYWc7IH0KKyAgICB2b2lkIHNldChUKiBwdHIsIGJvb2wg
dGFnID0gZmFsc2UpOworICAgIFQqIGdldCgpIGNvbnN0OworICAgIFQqIGdldEFzc3VtaW5nTm9U
YWcoKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgdWludHB0cl90IG1fdmFsdWU7Cit9Owor
Cit0ZW1wbGF0ZTxjbGFzcyBUPgoraW5saW5lIFQqIFRhZ2dlZFB0cjxUPjo6Z2V0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4obV92YWx1ZSAmIH5zdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KFRhZykpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUPgoraW5saW5lIFQqIFRh
Z2dlZFB0cjxUPjo6Z2V0QXNzdW1pbmdOb1RhZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKCF0YWdn
ZWQoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1fdmFsdWUpOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBUPgoraW5saW5lIHZvaWQgVGFnZ2VkUHRyPFQ+OjpzZXQoVCogcHRyLCBi
b29sIHRhZykKK3sKKyAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRy
KSAmIFRhZykpOworICAgIG1fdmFsdWUgPSB0YWcgPyByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ocHRyKSB8IFRhZyA6IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpUYWdnZWRQdHI7CisKKyNlbmRpZiAvLyBX
VEZfVGFnZ2VkUHRyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDEyYWU2M2YwNjYzNTEy
MjE3OTAxN2YxMDMxZDRjMWM5YTNjYjkxMDQuLjU2YmVjZDM3YmVlOWU3ZTQ3M2Y5YTExZDhjMTdi
Yjg1MmQ3Zjk3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDE1LDcgKzQxNSw3IEBA
IHVpbnQ2NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAogRG9jdW1lbnQ6
OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJv
b2wgaXNIVE1MKQogICAgIDogQ29udGFpbmVyTm9kZSgwLCBDcmVhdGVEb2N1bWVudCkKLSAgICAs
IFRyZWVTY29wZSh0aGlzKQorICAgICwgVHJlZVNjb3BlKHRoaXMsIHRoaXMpCiAgICAgLCBtX2d1
YXJkUmVmQ291bnQoMCkKICAgICAsIG1fY29udGV4dEZlYXR1cmVzKENvbnRleHRGZWF0dXJlczo6
ZGVmYXVsdFN3aXRjaCgpKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZShOb1F1aXJrc01vZGUp
CkBAIC00ODcsNyArNDg3LDggQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9kaWREaXNw
YXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5nZWQoZmFsc2UpCiAjZW5kaWYKIHsKLSAgICBtX2Rv
Y3VtZW50ID0gdGhpczsKKyAgICBzZXRUcmVlU2NvcGUodGhpcyk7CisgICAgc2V0Um9vdERvY3Vt
ZW50KHRoaXMpOwogCiAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7
CiAKQEAgLTYzNyw3ICs2MzgsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBpZiAoaGFz
UmFyZURhdGEoKSkKICAgICAgICAgY2xlYXJSYXJlRGF0YSgpOwogCi0gICAgbV9kb2N1bWVudCA9
IDA7CisgICAgc2V0VHJlZVNjb3BlKDApOwogCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3Jl
bWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6OkRvY3VtZW50Q291bnRlcik7CiB9CkBAIC0x
MzMwLDEzICsxMzMxLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnQoY29uc3QgU3RyaW5n
JiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QK
IHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisgICAgRG9jdW1lbnQq
IGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRvYy0+aXNYSFRNTERvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0bWwreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+
aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuICJpbWFnZS9zdmcreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+eG1sU3RhbmRhbG9u
ZSgpKQorICAgIGlmIChkb2MtPnhtbFN0YW5kYWxvbmUoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0
L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKGRv
Yy0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAg
aWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCAyZTFhYzEzMjRlMWY4YzBjMWUyMTNmMWU5ZmNiOGE5N2IzODgxOTFlLi41
ZjkxOTczZTkxNmQzY2VlNDA4MzE5MDU0M2IwYzBmZDRiMzVhNzY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMTUwNiwxNCArMTUwNiw0MSBAQCBwcml2YXRlOgogCiAvLyBQdXQgdGhlc2UgbWV0
aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwg
YnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgogCitpbmxpbmUgVHJlZVNjb3BlKiBO
b2RlOjp0cmVlU2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3RyZWVTY29wZS5nZXQoKSA9
PSBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpID8gMCA6IG1fdHJlZVNjb3BlLmdldCgpOworfQor
CitpbmxpbmUgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKK3sKKyAg
ICBUcmVlU2NvcGUqIHJhdyA9IHNjb3BlID8gc2NvcGUgOiBUcmVlU2NvcGU6Om51bGxJbnN0YW5j
ZSgpOworICAgIG1fdHJlZVNjb3BlLnNldChyYXcsICFyYXctPmlzRG9jdW1lbnRTY29wZSgpKTsK
K30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVudEludGVybmFsKCkgY29uc3QKK3sK
KyAgICBpZiAobV90cmVlU2NvcGUudGFnZ2VkKCkpCisgICAgICAgIHJldHVybiBtX3RyZWVTY29w
ZS5nZXQoKS0+cm9vdERvY3VtZW50KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obV90cmVlU2NvcGUuZ2V0QXNzdW1pbmdOb1RhZygpKTsKK30KKworaW5saW5lIERvY3VtZW50
KiBOb2RlOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9j
dW1lbnRJbnRlcm5hbCgpOworICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBi
dXQgcHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBk
ZXN0cnVjdG9yCisgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9k
ZVR5cGUoKS4KKyAgICBBU1NFUlQoZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRf
VFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQ7Cit9CisK
IGlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
dGhpcyA9PSBtX2RvY3VtZW50OworICAgIHJldHVybiB0aGlzID09IGRvY3VtZW50SW50ZXJuYWwo
KTsKIH0KIAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rp
b25UeXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0eXBlKQotICAgICwgbV9kb2N1bWVudChk
b2N1bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKGRvY3VtZW50ID8gZG9jdW1lbnQgOiBUcmVlU2Nv
cGU6Om51bGxJbnN0YW5jZSgpLCAhZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAg
LCBtX25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0MmRk
MjE1MTc1ZjUzYTJjMGQ4OGRmZTMxMzZjMmQ0ZWY5NWE3ZGJmLi4xMzkzZDM2ZDQyNjU2MzZmNTg3
NjIzZjViMmI2YzYyNGJmOGU0ODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MDUsNyArNDA1LDcg
QEAgTm9kZTo6fk5vZGUoKQogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBkZXRhY2goKTsK
IAotICAgIERvY3VtZW50KiBkb2MgPSBtX2RvY3VtZW50OworICAgIERvY3VtZW50KiBkb2MgPSBk
b2N1bWVudEludGVybmFsKCk7CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlF
bmFibGVkKCkgJiYgZG9jICYmIGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0cygpKQogICAgICAgICBk
b2MtPmF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlTm9kZUZvclVzZSh0aGlzKTsKICAgICAKQEAgLTQy
MCw0MSArNDIwLDYgQEAgTm9kZTo6fk5vZGUoKQogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNy
ZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAKLXZvaWQg
Tm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIEFTU0VSVCghaW5E
b2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpOwotICAgIGlmIChpbkRvY3VtZW50
KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9k
b2N1bWVudCA9IGRvY3VtZW50OwotfQotCi1Ob2RlUmFyZURhdGEqIE5vZGU6OnNldFRyZWVTY29w
ZShUcmVlU2NvcGUqIHNjb3BlKQotewotICAgIGlmICghc2NvcGUpIHsKLSAgICAgICAgaWYgKGhh
c1JhcmVEYXRhKCkpIHsKLSAgICAgICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IHJhcmVEYXRh
KCk7Ci0gICAgICAgICAgICBkYXRhLT5zZXRUcmVlU2NvcGUoMCk7Ci0gICAgICAgICAgICByZXR1
cm4gZGF0YTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIE5v
ZGVSYXJlRGF0YSogZGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7Ci0gICAgZGF0YS0+c2V0VHJlZVNj
b3BlKHNjb3BlKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotVHJlZVNjb3BlKiBOb2RlOjp0cmVl
U2NvcGUoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBVc2luZyBtX2RvY3VtZW50IGRpcmVjdGx5
IGlzIG5vdCBnb29kIC0+IHNlZSBjb21tZW50IHdpdGggZG9jdW1lbnQoKSBpbiB0aGUgaGVhZGVy
IGZpbGUuCi0gICAgaWYgKCFoYXNSYXJlRGF0YSgpKQotICAgICAgICByZXR1cm4gbV9kb2N1bWVu
dDsKLSAgICBUcmVlU2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7Ci0gICAg
cmV0dXJuIHNjb3BlID8gc2NvcGUgOiBtX2RvY3VtZW50OwotfQotCiBOb2RlUmFyZURhdGEqIE5v
ZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CkBAIC0y
ODE2LDcgKzI3ODEsNyBAQCB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVw
b3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CiAgICAgVHJl
ZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2Jq
ZWN0SW5mbyk7CiAgICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlP
YmplY3RJbmZvKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fZG9jdW1l
bnQsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5y
ZXBvcnRQb2ludGVyKGRvY3VtZW50KCksIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fbmV4dCk7CiAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3ByZXZpb3Vz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCmluZGV4IDdmYjBiOGRkYjU3ZWY0ZDQzOTc1YzBlMTkxOTU3ZmU1ZDA1
MjI2MzEuLjQzMzVjMWQyYjE1OTc3NmYxMGJkYjMwNmQ3OGY0MjMwZjYzMTEwOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgorI2luY2x1ZGUgPHd0Zi9UYWdnZWRQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KIAogI2lmIFVTRShKU0MpCkBAIC00MDcsMTQgKzQwOCw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFJldHVybnMgdGhlIGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG5vZGUuIFRo
aXMgbWV0aG9kIG5ldmVyIHJldHVybnMgTlVMTCwgZXhjZXB0IGluIHRoZSBjYXNlIAogICAgIC8v
IG9mIGEgRG9jdW1lbnRUeXBlIG5vZGUgdGhhdCBpcyBub3QgdXNlZCB3aXRoIGFueSBEb2N1bWVu
dCB5ZXQuIEEgRG9jdW1lbnQgbm9kZSByZXR1cm5zIGl0c2VsZi4KLSAgICBEb2N1bWVudCogZG9j
dW1lbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKHRoaXMpOwotICAgICAgICAvLyBG
SVhNRTogYmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9j
dW1lbnQoKSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgotICAgICAgICAvLyBkdWUg
dG8gdGhlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgotICAgICAgICBBU1NF
UlQobV9kb2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWlu
RG9jdW1lbnQoKSkpOwotICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICB9CisgICAgRG9j
dW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKICAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNv
bnN0OwogCkBAIC00MjIsNyArNDE2LDcgQEAgcHVibGljOgogICAgIC8vIG5vZGUgdHJlZSwgZmFs
c2Ugb3RoZXJ3aXNlLgogICAgIGJvb2wgaW5Eb2N1bWVudCgpIGNvbnN0IAogICAgIHsgCi0gICAg
ICAgIEFTU0VSVChtX2RvY3VtZW50IHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CisgICAg
ICAgIEFTU0VSVCh0cmVlU2NvcGUoKSB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOwogICAg
ICAgICByZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAgICAgfQogCkBAIC03MzIsMTYg
KzcyNiwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldEhhc0N1c3RvbUNhbGxiYWNrcygp
IHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQogCisgICAgdm9pZCBz
ZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50SW50ZXJuYWwo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBD
b250YWluZXJOb2RlPjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIC8vIFRo
ZXNlIEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgot
ICAgIC8vIHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEg
bm9kZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRlLgotICAgIE5vZGVS
YXJlRGF0YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwotICAgIHZvaWQgc2V0RG9jdW1lbnQo
RG9jdW1lbnQqKTsKLQogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlF
ZGl0YWJsZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwpIGNv
bnN0OwogICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShFZGl0YWJsZUxldmVsKSBj
b25zdDsKQEAgLTc4NCw3ICs3NzYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBtdXRhYmxl
IHVpbnQzMl90IG1fbm9kZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIFRh
Z2dlZFB0cjxUcmVlU2NvcGU+IG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAg
ICAgTm9kZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmFyZURhdGEuaAppbmRleCBlZGIyZDY5N2VkNzgyNTMwNjdjYmQ3YjJmMTdkOTgzN2Jj
Y2ZjMDMxLi42MWUxMGQ3NDQ3ZGYyODQ0ZDI0OTNlMjAyZGJmOGE4YTEzNTlhNWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xODAsOCArMTgwLDcgQEAgY2xhc3MgTm9kZVJhcmVE
YXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFyZURhdGEpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9kZVJhcmVEYXRhKCkKLSAgICAgICAg
OiBtX3RyZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgwKQorICAgICAgICA6
IG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKICAgICAgICAgLCBt
X3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNlZChm
YWxzZSkKQEAgLTIwOSw5ICsyMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByYXJlRGF0
YU1hcCgpLmdldChub2RlKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNj
b3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0KLSAgICAKICAgICB2
b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9CiAgICAgdm9pZCBz
ZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlzdHMpIHsgbV9ub2Rl
TGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKSBjb25z
dCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpAQCAtMzQyLDcgKzMzOCw2IEBAIHByb3Rl
Y3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVOb2RlTGlzdHMoTm9kZSopOwogCi0gICAg
VHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1f
bm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBPd25Q
dHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcAppbmRleCAyYzU3NTYwYmYyNmYzMjc3MjIzYzQ4YmU0OTU3NGRlNDRmZDcyMDVlLi5j
NTEzNTE4NDA3MjRkMjQwZmUzNTlmYmE5ZDRjZGI3ZTdmNWYwMDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hh
ZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBEb2N1bWVudEZy
YWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNjb3BlKHRoaXMp
CisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYoMCkKICAgICAs
IG1fbmV4dCgwKQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKQEAgLTU5LDcgKzU5
LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgc2V0
UGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKICAgICAvLyBTaGFkb3cgdHJlZSBzY29wZXMgaGF2
ZSB0aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgogICAgIC8vIFRoaXMgd2F5
LCBkaXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3BlIHBvaW50ZXIu
Ci0gICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAgIHNldFRyZWVT
Y29wZSh0aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmNwcAppbmRleCA1NjQyZmNmOGRkMzNmYmMxZmJmMjAzYmRkYjFmYjhiZTI1MzdhZWZi
Li5kMzdiN2E5NGNkODkzYWE5M2I1YWUwYjE4OGVmMTIzMmEyNDNjM2IzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcApAQCAtNTEsMTQgKzUxLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFp
bmVyTm9kZSogcm9vdE5vZGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiBy
b290Tm9kZSwgRG9jdW1lbnQqIHJvb3REb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUocm9vdE5v
ZGUpCisgICAgLCBtX3Jvb3REb2N1bWVudChyb290RG9jdW1lbnQpCiAgICAgLCBtX3BhcmVudFRy
ZWVTY29wZSgwKQogICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogewogICAgIEFTU0VSVChy
b290Tm9kZSk7CiB9CiAKK1RyZWVTY29wZTo6VHJlZVNjb3BlKCkKKyAgICA6IG1fcm9vdE5vZGUo
MCkKKyAgICAsIG1fcm9vdERvY3VtZW50KDApCisgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQor
ICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQoreworfQorCisKIFRyZWVTY29wZTo6flRyZWVT
Y29wZSgpCiB7CiAgICAgaWYgKG1fc2VsZWN0aW9uKSB7CkBAIC04MSw2ICs5MSw3IEBAIHZvaWQg
VHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkK
ICAgICBBU1NFUlQobmV3UGFyZW50U2NvcGUpOwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBu
ZXdQYXJlbnRTY29wZTsKKyAgICBtX3Jvb3REb2N1bWVudCA9IG5ld1BhcmVudFNjb3BlLT5yb290
RG9jdW1lbnQoKTsKIH0KIAogRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25z
dCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKQEAgLTI0NSw2ICsyNTYsMTEgQEAgTm9k
ZSogVHJlZVNjb3BlOjpmb2N1c2VkTm9kZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgVHJl
ZVNjb3BlOjppc0RvY3VtZW50U2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiB0aGlzID09IG1f
cm9vdERvY3VtZW50OworfQorCiBzdGF0aWMgdm9pZCBsaXN0VHJlZVNjb3BlcyhOb2RlKiBub2Rl
LCBWZWN0b3I8VHJlZVNjb3BlKiwgNT4mIHRyZWVTY29wZXMpCiB7CiAgICAgd2hpbGUgKHRydWUp
IHsKQEAgLTI3OCw1ICsyOTQsMTEgQEAgVHJlZVNjb3BlKiBjb21tb25UcmVlU2NvcGUoTm9kZSog
bm9kZUEsIE5vZGUqIG5vZGVCKQogICAgIHJldHVybiB0cmVlU2NvcGVzQVtpbmRleEFdID09IHRy
ZWVTY29wZXNCW2luZGV4Ql0gPyB0cmVlU2NvcGVzQVtpbmRleEFdIDogMDsKIH0KIAorVHJlZVNj
b3BlKiBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChUcmVlU2NvcGUsIGluc3RhbmNlLCAoKSk7CisgICAgcmV0dXJuICZpbnN0YW5jZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggNWVjYzAz
OTJmMzcxNzBiZWUzMDUzOTkyMTQyNDk3Y2ZhYjdhY2IwYi4uODIzNzE2ODYxZmJiOWJlMmMxYzcx
ZGU0MTI0ODUzNjE5ZDRjMjc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBE
T01TZWxlY3Rpb247CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1M
TWFwRWxlbWVudDsKIGNsYXNzIE5vZGU7CkBAIC04MSwxNSArODIsMjMgQEAgcHVibGljOgogICAg
IHZvaWQgYWRvcHRJZk5lZWRlZChOb2RlKik7CiAKICAgICBDb250YWluZXJOb2RlKiByb290Tm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7IH0KKyAgICBEb2N1bWVudCogcm9vdERvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RG9jdW1lbnQ7IH0KKyAgICB2b2lkIHNldFJvb3RE
b2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpIHsgbV9yb290RG9jdW1lbnQgPSBkb2N1bWVudDsg
fQorICAgIGJvb2wgaXNEb2N1bWVudFNjb3BlKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgVHJlZVNj
b3BlKiBudWxsSW5zdGFuY2UoKTsKIAogcHJvdGVjdGVkOgotICAgIFRyZWVTY29wZShDb250YWlu
ZXJOb2RlKik7CisgICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCopOwogICAg
IHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgp
OwogCiBwcml2YXRlOgorICAgIFRyZWVTY29wZSgpOworCiAgICAgQ29udGFpbmVyTm9kZSogbV9y
b290Tm9kZTsKKyAgICBEb2N1bWVudCogbV9yb290RG9jdW1lbnQ7CiAgICAgVHJlZVNjb3BlKiBt
X3BhcmVudFRyZWVTY29wZTsKIAogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJ
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAppbmRleCA4OGUxYTZmZDVk
ZTEzZWRmN2Y3MDM5MmFhYWE5MTJhZGZkNmZlNzI3Li5kMzI0ZjM0Y2YyMDc2MDdhYmExNDEwYzJh
MTAzMGU0MGUyZTA2OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
QWRvcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3Bw
CkBAIC00Nyw3ICs0Nyw4IEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Nj
b3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAgICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVy
c2lvbigpOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUocm9vdCkpIHsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0
YSA9IG5vZGUtPnNldFRyZWVTY29wZShuZXdEb2N1bWVudCA9PSBtX25ld1Njb3BlID8gMCA6IG1f
bmV3U2NvcGUpOworICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7CisgICAg
ICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5oYXNSYXJlRGF0YSgpID8gbm9kZS0+
cmFyZURhdGEoKSA6IDA7CiAgICAgICAgIGlmIChyYXJlRGF0YSAmJiByYXJlRGF0YS0+bm9kZUxp
c3RzKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+bm9kZUxpc3RzKCktPmFkb3B0VHJlZVNjb3Bl
KG1fb2xkU2NvcGUsIG1fbmV3U2NvcGUsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAKQEAg
LTkxLDggKzkyLDYgQEAgaW5saW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05l
d0RvY3VtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2MKICAgICBpZiAob2xkRG9jdW1l
bnQpCiAgICAgICAgIG9sZERvY3VtZW50LT5tb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQo
bm9kZSwgbmV3RG9jdW1lbnQpOwogCi0gICAgbm9kZS0+c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQp
OwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0g
ZmFsc2U7CiAgICAgb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGgg
PSBvbGREb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNl
bGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKaW5kZXggNWEyMTQzYzYzZDQ1MDU1NWNlZjM5ODBiNzk0MzhmNDU5ZGNmYTEz
NC4uNWJmNTQ1NDEzMjNjMDc5ZWE3ZDZjMjdjZjg4MzA5Y2U5MGQzNzcyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb3ZlU2VsZWN0aW9uQ29tbWFu
ZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50
LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAppbmRleCAxOTY1N2FjMGZjNzcyMTIy
MzU4MzU3NGJjNmJkMjA4MWQzZGM3Njk2Li44YmUyMDcwNjE0YzQ5NTMxMzhhM2M1OWYwNWY0NzVi
ZWIzYmRiNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5k
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
bW92ZU5vZGVDb21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1h
bmQuY3BwCmluZGV4IDE0NTJmODgwM2ZhYmM1NzBhMjU0ZmE1YTJlOTZlNDBmMTRkZWE5YzUuLjI4
MWZkYmRmMzJiZDUwNTFjZGViZDI3NWZkZjA2OTQ1ZmFiZWVmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJl
bkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuaCIKIAorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150879</attachid>
            <date>2012-07-04 23:14:42 -0700</date>
            <delta_ts>2012-07-09 19:08:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120705151440.patch</filename>
            <type>text/plain</type>
            <size>30029</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiY2YzZjhlZWIyZGNmMWI5ZTA0NjRm
NjRlOThiMzc5Y2E2ZTc4YjEuLmMzYTQxOWY0M2ZjMmZkNzlmNTlmZGM3MzUyN2VhYmQxOTE2MmMz
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDctMDQgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBSZXBsYWNlIE5vZGUncyBE
b2N1bWVudCBwb2ludGVyIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VkIFRhZ2dlZFB0ciB0byBl
bmNhdXN1bGF0ZSB0YWdnZWQgcG9pbnRlciB3aGljaCBlbWJlZHMgb25lIGV4dHJhIGJpdAorICAg
ICAgICBpbiBpdHMgYWRkcmVzcyByZXByZXNlbnRhdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV1RGLmd5cGk6CisgICAgICAgICogV1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9q
L1dURi52Y3Byb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9UYWdnZWRQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoVGFnZ2VkUHRy
KToKKyAgICAgICAgKFdURjo6VGFnZ2VkUHRyOjpUYWdnZWRQdHIpOgorICAgICAgICAoV1RGOjpU
YWdnZWRQdHI6OnRhZ2dlZCk6CisgICAgICAgIChXVEY6Ojo6Z2V0KToKKyAgICAgICAgKFdURjo6
OjpnZXRBc3N1bWluZ05vVGFnKToKKyAgICAgICAgKFdURjo6OjpzZXQpOgorCiAyMDEyLTA3LTA0
ICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUg
cGFyYWxsZWwgR0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YWY1ZGFlYzUxZDczNzg1ODg3N2UyNDUxZTA2NmU2
MzQwZmRmMmYzLi5lY2YzMmUxMGMxNWRmMGIwYzg1MWFjYjdjNTk3ZjhkZTc4OTgzNjcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTItMDctMDQgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBSZXBsYWNlIE5vZGUncyBE
b2N1bWVudCBwb2ludGVyIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBjaGFuZ2UsIE5vZGU6
OnRyZWVTY29wZSgpIGZldGNoZXMgdGhlIFRyZWVTY29wZSBvYmplY3QKKyAgICAgICAgZnJvbSBF
bGVtZW50UmFyZURhdGEuIFRoaXMgYXBwcm9hY2ggaGFzIHNldmVyYWwgc2hvcnRjb21pbmdzOgor
CisgICAgICAgIC0gcmFyZURhdGEoKSBjYWxsIGlzIHNsb3cgZHVlIHRvIGEgaGFzaHRhYmxlIGxv
b2t1cC4KKyAgICAgICAgLSBJbiBzaGFkb3cgdHJlZSwgRWFjaCBub2RlIGhhcyBpdHMgdHJlZSBz
Y29wZSBpbiBFbGVtZW50UmFyZURhdGEsCisgICAgICAgICAgdGhhdCBtZWFucyB0aGUgcmFyZS1k
YXRhIGlzIG5vIGxvbmdlciByYXJlIGluIHRoYXQgY2FzZS4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBnZXQgcmlkIG9mIEVsZW1lbnRSYXJlRGF0YTo6bV90cmVlU2NvcGUgYnkgcmVwbGFjaW5nCisg
ICAgICAgIE5vZGU6Om1fZG9jdW1lbnQgd2l0aCBOb2RlOjptX3RyZWVTY29wZS4gQW5kIHJldHJp
ZXZlcyB0aGUKKyAgICAgICAgZG9jdW1lbnQgb2YgTm9kZSB0aHJvdWdoIG1fdHJlZVNjb3BlLgor
CisgICAgICAgIE5vdGUgdGhhdCBOb2RlOjpkb2N1bWVudCgpIGlzIGEgaG90IGZ1bmN0aW9uIGFu
ZCBuYWl2ZQorICAgICAgICByZXBsYWNlbWVubnQgb2YgbV9kb2N1bWVudCB3aXRoIG1fdHJlZVNj
b3BlIGNhbiBodXJ0IHRoZQorICAgICAgICBzcGVlZC4gVGhpcyBjaGFuZ2UgZW1wbG95cyBzb21l
IHRyaWNrcyB0byBhZGRyZXNzIGl0LgorCisgICAgICAgIC0gSXQgbWFrZXMgTm9kZTo6bV90cmVl
U2NvcGUgYSB0YWdnZWQgcG9pbnRlciwgd2hvc2UgdGFnIGltcGxpZXMKKyAgICAgICAgICB0aGF0
IG1fdHJlZVNjb3BlIHJlZmVycyBTaGFkb3dSb290LCBub3QgRG9jdW1lbnQuIElmIHRoZSBwb2lu
dGVyCisgICAgICAgICAgaXNuJ3QgdGFnZ2VkLCB3ZSBjYW4gYXNzdW1lIHRoYXQgbV90cmVlU2Nv
cGUgaXMgYWN0dWFsbHkgYQorICAgICAgICAgIERvY3VtZW50IGFuZCBjYW4gcmV0dXJuIGl0IGFz
IGEgRG9jdW1lbnQgcmF0aGVyIHRoYW4gaW52b2tpbmcKKyAgICAgICAgICBUcmVlU2NvcGU6OnJv
b290RG9jdW1lbnQoKS4gVGhpcyBlbGltaW5hdGVzIGFuIGV4dHJhIGRlcmVmZXJlbmNlCisgICAg
ICAgICAgaW4gbWFueSBjYXNlLgorICAgICAgICAtIE5vZGU6Om1fdHJlZVNjb3BlIGNhbiBiZSBu
dWxsLiBCdXQgd2UgZG9uJ3Qgd2FudCB0byBpc3N1ZSBhbnkgZXh0cmEKKyAgICAgICAgICBjb25k
aXRpb25hbCBzdGF0ZW1lbnQuIFNvIHRoaXMgY2hhbmdlIHJlcHJlc2VudHMgYSBudWxsCisgICAg
ICAgICAgVHJlZVNjb3BlIGFzIFRyZWVTY29wZTo6bnVsbEluc3RhbmNlKCksIHdoaWNoIHNhdmVz
IG9uZSBjb25kaXRpb25hbAorICAgICAgICAgIHN0YXRlbWVudC4KKworICAgICAgICBXaXRoIHRo
ZXNlIGNoYW5nZXMsIHRoZSBOb2RlOjpkb2N1bWVudCgpIHNsb3dkb3duIGlzIG1pbmltaXplZCB0
bworICAgICAgICB1bm5vdGljZWFibGUgc2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1Z2dl
c3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnNldFRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkb2N1bWVu
dEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
Ok5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
On5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjppbkRvY3VtZW50KToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6CisgICAgICAgIChOb2RlUmFy
ZURhdGEpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSk6CisgICAgICAgICogZG9tL1RyZWVTY29w
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnJv
b3REb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldFJvb3REb2N1bWVu
dCk6CisgICAgICAgIChUcmVlU2NvcGUpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGVBZG9wdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZVRvTmV3
RG9jdW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRp
bmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwOgorCiAyMDEyLTA3LTA0
ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgTm90
aWZpY2F0aW9ucyBzaG91bGQgYmUgaW4gTW9kdWxlcy9ub3RpZmljYXRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggYzVmNDhhNmNlNTU5YTI0Y2MyMGI3MDc1OGRmOGJjNGE4NGRjOWVlZC4u
NTliNDczZmFiNjdlZWY2NjUyNDQ1ZGMyZTJhOWVmZDQ1MzAzNDQyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMTM2LDYgKzEzNiw3IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9TdHJlYW1CdWZmZXIuaCBcCiAgICAgU291cmNlL1dURi93dGYvU3RyaW5nRXh0cmFz
LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1N0cmluZ0hhc2hlci5oIFwKKyAgICBTb3VyY2UvV1RG
L3d0Zi9UYWdnZWRQdHIuaCBcCiAgICAgU291cmNlL1dURi93dGYvVENQYWNrZWRDYWNoZS5oIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9UQ1BhZ2VNYXAuaCBcCiAgICAgU291cmNlL1dURi93dGYvVENT
cGluTG9jay5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkgYi9Tb3VyY2UvV1RG
L1dURi5neXBpCmluZGV4IDg2NzU4NTUwNjFkMzc0ZWZhZmZlN2Q2MmUxNTNkZWIxMWJiYWQwMzku
LmFhNTgwODIxNjE5ZTU0Y2FmNmFkYzlhNDRmMDM1MzRiYzc4MTNmNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvV1RGLmd5cGkKKysrIGIvU291cmNlL1dURi9XVEYuZ3lwaQpAQCAtODEsNiArODEs
NyBAQAogICAgICAgICAgICAgJ3d0Zi9TdGRMaWJFeHRyYXMuaCcsCiAgICAgICAgICAgICAnd3Rm
L1N0cmluZ0V4dHJhcy5oJywKICAgICAgICAgICAgICd3dGYvU3RyaW5nSGFzaGVyLmgnLAorICAg
ICAgICAgICAgJ3d0Zi9UYWdnZWRQdHIuaCcsCiAgICAgICAgICAgICAnd3RmL1RlbXBvcmFyeUNo
YW5nZS5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oJywK
ICAgICAgICAgICAgICd3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dURi5wcm8KaW5kZXggMDk2MmVmMGI1MGE1
MTdiZDBlMmQ0NTYyZGY4ZGVmZDZmNTFhMWYwNC4uMzA3NmM0NzViNGNhM2YwMWEzMzllMWZhZjA0
YWI1NDA5OTM3MWE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYucHJvCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnBybwpAQCAtMTI0LDYgKzEyNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFN0ZExp
YkV4dHJhcy5oIFwKICAgICBTdHJpbmdFeHRyYXMuaCBcCiAgICAgU3RyaW5nSGFzaGVyLmggXAor
ICAgIFRhZ2dlZFB0LmggXAogICAgIFRDUGFja2VkQ2FjaGUuaCBcCiAgICAgVENTcGluTG9jay5o
IFwKICAgICBUQ1N5c3RlbUFsbG9jLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYudmNw
cm9qL1dURi52Y3Byb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagppbmRleCAy
MTkwZGFlMWVmZmVhZTMzOTUzMzI3ZTNjYjczZTc3ZTZlZTQ2ZDU4Li42OWMyNTczODMwN2EwNTZl
MDFlNzlhYjZjYWMzMDExYjJiMDY0Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3By
b2ovV1RGLnZjcHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagpAQCAt
MTExMyw2ICsxMTEzLDEwIEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZl
UGF0aD0iLi5cd3RmXFRhZ2dlZFB0ci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxUQ1BhY2tlZENhY2hlLmgiCiAJCQk+CiAJCTwvRmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3MjA0NjFlMjY0NjYx
ZmM4ZTk0MzVlOTA4ODE2NzRiY2QxYjc2NTguLmE0YmEyNmZiMmZmMWMyOWUwMTEzOTYzNDkwMmM5
YmVhNmEzYjQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNywxMSArNywxMiBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCisJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFDNDE1
NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKCk7IH07IH07CiAJCTE0M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFE
MTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLzsgfTsKIAkJMTQzRjYxMjAxNTY1RjBG
OTAwREI1MTRBIC8qIFJBTVNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZEODFBQzUxNTRG
QjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0
VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJNDMzMEYz
OEYxNTc0NUIwNTAwQUFGQThGIC8qIFVSTFN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzMwRjM4RTE1NzQ1QjA1MDBBQUZBOEYgLyogVVJM
U3RyaW5nLmNwcCAqLzsgfTsKIAkJNEYwMzIxQkMxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjAzMjFC
QjE1NkFBOEQxMDA2RUJBRjYgLyogQml0QXJyYXkuaCAqLzsgfTsKKwkJQTdEODU5NzExNUE1NjdC
MDAwRTJDOTA4IC8qIFRhZ2dlZFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdEODU5NzAxNUE1NjdCMDAwRTJDOTA4IC8qIFRhZ2dlZFB0ci5oICov
OyB9OwogCQlBODc2REJEODE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzZEQkQ3MTUxODE2RTUwMERB
REI5NSAvKiBQbGF0Zm9ybS5oICovOyB9OwogCQlBOEE0NzM3RjE1MUE4MjVCMDA0MTIzRkYgLyog
QWxpZ25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi87IH07CiAJCUE4QTQ3
MzgwMTUxQTgyNUIwMDQxMjNGRiAvKiBBbHdheXNJbmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjU1MTUxQTgyNUEwMDQxMjNGRiAvKiBB
bHdheXNJbmxpbmUuaCAqLzsgfTsKQEAgLTI0NSw5ICsyNDYsOSBAQAogLyogRW5kIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwor
CQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJBTVNpemUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSQU1TaXplLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMzMEYzOEUxNTc0NUIwNTAwQUFGQThGIC8q
IFVSTFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxT
dHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjAzMjFCQjE1NkFBOEQx
MDA2RUJBRjYgLyogQml0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qml0QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4
NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJX
VEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTI1Niw2ICsyNTcs
NyBAQAogCQk1RDI0N0I3MDE0Njg5QzQ3MDBFNzhCNzYgLyogRGVidWdSZWxlYXNlLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQyNDdCNzMxNDY4OUM0NzAwRTc4Qjc2IC8qIFdURi54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBXVEYueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
MjQ3RUIxMTQ2OEIwMTUwMEU3OEI3NiAvKiBIZWFkZXJEZXRlY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSGVhZGVyRGV0ZWN0aW9uLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XVEYvSGVhZGVyRGV0ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCUE3RDg1OTcwMTVBNTY3QjAwMEUyQzkwOCAvKiBUYWdnZWRQdHIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnZ2VkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWdubWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzI1NTE1MUE4MjVBMDA0MTIzRkYgLyogQWx3YXlzSW5saW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsd2F5c0lubGluZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg0LDYgKzY4Niw3IEBACiAJCQkJQThBNDczMTIx
NTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0V4dHJhcy5jcHAgKi8sCiAJCQkJQThBNDczMTMxNTFB
ODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0V4dHJhcy5oICovLAogCQkJCUE4QTQ3MzE0MTUxQTgyNUIw
MDQxMjNGRiAvKiBTdHJpbmdIYXNoZXIuaCAqLywKKwkJCQlBN0Q4NTk3MDE1QTU2N0IwMDBFMkM5
MDggLyogVGFnZ2VkUHRyLmggKi8sCiAJCQkJQThBNDczMTUxNTFBODI1QjAwNDEyM0ZGIC8qIFRD
UGFja2VkQ2FjaGUuaCAqLywKIAkJCQlBOEE0NzMxNjE1MUE4MjVCMDA0MTIzRkYgLyogVENQYWdl
TWFwLmggKi8sCiAJCQkJQThBNDczMTcxNTFBODI1QjAwNDEyM0ZGIC8qIFRDU3BpbkxvY2suaCAq
LywKQEAgLTEwNDEsNiArMTA0NCw3IEBACiAJCQkJQThBNDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8q
IGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQzRjYxMjAxNTY1RjBGOTAwREI1MTRBIC8q
IFJBTVNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAv
KiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4NTk3MTE1QTU2N0IwMDBF
MkM5MDggLyogVGFnZ2VkUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMjc0ZjA0Yzk3NDkzMTlhZWY0ODA0NDc5MTZkZDIyODI3MjUwODY4Zi4uMzcwMDc5ZTdhYTlh
MDkzYTc3MDk4MDRhNDQ3ZjI2NjRlZmUwMDg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTg3
LDYgKzg3LDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgU3RkTGliRXh0cmFzLmgKICAgICBTdHJp
bmdFeHRyYXMuaAogICAgIFN0cmluZ0hhc2hlci5oCisgICAgVGFnZ2VkUHRyLmgKICAgICBUQ1Bh
Y2tlZENhY2hlLmgKICAgICBUQ1BhZ2VNYXAuaAogICAgIFRDU3BpbkxvY2suaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVGFnZ2VkUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9UYWdnZWRQdHIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MTIwMmMyMThjZTAzMzdiOTFkNGRiZmE5NDc1NzA0NmJlMmFiODBmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVGFnZ2VkUHRyLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV1RGX1RhZ2dlZFB0cl9oCisjZGVmaW5lIFdURl9UYWdnZWRQdHJfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4KK2NsYXNzIFRhZ2dlZFB0ciB7CitwdWJsaWM6CisgICAgZW51bSB7IFRhZyA9
IDEgfTsKKworICAgIGV4cGxpY2l0IFRhZ2dlZFB0cihUKiBwdHIsIGJvb2wgdGFnID0gZmFsc2Up
IHsgc2V0KHB0ciwgdGFnKTsgfQorICAgIGJvb2wgdGFnZ2VkKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZSAmIFRhZzsgfQorICAgIHZvaWQgc2V0KFQqIHB0ciwgYm9vbCB0YWcgPSBmYWxzZSk7Cisg
ICAgVCogZ2V0KCkgY29uc3Q7CisgICAgVCogZ2V0QXNzdW1pbmdOb1RhZygpIGNvbnN0OworICAg
IAorcHJpdmF0ZToKKyAgICB1aW50cHRyX3QgbV92YWx1ZTsKK307CisKK3RlbXBsYXRlPGNsYXNz
IFQ+CitpbmxpbmUgVCogVGFnZ2VkUHRyPFQ+OjpnZXQoKSBjb25zdAoreworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFQqPihtX3ZhbHVlICYgfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4oVGFn
KSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFQ+CitpbmxpbmUgVCogVGFnZ2VkUHRyPFQ+OjpnZXRB
c3N1bWluZ05vVGFnKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIXRhZ2dlZCgpKTsKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4obV92YWx1ZSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFQ+
CitpbmxpbmUgdm9pZCBUYWdnZWRQdHI8VD46OnNldChUKiBwdHIsIGJvb2wgdGFnKQoreworICAg
IEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIpICYgVGFnKSk7CisgICAg
bV92YWx1ZSA9IHRhZyA/IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIpIHwgVGFnIDog
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCit1c2luZyBXVEY6OlRhZ2dlZFB0cjsKKworI2VuZGlmIC8vIFdURl9UYWdnZWRQdHJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMmIwY2YwODU1ZDc5NWQwNjk5NDZkNzBhNWU3MTgz
MzI0MmFhNDA3Zi4uOGEzOWVhYjkyYjU4ZDliNGRhZDlkYjNjZjg2NzkxY2E4NjQ0ZmZkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MTksNyArNDE5LDcgQEAgdWludDY0X3QgRG9jdW1l
bnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCiBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAg
OiBDb250YWluZXJOb2RlKDAsIENyZWF0ZURvY3VtZW50KQotICAgICwgVHJlZVNjb3BlKHRoaXMp
CisgICAgLCBUcmVlU2NvcGUodGhpcywgdGhpcykKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQog
ICAgICwgbV9jb250ZXh0RmVhdHVyZXMoQ29udGV4dEZlYXR1cmVzOjpkZWZhdWx0U3dpdGNoKCkp
CiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlKE5vUXVpcmtzTW9kZSkKQEAgLTQ5MSw3ICs0OTEs
OCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJv
b2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9w
ZXJ0aWVzQ2hhbmdlZChmYWxzZSkKICNlbmRpZgogewotICAgIG1fZG9jdW1lbnQgPSB0aGlzOwor
ICAgIHNldFRyZWVTY29wZSh0aGlzKTsKKyAgICBzZXRSb290RG9jdW1lbnQodGhpcyk7CiAKICAg
ICBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQgPSBmYWxzZTsKIApAQCAtNjQ0LDcgKzY0
NSw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGlmIChoYXNSYXJlRGF0YSgpKQogICAg
ICAgICBjbGVhclJhcmVEYXRhKCk7CiAKLSAgICBtX2RvY3VtZW50ID0gMDsKKyAgICBzZXRUcmVl
U2NvcGUoMCk7CiAKICAgICBJbnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNw
ZWN0b3JDb3VudGVyczo6RG9jdW1lbnRDb3VudGVyKTsKIH0KQEAgLTEzMzcsMTMgKzEzMzgsMTQg
QEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAKIFN0
cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBjb25zdAogewotICAgIGlmIChtX2Rv
Y3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKKyAgICBEb2N1bWVudCogZG9jID0gZG9jdW1lbnQo
KTsKKyAgICBpZiAoZG9jLT5pc1hIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJhcHBs
aWNhdGlvbi94aHRtbCt4bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkp
CisgICAgaWYgKGRvYy0+aXNTVkdEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImltYWdlL3N2
Zyt4bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT54bWxTdGFuZGFsb25lKCkpCisgICAgaWYgKGRv
Yy0+eG1sU3RhbmRhbG9uZSgpKQogICAgICAgICByZXR1cm4gInRleHQveG1sIjsKLSAgICBpZiAo
bV9kb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoZG9jLT5pc0hUTUxEb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gInRleHQvaHRtbCI7CiAKICAgICBpZiAoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gbG9hZGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDY5
NGIxN2I5YTI0YmYwNDc2MzM5ZjQxYzk2NjMzNzNlYWYzMWY3ODguLmQ3MTcxN2Q4Mjg3NTAxZGJh
NGI3YzFlNGRmZjMyZmMyYTZiNmMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNTE4LDE0
ICsxNTE4LDQxIEBAIHByaXZhdGU6CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1
c2UgdGhleSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2UgcmVhbGx5IHdh
bnQgdG8gaW5saW5lIHRoZW0uCiAKK2lubGluZSBUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJlZVNjb3BlLmdldCgpID09IFRyZWVTY29wZTo6bnVs
bEluc3RhbmNlKCkgPyAwIDogbV90cmVlU2NvcGUuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkIE5v
ZGU6OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQoreworICAgIFRyZWVTY29wZSogcmF3
ID0gc2NvcGUgPyBzY29wZSA6IFRyZWVTY29wZTo6bnVsbEluc3RhbmNlKCk7CisgICAgbV90cmVl
U2NvcGUuc2V0KHJhdywgIXJhdy0+aXNEb2N1bWVudFNjb3BlKCkpOworfQorCitpbmxpbmUgRG9j
dW1lbnQqIE5vZGU6OmRvY3VtZW50SW50ZXJuYWwoKSBjb25zdAoreworICAgIGlmIChtX3RyZWVT
Y29wZS50YWdnZWQoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJlZVNjb3BlLmdldCgpLT5yb290RG9j
dW1lbnQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3RyZWVTY29wZS5n
ZXRBc3N1bWluZ05vVGFnKCkpOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6OmRvY3VtZW50
KCkgY29uc3QKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb2N1bWVudEludGVybmFsKCk7
CisgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUg
dXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKKyAgICAv
LyBkdWUgdG8gdGhlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgorICAgIEFT
U0VSVChkb2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWlu
RG9jdW1lbnQoKSkpOworICAgIHJldHVybiBkb2N1bWVudDsKK30KKwogaW5saW5lIGJvb2wgTm9k
ZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1l
bnQ7CisgICAgcmV0dXJuIHRoaXMgPT0gZG9jdW1lbnRJbnRlcm5hbCgpOwogfQogCiBpbmxpbmUg
Tm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAg
ICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwg
bV90cmVlU2NvcGUoZG9jdW1lbnQgPyBkb2N1bWVudCA6IFRyZWVTY29wZTo6bnVsbEluc3RhbmNl
KCksICFkb2N1bWVudCkKICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgwKQogICAg
ICwgbV9yZW5kZXJlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDQyZGQyMTUxNzVmNTNhMmMwZDg4
ZGZlMzEzNmMyZDRlZjk1YTdkYmYuLjEzOTNkMzZkNDI2NTYzNmY1ODc2MjNmNWIyYjZjNjI0YmY4
ZTQ4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBOb2RlOjp+Tm9kZSgp
CiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQq
IGRvYyA9IG1fZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwo
KTsKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2Mg
JiYgZG9jLT5heE9iamVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNo
ZSgpLT5yZW1vdmVOb2RlRm9yVXNlKHRoaXMpOwogICAgIApAQCAtNDIwLDQxICs0MjAsNiBAQCBO
b2RlOjp+Tm9kZSgpCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5z
cGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgbV9k
b2N1bWVudCA9PSBkb2N1bWVudCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50
ID09IGRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RvY3VtZW50ID0gZG9jdW1l
bnQ7Ci19Ci0KLU5vZGVSYXJlRGF0YSogTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2Nv
cGUpCi17Ci0gICAgaWYgKCFzY29wZSkgewotICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewot
ICAgICAgICAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gcmFyZURhdGEoKTsKLSAgICAgICAgICAg
IGRhdGEtPnNldFRyZWVTY29wZSgwKTsKLSAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgTm9kZVJhcmVEYXRhKiBkYXRh
ID0gZW5zdXJlUmFyZURhdGEoKTsKLSAgICBkYXRhLT5zZXRUcmVlU2NvcGUoc2NvcGUpOwotICAg
IHJldHVybiBkYXRhOwotfQotCi1UcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17
Ci0gICAgLy8gRklYTUU6IFVzaW5nIG1fZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4g
c2VlIGNvbW1lbnQgd2l0aCBkb2N1bWVudCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KLSAgICBpZiAo
IWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIFRyZWVTY29w
ZSogc2NvcGUgPSByYXJlRGF0YSgpLT50cmVlU2NvcGUoKTsKLSAgICByZXR1cm4gc2NvcGUgPyBz
Y29wZSA6IG1fZG9jdW1lbnQ7Ci19Ci0KIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBj
b25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAgLTI4MTYsNyArMjc4MSw3IEBA
IHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRo
aXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAgICBUcmVlU2hhcmVkPE5vZGUsIENv
bnRhaW5lck5vZGU+OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBT
Y3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwotICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIobV9kb2N1bWVudCwgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpET00pOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIoZG9j
dW1lbnQoKSwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwogICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9uZXh0KTsKICAgICBtZW1vcnlPYmplY3RJ
bmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fcHJldmlvdXMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
aW5kZXggN2ZiMGI4ZGRiNTdlZjRkNDM5NzVjMGUxOTE5NTdmZTVkMDUyMjYzMS4uNDMzNWMxZDJi
MTU5Nzc2ZjEwYmRiMzA2ZDc4ZjQyMzBmNjMxMTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L1RhZ2dlZFB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiAjaWYg
VVNFKEpTQykKQEAgLTQwNywxNCArNDA4LDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0
aGUgZG9jdW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbm9kZS4gVGhpcyBtZXRob2QgbmV2ZXIg
cmV0dXJucyBOVUxMLCBleGNlcHQgaW4gdGhlIGNhc2UgCiAgICAgLy8gb2YgYSBEb2N1bWVudFR5
cGUgbm9kZSB0aGF0IGlzIG5vdCB1c2VkIHdpdGggYW55IERvY3VtZW50IHlldC4gQSBEb2N1bWVu
dCBub2RlIHJldHVybnMgaXRzZWxmLgotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBBU1NFUlQodGhpcyk7Ci0gICAgICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NF
UlQgaXMgdXNlZnVsLCBidXQgcHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBj
b25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yCi0gICAgICAgIC8vIGR1ZSB0byB0aGUgdmlydHVhbCBm
dW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCi0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8
IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7Ci0g
ICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdDsKIAogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3Q7CiAKQEAgLTQyMiw3
ICs0MTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gbm9kZSB0cmVlLCBmYWxzZSBvdGhlcndpc2UuCiAg
ICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QgCiAgICAgeyAKLSAgICAgICAgQVNTRVJUKG1fZG9j
dW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAgICAgICAgQVNTRVJUKHRyZWVT
Y29wZSgpIHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CiAgICAgICAgIHJldHVybiBnZXRG
bGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CiAKQEAgLTczMiwxNiArNzI2LDE0IEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgc2V0SGFzQ3VzdG9tQ2FsbGJhY2tzKCkgeyBzZXRGbGFnKHRydWUs
IEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcpOyB9CiAKKyAgICB2b2lkIHNldFRyZWVTY29wZShUcmVl
U2NvcGUqKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnRJbnRlcm5hbCgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+Owog
CiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgLy8gVGhlc2UgQVBJIHNob3VsZCBi
ZSBvbmx5IHVzZWQgZm9yIGEgdHJlZSBzY29wZSBtaWdyYXRpb24uCi0gICAgLy8gc2V0VHJlZVNj
b3BlKCkgcmV0dXJucyBOb2RlUmFyZURhdGEgdG8gc2F2ZSBleHRyYSBub2RlUmFyZURhdGEoKSBp
bnZvY2F0aW9ucyBvbiB0aGUgY2FsbGVyIHNpdGUuCi0gICAgTm9kZVJhcmVEYXRhKiBzZXRUcmVl
U2NvcGUoVHJlZVNjb3BlKik7Ci0gICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCopOwotCiAg
ICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJpY2hseUVkaXRhYmxlIH07CiAgICAg
Ym9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVMZXZlbCkgY29uc3Q7CiAgICAgYm9vbCBp
c0VkaXRhYmxlVG9BY2Nlc3NpYmlsaXR5KEVkaXRhYmxlTGV2ZWwpIGNvbnN0OwpAQCAtNzg0LDcg
Kzc3Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIG11dGFibGUgdWludDMyX3QgbV9ub2Rl
RmxhZ3M7Ci0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgVGFnZ2VkUHRyPFRyZWVTY29w
ZT4gbV90cmVlU2NvcGU7CiAgICAgTm9kZSogbV9wcmV2aW91czsKICAgICBOb2RlKiBtX25leHQ7
CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CmluZGV4IGVkYjJkNjk3ZWQ3ODI1MzA2N2NiZDdiMmYxN2Q5ODM3YmNjZmMwMzEuLjYxZTEwZDc0
NDdkZjI4NDRkMjQ5M2UyMDJkYmY4YThhMTM1OWE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmgKQEAgLTE4MCw4ICsxODAsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOiAgICAKICAgICBOb2RlUmFyZURhdGEoKQotICAgICAgICA6IG1fdHJlZVNjb3BlKDAp
Ci0gICAgICAgICwgbV9jaGlsZE5vZGVMaXN0KDApCisgICAgICAgIDogbV9jaGlsZE5vZGVMaXN0
KDApCiAgICAgICAgICwgbV90YWJJbmRleCgwKQogICAgICAgICAsIG1fdGFiSW5kZXhXYXNTZXRF
eHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNGb2N1c2VkKGZhbHNlKQpAQCAtMjA5LDkg
KzIwOCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KG5vZGUp
OwogICAgIH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90
cmVlU2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRyZWVTY29wZSkg
eyBtX3RyZWVTY29wZSA9IHRyZWVTY29wZTsgfQotICAgIAogICAgIHZvaWQgY2xlYXJOb2RlTGlz
dHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2b2lkIHNldE5vZGVMaXN0cyhQYXNz
T3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBtX25vZGVMaXN0cyA9IGxpc3RzOyB9
CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZUxpc3RzLmdldCgpOyB9CkBAIC0zNDIsNyArMzM4LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZU5vZGVMaXN0cyhOb2RlKik7CiAKLSAgICBUcmVlU2NvcGUqIG1fdHJl
ZVNjb3BlOwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAgICAg
Q2hpbGROb2RlTGlzdCogbV9jaGlsZE5vZGVMaXN0OwogICAgIE93blB0cjxFdmVudFRhcmdldERh
dGE+IG1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDJj
NTc1NjBiZjI2ZjMyNzcyMjNjNDhiZTQ5NTc0ZGU0NGZkNzIwNWUuLmM1MTM1MTg0MDcyNGQyNDBm
ZTM1OWZiYTlkNGNkYjdlN2Y1ZjAwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dSb290OjpTaGFkb3dS
b290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQs
IENyZWF0ZVNoYWRvd1Jvb3QpCi0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29w
ZSh0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0KDApCiAgICAg
LCBtX2FwcGx5QXV0aG9yU3R5bGVzKGZhbHNlKQpAQCAtNTksNyArNTksNyBAQCBTaGFkb3dSb290
OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICBzZXRQYXJlbnRUcmVlU2NvcGUo
ZG9jdW1lbnQpOwogICAgIC8vIFNoYWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBwb2lu
dGVyIHBvaW50IHRvIHRoZW1zZWx2ZXMuCiAgICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGlsZHJl
biB3aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1cmVSYXJl
RGF0YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogfQog
CiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4
IDU2NDJmY2Y4ZGQzM2ZiYzFmYmYyMDNiZGRiMWZiOGJlMjUzN2FlZmIuLmQzN2I3YTk0Y2Q4OTNh
YTkzYjVhZTBiMTg4ZWYxMjMyYTI0M2MzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBA
IC01MSwxNCArNTEsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9k
ZSkKK1RyZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlLCBEb2N1bWVu
dCogcm9vdERvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKKyAgICAsIG1fcm9v
dERvY3VtZW50KHJvb3REb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCiAgICAg
LCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCiB7CiAgICAgQVNTRVJUKHJvb3ROb2RlKTsKIH0KIAor
VHJlZVNjb3BlOjpUcmVlU2NvcGUoKQorICAgIDogbV9yb290Tm9kZSgwKQorICAgICwgbV9yb290
RG9jdW1lbnQoMCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX251bU5vZGVM
aXN0Q2FjaGVzKDApCit7Cit9CisKKwogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKIHsKICAgICBp
ZiAobV9zZWxlY3Rpb24pIHsKQEAgLTgxLDYgKzkxLDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBh
cmVudFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQ
YXJlbnRTY29wZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOwor
ICAgIG1fcm9vdERvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQog
CiBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYg
ZWxlbWVudElkKSBjb25zdApAQCAtMjQ1LDYgKzI1NiwxMSBAQCBOb2RlKiBUcmVlU2NvcGU6OmZv
Y3VzZWROb2RlKCkKICAgICByZXR1cm4gMDsKIH0KIAorYm9vbCBUcmVlU2NvcGU6OmlzRG9jdW1l
bnRTY29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRoaXMgPT0gbV9yb290RG9jdW1lbnQ7Cit9
CisKIHN0YXRpYyB2b2lkIGxpc3RUcmVlU2NvcGVzKE5vZGUqIG5vZGUsIFZlY3RvcjxUcmVlU2Nv
cGUqLCA1PiYgdHJlZVNjb3BlcykKIHsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMjc4LDUgKzI5
NCwxMSBAQCBUcmVlU2NvcGUqIGNvbW1vblRyZWVTY29wZShOb2RlKiBub2RlQSwgTm9kZSogbm9k
ZUIpCiAgICAgcmV0dXJuIHRyZWVTY29wZXNBW2luZGV4QV0gPT0gdHJlZVNjb3Blc0JbaW5kZXhC
XSA/IHRyZWVTY29wZXNBW2luZGV4QV0gOiAwOwogfQogCitUcmVlU2NvcGUqIFRyZWVTY29wZTo6
bnVsbEluc3RhbmNlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRyZWVTY29wZSwgaW5z
dGFuY2UsICgpKTsKKyAgICByZXR1cm4gJmluc3RhbmNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAppbmRleCA1ZWNjMDM5MmYzNzE3MGJlZTMwNTM5
OTIxNDI0OTdjZmFiN2FjYjBiLi44MjM3MTY4NjFmYmI5YmUyYzFjNzFkZTQxMjQ4NTM2MTlkNGMy
NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVNlbGVjdGlvbjsKK2Ns
YXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogY2xh
c3MgTm9kZTsKQEAgLTgxLDE1ICs4MiwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZG9wdElmTmVl
ZGVkKE5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9yb290Tm9kZTsgfQorICAgIERvY3VtZW50KiByb290RG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3REb2N1bWVudDsgfQorICAgIHZvaWQgc2V0Um9vdERvY3VtZW50KERvY3VtZW50
KiBkb2N1bWVudCkgeyBtX3Jvb3REb2N1bWVudCA9IGRvY3VtZW50OyB9CisgICAgYm9vbCBpc0Rv
Y3VtZW50U2NvcGUoKSBjb25zdDsKKworICAgIHN0YXRpYyBUcmVlU2NvcGUqIG51bGxJbnN0YW5j
ZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqKTsKKyAgICBU
cmVlU2NvcGUoQ29udGFpbmVyTm9kZSosIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+VHJlZVNj
b3BlKCk7CiAKICAgICB2b2lkIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7CiAKIHByaXZhdGU6Cisg
ICAgVHJlZVNjb3BlKCk7CisKICAgICBDb250YWluZXJOb2RlKiBtX3Jvb3ROb2RlOworICAgIERv
Y3VtZW50KiBtX3Jvb3REb2N1bWVudDsKICAgICBUcmVlU2NvcGUqIG1fcGFyZW50VHJlZVNjb3Bl
OwogCiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1fZWxlbWVudHNCeUlkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCmluZGV4IDg4ZTFhNmZkNWRlMTNlZGY3ZjcwMzkyYWFh
YTkxMmFkZmQ2ZmU3MjcuLmQzMjRmMzRjZjIwNzYwN2FiYTE0MTBjMmExMDMwZTQwZTJlMDY4YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKQEAgLTQ3LDcgKzQ3LDgg
QEAgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSogcm9vdCkg
Y29uc3QKICAgICAgICAgb2xkRG9jdW1lbnQtPmluY0RPTVRyZWVWZXJzaW9uKCk7CiAKICAgICBm
b3IgKE5vZGUqIG5vZGUgPSByb290OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9k
ZShyb290KSkgewotICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+c2V0VHJl
ZVNjb3BlKG5ld0RvY3VtZW50ID09IG1fbmV3U2NvcGUgPyAwIDogbV9uZXdTY29wZSk7CisgICAg
ICAgIG5vZGUtPnNldFRyZWVTY29wZShtX25ld1Njb3BlKTsKKyAgICAgICAgTm9kZVJhcmVEYXRh
KiByYXJlRGF0YSA9IG5vZGUtPmhhc1JhcmVEYXRhKCkgPyBub2RlLT5yYXJlRGF0YSgpIDogMDsK
ICAgICAgICAgaWYgKHJhcmVEYXRhICYmIHJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKICAgICAgICAg
ICAgIHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+YWRvcHRUcmVlU2NvcGUobV9vbGRTY29wZSwgbV9u
ZXdTY29wZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIApAQCAtOTEsOCArOTIsNiBAQCBp
bmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1lbnQoTm9kZSog
bm9kZSwgRG9jdW1lbnQqIG9sZERvYwogICAgIGlmIChvbGREb2N1bWVudCkKICAgICAgICAgb2xk
RG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChub2RlLCBuZXdEb2N1bWVu
dCk7CiAKLSAgICBub2RlLT5zZXREb2N1bWVudChuZXdEb2N1bWVudCk7Ci0KICNpZm5kZWYgTkRF
QlVHCiAgICAgZGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQgPSBmYWxzZTsKICAgICBvbGRE
b2N1bWVudERpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkV2l0aCA9IG9sZERvY3VtZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRl
eCA1YTIxNDNjNjNkNDUwNTU1Y2VmMzk4MGI3OTQzOGY0NTlkY2ZhMTM0Li41YmY1NDU0MTMyM2Mw
NzllYTdkNmMyN2NmODgzMDljZTkwZDM3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIk1vdmVTZWxlY3Rpb25Db21tYW5kLmgiCiAKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlTm9kZUNvbW1hbmQuY3BwCmluZGV4IDE5NjU3YWMwZmM3NzIxMjIzNTgzNTc0YmM2YmQyMDgx
ZDNkYzc2OTYuLjhiZTIwNzA2MTRjNDk1MzEzOGEzYzU5ZjA1ZjQ3NWJlYjNiZGI0NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZUNvbW1hbmQu
aCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKaW5kZXggMTQ1
MmY4ODAzZmFiYzU3MGEyNTRmYTVhMmU5NmU0MGYxNGRlYTljNS4uMjgxZmRiZGYzMmJkNTA1MWNk
ZWJkMjc1ZmRmMDY5NDVmYWJlZWYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVOb2Rl
UHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151386</attachid>
            <date>2012-07-09 19:08:19 -0700</date>
            <delta_ts>2012-07-10 20:31:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120710110817.patch</filename>
            <type>text/plain</type>
            <size>27554</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZlNDBlYjkzNzY4NDhlYTgyZTgzYjEw
ZjllNzgyMGM1MDllMjdhMDMuLjkxYTYxMjY1ZDU5M2UwOWJjY2YwZGNmYmFjNGY4NGVlZWViZjcy
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDctMDQgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBSZXBsYWNlIE5vZGUncyBE
b2N1bWVudCBwb2ludGVyIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VkIFRhZ2dlZFB0ciB0byBl
bmNhdXN1bGF0ZSB0YWdnZWQgcG9pbnRlciB3aGljaCBlbWJlZHMgb25lIGV4dHJhIGJpdAorICAg
ICAgICBpbiBpdHMgYWRkcmVzcyByZXByZXNlbnRhdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV1RGLmd5cGk6CisgICAgICAgICogV1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9q
L1dURi52Y3Byb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9UYWdnZWRQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoVGFnZ2VkUHRy
KToKKyAgICAgICAgKFdURjo6VGFnZ2VkUHRyOjpUYWdnZWRQdHIpOgorICAgICAgICAoV1RGOjpU
YWdnZWRQdHI6OnRhZ2dlZCk6CisgICAgICAgIChXVEY6Ojo6Z2V0KToKKyAgICAgICAgKFdURjo6
OjpnZXRBc3N1bWluZ05vVGFnKToKKyAgICAgICAgKFdURjo6OjpzZXQpOgorCiAyMDEyLTA3LTA4
ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBJ
bnRyb2R1Y2UgYSBidWlsZCBmbGFnIGZvciBsb3cgcXVhbGl0eSBKUEVHIGltYWdlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGU0YmE4YzA5MmFhYzNkOWRhMGRkYzMyZTNhOWY2YTc5Zjk5NDUwODEuLmY1NmIwZjRj
MTcxMmQzZTVhMGU2MGUwNmMxMTdjMTAxOWQwOWEwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4
MiBAQAorMjAxMi0wNy0wNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBbUmVmYWN0b3JpbmddIFJlcGxhY2UgTm9kZSdzIERvY3VtZW50IHBvaW50ZXIgd2l0
aCBhIFRyZWVTY29wZSBwb2ludGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01OTgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJlZm9yZSB0aGlzIGNoYW5nZSwgTm9kZTo6dHJlZVNjb3BlKCkgZmV0Y2hl
cyB0aGUgVHJlZVNjb3BlIG9iamVjdAorICAgICAgICBmcm9tIEVsZW1lbnRSYXJlRGF0YS4gVGhp
cyBhcHByb2FjaCBoYXMgc2V2ZXJhbCBzaG9ydGNvbWluZ3M6CisKKyAgICAgICAgLSByYXJlRGF0
YSgpIGNhbGwgaXMgc2xvdyBkdWUgdG8gYSBoYXNodGFibGUgbG9va3VwLgorICAgICAgICAtIElu
IHNoYWRvdyB0cmVlLCBFYWNoIG5vZGUgaGFzIGl0cyB0cmVlIHNjb3BlIGluIEVsZW1lbnRSYXJl
RGF0YSwKKyAgICAgICAgICB0aGF0IG1lYW5zIHRoZSByYXJlLWRhdGEgaXMgbm8gbG9uZ2VyIHJh
cmUgaW4gdGhhdCBjYXNlLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGdldCByaWQgb2YgRWxlbWVu
dFJhcmVEYXRhOjptX3RyZWVTY29wZSBieSByZXBsYWNpbmcKKyAgICAgICAgTm9kZTo6bV9kb2N1
bWVudCB3aXRoIE5vZGU6Om1fdHJlZVNjb3BlLiBBbmQgcmV0cmlldmVzIHRoZQorICAgICAgICBk
b2N1bWVudCBvZiBOb2RlIHRocm91Z2ggbV90cmVlU2NvcGUuCisKKyAgICAgICAgTm90ZSB0aGF0
IE5vZGU6OmRvY3VtZW50KCkgaXMgYSBob3QgZnVuY3Rpb24gYW5kIG5haXZlCisgICAgICAgIHJl
cGxhY2VtZW5udCBvZiBtX2RvY3VtZW50IHdpdGggbV90cmVlU2NvcGUgY2FuIGh1cnQgdGhlCisg
ICAgICAgIHNwZWVkLiBUaGlzIGNoYW5nZSBlbXBsb3lzIHNvbWUgdHJpY2tzIHRvIGFkZHJlc3Mg
aXQuCisKKyAgICAgICAgLSBJdCBtYWtlcyBOb2RlOjptX3RyZWVTY29wZSBhIHRhZ2dlZCBwb2lu
dGVyLCB3aG9zZSB0YWcgaW1wbGllcworICAgICAgICAgIHRoYXQgbV90cmVlU2NvcGUgcmVmZXJz
IFNoYWRvd1Jvb3QsIG5vdCBEb2N1bWVudC4gSWYgdGhlIHBvaW50ZXIKKyAgICAgICAgICBpc24n
dCB0YWdnZWQsIHdlIGNhbiBhc3N1bWUgdGhhdCBtX3RyZWVTY29wZSBpcyBhY3R1YWxseSBhCisg
ICAgICAgICAgRG9jdW1lbnQgYW5kIGNhbiByZXR1cm4gaXQgYXMgYSBEb2N1bWVudCByYXRoZXIg
dGhhbiBpbnZva2luZworICAgICAgICAgIFRyZWVTY29wZTo6cm9vb3REb2N1bWVudCgpLiBUaGlz
IGVsaW1pbmF0ZXMgYW4gZXh0cmEgZGVyZWZlcmVuY2UKKyAgICAgICAgICBpbiBtYW55IGNhc2Uu
CisgICAgICAgIC0gTm9kZTo6bV90cmVlU2NvcGUgY2FuIGJlIG51bGwuIEJ1dCB3ZSBkb24ndCB3
YW50IHRvIGlzc3VlIGFueSBleHRyYQorICAgICAgICAgIGNvbmRpdGlvbmFsIHN0YXRlbWVudC4g
U28gdGhpcyBjaGFuZ2UgcmVwcmVzZW50cyBhIG51bGwKKyAgICAgICAgICBUcmVlU2NvcGUgYXMg
VHJlZVNjb3BlOjpudWxsSW5zdGFuY2UoKSwgd2hpY2ggc2F2ZXMgb25lIGNvbmRpdGlvbmFsCisg
ICAgICAgICAgc3RhdGVtZW50LgorCisgICAgICAgIFdpdGggdGhlc2UgY2hhbmdlcywgdGhlIE5v
ZGU6OmRvY3VtZW50KCkgc2xvd2Rvd24gaXMgbWluaW1pemVkIHRvCisgICAgICAgIHVubm90aWNl
YWJsZSBzaXplLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dHJlZVNjb3Bl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0VHJlZVNj
b3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50SW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNE
b2N1bWVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6
CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmluRG9jdW1lbnQpOgor
ICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6Tm9kZVJhcmVEYXRhKToKKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6aXNEb2N1bWVudFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
bnVsbEluc3RhbmNlKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6cm9vdERvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0Um9vdERvY3VtZW50KToKKyAgICAgICAgKFRyZWVT
Y29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudCk6CisgICAgICAg
ICogZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9S
ZW1vdmVOb2RlQ29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9SZW1vdmVOb2RlUHJlc2Vy
dmluZ0NoaWxkcmVuQ29tbWFuZC5jcHA6CisKIDIwMTItMDctMDkgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IEEgbnVsbCBvciB1bmRlZmlu
ZWQgc3RvcmVOYW1lcyBhcmd1bWVudCB0byBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oKSBzaG91
bGQgYmUgY29lcmNlZCB0byBzdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjNWY0OGE2
Y2U1NTlhMjRjYzIwYjcwNzU4ZGY4YmM0YTg0ZGM5ZWVkLi41OWI0NzNmYWI2N2VlZjY2NTI0NDVk
YzJlMmE5ZWZkNDUzMDM0NDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xMzYsNiArMTM2
LDcgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5o
IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9TdHJpbmdFeHRyYXMuaCBcCiAgICAgU291cmNlL1dURi93
dGYvU3RyaW5nSGFzaGVyLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL1RhZ2dlZFB0ci5oIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9UQ1BhY2tlZENhY2hlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1RD
UGFnZU1hcC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9UQ1NwaW5Mb2NrLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYuZ3lwaSBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKaW5kZXggODY3NTg1
NTA2MWQzNzRlZmFmZmU3ZDYyZTE1M2RlYjExYmJhZDAzOS4uYWE1ODA4MjE2MTllNTRjYWY2YWRj
OWE0NGYwMzUzNGJjNzgxM2Y1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYuZ3lwaQorKysg
Yi9Tb3VyY2UvV1RGL1dURi5neXBpCkBAIC04MSw2ICs4MSw3IEBACiAgICAgICAgICAgICAnd3Rm
L1N0ZExpYkV4dHJhcy5oJywKICAgICAgICAgICAgICd3dGYvU3RyaW5nRXh0cmFzLmgnLAogICAg
ICAgICAgICAgJ3d0Zi9TdHJpbmdIYXNoZXIuaCcsCisgICAgICAgICAgICAnd3RmL1RhZ2dlZFB0
ci5oJywKICAgICAgICAgICAgICd3dGYvVGVtcG9yYXJ5Q2hhbmdlLmgnLAogICAgICAgICAgICAg
J3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnBybyBiL1Nv
dXJjZS9XVEYvV1RGLnBybwppbmRleCAwOTYyZWYwYjUwYTUxN2JkMGUyZDQ1NjJkZjhkZWZkNmY1
MWExZjA0Li4zMDc2YzQ3NWI0Y2EzZjAxYTMzOWUxZmFmMDRhYjU0MDk5MzcxYTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi5wcm8KKysrIGIvU291cmNlL1dURi9XVEYucHJvCkBAIC0xMjQs
NiArMTI0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU3RkTGliRXh0cmFzLmggXAogICAgIFN0cmlu
Z0V4dHJhcy5oIFwKICAgICBTdHJpbmdIYXNoZXIuaCBcCisgICAgVGFnZ2VkUHQuaCBcCiAgICAg
VENQYWNrZWRDYWNoZS5oIFwKICAgICBUQ1NwaW5Mb2NrLmggXAogICAgIFRDU3lzdGVtQWxsb2Mu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvaiBiL1NvdXJj
ZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCmluZGV4IDIxOTBkYWUxZWZmZWFlMzM5NTMzMjdl
M2NiNzNlNzdlNmVlNDZkNTguLjY5YzI1NzM4MzA3YTA1NmUwMWU3OWFiNmNhYzMwMTFiMmIwNjRj
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCkBAIC0xMTEzLDYgKzExMTMsMTAgQEAKIAkJ
CT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcVGFnZ2VkUHRy
LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXFRD
UGFja2VkQ2FjaGUuaCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAy
NzRmMDRjOTc0OTMxOWFlZjQ4MDQ0NzkxNmRkMjI4MjcyNTA4NjhmLi4zNzAwNzllN2FhOWEwOTNh
NzcwOTgwNGE0NDdmMjY2NGVmZTAwODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtODcsNiAr
ODcsNyBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBTdGRMaWJFeHRyYXMuaAogICAgIFN0cmluZ0V4
dHJhcy5oCiAgICAgU3RyaW5nSGFzaGVyLmgKKyAgICBUYWdnZWRQdHIuaAogICAgIFRDUGFja2Vk
Q2FjaGUuaAogICAgIFRDUGFnZU1hcC5oCiAgICAgVENTcGluTG9jay5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9UYWdnZWRQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1RhZ2dlZFB0ci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQxMjAyYzIxOGNlMDMzN2I5MWQ0ZGJmYTk0NzU3MDQ2YmUyYWI4MGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UYWdnZWRQdHIuaApAQCAtMCwwICsxLDczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXVEZfVGFnZ2VkUHRyX2gKKyNkZWZpbmUgV1RGX1RhZ2dlZFB0cl9oCisKKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDxj
bGFzcyBUPgorY2xhc3MgVGFnZ2VkUHRyIHsKK3B1YmxpYzoKKyAgICBlbnVtIHsgVGFnID0gMSB9
OworCisgICAgZXhwbGljaXQgVGFnZ2VkUHRyKFQqIHB0ciwgYm9vbCB0YWcgPSBmYWxzZSkgeyBz
ZXQocHRyLCB0YWcpOyB9CisgICAgYm9vbCB0YWdnZWQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
ICYgVGFnOyB9CisgICAgdm9pZCBzZXQoVCogcHRyLCBib29sIHRhZyA9IGZhbHNlKTsKKyAgICBU
KiBnZXQoKSBjb25zdDsKKyAgICBUKiBnZXRBc3N1bWluZ05vVGFnKCkgY29uc3Q7CisgICAgCitw
cml2YXRlOgorICAgIHVpbnRwdHJfdCBtX3ZhbHVlOworfTsKKwordGVtcGxhdGU8Y2xhc3MgVD4K
K2lubGluZSBUKiBUYWdnZWRQdHI8VD46OmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VCo+KG1fdmFsdWUgJiB+c3RhdGljX2Nhc3Q8dWludHB0cl90PihUYWcpKTsK
K30KKwordGVtcGxhdGU8Y2xhc3MgVD4KK2lubGluZSBUKiBUYWdnZWRQdHI8VD46OmdldEFzc3Vt
aW5nTm9UYWcoKSBjb25zdAoreworICAgIEFTU0VSVCghdGFnZ2VkKCkpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFQqPihtX3ZhbHVlKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4KK2lu
bGluZSB2b2lkIFRhZ2dlZFB0cjxUPjo6c2V0KFQqIHB0ciwgYm9vbCB0YWcpCit7CisgICAgQVNT
RVJUKCEocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0cikgJiBUYWcpKTsKKyAgICBtX3Zh
bHVlID0gdGFnID8gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0cikgfCBUYWcgOiByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
K3VzaW5nIFdURjo6VGFnZ2VkUHRyOworCisjZW5kaWYgLy8gV1RGX1RhZ2dlZFB0cl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCmluZGV4IDMwZjNmMmQxZTUwZGVjOWU1N2I5N2ZhNjU4ODJkOGMxNWE5M2Ji
ZTcuLjljNjZmNjYxZGE4OTc1ZWMzMDcyNDlmYTRmMTY1NGQ1ODFiMmM3NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC0xMDI0LDYgKzEwMjQsNyBAQCBfX1pON1dlYkNvcmU5VGltZXJCYXNlNHN0
b3BFdgogX19aTjdXZWJDb3JlOVRpbWVyQmFzZTVzdGFydEVkZAogX19aTjdXZWJDb3JlOVRpbWVy
QmFzZUMyRXYKIF9fWk43V2ViQ29yZTlUaW1lckJhc2VEMkV2CitfX1pON1dlYkNvcmU5VHJlZVNj
b3BlMTJudWxsSW5zdGFuY2VFdgogX19aTjdXZWJDb3JlOWNsb3NlRmlsZUVSaQogX19aTjdXZWJD
b3JlOWVuZE9mV29yZEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzlFV29yZFNpZGVFCiBfX1pO
N1dlYkNvcmU5Zm9udENhY2hlRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGJjNWVhYmJk
YTYxYjhlODJhYTJmNDE0MTg5MTUzMzI3MmNiZGVmM2EuLmRlMjliNjI5Yzg0YzZiZDAwNDgyNDFm
ZTQ3YzgwY2NkZGM0NzUzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDIwLDcgKzQy
MCw3IEBAIHVpbnQ2NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAogRG9j
dW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhU
TUwsIGJvb2wgaXNIVE1MKQogICAgIDogQ29udGFpbmVyTm9kZSgwLCBDcmVhdGVEb2N1bWVudCkK
LSAgICAsIFRyZWVTY29wZSh0aGlzKQorICAgICwgVHJlZVNjb3BlKHRoaXMsIHRoaXMpCiAgICAg
LCBtX2d1YXJkUmVmQ291bnQoMCkKICAgICAsIG1fY29udGV4dEZlYXR1cmVzKENvbnRleHRGZWF0
dXJlczo6ZGVmYXVsdFN3aXRjaCgpKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZShOb1F1aXJr
c01vZGUpCkBAIC00OTIsNyArNDkyLDggQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9k
aWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5nZWQoZmFsc2UpCiAjZW5kaWYKIHsKLSAg
ICBtX2RvY3VtZW50ID0gdGhpczsKKyAgICBzZXRUcmVlU2NvcGUodGhpcyk7CisgICAgc2V0Um9v
dERvY3VtZW50KHRoaXMpOwogCiAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkID0g
ZmFsc2U7CiAKQEAgLTY0OCw3ICs2NDksNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBp
ZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgY2xlYXJSYXJlRGF0YSgpOwogCi0gICAgbV9kb2N1
bWVudCA9IDA7CisgICAgc2V0VHJlZVNjb3BlKDApOwogCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6
OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6OkRvY3VtZW50Q291bnRlcik7CiB9
CkBAIC0xMzQxLDEzICsxMzQyLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnQoY29uc3Qg
U3RyaW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkg
Y29uc3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisgICAgRG9j
dW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRvYy0+aXNYSFRNTERvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0bWwreG1sIjsKLSAgICBpZiAobV9kb2N1
bWVudC0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+eG1sU3Rh
bmRhbG9uZSgpKQorICAgIGlmIChkb2MtPnhtbFN0YW5kYWxvbmUoKSkKICAgICAgICAgcmV0dXJu
ICJ0ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAg
aWYgKGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOwog
CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA4N2RmYTMyYzI4NWUwZDhiMDk5NzMwMmUyNDViN2ZiMzg1OGZh
ZjUyLi45MTdhZjlhYmMxNTEzYzU3NmMzMDJiNGMyZGRkZDczMzU0YTQ0YmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTUyMywxNCArMTUyMyw0MSBAQCBwcml2YXRlOgogCiAvLyBQdXQgdGhl
c2UgbWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5p
dGlvbiwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgogCitpbmxpbmUgVHJlZVNj
b3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3RyZWVTY29wZS5n
ZXQoKSA9PSBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpID8gMCA6IG1fdHJlZVNjb3BlLmdldCgp
OworfQorCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkK
K3sKKyAgICBUcmVlU2NvcGUqIHJhdyA9IHNjb3BlID8gc2NvcGUgOiBUcmVlU2NvcGU6Om51bGxJ
bnN0YW5jZSgpOworICAgIG1fdHJlZVNjb3BlLnNldChyYXcsICFyYXctPmlzRG9jdW1lbnRTY29w
ZSgpKTsKK30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVudEludGVybmFsKCkgY29u
c3QKK3sKKyAgICBpZiAobV90cmVlU2NvcGUudGFnZ2VkKCkpCisgICAgICAgIHJldHVybiBtX3Ry
ZWVTY29wZS5nZXQoKS0+cm9vdERvY3VtZW50KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4obV90cmVlU2NvcGUuZ2V0QXNzdW1pbmdOb1RhZygpKTsKK30KKworaW5saW5lIERv
Y3VtZW50KiBOb2RlOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gZG9jdW1lbnRJbnRlcm5hbCgpOworICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNl
ZnVsLCBidXQgcHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3Rv
ciBvciBkZXN0cnVjdG9yCisgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwg
dG8gbm9kZVR5cGUoKS4KKyAgICBBU1NFUlQoZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9D
VU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQ7
Cit9CisKIGlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gdGhpcyA9PSBtX2RvY3VtZW50OworICAgIHJldHVybiB0aGlzID09IGRvY3VtZW50SW50
ZXJuYWwoKTsKIH0KIAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25z
dHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0eXBlKQotICAgICwgbV9kb2N1
bWVudChkb2N1bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKGRvY3VtZW50ID8gZG9jdW1lbnQgOiBU
cmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpLCAhZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDAp
CiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCAwOTUwY2Q5MzNmNjFkNTAxMGI5N2YxMTY2YzI4MTNhYmQwOTBlMzYzLi5jMWQ2MWRmMDI0NDhl
YmM0MzQ0ZGE2NGNjMmE4YmJhMzVkMDg0MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MDUsNyAr
NDA1LDcgQEAgTm9kZTo6fk5vZGUoKQogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBkZXRh
Y2goKTsKIAotICAgIERvY3VtZW50KiBkb2MgPSBtX2RvY3VtZW50OworICAgIERvY3VtZW50KiBk
b2MgPSBkb2N1bWVudEludGVybmFsKCk7CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkgJiYgZG9jICYmIGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0cygpKQogICAg
ICAgICBkb2MtPmF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlTm9kZUZvclVzZSh0aGlzKTsKICAgICAK
QEAgLTQyMCw0MSArNDIwLDYgQEAgTm9kZTo6fk5vZGUoKQogICAgIEluc3BlY3RvckNvdW50ZXJz
OjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAK
LXZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIEFTU0VS
VCghaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpOwotICAgIGlmIChpbkRv
Y3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9kb2N1bWVudCA9IGRvY3VtZW50OwotfQotCi1Ob2RlUmFyZURhdGEqIE5vZGU6OnNldFRy
ZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQotewotICAgIGlmICghc2NvcGUpIHsKLSAgICAgICAg
aWYgKGhhc1JhcmVEYXRhKCkpIHsKLSAgICAgICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IHJh
cmVEYXRhKCk7Ci0gICAgICAgICAgICBkYXRhLT5zZXRUcmVlU2NvcGUoMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZGF0YTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQot
ICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7Ci0gICAgZGF0YS0+c2V0
VHJlZVNjb3BlKHNjb3BlKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotVHJlZVNjb3BlKiBOb2Rl
Ojp0cmVlU2NvcGUoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBVc2luZyBtX2RvY3VtZW50IGRp
cmVjdGx5IGlzIG5vdCBnb29kIC0+IHNlZSBjb21tZW50IHdpdGggZG9jdW1lbnQoKSBpbiB0aGUg
aGVhZGVyIGZpbGUuCi0gICAgaWYgKCFoYXNSYXJlRGF0YSgpKQotICAgICAgICByZXR1cm4gbV9k
b2N1bWVudDsKLSAgICBUcmVlU2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7
Ci0gICAgcmV0dXJuIHNjb3BlID8gc2NvcGUgOiBtX2RvY3VtZW50OwotfQotCiBOb2RlUmFyZURh
dGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7
CkBAIC0yODE2LDcgKzI3ODEsNyBAQCB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CiAg
ICAgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVt
b3J5T2JqZWN0SW5mbyk7CiAgICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKLSAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1f
ZG9jdW1lbnQsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICBtZW1vcnlPYmplY3RJ
bmZvLT5yZXBvcnRQb2ludGVyKGRvY3VtZW50KCksIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9N
KTsKICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fbmV4
dCk7CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3By
ZXZpb3VzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDkzYTY2ZDllYzhhNWIyNjM1MTVkNWZjMjU2NmQy
YTVlOWZkZWJlZjIuLmUwYzM2MzA3NDE1ZjcxYjFkYmQ1MjcxZmM4ZGY0MGIzMzA0OTAxNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlRyZWVTaGFyZWQuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UYWdnZWRQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KIAogI2lmIFVTRShKU0MpCkBAIC00MDcsMTQgKzQwOCw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IFJldHVybnMgdGhlIGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG5vZGUuIFRoaXMgbWV0
aG9kIG5ldmVyIHJldHVybnMgTlVMTCwgZXhjZXB0IGluIHRoZSBjYXNlIAogICAgIC8vIG9mIGEg
RG9jdW1lbnRUeXBlIG5vZGUgdGhhdCBpcyBub3QgdXNlZCB3aXRoIGFueSBEb2N1bWVudCB5ZXQu
IEEgRG9jdW1lbnQgbm9kZSByZXR1cm5zIGl0c2VsZi4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKHRoaXMpOwotICAgICAgICAvLyBGSVhNRTog
YmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1lbnQo
KSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgotICAgICAgICAvLyBkdWUgdG8gdGhl
IHZpcnR1YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgotICAgICAgICBBU1NFUlQobV9k
b2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1l
bnQoKSkpOwotICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICB9CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Q7CiAKICAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0Owog
CkBAIC00MjIsNyArNDE2LDcgQEAgcHVibGljOgogICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ugb3Ro
ZXJ3aXNlLgogICAgIGJvb2wgaW5Eb2N1bWVudCgpIGNvbnN0IAogICAgIHsgCi0gICAgICAgIEFT
U0VSVChtX2RvY3VtZW50IHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CisgICAgICAgIEFT
U0VSVCh0cmVlU2NvcGUoKSB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOwogICAgICAgICBy
ZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAgICAgfQogCkBAIC03MzIsMTYgKzcyNiwx
NCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpIHsgc2V0
RmxhZyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQogCisgICAgdm9pZCBzZXRUcmVl
U2NvcGUoVHJlZVNjb3BlKik7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50SW50ZXJuYWwoKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBDb250YWlu
ZXJOb2RlPjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIC8vIFRoZXNlIEFQ
SSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgotICAgIC8v
IHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9kZVJh
cmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRlLgotICAgIE5vZGVSYXJlRGF0
YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwotICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1l
bnQqKTsKLQogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlFZGl0YWJs
ZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwpIGNvbnN0Owog
ICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShFZGl0YWJsZUxldmVsKSBjb25zdDsK
QEAgLTc4NCw3ICs3NzYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBtdXRhYmxlIHVpbnQz
Ml90IG1fbm9kZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIFRhZ2dlZFB0
cjxUcmVlU2NvcGU+IG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9k
ZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmFyZURhdGEuaAppbmRleCA1YzAzZDhiMzgxODIwZTllY2NjMzIwNDk0MjA2ZWE1ZWEwNzMxMWY3
Li45NTEyM2I5MDlhNDRhOTNkNGYxMTA0OWRjZmJkNWVkNWRlNzNiYTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSYXJlRGF0YS5oCkBAIC0xODAsOCArMTgwLDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFyZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9kZVJhcmVEYXRhKCkKLSAgICAgICAgOiBtX3Ry
ZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgwKQorICAgICAgICA6IG1fY2hp
bGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKICAgICAgICAgLCBtX3RhYklu
ZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNlZChmYWxzZSkK
QEAgLTIwOSw5ICsyMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByYXJlRGF0YU1hcCgp
LmdldChub2RlKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiB0
cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0KLSAgICAKICAgICB2b2lkIGNs
ZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9CiAgICAgdm9pZCBzZXROb2Rl
TGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlzdHMpIHsgbV9ub2RlTGlzdHMg
PSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKSBjb25zdCB7IHJl
dHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpAQCAtMzQyLDcgKzMzOCw2IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVOb2RlTGlzdHMoTm9kZSopOwogCi0gICAgVHJlZVNj
b3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxp
c3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBPd25QdHI8RXZl
bnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAppbmRleCAyYzU3NTYwYmYyNmYzMjc3MjIzYzQ4YmU0OTU3NGRlNDRmZDcyMDVlLi5jNTEzNTE4
NDA3MjRkMjQwZmUzNTlmYmE5ZDRjZGI3ZTdmNWYwMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhZG93Um9v
dDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50
KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNjb3BlKHRoaXMpCisgICAg
LCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYoMCkKICAgICAsIG1fbmV4
dCgwKQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKQEAgLTU5LDcgKzU5LDcgQEAg
U2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgc2V0UGFyZW50
VHJlZVNjb3BlKGRvY3VtZW50KTsKICAgICAvLyBTaGFkb3cgdHJlZSBzY29wZXMgaGF2ZSB0aGUg
c2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgogICAgIC8vIFRoaXMgd2F5LCBkaXJl
Y3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3BlIHBvaW50ZXIuCi0gICAg
ZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAgIHNldFRyZWVTY29wZSh0
aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAppbmRleCA1NjQyZmNmOGRkMzNmYmMxZmJmMjAzYmRkYjFmYjhiZTI1MzdhZWZiLi5kMzdi
N2E5NGNkODkzYWE5M2I1YWUwYjE4OGVmMTIzMmEyNDNjM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcApAQCAtNTEsMTQgKzUxLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFpbmVyTm9k
ZSogcm9vdE5vZGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9k
ZSwgRG9jdW1lbnQqIHJvb3REb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCisg
ICAgLCBtX3Jvb3REb2N1bWVudChyb290RG9jdW1lbnQpCiAgICAgLCBtX3BhcmVudFRyZWVTY29w
ZSgwKQogICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogewogICAgIEFTU0VSVChyb290Tm9k
ZSk7CiB9CiAKK1RyZWVTY29wZTo6VHJlZVNjb3BlKCkKKyAgICA6IG1fcm9vdE5vZGUoMCkKKyAg
ICAsIG1fcm9vdERvY3VtZW50KDApCisgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwg
bV9udW1Ob2RlTGlzdENhY2hlcygwKQoreworfQorCisKIFRyZWVTY29wZTo6flRyZWVTY29wZSgp
CiB7CiAgICAgaWYgKG1fc2VsZWN0aW9uKSB7CkBAIC04MSw2ICs5MSw3IEBAIHZvaWQgVHJlZVNj
b3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKICAgICBB
U1NFUlQobmV3UGFyZW50U2NvcGUpOwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJl
bnRTY29wZTsKKyAgICBtX3Jvb3REb2N1bWVudCA9IG5ld1BhcmVudFNjb3BlLT5yb290RG9jdW1l
bnQoKTsKIH0KIAogRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKQEAgLTI0NSw2ICsyNTYsMTEgQEAgTm9kZSogVHJl
ZVNjb3BlOjpmb2N1c2VkTm9kZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgVHJlZVNjb3Bl
Ojppc0RvY3VtZW50U2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiB0aGlzID09IG1fcm9vdERv
Y3VtZW50OworfQorCiBzdGF0aWMgdm9pZCBsaXN0VHJlZVNjb3BlcyhOb2RlKiBub2RlLCBWZWN0
b3I8VHJlZVNjb3BlKiwgNT4mIHRyZWVTY29wZXMpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAg
LTI3OCw1ICsyOTQsMTEgQEAgVHJlZVNjb3BlKiBjb21tb25UcmVlU2NvcGUoTm9kZSogbm9kZUEs
IE5vZGUqIG5vZGVCKQogICAgIHJldHVybiB0cmVlU2NvcGVzQVtpbmRleEFdID09IHRyZWVTY29w
ZXNCW2luZGV4Ql0gPyB0cmVlU2NvcGVzQVtpbmRleEFdIDogMDsKIH0KIAorVHJlZVNjb3BlKiBU
cmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUcmVl
U2NvcGUsIGluc3RhbmNlLCAoKSk7CisgICAgcmV0dXJuICZpbnN0YW5jZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggNWVjYzAzOTJmMzcx
NzBiZWUzMDUzOTkyMTQyNDk3Y2ZhYjdhY2IwYi4uODIzNzE2ODYxZmJiOWJlMmMxYzcxZGU0MTI0
ODUzNjE5ZDRjMjc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzQsNiArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBET01TZWxl
Y3Rpb247CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKIGNsYXNzIE5vZGU7CkBAIC04MSwxNSArODIsMjMgQEAgcHVibGljOgogICAgIHZvaWQg
YWRvcHRJZk5lZWRlZChOb2RlKik7CiAKICAgICBDb250YWluZXJOb2RlKiByb290Tm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7IH0KKyAgICBEb2N1bWVudCogcm9vdERvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9yb290RG9jdW1lbnQ7IH0KKyAgICB2b2lkIHNldFJvb3REb2N1bWVu
dChEb2N1bWVudCogZG9jdW1lbnQpIHsgbV9yb290RG9jdW1lbnQgPSBkb2N1bWVudDsgfQorICAg
IGJvb2wgaXNEb2N1bWVudFNjb3BlKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgVHJlZVNjb3BlKiBu
dWxsSW5zdGFuY2UoKTsKIAogcHJvdGVjdGVkOgotICAgIFRyZWVTY29wZShDb250YWluZXJOb2Rl
Kik7CisgICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCopOwogICAgIHZpcnR1
YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCiBw
cml2YXRlOgorICAgIFRyZWVTY29wZSgpOworCiAgICAgQ29udGFpbmVyTm9kZSogbV9yb290Tm9k
ZTsKKyAgICBEb2N1bWVudCogbV9yb290RG9jdW1lbnQ7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVu
dFRyZWVTY29wZTsKIAogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAppbmRleCA4OGUxYTZmZDVkZTEzZWRm
N2Y3MDM5MmFhYWE5MTJhZGZkNmZlNzI3Li5kMzI0ZjM0Y2YyMDc2MDdhYmExNDEwYzJhMTAzMGU0
MGUyZTA2OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00
Nyw3ICs0Nyw4IEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5v
ZGUqIHJvb3QpIGNvbnN0CiAgICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigp
OwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZl
cnNlTmV4dE5vZGUocm9vdCkpIHsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5v
ZGUtPnNldFRyZWVTY29wZShuZXdEb2N1bWVudCA9PSBtX25ld1Njb3BlID8gMCA6IG1fbmV3U2Nv
cGUpOworICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7CisgICAgICAgIE5v
ZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5oYXNSYXJlRGF0YSgpID8gbm9kZS0+cmFyZURh
dGEoKSA6IDA7CiAgICAgICAgIGlmIChyYXJlRGF0YSAmJiByYXJlRGF0YS0+bm9kZUxpc3RzKCkp
CiAgICAgICAgICAgICByYXJlRGF0YS0+bm9kZUxpc3RzKCktPmFkb3B0VHJlZVNjb3BlKG1fb2xk
U2NvcGUsIG1fbmV3U2NvcGUsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAKQEAgLTkxLDgg
KzkyLDYgQEAgaW5saW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3Vt
ZW50KE5vZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2MKICAgICBpZiAob2xkRG9jdW1lbnQpCiAg
ICAgICAgIG9sZERvY3VtZW50LT5tb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQobm9kZSwg
bmV3RG9jdW1lbnQpOwogCi0gICAgbm9kZS0+c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOwotCiAj
aWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7
CiAgICAgb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBvbGRE
b2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAKaW5kZXggNWEyMTQzYzYzZDQ1MDU1NWNlZjM5ODBiNzk0MzhmNDU5ZGNmYTEzNC4uNWJm
NTQ1NDEzMjNjMDc5ZWE3ZDZjMjdjZjg4MzA5Y2U5MGQzNzcyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb3ZlU2VsZWN0aW9uQ29tbWFuZC5oIgog
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAj
aW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAppbmRleCAxOTY1N2FjMGZjNzcyMTIyMzU4MzU3
NGJjNmJkMjA4MWQzZGM3Njk2Li44YmUyMDcwNjE0YzQ5NTMxMzhhM2M1OWYwNWY0NzViZWIzYmRi
NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZU5v
ZGVDb21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3Bw
CmluZGV4IDE0NTJmODgwM2ZhYmM1NzBhMjU0ZmE1YTJlOTZlNDBmMTRkZWE5YzUuLjI4MWZkYmRm
MzJiZDUwNTFjZGViZDI3NWZkZjA2OTQ1ZmFiZWVmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1h
bmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuaCIKIAorI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA2Y2ZhZmM1M2U5Mzc5Y2RlMjk4MTUwMzUzMjRmOWRl
MThmOWJmZGQxLi5iNmRlZDRiM2VkMjdlOTE5ZDg2Zjc1NjQ2NWI3ZWZlZGJlZTU1M2NhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCkBAIC0yNTUsNiArMjU1LDcgQEAgRVhQT1JUUwogICAgICAgICA/
dXRmOEBTdHJpbmdAV1RGQEBRQkU/QVZDU3RyaW5nQDJAX05AWgogICAgICAgICA/dmlld0BEb2N1
bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgogICAgICAgICA/d2lsbERldGFjaFBh
Z2VARnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgorICAgICAgICA/bnVs
bEluc3RhbmNlQFRyZWVTY29wZUBXZWJDb3JlQEBTQVBBVjEyQFhaCiAgICAgICAgID9ub2Rlc0Zy
b21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2Vi
Q29yZUBAQFdURkBASEhJSUlJX04wQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhI
QFoKICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50
QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRl
LmRlZgppbmRleCBiODcyODIwYzAyOTU1ODI0Y2I0YjY3ZDk1MDM2Y2Q1OTk3ZTUwNTdiLi44OGY4
MDNkMjk0ZTJiMzczMDI4ZGM2ZDk1YTM4NDFiMGQwYzFjODk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDJDRkxpdGUuZGVmCkBAIC0yNDksNiArMjQ5LDcgQEAgRVhQT1JUUwogICAgICAgICA/dmll
d0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgogICAgICAgICA/d2lsbERl
dGFjaFBhZ2VARnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAg
ICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5v
ZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMEBaCisgICAgICAgID9udWxsSW5zdGFuY2VA
VHJlZVNjb3BlQFdlYkNvcmVAQFNBUEFWMTJAWFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFz
TWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtl
ckAyQEhIQFoKICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1lbnRAV2ViQ29yZUBAUUFF
X05IQFoKICAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdlYkNvcmVAQFFCRV9OWFoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGYwY2E1YTNkMzlhYTYzODg5NTUwMGFkNjdmYTYw
MzNjYjQ5M2RlMDQuLjcwMTFiMzA5YmFiMDA3MzFkN2RlODM0ZWFkYTU1OTQ1OTc1YTU0M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTYzLDYgKzE2Myw3IEBAIF9aTjdXZWJDb3JlOERv
Y3VtZW50MzV3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRF
OwogX1pON1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0NnNfaW5mb0U7CiBfWk43V2ViQ29yZTdU
ZXh0UnVuMjJzZXRBbGxvd3NSb3VuZGluZ0hhY2tzRWI7CiBfWk5LN1dlYkNvcmUxNEluc2VydGlv
blBvaW50OGlzQWN0aXZlRXY7CitfWk43V2ViQ29yZTlUcmVlU2NvcGUxMm51bGxJbnN0YW5jZUV2
OwogbG9jYWw6CiBfWio7CiBjdGkqOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151583</attachid>
            <date>2012-07-10 20:31:15 -0700</date>
            <delta_ts>2012-07-10 21:00:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120711123114.patch</filename>
            <type>text/plain</type>
            <size>22844</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVmMjk2ZDA0MWI1MGU2
OTRjN2Q4ZjU4YTdkMDE5ZWMzM2NlZTc4Yy4uODQ5MGRhMzZkNzMxOWUzZWFlNDFhYjczOTc0MzBi
NGMzZWMyZmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA3LTA0ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRo
aXMgY2hhbmdlLCBOb2RlOjp0cmVlU2NvcGUoKSBmZXRjaGVzIHRoZSBUcmVlU2NvcGUgb2JqZWN0
CisgICAgICAgIGZyb20gRWxlbWVudFJhcmVEYXRhLiBUaGlzIGFwcHJvYWNoIGhhcyBzZXZlcmFs
IHNob3J0Y29taW5nczoKKworICAgICAgICAtIHJhcmVEYXRhKCkgY2FsbCBpcyBzbG93IGR1ZSB0
byBhIGhhc2h0YWJsZSBsb29rdXAuCisgICAgICAgIC0gSW4gc2hhZG93IHRyZWUsIGVhY2ggbm9k
ZSBoYXMgaXRzIHRyZWUgc2NvcGUgaW4gRWxlbWVudFJhcmVEYXRhLAorICAgICAgICAgIHRoYXQg
bWVhbnMgdGhlIHJhcmUtZGF0YSBpcyBubyBsb25nZXIgcmFyZSBpbiB0aGF0IGNhc2UuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZ2V0cyByaWQgb2YgRWxlbWVudFJhcmVEYXRhOjptX3RyZWVTY29w
ZSBieSByZXBsYWNpbmcKKyAgICAgICAgTm9kZTo6bV9kb2N1bWVudCB3aXRoIE5vZGU6Om1fdHJl
ZVNjb3BlLiBBbmQgcmV0cmlldmVzIHRoZQorICAgICAgICBkb2N1bWVudCBvZiBOb2RlIHRocm91
Z2ggbV90cmVlU2NvcGUuCisKKyAgICAgICAgTm90ZSB0aGF0IE5vZGU6OmRvY3VtZW50KCkgaXMg
YSBob3QgZnVuY3Rpb24gYW5kIG5haXZlCisgICAgICAgIHJlcGxhY2VtZW5udCBvZiBtX2RvY3Vt
ZW50IHdpdGggbV90cmVlU2NvcGUgY2FuIGh1cnQgdGhlCisgICAgICAgIHNwZWVkLiBUaGlzIGNo
YW5nZSBlbXBsb3lzIHNvbWUgdHJpY2tzIHRvIGFkZHJlc3MgaXQuCisKKyAgICAgICAgLSBUaGlz
IGNoYW5nZSBpbnRyb2R1Y2VzIE5vZGU6OkluU2hhZG93VHJlZSBmbGFnLCBpZiB0aGUgZmxhZyBp
cyBvZmYsCisgICAgICAgICAgdGhhdCBtZWFucyBtX3RyZWVTY29wZSBpcyBhY3R1YWxseSBhIGRv
Y3VtZW50IGFuIGNhbiBiZSByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LgorICAgICAgICAgIHRoaXMg
ZWxpbWluYXRlcyBhbiBleHRyYWN0IGRlcmVmZXJlbmNlLgorICAgICAgICAtIE5vZGU6Om1fdHJl
ZVNjb3BlIGNhbiBiZSBudWxsLiBCdXQgd2UgZG9uJ3Qgd2FudCB0byBpc3N1ZSBhbnkgZXh0cmEK
KyAgICAgICAgICBjb25kaXRpb25hbCBzdGF0ZW1lbnQuIFNvIHRoaXMgY2hhbmdlIHJlcHJlc2Vu
dHMgYSBudWxsCisgICAgICAgICAgVHJlZVNjb3BlIGFzIFRyZWVTY29wZTo6bnVsbEluc3RhbmNl
KCksIHdoaWNoIHNhdmVzIG9uZSBjb25kaXRpb25hbAorICAgICAgICAgIHN0YXRlbWVudC4KKwor
ICAgICAgICBXaXRoIHRoZXNlIGNoYW5nZXMsIHRoZSBOb2RlOjpkb2N1bWVudCgpIHNsb3dkb3du
IGlzIG1pbmltaXplZCB0bworICAgICAgICB1bm5vdGljZWFibGUgc2l6ZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOiBUb29rIGNhcmUgb2YgY29ubmVjdGlvIGJldHdlbiBUcmVlU2NvcGUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dHJlZVNjb3BlKTogTm93IGp1c3QgcmV0dXJuIG1fdHJlZVNjb3BlLCB0YWtpbmcg
Y2FyZSBvZiBudWxsSW5zdGFuY2UoKSBjYXNlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOiBOb3cganVzdCBzZXRzIG1fdHJlZVNjb3Bl
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnRJbnRlcm5hbCk6IEV4dHJhY3RlZCBm
cm9tIGRvY3VtZW50KCkgdG8gaGF2ZSBBU1NFUlQtZnJlZSB2ZXJzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZG9jdW1lbnQpOiBSZS1pbXBsZW1lbnRlZCBvdmVyIHRyZWVTY29wZSgpIGFu
ZCB0aGUgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKTogUmUt
aW1wbGVtZW50ZWQgdXNpbmcgdHJlZVNjb3BlKCkKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
SW5TaGFkb3dUcmVlKTogTW92ZWQgZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Tm9kZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmluRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKTogRWxpbWluYXRlZCBtX3Ry
ZWVTY29wZS4KKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jv
b3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRy
ZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6c2V0UGFyZW50VHJlZVNjb3BlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OmlzRG9jdW1lbnRTY29wZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjpudWxsSW5zdGFuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6IEFkZGVk
IG1fcGFyZW50VHJlZVNjb3BlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmVlU2NvcGU6OnJvb3REb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAoVHJlZVNjb3BlKToK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6IE5vIGxvbmdlciBjYWxscyBzZXRE
b2N1bWVudCgpCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRv
TmV3U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVU
b05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNw
cDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAg
ICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQu
aCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0
byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKwogMjAxMi0wNy0xMCAgUHJhdmluIEQgIDxw
cmF2aW5kLjJrNEBnbWFpbC5jb20+CiAKICAgICAgICAgUmUtZmFjdG9yaW5nIHJlY2FsY0NvbHVt
biBpbiBBdXRvVGFibGVMYXlvdXQuY3BwIGZvciByZWFkYWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCAyZmE3ZDVjZjczMDY0NWVhMzYxMTViNzBlN2VkNThmZGRiZTZhMDQwLi43N2QyZjEx
OWFmNTEyMzI3OGQzZmVmZjgxOTRjMjZjYmUzNzY0MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtMTAyNCw2ICsxMDI0LDcgQEAgX19aTjdXZWJDb3JlOVRpbWVyQmFzZTRzdG9wRXYKIF9fWk43
V2ViQ29yZTlUaW1lckJhc2U1c3RhcnRFZGQKIF9fWk43V2ViQ29yZTlUaW1lckJhc2VDMkV2CiBf
X1pON1dlYkNvcmU5VGltZXJCYXNlRDJFdgorX19aTjdXZWJDb3JlOVRyZWVTY29wZTEybnVsbElu
c3RhbmNlRXYKIF9fWk43V2ViQ29yZTljbG9zZUZpbGVFUmkKIF9fWk43V2ViQ29yZTllbmRPZldv
cmRFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU185RVdvcmRTaWRlRQogX19aTjdXZWJDb3JlOWZv
bnRDYWNoZUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiYzVlYWJiZGE2MWI4ZTgyYWEy
ZjQxNDE4OTE1MzMyNzJjYmRlZjNhLi4zMDBmMTg5N2E2MzdkMzcwZmM3NjIyMTBmYTQ2NmY5NzM0
MGY3MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQyMCw3ICs0MjAsNyBAQCB1aW50
NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKIERvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlz
SFRNTCkKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9jdW1lbnQpCi0gICAgLCBUcmVl
U2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCB0aGlzKQogICAgICwgbV9ndWFyZFJl
ZkNvdW50KDApCiAgICAgLCBtX2NvbnRleHRGZWF0dXJlcyhDb250ZXh0RmVhdHVyZXM6OmRlZmF1
bHRTd2l0Y2goKSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUoTm9RdWlya3NNb2RlKQpAQCAt
NDkyLDcgKzQ5Miw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fZGlkRGlzcGF0Y2hW
aWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlmCiB7Ci0gICAgbV9kb2N1bWVu
dCA9IHRoaXM7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogCiAgICAgbV9wYWdlR3JvdXBVc2Vy
U2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7CiAKQEAgLTY0OCw3ICs2NDgsNyBAQCBEb2N1bWVudDo6
fkRvY3VtZW50KCkKICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgY2xlYXJSYXJlRGF0
YSgpOwogCi0gICAgbV9kb2N1bWVudCA9IDA7CisgICAgc2V0VHJlZVNjb3BlKDApOwogCiAgICAg
SW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6OkRv
Y3VtZW50Q291bnRlcik7CiB9CkBAIC0xMzQxLDEzICsxMzQxLDE0IEBAIHZvaWQgRG9jdW1lbnQ6
OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6OnN1
Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERv
Y3VtZW50KCkpCisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRvYy0+
aXNYSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0bWwreG1s
IjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChkb2MtPmlz
U1ZHRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIjsKLSAgICBpZiAo
bV9kb2N1bWVudC0+eG1sU3RhbmRhbG9uZSgpKQorICAgIGlmIChkb2MtPnhtbFN0YW5kYWxvbmUo
KSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRN
TERvY3VtZW50KCkpCisgICAgaWYgKGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IGxvYWRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4N2RmYTMyYzI4NWUwZDhiMDk5
NzMwMmUyNDViN2ZiMzg1OGZhZjUyLi5jZWQzZGQxYzc4YmU5ODhiMGMyOWRlNDE3ZjI5MWNiMTFm
MzdiNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTUyMywyMCArMTUyMyw1MyBAQCBwcml2
YXRlOgogCiAvLyBQdXQgdGhlc2UgbWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0
aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVt
LgogCitpbmxpbmUgVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3RyZWVTY29wZSA9PSBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpID8gMCA6IG1fdHJl
ZVNjb3BlOworfQorCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBz
Y29wZSkKK3sKKyAgICBtX3RyZWVTY29wZSA9IHNjb3BlID8gc2NvcGUgOiBUcmVlU2NvcGU6Om51
bGxJbnN0YW5jZSgpOworICAgIHNldEZsYWcoIW1fdHJlZVNjb3BlLT5pc0RvY3VtZW50U2NvcGUo
KSwgSW5TaGFkb3dUcmVlKTsKK30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVudElu
dGVybmFsKCkgY29uc3QKK3sKKyAgICBpZiAoZ2V0RmxhZyhJblNoYWRvd1RyZWUpKQorICAgICAg
ICByZXR1cm4gbV90cmVlU2NvcGUtPnJvb3REb2N1bWVudCgpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG1fdHJlZVNjb3BlKTsKK30KKworaW5saW5lIERvY3VtZW50KiBOb2Rl
Ojpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRJ
bnRlcm5hbCgpOworICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQgcHJl
dmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVj
dG9yCisgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5cGUo
KS4KKyAgICBBU1NFUlQoZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9O
T0RFICYmICFpbkRvY3VtZW50KCkpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQ7Cit9CisKIGlubGlu
ZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhpcyA9
PSBtX2RvY3VtZW50OworICAgIHJldHVybiB0aGlzID09IGRvY3VtZW50SW50ZXJuYWwoKTsKK30K
KworaW5saW5lIGJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUoKSBjb25zdAoreworICAgIHJldHVy
biB0cmVlU2NvcGUoKSAhPSBkb2N1bWVudCgpOwogfQogCiBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1
bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZsYWdz
KHR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2NvcGUoMCkK
ICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9yZW5kZXJlcigw
KQogewogICAgIGlmIChkb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnQtPmd1YXJkUmVmKCk7Cisg
ICAgc2V0VHJlZVNjb3BlKGRvY3VtZW50KTsKICNpZiAhZGVmaW5lZChOREVCVUcpIHx8IChkZWZp
bmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUykKICAgICB0
cmFja0ZvckRlYnVnZ2luZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMDk1MGNkOTMz
ZjYxZDUwMTBiOTdmMTE2NmMyODEzYWJkMDkwZTM2My4uMWIxZmUwZDdkNDhhNGVhMGYzMWY1NmEx
OWI1NWFiZWE2ZDA0MzY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDA1LDcgKzQwNSw3IEBAIE5v
ZGU6On5Ob2RlKCkKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgZGV0YWNoKCk7CiAKLSAg
ICBEb2N1bWVudCogZG9jID0gbV9kb2N1bWVudDsKKyAgICBEb2N1bWVudCogZG9jID0gZG9jdW1l
bnRJbnRlcm5hbCgpOwogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxl
ZCgpICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSkKICAgICAgICAgZG9jLT5h
eE9iamVjdENhY2hlKCktPnJlbW92ZU5vZGVGb3JVc2UodGhpcyk7CiAgICAgCkBAIC00MjAsNDEg
KzQyMCw2IEBAIE5vZGU6On5Ob2RlKCkKICAgICBJbnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50
Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6Tm9kZUNvdW50ZXIpOwogfQogCi12b2lkIE5vZGU6
OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBBU1NFUlQoIWluRG9jdW1l
bnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KTsKLSAgICBpZiAoaW5Eb2N1bWVudCgpIHx8
IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZG9jdW1l
bnQgPSBkb2N1bWVudDsKLX0KLQotTm9kZVJhcmVEYXRhKiBOb2RlOjpzZXRUcmVlU2NvcGUoVHJl
ZVNjb3BlKiBzY29wZSkKLXsKLSAgICBpZiAoIXNjb3BlKSB7Ci0gICAgICAgIGlmIChoYXNSYXJl
RGF0YSgpKSB7Ci0gICAgICAgICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSByYXJlRGF0YSgpOwot
ICAgICAgICAgICAgZGF0YS0+c2V0VHJlZVNjb3BlKDApOwotICAgICAgICAgICAgcmV0dXJuIGRh
dGE7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBOb2RlUmFy
ZURhdGEqIGRhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOwotICAgIGRhdGEtPnNldFRyZWVTY29wZShz
Y29wZSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLVRyZWVTY29wZSogTm9kZTo6dHJlZVNjb3Bl
KCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVXNpbmcgbV9kb2N1bWVudCBkaXJlY3RseSBpcyBu
b3QgZ29vZCAtPiBzZWUgY29tbWVudCB3aXRoIGRvY3VtZW50KCkgaW4gdGhlIGhlYWRlciBmaWxl
LgotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7Ci0g
ICAgVHJlZVNjb3BlKiBzY29wZSA9IHJhcmVEYXRhKCktPnRyZWVTY29wZSgpOwotICAgIHJldHVy
biBzY29wZSA/IHNjb3BlIDogbV9kb2N1bWVudDsKLX0KLQogTm9kZVJhcmVEYXRhKiBOb2RlOjpy
YXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwpAQCAtMTQ3Nywx
MSArMTQ0Miw2IEBAIENvbnRhaW5lck5vZGUqIE5vZGU6Om5vblNoYWRvd0JvdW5kYXJ5UGFyZW50
Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFyZW50LT5pc1NoYWRvd1Jvb3Qo
KSA/IHBhcmVudCA6IDA7CiB9CiAKLWJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUoKSBjb25zdAot
ewotICAgIHJldHVybiB0cmVlU2NvcGUoKSAhPSBkb2N1bWVudCgpOwotfQotCiBFbGVtZW50KiBO
b2RlOjpwYXJlbnRPckhvc3RFbGVtZW50KCkgY29uc3QKIHsKICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBwYXJlbnRPckhvc3ROb2RlKCk7CkBAIC0yODE2LDcgKzI3NzYsNyBAQCB2b2lkIE5v
ZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkRPTSk7CiAgICAgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJO
b2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgU2NyaXB0V3Jh
cHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBtZW1vcnlP
YmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fZG9jdW1lbnQsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6RE9NKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKGRvY3VtZW50KCks
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fbmV4dCk7CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVw
b3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3ByZXZpb3VzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDkz
YTY2ZDllYzhhNWIyNjM1MTVkNWZjMjU2NmQyYTVlOWZkZWJlZjIuLjFhMDMzZGMwYzY2ODBlOGM2
ZTI1NWRiMTM3ZGFlMTQxNGQ3ODg3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDA3LDE0ICs0MDcsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkb2N1bWVudCBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBub2RlLiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBpbiB0aGUg
Y2FzZSAKICAgICAvLyBvZiBhIERvY3VtZW50VHlwZSBub2RlIHRoYXQgaXMgbm90IHVzZWQgd2l0
aCBhbnkgRG9jdW1lbnQgeWV0LiBBIERvY3VtZW50IG5vZGUgcmV0dXJucyBpdHNlbGYuCi0gICAg
RG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0aGlzKTsK
LSAgICAgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0
aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKLSAg
ICAgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5cGUoKS4K
LSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQ
RV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7Ci0g
ICAgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgVHJlZVNjb3BlKiB0
cmVlU2NvcGUoKSBjb25zdDsKIApAQCAtNDIyLDcgKzQxNSw3IEBAIHB1YmxpYzoKICAgICAvLyBu
b2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGluRG9jdW1lbnQoKSBjb25zdCAK
ICAgICB7IAotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50
RmxhZykpOworICAgICAgICBBU1NFUlQodHJlZVNjb3BlKCkgfHwgIWdldEZsYWcoSW5Eb2N1bWVu
dEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVudEZsYWcpOwogICAgIH0K
IApAQCAtNjkzLDEwICs2ODYsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICBJbk5hbWVk
Rmxvd0ZsYWcgPSAxIDw8IDI2LAogICAgICAgICBIYXNBdHRyTGlzdEZsYWcgPSAxIDw8IDI3LAot
ICAgICAgICBIYXNDdXN0b21DYWxsYmFja3NGbGFnID0gMSA8PCAyOAorICAgICAgICBIYXNDdXN0
b21DYWxsYmFja3NGbGFnID0gMSA8PCAyOCwKKyAgICAgICAgSW5TaGFkb3dUcmVlID0gMSA8PCAy
OQorCiAgICAgfTsKIAotICAgIC8vIDQgYml0cyByZW1haW5pbmcKKyAgICAvLyAzIGJpdHMgcmVt
YWluaW5nCiAKICAgICBib29sIGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJu
IG1fbm9kZUZsYWdzICYgbWFzazsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFn
cyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0o
aW50MzJfdClmICYgbWFzayk7IH0gCkBAIC03MzIsMTYgKzcyNywxNCBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2b2lkIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0
b21DYWxsYmFja3NGbGFnKTsgfQogCisgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50SW50ZXJuYWwoKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsKIAogICAgIHZv
aWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUgb25seSB1
c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgotICAgIC8vIHNldFRyZWVTY29wZSgpIHJl
dHVybnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52b2NhdGlv
bnMgb24gdGhlIGNhbGxlciBzaXRlLgotICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNjb3BlKFRy
ZWVTY29wZSopOwotICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKLQogICAgIGVudW0g
RWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAgIGJvb2wgcmVu
ZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwpIGNvbnN0OwogICAgIGJvb2wgaXNFZGl0YWJs
ZVRvQWNjZXNzaWJpbGl0eShFZGl0YWJsZUxldmVsKSBjb25zdDsKQEAgLTc4NCw3ICs3NzcsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwot
ICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAg
ICAgTm9kZSogbV9wcmV2aW91czsKICAgICBOb2RlKiBtX25leHQ7CiAgICAgUmVuZGVyT2JqZWN0
KiBtX3JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDVjMDNkOGIzODE4
MjBlOWVjY2MzMjA0OTQyMDZlYTVlYTA3MzExZjcuLjk1MTIzYjkwOWE0NGE5M2Q0ZjExMDQ5ZGNm
YmQ1ZWQ1ZGU3M2JhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE4MCw4ICsx
ODAsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5v
ZGVSYXJlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKICAgICBO
b2RlUmFyZURhdGEoKQotICAgICAgICA6IG1fdHJlZVNjb3BlKDApCi0gICAgICAgICwgbV9jaGls
ZE5vZGVMaXN0KDApCisgICAgICAgIDogbV9jaGlsZE5vZGVMaXN0KDApCiAgICAgICAgICwgbV90
YWJJbmRleCgwKQogICAgICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQog
ICAgICAgICAsIG1faXNGb2N1c2VkKGZhbHNlKQpAQCAtMjA5LDkgKzIwOCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KG5vZGUpOwogICAgIH0KIAotICAgIFRy
ZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7IH0KLSAgICB2
b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRyZWVTY29wZSkgeyBtX3RyZWVTY29wZSA9IHRy
ZWVTY29wZTsgfQotICAgIAogICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3Rz
LmNsZWFyKCk7IH0KICAgICB2b2lkIHNldE5vZGVMaXN0cyhQYXNzT3duUHRyPE5vZGVMaXN0c05v
ZGVEYXRhPiBsaXN0cykgeyBtX25vZGVMaXN0cyA9IGxpc3RzOyB9CiAgICAgTm9kZUxpc3RzTm9k
ZURhdGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUxpc3RzLmdldCgpOyB9CkBA
IC0zNDIsNyArMzM4LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZU5v
ZGVMaXN0cyhOb2RlKik7CiAKLSAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE93blB0
cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAgICAgQ2hpbGROb2RlTGlzdCogbV9j
aGlsZE5vZGVMaXN0OwogICAgIE93blB0cjxFdmVudFRhcmdldERhdGE+IG1fZXZlbnRUYXJnZXRE
YXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDJjNTc1NjBiZjI2ZjMyNzcyMjNj
NDhiZTQ5NTc0ZGU0NGZkNzIwNWUuLjdjODJmNDVhYmFjYzU0YzYzMDIxNTJhMDY0MjAxNmM2NTdi
ZTMwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3Qp
Ci0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCBkb2N1bWVudCkK
ICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX2FwcGx5QXV0aG9yU3R5
bGVzKGZhbHNlKQpAQCAtNTUsMTEgKzU1LDkgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1
bWVudCogZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAKLSAgICAvLyBB
c3N1bWUgZG9jdW1lbnQgYXMgcGFyZW50IHNjb3BlLgotICAgIHNldFBhcmVudFRyZWVTY29wZShk
b2N1bWVudCk7CiAgICAgLy8gU2hhZG93IHRyZWUgc2NvcGVzIGhhdmUgdGhlIHNjb3BlIHBvaW50
ZXIgcG9pbnQgdG8gdGhlbXNlbHZlcy4KICAgICAvLyBUaGlzIHdheSwgZGlyZWN0IGNoaWxkcmVu
IHdpbGwgcmVjZWl2ZSB0aGUgY29ycmVjdCBzY29wZSBwb2ludGVyLgotICAgIGVuc3VyZVJhcmVE
YXRhKCktPnNldFRyZWVTY29wZSh0aGlzKTsKKyAgICBzZXRUcmVlU2NvcGUodGhpcyk7CiB9CiAK
IFNoYWRvd1Jvb3Q6On5TaGFkb3dSb290KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXgg
NTY0MmZjZjhkZDMzZmJjMWZiZjIwM2JkZGIxZmI4YmUyNTM3YWVmYi4uN2UxYjI2OTdiZTVlZjg5
ZDJiMGUwN2M3ZjA2MDhlZTBjODgyZjgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAg
LTUxLDE0ICs1MSwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLVRyZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2Rl
KQorVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSogcm9vdE5vZGUsIERvY3VtZW50
KiByb290RG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKHJvb3ROb2RlKQotICAgICwgbV9wYXJl
bnRUcmVlU2NvcGUoMCkKKyAgICAsIG1fcm9vdERvY3VtZW50KHJvb3REb2N1bWVudCkKKyAgICAs
IG1fcGFyZW50VHJlZVNjb3BlKHJvb3ROb2RlID09IHJvb3REb2N1bWVudCA/IDAgOiByb290RG9j
dW1lbnQpCiAgICAgLCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCiB7CiAgICAgQVNTRVJUKHJvb3RO
b2RlKTsKIH0KIAorVHJlZVNjb3BlOjpUcmVlU2NvcGUoKQorICAgIDogbV9yb290Tm9kZSgwKQor
ICAgICwgbV9yb290RG9jdW1lbnQoMCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAg
LCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCit7Cit9CisKKwogVHJlZVNjb3BlOjp+VHJlZVNjb3Bl
KCkKIHsKICAgICBpZiAobV9zZWxlY3Rpb24pIHsKQEAgLTgxLDYgKzkxLDcgQEAgdm9pZCBUcmVl
U2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogICAg
IEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1Bh
cmVudFNjb3BlOworICAgIG1fcm9vdERvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPnJvb3REb2N1
bWVudCgpOwogfQogCiBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0
b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdApAQCAtMjQ1LDYgKzI1NiwxMSBAQCBOb2RlKiBU
cmVlU2NvcGU6OmZvY3VzZWROb2RlKCkKICAgICByZXR1cm4gMDsKIH0KIAorYm9vbCBUcmVlU2Nv
cGU6OmlzRG9jdW1lbnRTY29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRoaXMgPT0gbV9yb290
RG9jdW1lbnQ7Cit9CisKIHN0YXRpYyB2b2lkIGxpc3RUcmVlU2NvcGVzKE5vZGUqIG5vZGUsIFZl
Y3RvcjxUcmVlU2NvcGUqLCA1PiYgdHJlZVNjb3BlcykKIHsKICAgICB3aGlsZSAodHJ1ZSkgewpA
QCAtMjc4LDUgKzI5NCwxMSBAQCBUcmVlU2NvcGUqIGNvbW1vblRyZWVTY29wZShOb2RlKiBub2Rl
QSwgTm9kZSogbm9kZUIpCiAgICAgcmV0dXJuIHRyZWVTY29wZXNBW2luZGV4QV0gPT0gdHJlZVNj
b3Blc0JbaW5kZXhCXSA/IHRyZWVTY29wZXNBW2luZGV4QV0gOiAwOwogfQogCitUcmVlU2NvcGUq
IFRyZWVTY29wZTo6bnVsbEluc3RhbmNlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRy
ZWVTY29wZSwgaW5zdGFuY2UsICgpKTsKKyAgICByZXR1cm4gJmluc3RhbmNlOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAppbmRleCA1ZWNjMDM5MmYz
NzE3MGJlZTMwNTM5OTIxNDI0OTdjZmFiN2FjYjBiLi4yNTA2ZDU0ZDNkNzcyNWUyNzkwZGFjYWYw
OGNmZjc3NTJmYmY5YzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCkBAIC0zNCw2ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVNl
bGVjdGlvbjsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBF
bGVtZW50OwogY2xhc3MgTm9kZTsKQEAgLTgxLDE1ICs4MiwyMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZG9wdElmTmVlZGVkKE5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290Tm9kZTsgfQorICAgIERvY3VtZW50KiByb290RG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3REb2N1bWVudDsgfQorICAgIGJvb2wgaXNEb2N1bWVudFNj
b3BlKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgVHJlZVNjb3BlKiBudWxsSW5zdGFuY2UoKTsKIAog
cHJvdGVjdGVkOgotICAgIFRyZWVTY29wZShDb250YWluZXJOb2RlKik7CisgICAgVHJlZVNjb3Bl
KENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwog
CiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCiBwcml2YXRlOgorICAgIFRyZWVT
Y29wZSgpOworCiAgICAgQ29udGFpbmVyTm9kZSogbV9yb290Tm9kZTsKKyAgICBEb2N1bWVudCog
bV9yb290RG9jdW1lbnQ7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29wZTsKIAogICAg
IERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGVBZG9wdGVyLmNwcAppbmRleCA4OGUxYTZmZDVkZTEzZWRmN2Y3MDM5MmFhYWE5MTJhZGZk
NmZlNzI3Li5kMzI0ZjM0Y2YyMDc2MDdhYmExNDEwYzJhMTAzMGU0MGUyZTA2OGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00Nyw3ICs0Nyw4IEBAIHZvaWQg
VHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAg
ICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgZm9yIChOb2Rl
KiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkp
IHsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnNldFRyZWVTY29wZShu
ZXdEb2N1bWVudCA9PSBtX25ld1Njb3BlID8gMCA6IG1fbmV3U2NvcGUpOworICAgICAgICBub2Rl
LT5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7CisgICAgICAgIE5vZGVSYXJlRGF0YSogcmFyZURh
dGEgPSBub2RlLT5oYXNSYXJlRGF0YSgpID8gbm9kZS0+cmFyZURhdGEoKSA6IDA7CiAgICAgICAg
IGlmIChyYXJlRGF0YSAmJiByYXJlRGF0YS0+bm9kZUxpc3RzKCkpCiAgICAgICAgICAgICByYXJl
RGF0YS0+bm9kZUxpc3RzKCktPmFkb3B0VHJlZVNjb3BlKG1fb2xkU2NvcGUsIG1fbmV3U2NvcGUs
IG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAKQEAgLTkxLDggKzkyLDYgQEAgaW5saW5lIHZv
aWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUqIG5vZGUsIERv
Y3VtZW50KiBvbGREb2MKICAgICBpZiAob2xkRG9jdW1lbnQpCiAgICAgICAgIG9sZERvY3VtZW50
LT5tb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQobm9kZSwgbmV3RG9jdW1lbnQpOwogCi0g
ICAgbm9kZS0+c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOwotCiAjaWZuZGVmIE5ERUJVRwogICAg
IGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgb2xkRG9jdW1lbnRE
aWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBvbGREb2N1bWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNWEyMTQz
YzYzZDQ1MDU1NWNlZjM5ODBiNzk0MzhmNDU5ZGNmYTEzNC4uNWJmNTQ1NDEzMjNjMDc5ZWE3ZDZj
MjdjZjg4MzA5Y2U5MGQzNzcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
b3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3Zl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJNb3ZlU2VsZWN0aW9uQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW1vdmVOb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVD
b21tYW5kLmNwcAppbmRleCAxOTY1N2FjMGZjNzcyMTIyMzU4MzU3NGJjNmJkMjA4MWQzZGM3Njk2
Li44YmUyMDcwNjE0YzQ5NTMxMzhhM2M1OWYwNWY0NzViZWIzYmRiNDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZU5vZGVDb21tYW5kLmgiCiAKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5v
ZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IDE0NTJmODgwM2Zh
YmM1NzBhMjU0ZmE1YTJlOTZlNDBmMTRkZWE5YzUuLjI4MWZkYmRmMzJiZDUwNTFjZGViZDI3NWZk
ZjA2OTQ1ZmFiZWVmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZVByZXNlcnZp
bmdDaGlsZHJlbkNvbW1hbmQuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgppbmRleCA4NjRmNmVjNTkwMTQwNDFiMzEwOGI0MmI4NjFiYWM2YThkZDNmY2ZkLi45YTAzNzVk
ZjUzNjVlOThjMzhlZTNmYjNkYzFjZjBmZTNkNDViMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CkBAIC0yNTUsNiArMjU1LDcgQEAgRVhQT1JUUwogICAgICAgICA/dXRmOEBTdHJpbmdAV1RGQEBR
QkU/QVZDU3RyaW5nQDJAX05AWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQ
QVZGcmFtZVZpZXdAMkBYWgogICAgICAgICA/d2lsbERldGFjaFBhZ2VARnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgorICAgICAgICA/bnVsbEluc3RhbmNlQFRyZWVTY29w
ZUBXZWJDb3JlQEBTQVBBVjEyQFhaCiAgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdl
YkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJ
X04wQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3Jl
QEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP3dlYmtp
dFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZF
bGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRl
LmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCBkZmNiY2Rk
MDM0YjBiYmY5NjVmYzZhMmFjOTE1YjhhY2RlN2E1MWI0Li4xMTY0ZWZhNzAyMmIyZGZlNDczZjdk
MjE0M2M3NDBkZWY1MDE1NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBA
IC0yNDksNiArMjQ5LDcgQEAgRVhQT1JUUwogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3Jl
QEBRQkVQQVZGcmFtZVZpZXdAMkBYWgogICAgICAgICA/d2lsbERldGFjaFBhZ2VARnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/bm9kZXNGcm9tUmVjdEBE
b2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBX
VEZAQEhISUlJSV9OMEBaCisgICAgICAgID9udWxsSW5zdGFuY2VAVHJlZVNjb3BlQFdlYkNvcmVA
QFNBUEFWMTJAWFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBX
ZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAg
P3Jlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlQFdlYkNv
cmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRlc0AxQEBaCiAgICAgICAgID9yZXN0cmljdE1pbmlt
dW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplQFdlYkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmli
dXRlc0AxQFZJbnRTaXplQDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGE2MDcyMWE2
NDQwMWY1MGNjZjZhMzMyMDc3NmU0NmRjMzM5YzgzNjEuLmQyZGQ3ZWJkNzcxM2NlY2M2MTdiMTM4
YmEwMDkwMDdiNDdlYTg4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTY3LDYgKzE2
Nyw3IEBAIF9aTjdXZWJDb3JlOERvY3VtZW50MzV3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudEVQTlNfN0VsZW1lbnRFOwogX1pON1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0NnNf
aW5mb0U7CiBfWk43V2ViQ29yZTdUZXh0UnVuMjJzZXRBbGxvd3NSb3VuZGluZ0hhY2tzRWI7CiBf
Wk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXY7CitfWk43V2ViQ29yZTlUcmVl
U2NvcGUxMm51bGxJbnN0YW5jZUV2OwogbG9jYWw6CiBfWio7CiBjdGkqOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151585</attachid>
            <date>2012-07-10 21:00:20 -0700</date>
            <delta_ts>2012-07-10 21:52:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120711130019.patch</filename>
            <type>text/plain</type>
            <size>23414</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVmMjk2ZDA0MWI1MGU2
OTRjN2Q4ZjU4YTdkMDE5ZWMzM2NlZTc4Yy4uZTAyMjg2ZTBkYzliZGRjMTkxNDExNjkxZWNjZmQ3
OWNkYzdmODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA3LTA0ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRo
aXMgY2hhbmdlLCBOb2RlOjp0cmVlU2NvcGUoKSBmZXRjaGVzIHRoZSBUcmVlU2NvcGUgb2JqZWN0
CisgICAgICAgIGZyb20gRWxlbWVudFJhcmVEYXRhLiBUaGlzIGFwcHJvYWNoIGhhcyBzZXZlcmFs
IHNob3J0Y29taW5nczoKKworICAgICAgICAtIHJhcmVEYXRhKCkgY2FsbCBpcyBzbG93IGR1ZSB0
byBhIGhhc2h0YWJsZSBsb29rdXAuCisgICAgICAgIC0gSW4gc2hhZG93IHRyZWUsIGVhY2ggbm9k
ZSBoYXMgaXRzIHRyZWUgc2NvcGUgaW4gRWxlbWVudFJhcmVEYXRhLAorICAgICAgICAgIHRoYXQg
bWVhbnMgdGhlIHJhcmUtZGF0YSBpcyBubyBsb25nZXIgcmFyZSBpbiB0aGF0IGNhc2UuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZ2V0cyByaWQgb2YgRWxlbWVudFJhcmVEYXRhOjptX3RyZWVTY29w
ZSBieSByZXBsYWNpbmcKKyAgICAgICAgTm9kZTo6bV9kb2N1bWVudCB3aXRoIE5vZGU6Om1fdHJl
ZVNjb3BlLiBBbmQgcmV0cmlldmVzIHRoZQorICAgICAgICBkb2N1bWVudCBvZiBOb2RlIHRocm91
Z2ggbV90cmVlU2NvcGUuCisKKyAgICAgICAgTm90ZSB0aGF0IE5vZGU6OmRvY3VtZW50KCkgaXMg
YSBob3QgZnVuY3Rpb24gYW5kIG5haXZlCisgICAgICAgIHJlcGxhY2VtZW5udCBvZiBtX2RvY3Vt
ZW50IHdpdGggbV90cmVlU2NvcGUgY2FuIGh1cnQgdGhlCisgICAgICAgIHNwZWVkLiBUaGlzIGNo
YW5nZSBlbXBsb3lzIHNvbWUgdHJpY2tzIHRvIGFkZHJlc3MgaXQuCisKKyAgICAgICAgLSBUaGlz
IGNoYW5nZSBpbnRyb2R1Y2VzIE5vZGU6OkluU2hhZG93VHJlZSBmbGFnLCBpZiB0aGUgZmxhZyBp
cyBvZmYsCisgICAgICAgICAgdGhhdCBtZWFucyBtX3RyZWVTY29wZSBpcyBhY3R1YWxseSBhIGRv
Y3VtZW50IGFuIGNhbiBiZSByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LgorICAgICAgICAgIHRoaXMg
ZWxpbWluYXRlcyBhbiBleHRyYWN0IGRlcmVmZXJlbmNlLgorICAgICAgICAtIE5vZGU6Om1fdHJl
ZVNjb3BlIGNhbiBiZSBudWxsLiBCdXQgd2UgZG9uJ3Qgd2FudCB0byBpc3N1ZSBhbnkgZXh0cmEK
KyAgICAgICAgICBjb25kaXRpb25hbCBzdGF0ZW1lbnQuIFNvIHRoaXMgY2hhbmdlIHJlcHJlc2Vu
dHMgYSBudWxsCisgICAgICAgICAgVHJlZVNjb3BlIGFzIFRyZWVTY29wZTo6bnVsbEluc3RhbmNl
KCksIHdoaWNoIHNhdmVzIG9uZSBjb25kaXRpb25hbAorICAgICAgICAgIHN0YXRlbWVudC4KKwor
ICAgICAgICBXaXRoIHRoZXNlIGNoYW5nZXMsIHRoZSBOb2RlOjpkb2N1bWVudCgpIHNsb3dkb3du
IGlzIG1pbmltaXplZCB0bworICAgICAgICB1bm5vdGljZWFibGUgc2l6ZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOiBUb29rIGNhcmUgb2YgY29ubmVjdGlvIGJldHdlbiBUcmVlU2NvcGUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dHJlZVNjb3BlKTogTm93IGp1c3QgcmV0dXJuIG1fdHJlZVNjb3BlLCB0YWtpbmcg
Y2FyZSBvZiBudWxsSW5zdGFuY2UoKSBjYXNlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOiBOb3cganVzdCBzZXRzIG1fdHJlZVNjb3Bl
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnRJbnRlcm5hbCk6IEV4dHJhY3RlZCBm
cm9tIGRvY3VtZW50KCkgdG8gaGF2ZSBBU1NFUlQtZnJlZSB2ZXJzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZG9jdW1lbnQpOiBSZS1pbXBsZW1lbnRlZCBvdmVyIHRyZWVTY29wZSgpIGFu
ZCB0aGUgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKTogUmUt
aW1wbGVtZW50ZWQgdXNpbmcgdHJlZVNjb3BlKCkKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
SW5TaGFkb3dUcmVlKTogTW92ZWQgZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Tm9kZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmluRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKTogRWxpbWluYXRlZCBtX3Ry
ZWVTY29wZS4KKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jv
b3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRy
ZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6c2V0UGFyZW50VHJlZVNjb3BlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OmlzRG9jdW1lbnRTY29wZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjpudWxsSW5zdGFuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6IEFkZGVk
IG1fcGFyZW50VHJlZVNjb3BlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmVlU2NvcGU6OnJvb3REb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAoVHJlZVNjb3BlKToK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6IE5vIGxvbmdlciBjYWxscyBzZXRE
b2N1bWVudCgpCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRv
TmV3U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVU
b05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNw
cDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAg
ICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQu
aCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0
byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5jcHA6IEluY2x1ZGVzIERvY3VtZW50LmggdG8gZmluZCBpbmxpbmVkIE5vZGUg
ZnVuY3Rpb25zCisKIDIwMTItMDctMTAgIFByYXZpbiBEICA8cHJhdmluZC4yazRAZ21haWwuY29t
PgogCiAgICAgICAgIFJlLWZhY3RvcmluZyByZWNhbGNDb2x1bW4gaW4gQXV0b1RhYmxlTGF5b3V0
LmNwcCBmb3IgcmVhZGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmZhN2Q1Y2Y3MzA2
NDVlYTM2MTE1YjcwZTdlZDU4ZmRkYmU2YTA0MC4uNzdkMmYxMTlhZjUxMjMyNzhkM2ZlZmY4MTk0
YzI2Y2JlMzc2NDMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEwMjQsNiArMTAyNCw3IEBA
IF9fWk43V2ViQ29yZTlUaW1lckJhc2U0c3RvcEV2CiBfX1pON1dlYkNvcmU5VGltZXJCYXNlNXN0
YXJ0RWRkCiBfX1pON1dlYkNvcmU5VGltZXJCYXNlQzJFdgogX19aTjdXZWJDb3JlOVRpbWVyQmFz
ZUQyRXYKK19fWk43V2ViQ29yZTlUcmVlU2NvcGUxMm51bGxJbnN0YW5jZUV2CiBfX1pON1dlYkNv
cmU5Y2xvc2VGaWxlRVJpCiBfX1pON1dlYkNvcmU5ZW5kT2ZXb3JkRVJLTlNfMTVWaXNpYmxlUG9z
aXRpb25FTlNfOUVXb3JkU2lkZUUKIF9fWk43V2ViQ29yZTlmb250Q2FjaGVFdgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYmM1ZWFiYmRhNjFiOGU4MmFhMmY0MTQxODkxNTMzMjcyY2JkZWYz
YS4uMzAwZjE4OTdhNjM3ZDM3MGZjNzYyMjEwZmE0NjZmOTczNDBmNzM1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC00MjAsNyArNDIwLDcgQEAgdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xv
YmFsVHJlZVZlcnNpb24gPSAwOwogCiBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgOiBDb250YWlu
ZXJOb2RlKDAsIENyZWF0ZURvY3VtZW50KQotICAgICwgVHJlZVNjb3BlKHRoaXMpCisgICAgLCBU
cmVlU2NvcGUodGhpcywgdGhpcykKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQogICAgICwgbV9j
b250ZXh0RmVhdHVyZXMoQ29udGV4dEZlYXR1cmVzOjpkZWZhdWx0U3dpdGNoKCkpCiAgICAgLCBt
X2NvbXBhdGliaWxpdHlNb2RlKE5vUXVpcmtzTW9kZSkKQEAgLTQ5Miw3ICs0OTIsNyBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRN
TCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hh
bmdlZChmYWxzZSkKICNlbmRpZgogewotICAgIG1fZG9jdW1lbnQgPSB0aGlzOworICAgIHNldFRy
ZWVTY29wZSh0aGlzKTsKIAogICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVWYWxpZCA9IGZh
bHNlOwogCkBAIC02NDgsNyArNjQ4LDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgaWYg
KGhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGNsZWFyUmFyZURhdGEoKTsKIAotICAgIG1fZG9jdW1l
bnQgPSAwOworICAgIHNldFRyZWVTY29wZSgwKTsKIAogICAgIEluc3BlY3RvckNvdW50ZXJzOjpk
ZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpEb2N1bWVudENvdW50ZXIpOwogfQpA
QCAtMTM0MSwxMyArMTM0MSwxNCBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50KGNvbnN0IFN0
cmluZyYgY29udGVudCkKIAogU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQorICAgIERvY3Vt
ZW50KiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmIChkb2MtPmlzWEhUTUxEb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1l
bnQtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICBpZiAoZG9jLT5pc1NWR0RvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPnhtbFN0YW5k
YWxvbmUoKSkKKyAgICBpZiAoZG9jLT54bWxTdGFuZGFsb25lKCkpCiAgICAgICAgIHJldHVybiAi
dGV4dC94bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQorICAgIGlm
IChkb2MtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAidGV4dC9odG1sIjsKIAog
ICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggODdkZmEzMmMyODVlMGQ4YjA5OTczMDJlMjQ1YjdmYjM4NThmYWY1
Mi4uY2VkM2RkMWM3OGJlOTg4YjBjMjlkZTQxN2YyOTFjYjExZjM3Yjc2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTE1MjMsMjAgKzE1MjMsNTMgQEAgcHJpdmF0ZToKIAogLy8gUHV0IHRoZXNl
IG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRp
b24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbS4KIAoraW5saW5lIFRyZWVTY29w
ZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90cmVlU2NvcGUgPT0g
VHJlZVNjb3BlOjpudWxsSW5zdGFuY2UoKSA/IDAgOiBtX3RyZWVTY29wZTsKK30KKworaW5saW5l
IHZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCit7CisgICAgbV90cmVl
U2NvcGUgPSBzY29wZSA/IHNjb3BlIDogVHJlZVNjb3BlOjpudWxsSW5zdGFuY2UoKTsKKyAgICBz
ZXRGbGFnKCFtX3RyZWVTY29wZS0+aXNEb2N1bWVudFNjb3BlKCksIEluU2hhZG93VHJlZSk7Cit9
CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1lbnRJbnRlcm5hbCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGdldEZsYWcoSW5TaGFkb3dUcmVlKSkKKyAgICAgICAgcmV0dXJuIG1fdHJlZVNjb3Bl
LT5yb290RG9jdW1lbnQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3Ry
ZWVTY29wZSk7Cit9CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1lbnQoKSBjb25zdAor
eworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvY3VtZW50SW50ZXJuYWwoKTsKKyAgICAvLyBG
SVhNRTogYmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9j
dW1lbnQoKSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgorICAgIC8vIGR1ZSB0byB0
aGUgdmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCisgICAgQVNTRVJUKGRvY3Vt
ZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgp
KSk7CisgICAgcmV0dXJuIGRvY3VtZW50OworfQorCiBpbmxpbmUgYm9vbCBOb2RlOjppc0RvY3Vt
ZW50Tm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXMgPT0gbV9kb2N1bWVudDsKKyAgICBy
ZXR1cm4gdGhpcyA9PSBkb2N1bWVudEludGVybmFsKCk7Cit9CisKK2lubGluZSBib29sIE5vZGU6
OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJlZVNjb3BlKCkgIT0gZG9j
dW1lbnQoKTsKIH0KIAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25z
dHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0eXBlKQotICAgICwgbV9kb2N1
bWVudChkb2N1bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKDApCiAgICAgLCBtX3ByZXZpb3VzKDAp
CiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKIHsKICAgICBpZiAoZG9jdW1l
bnQpCiAgICAgICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOworICAgIHNldFRyZWVTY29wZShkb2N1
bWVudCk7CiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RBVElT
VElDUykgJiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDA5NTBjZDkzM2Y2MWQ1MDEwYjk3ZjExNjZjMjgx
M2FiZDA5MGUzNjMuLjFiMWZlMGQ3ZDQ4YTRlYTBmMzFmNTZhMTliNTVhYmVhNmQwNDM2NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYg
KHJlbmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1f
ZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBp
ZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5h
eE9iamVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1v
dmVOb2RlRm9yVXNlKHRoaXMpOwogICAgIApAQCAtNDIwLDQxICs0MjAsNiBAQCBOb2RlOjp+Tm9k
ZSgpCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291
bnRlcnM6Ok5vZGVDb3VudGVyKTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9
PSBkb2N1bWVudCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3Vt
ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7Ci19Ci0K
LU5vZGVSYXJlRGF0YSogTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCi17Ci0g
ICAgaWYgKCFzY29wZSkgewotICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewotICAgICAgICAg
ICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gcmFyZURhdGEoKTsKLSAgICAgICAgICAgIGRhdGEtPnNl
dFRyZWVTY29wZSgwKTsKLSAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJl
UmFyZURhdGEoKTsKLSAgICBkYXRhLT5zZXRUcmVlU2NvcGUoc2NvcGUpOwotICAgIHJldHVybiBk
YXRhOwotfQotCi1UcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17Ci0gICAgLy8g
RklYTUU6IFVzaW5nIG1fZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4gc2VlIGNvbW1l
bnQgd2l0aCBkb2N1bWVudCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KLSAgICBpZiAoIWhhc1JhcmVE
YXRhKCkpCi0gICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIFRyZWVTY29wZSogc2NvcGUg
PSByYXJlRGF0YSgpLT50cmVlU2NvcGUoKTsKLSAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IG1f
ZG9jdW1lbnQ7Ci19Ci0KIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAogewog
ICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAgLTE0NzcsMTEgKzE0NDIsNiBAQCBDb250YWlu
ZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJl
dHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQog
Ci1ib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNj
b3BlKCkgIT0gZG9jdW1lbnQoKTsKLX0KLQogRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxl
bWVudCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0
Tm9kZSgpOwpAQCAtMjgxNiw3ICsyNzc2LDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIG1lbW9yeU9i
amVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpE
T00pOwogICAgIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5
VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0UG9p
bnRlcihtX2RvY3VtZW50LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgbWVtb3J5
T2JqZWN0SW5mby0+cmVwb3J0UG9pbnRlcihkb2N1bWVudCgpLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OkRPTSk7CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRl
cihtX25leHQpOwogICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50
ZXIobV9wcmV2aW91cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5M2E2NmQ5ZWM4YTViMjYzNTE1ZDVm
YzI1NjZkMmE1ZTlmZGViZWYyLi4xYTAzM2RjMGM2NjgwZThjNmUyNTVkYjEzN2RhZTE0MTRkNzg4
NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQwNywxNCArNDA3LDcgQEAgcHVibGljOgogCiAgICAgLy8g
UmV0dXJucyB0aGUgZG9jdW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbm9kZS4gVGhpcyBtZXRo
b2QgbmV2ZXIgcmV0dXJucyBOVUxMLCBleGNlcHQgaW4gdGhlIGNhc2UgCiAgICAgLy8gb2YgYSBE
b2N1bWVudFR5cGUgbm9kZSB0aGF0IGlzIG5vdCB1c2VkIHdpdGggYW55IERvY3VtZW50IHlldC4g
QSBEb2N1bWVudCBub2RlIHJldHVybnMgaXRzZWxmLgotICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodGhpcyk7Ci0gICAgICAgIC8vIEZJWE1FOiBi
ZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQgcHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgp
IGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yCi0gICAgICAgIC8vIGR1ZSB0byB0aGUg
dmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCi0gICAgICAgIEFTU0VSVChtX2Rv
Y3VtZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVu
dCgpKSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIH0KKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3Q7CiAK
QEAgLTQyMiw3ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gbm9kZSB0cmVlLCBmYWxzZSBvdGhl
cndpc2UuCiAgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QgCiAgICAgeyAKLSAgICAgICAgQVNT
RVJUKG1fZG9jdW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAgICAgICAgQVNT
RVJUKHRyZWVTY29wZSgpIHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CiAgICAgICAgIHJl
dHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CiAKQEAgLTY5MywxMCArNjg2LDEy
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgSW5OYW1lZEZsb3dGbGFnID0gMSA8PCAyNiwK
ICAgICAgICAgSGFzQXR0ckxpc3RGbGFnID0gMSA8PCAyNywKLSAgICAgICAgSGFzQ3VzdG9tQ2Fs
bGJhY2tzRmxhZyA9IDEgPDwgMjgKKyAgICAgICAgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyA9IDEg
PDwgMjgsCisgICAgICAgIEluU2hhZG93VHJlZSA9IDEgPDwgMjkKKwogICAgIH07CiAKLSAgICAv
LyA0IGJpdHMgcmVtYWluaW5nCisgICAgLy8gMyBiaXRzIHJlbWFpbmluZwogCiAgICAgYm9vbCBn
ZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7
IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25v
ZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9
IApAQCAtNzMyLDE2ICs3MjcsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRIYXNDdXN0
b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyk7IH0K
IAorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOworICAgIERvY3VtZW50KiBkb2N1
bWVudEludGVybmFsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVT
aGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7
CiAKLSAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0cmVlIHNjb3Bl
IG1pZ3JhdGlvbi4KLSAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVSYXJlRGF0YSB0
byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBjYWxsZXIgc2l0
ZS4KLSAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKLSAgICB2b2lk
IHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0KICAgICBlbnVtIEVkaXRhYmxlTGV2ZWwgeyBFZGl0
YWJsZSwgUmljaGx5RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0
YWJsZUxldmVsKSBjb25zdDsKICAgICBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkoRWRp
dGFibGVMZXZlbCkgY29uc3Q7CkBAIC03ODQsNyArNzc3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVudCogbV9kb2N1
bWVudDsKKyAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7
CiAgICAgTm9kZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA1YzAzZDhiMzgxODIwZTllY2NjMzIwNDk0MjA2ZWE1
ZWEwNzMxMWY3Li45NTEyM2I5MDlhNDRhOTNkNGYxMTA0OWRjZmJkNWVkNWRlNzNiYTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xODAsOCArMTgwLDcgQEAgY2xhc3MgTm9kZVJh
cmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFyZURhdGEpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9kZVJhcmVEYXRhKCkKLSAgICAg
ICAgOiBtX3RyZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgwKQorICAgICAg
ICA6IG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKICAgICAgICAg
LCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNl
ZChmYWxzZSkKQEAgLTIwOSw5ICsyMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByYXJl
RGF0YU1hcCgpLmdldChub2RlKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJl
ZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0KLSAgICAKICAg
ICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9CiAgICAgdm9p
ZCBzZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlzdHMpIHsgbV9u
b2RlTGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKSBj
b25zdCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpAQCAtMzQyLDcgKzMzOCw2IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVOb2RlTGlzdHMoTm9kZSopOwogCi0g
ICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+
IG1fbm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBP
d25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAppbmRleCAyYzU3NTYwYmYyNmYzMjc3MjIzYzQ4YmU0OTU3NGRlNDRmZDcyMDVl
Li43YzgyZjQ1YWJhY2M1NGM2MzAyMTUyYTA2NDIwMTZjNjU3YmUzMGIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBEb2N1bWVu
dEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNjb3BlKHRo
aXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYoMCkKICAg
ICAsIG1fbmV4dCgwKQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKQEAgLTU1LDEx
ICs1NSw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCi0gICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBh
cmVudCBzY29wZS4KLSAgICBzZXRQYXJlbnRUcmVlU2NvcGUoZG9jdW1lbnQpOwogICAgIC8vIFNo
YWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBwb2ludGVyIHBvaW50IHRvIHRoZW1zZWx2
ZXMuCiAgICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGlsZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNv
cnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUo
dGhpcyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogfQogCiBTaGFkb3dSb290Ojp+U2hhZG93
Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDU2NDJmY2Y4ZGQzM2ZiYzFmYmYy
MDNiZGRiMWZiOGJlMjUzN2FlZmIuLjdlMWIyNjk3YmU1ZWY4OWQyYjBlMDdjN2YwNjA4ZWUwYzg4
MmY4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC01MSwxNCArNTEsMjQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2Nv
cGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKK1RyZWVTY29wZTo6VHJlZVNj
b3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlLCBEb2N1bWVudCogcm9vdERvY3VtZW50KQogICAg
IDogbV9yb290Tm9kZShyb290Tm9kZSkKLSAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAg
LCBtX3Jvb3REb2N1bWVudChyb290RG9jdW1lbnQpCisgICAgLCBtX3BhcmVudFRyZWVTY29wZShy
b290Tm9kZSA9PSByb290RG9jdW1lbnQgPyAwIDogcm9vdERvY3VtZW50KQogICAgICwgbV9udW1O
b2RlTGlzdENhY2hlcygwKQogewogICAgIEFTU0VSVChyb290Tm9kZSk7CiB9CiAKK1RyZWVTY29w
ZTo6VHJlZVNjb3BlKCkKKyAgICA6IG1fcm9vdE5vZGUoMCkKKyAgICAsIG1fcm9vdERvY3VtZW50
KDApCisgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9udW1Ob2RlTGlzdENhY2hl
cygwKQoreworfQorCisKIFRyZWVTY29wZTo6flRyZWVTY29wZSgpCiB7CiAgICAgaWYgKG1fc2Vs
ZWN0aW9uKSB7CkBAIC04MSw2ICs5MSw3IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVl
U2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKICAgICBBU1NFUlQobmV3UGFyZW50U2Nv
cGUpOwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKKyAgICBtX3Jv
b3REb2N1bWVudCA9IG5ld1BhcmVudFNjb3BlLT5yb290RG9jdW1lbnQoKTsKIH0KIAogRWxlbWVu
dCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJ
ZCkgY29uc3QKQEAgLTI0NSw2ICsyNTYsMTEgQEAgTm9kZSogVHJlZVNjb3BlOjpmb2N1c2VkTm9k
ZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgVHJlZVNjb3BlOjppc0RvY3VtZW50U2NvcGUo
KSBjb25zdAoreworICAgIHJldHVybiB0aGlzID09IG1fcm9vdERvY3VtZW50OworfQorCiBzdGF0
aWMgdm9pZCBsaXN0VHJlZVNjb3BlcyhOb2RlKiBub2RlLCBWZWN0b3I8VHJlZVNjb3BlKiwgNT4m
IHRyZWVTY29wZXMpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTI3OCw1ICsyOTQsMTEgQEAg
VHJlZVNjb3BlKiBjb21tb25UcmVlU2NvcGUoTm9kZSogbm9kZUEsIE5vZGUqIG5vZGVCKQogICAg
IHJldHVybiB0cmVlU2NvcGVzQVtpbmRleEFdID09IHRyZWVTY29wZXNCW2luZGV4Ql0gPyB0cmVl
U2NvcGVzQVtpbmRleEFdIDogMDsKIH0KIAorVHJlZVNjb3BlKiBUcmVlU2NvcGU6Om51bGxJbnN0
YW5jZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUcmVlU2NvcGUsIGluc3RhbmNlLCAo
KSk7CisgICAgcmV0dXJuICZpbnN0YW5jZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggNWVjYzAzOTJmMzcxNzBiZWUzMDUzOTkyMTQyNDk3
Y2ZhYjdhY2IwYi4uMjUwNmQ1NGQzZDc3MjVlMjc5MGRhY2FmMDhjZmY3NzUyZmJmOWMxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBET01TZWxlY3Rpb247CitjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIE5vZGU7
CkBAIC04MSwxNSArODIsMjIgQEAgcHVibGljOgogICAgIHZvaWQgYWRvcHRJZk5lZWRlZChOb2Rl
Kik7CiAKICAgICBDb250YWluZXJOb2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9v
dE5vZGU7IH0KKyAgICBEb2N1bWVudCogcm9vdERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9y
b290RG9jdW1lbnQ7IH0KKyAgICBib29sIGlzRG9jdW1lbnRTY29wZSgpIGNvbnN0OworCisgICAg
c3RhdGljIFRyZWVTY29wZSogbnVsbEluc3RhbmNlKCk7CiAKIHByb3RlY3RlZDoKLSAgICBUcmVl
U2NvcGUoQ29udGFpbmVyTm9kZSopOworICAgIFRyZWVTY29wZShDb250YWluZXJOb2RlKiwgRG9j
dW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogICAgIHZvaWQgZGVzdHJveVRy
ZWVTY29wZURhdGEoKTsKIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUoKTsKKwogICAgIENvbnRh
aW5lck5vZGUqIG1fcm9vdE5vZGU7CisgICAgRG9jdW1lbnQqIG1fcm9vdERvY3VtZW50OwogICAg
IFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAg
bV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
QWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5k
ZXggODhlMWE2ZmQ1ZGUxM2VkZjdmNzAzOTJhYWFhOTEyYWRmZDZmZTcyNy4uZDMyNGYzNGNmMjA3
NjA3YWJhMTQxMGMyYTEwMzBlNDBlMmUwNjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcApAQCAtNDcsNyArNDcsOCBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1v
dmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBjb25zdAogICAgICAgICBvbGREb2N1bWVudC0+
aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7
IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7Ci0gICAgICAgIE5vZGVSYXJl
RGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRUcmVlU2NvcGUobmV3RG9jdW1lbnQgPT0gbV9uZXdT
Y29wZSA/IDAgOiBtX25ld1Njb3BlKTsKKyAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG1fbmV3
U2NvcGUpOworICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+aGFzUmFyZURh
dGEoKSA/IG5vZGUtPnJhcmVEYXRhKCkgOiAwOwogICAgICAgICBpZiAocmFyZURhdGEgJiYgcmFy
ZURhdGEtPm5vZGVMaXN0cygpKQogICAgICAgICAgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5h
ZG9wdFRyZWVTY29wZShtX29sZFNjb3BlLCBtX25ld1Njb3BlLCBvbGREb2N1bWVudCwgbmV3RG9j
dW1lbnQpOwogCkBAIC05MSw4ICs5Miw2IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6
Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAg
aWYgKG9sZERvY3VtZW50KQogICAgICAgICBvbGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNU
b05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3VtZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50
KG5ld0RvY3VtZW50KTsKLQogI2lmbmRlZiBOREVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVu
dFdhc0NhbGxlZCA9IGZhbHNlOwogICAgIG9sZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRX
YXNDYWxsZWRXaXRoID0gb2xkRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5
NDM4ZjQ1OWRjZmExMzQuLjViZjU0NTQxMzIzYzA3OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNl
bGVjdGlvbkNvbW1hbmQuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMTk2
NTdhYzBmYzc3MjEyMjM1ODM1NzRiYzZiZDIwODFkM2RjNzY5Ni4uOGJlMjA3MDYxNGM0OTUzMTM4
YTNjNTlmMDVmNDc1YmViM2JkYjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1v
dmVOb2RlQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVu
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5n
Q2hpbGRyZW5Db21tYW5kLmNwcAppbmRleCAxNDUyZjg4MDNmYWJjNTcwYTI1NGZhNWEyZTk2ZTQw
ZjE0ZGVhOWM1Li4yODFmZGJkZjMyYmQ1MDUxY2RlYmQyNzVmZGYwNjk0NWZhYmVlZjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRy
ZW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgi
CiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNv
bGVBZ2VudC5jcHAKaW5kZXggZjU1ZGRhNThmMDYyOTk1YTQ4YmI3M2Q2ODM2ZjZhNjJlZTcyNWY5
Mi4uOWRmMzIzODQ1NTJlZTAyNGUzMmFkODkzNGYzNjg3Y2Q4ZDgzOGNiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtMzQsNiArMzQsNyBA
QAogCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVBZ2VudC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3Qu
aCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgppbmRleCA4NjRmNmVjNTkwMTQwNDFiMzEwOGI0MmI4NjFiYWM2YThkZDNmY2ZkLi45YTAzNzVk
ZjUzNjVlOThjMzhlZTNmYjNkYzFjZjBmZTNkNDViMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CkBAIC0yNTUsNiArMjU1LDcgQEAgRVhQT1JUUwogICAgICAgICA/dXRmOEBTdHJpbmdAV1RGQEBR
QkU/QVZDU3RyaW5nQDJAX05AWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQ
QVZGcmFtZVZpZXdAMkBYWgogICAgICAgICA/d2lsbERldGFjaFBhZ2VARnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgorICAgICAgICA/bnVsbEluc3RhbmNlQFRyZWVTY29w
ZUBXZWJDb3JlQEBTQVBBVjEyQFhaCiAgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdl
YkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJ
X04wQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3Jl
QEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP3dlYmtp
dFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZF
bGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRl
LmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCBkZmNiY2Rk
MDM0YjBiYmY5NjVmYzZhMmFjOTE1YjhhY2RlN2E1MWI0Li4xMTY0ZWZhNzAyMmIyZGZlNDczZjdk
MjE0M2M3NDBkZWY1MDE1NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBA
IC0yNDksNiArMjQ5LDcgQEAgRVhQT1JUUwogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3Jl
QEBRQkVQQVZGcmFtZVZpZXdAMkBYWgogICAgICAgICA/d2lsbERldGFjaFBhZ2VARnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/bm9kZXNGcm9tUmVjdEBE
b2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBX
VEZAQEhISUlJSV9OMEBaCisgICAgICAgID9udWxsSW5zdGFuY2VAVHJlZVNjb3BlQFdlYkNvcmVA
QFNBUEFWMTJAWFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBX
ZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAg
P3Jlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlQFdlYkNv
cmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRlc0AxQEBaCiAgICAgICAgID9yZXN0cmljdE1pbmlt
dW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplQFdlYkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmli
dXRlc0AxQFZJbnRTaXplQDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGE2MDcyMWE2
NDQwMWY1MGNjZjZhMzMyMDc3NmU0NmRjMzM5YzgzNjEuLmQyZGQ3ZWJkNzcxM2NlY2M2MTdiMTM4
YmEwMDkwMDdiNDdlYTg4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTY3LDYgKzE2
Nyw3IEBAIF9aTjdXZWJDb3JlOERvY3VtZW50MzV3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudEVQTlNfN0VsZW1lbnRFOwogX1pON1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0NnNf
aW5mb0U7CiBfWk43V2ViQ29yZTdUZXh0UnVuMjJzZXRBbGxvd3NSb3VuZGluZ0hhY2tzRWI7CiBf
Wk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXY7CitfWk43V2ViQ29yZTlUcmVl
U2NvcGUxMm51bGxJbnN0YW5jZUV2OwogbG9jYWw6CiBfWio7CiBjdGkqOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151593</attachid>
            <date>2012-07-10 21:52:24 -0700</date>
            <delta_ts>2012-07-17 01:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120711135223.patch</filename>
            <type>text/plain</type>
            <size>23441</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVmMjk2ZDA0MWI1MGU2
OTRjN2Q4ZjU4YTdkMDE5ZWMzM2NlZTc4Yy4uZTAyMjg2ZTBkYzliZGRjMTkxNDExNjkxZWNjZmQ3
OWNkYzdmODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA3LTA0ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRo
aXMgY2hhbmdlLCBOb2RlOjp0cmVlU2NvcGUoKSBmZXRjaGVzIHRoZSBUcmVlU2NvcGUgb2JqZWN0
CisgICAgICAgIGZyb20gRWxlbWVudFJhcmVEYXRhLiBUaGlzIGFwcHJvYWNoIGhhcyBzZXZlcmFs
IHNob3J0Y29taW5nczoKKworICAgICAgICAtIHJhcmVEYXRhKCkgY2FsbCBpcyBzbG93IGR1ZSB0
byBhIGhhc2h0YWJsZSBsb29rdXAuCisgICAgICAgIC0gSW4gc2hhZG93IHRyZWUsIGVhY2ggbm9k
ZSBoYXMgaXRzIHRyZWUgc2NvcGUgaW4gRWxlbWVudFJhcmVEYXRhLAorICAgICAgICAgIHRoYXQg
bWVhbnMgdGhlIHJhcmUtZGF0YSBpcyBubyBsb25nZXIgcmFyZSBpbiB0aGF0IGNhc2UuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZ2V0cyByaWQgb2YgRWxlbWVudFJhcmVEYXRhOjptX3RyZWVTY29w
ZSBieSByZXBsYWNpbmcKKyAgICAgICAgTm9kZTo6bV9kb2N1bWVudCB3aXRoIE5vZGU6Om1fdHJl
ZVNjb3BlLiBBbmQgcmV0cmlldmVzIHRoZQorICAgICAgICBkb2N1bWVudCBvZiBOb2RlIHRocm91
Z2ggbV90cmVlU2NvcGUuCisKKyAgICAgICAgTm90ZSB0aGF0IE5vZGU6OmRvY3VtZW50KCkgaXMg
YSBob3QgZnVuY3Rpb24gYW5kIG5haXZlCisgICAgICAgIHJlcGxhY2VtZW5udCBvZiBtX2RvY3Vt
ZW50IHdpdGggbV90cmVlU2NvcGUgY2FuIGh1cnQgdGhlCisgICAgICAgIHNwZWVkLiBUaGlzIGNo
YW5nZSBlbXBsb3lzIHNvbWUgdHJpY2tzIHRvIGFkZHJlc3MgaXQuCisKKyAgICAgICAgLSBUaGlz
IGNoYW5nZSBpbnRyb2R1Y2VzIE5vZGU6OkluU2hhZG93VHJlZSBmbGFnLCBpZiB0aGUgZmxhZyBp
cyBvZmYsCisgICAgICAgICAgdGhhdCBtZWFucyBtX3RyZWVTY29wZSBpcyBhY3R1YWxseSBhIGRv
Y3VtZW50IGFuIGNhbiBiZSByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LgorICAgICAgICAgIHRoaXMg
ZWxpbWluYXRlcyBhbiBleHRyYWN0IGRlcmVmZXJlbmNlLgorICAgICAgICAtIE5vZGU6Om1fdHJl
ZVNjb3BlIGNhbiBiZSBudWxsLiBCdXQgd2UgZG9uJ3Qgd2FudCB0byBpc3N1ZSBhbnkgZXh0cmEK
KyAgICAgICAgICBjb25kaXRpb25hbCBzdGF0ZW1lbnQuIFNvIHRoaXMgY2hhbmdlIHJlcHJlc2Vu
dHMgYSBudWxsCisgICAgICAgICAgVHJlZVNjb3BlIGFzIFRyZWVTY29wZTo6bnVsbEluc3RhbmNl
KCksIHdoaWNoIHNhdmVzIG9uZSBjb25kaXRpb25hbAorICAgICAgICAgIHN0YXRlbWVudC4KKwor
ICAgICAgICBXaXRoIHRoZXNlIGNoYW5nZXMsIHRoZSBOb2RlOjpkb2N1bWVudCgpIHNsb3dkb3du
IGlzIG1pbmltaXplZCB0bworICAgICAgICB1bm5vdGljZWFibGUgc2l6ZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOiBUb29rIGNhcmUgb2YgY29ubmVjdGlvIGJldHdlbiBUcmVlU2NvcGUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dHJlZVNjb3BlKTogTm93IGp1c3QgcmV0dXJuIG1fdHJlZVNjb3BlLCB0YWtpbmcg
Y2FyZSBvZiBudWxsSW5zdGFuY2UoKSBjYXNlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOiBOb3cganVzdCBzZXRzIG1fdHJlZVNjb3Bl
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnRJbnRlcm5hbCk6IEV4dHJhY3RlZCBm
cm9tIGRvY3VtZW50KCkgdG8gaGF2ZSBBU1NFUlQtZnJlZSB2ZXJzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZG9jdW1lbnQpOiBSZS1pbXBsZW1lbnRlZCBvdmVyIHRyZWVTY29wZSgpIGFu
ZCB0aGUgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKTogUmUt
aW1wbGVtZW50ZWQgdXNpbmcgdHJlZVNjb3BlKCkKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
SW5TaGFkb3dUcmVlKTogTW92ZWQgZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Tm9kZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmluRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKTogRWxpbWluYXRlZCBtX3Ry
ZWVTY29wZS4KKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jv
b3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRy
ZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6c2V0UGFyZW50VHJlZVNjb3BlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OmlzRG9jdW1lbnRTY29wZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjpudWxsSW5zdGFuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6IEFkZGVk
IG1fcGFyZW50VHJlZVNjb3BlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmVlU2NvcGU6OnJvb3REb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAoVHJlZVNjb3BlKToK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6IE5vIGxvbmdlciBjYWxscyBzZXRE
b2N1bWVudCgpCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRv
TmV3U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVU
b05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNw
cDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAg
ICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQu
aCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0
byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5jcHA6IEluY2x1ZGVzIERvY3VtZW50LmggdG8gZmluZCBpbmxpbmVkIE5vZGUg
ZnVuY3Rpb25zCisKIDIwMTItMDctMTAgIFByYXZpbiBEICA8cHJhdmluZC4yazRAZ21haWwuY29t
PgogCiAgICAgICAgIFJlLWZhY3RvcmluZyByZWNhbGNDb2x1bW4gaW4gQXV0b1RhYmxlTGF5b3V0
LmNwcCBmb3IgcmVhZGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmZhN2Q1Y2Y3MzA2
NDVlYTM2MTE1YjcwZTdlZDU4ZmRkYmU2YTA0MC4uNzdkMmYxMTlhZjUxMjMyNzhkM2ZlZmY4MTk0
YzI2Y2JlMzc2NDMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEwMjQsNiArMTAyNCw3IEBA
IF9fWk43V2ViQ29yZTlUaW1lckJhc2U0c3RvcEV2CiBfX1pON1dlYkNvcmU5VGltZXJCYXNlNXN0
YXJ0RWRkCiBfX1pON1dlYkNvcmU5VGltZXJCYXNlQzJFdgogX19aTjdXZWJDb3JlOVRpbWVyQmFz
ZUQyRXYKK19fWk43V2ViQ29yZTlUcmVlU2NvcGUxMm51bGxJbnN0YW5jZUV2CiBfX1pON1dlYkNv
cmU5Y2xvc2VGaWxlRVJpCiBfX1pON1dlYkNvcmU5ZW5kT2ZXb3JkRVJLTlNfMTVWaXNpYmxlUG9z
aXRpb25FTlNfOUVXb3JkU2lkZUUKIF9fWk43V2ViQ29yZTlmb250Q2FjaGVFdgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYmM1ZWFiYmRhNjFiOGU4MmFhMmY0MTQxODkxNTMzMjcyY2JkZWYz
YS4uMzAwZjE4OTdhNjM3ZDM3MGZjNzYyMjEwZmE0NjZmOTczNDBmNzM1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC00MjAsNyArNDIwLDcgQEAgdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xv
YmFsVHJlZVZlcnNpb24gPSAwOwogCiBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgOiBDb250YWlu
ZXJOb2RlKDAsIENyZWF0ZURvY3VtZW50KQotICAgICwgVHJlZVNjb3BlKHRoaXMpCisgICAgLCBU
cmVlU2NvcGUodGhpcywgdGhpcykKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQogICAgICwgbV9j
b250ZXh0RmVhdHVyZXMoQ29udGV4dEZlYXR1cmVzOjpkZWZhdWx0U3dpdGNoKCkpCiAgICAgLCBt
X2NvbXBhdGliaWxpdHlNb2RlKE5vUXVpcmtzTW9kZSkKQEAgLTQ5Miw3ICs0OTIsNyBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRN
TCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hh
bmdlZChmYWxzZSkKICNlbmRpZgogewotICAgIG1fZG9jdW1lbnQgPSB0aGlzOworICAgIHNldFRy
ZWVTY29wZSh0aGlzKTsKIAogICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVWYWxpZCA9IGZh
bHNlOwogCkBAIC02NDgsNyArNjQ4LDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgaWYg
KGhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGNsZWFyUmFyZURhdGEoKTsKIAotICAgIG1fZG9jdW1l
bnQgPSAwOworICAgIHNldFRyZWVTY29wZSgwKTsKIAogICAgIEluc3BlY3RvckNvdW50ZXJzOjpk
ZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpEb2N1bWVudENvdW50ZXIpOwogfQpA
QCAtMTM0MSwxMyArMTM0MSwxNCBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50KGNvbnN0IFN0
cmluZyYgY29udGVudCkKIAogU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQorICAgIERvY3Vt
ZW50KiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmIChkb2MtPmlzWEhUTUxEb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1l
bnQtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICBpZiAoZG9jLT5pc1NWR0RvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPnhtbFN0YW5k
YWxvbmUoKSkKKyAgICBpZiAoZG9jLT54bWxTdGFuZGFsb25lKCkpCiAgICAgICAgIHJldHVybiAi
dGV4dC94bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQorICAgIGlm
IChkb2MtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAidGV4dC9odG1sIjsKIAog
ICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggODdkZmEzMmMyODVlMGQ4YjA5OTczMDJlMjQ1YjdmYjM4NThmYWY1
Mi4uY2VkM2RkMWM3OGJlOTg4YjBjMjlkZTQxN2YyOTFjYjExZjM3Yjc2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTE1MjMsMjAgKzE1MjMsNTMgQEAgcHJpdmF0ZToKIAogLy8gUHV0IHRoZXNl
IG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRp
b24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbS4KIAoraW5saW5lIFRyZWVTY29w
ZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90cmVlU2NvcGUgPT0g
VHJlZVNjb3BlOjpudWxsSW5zdGFuY2UoKSA/IDAgOiBtX3RyZWVTY29wZTsKK30KKworaW5saW5l
IHZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCit7CisgICAgbV90cmVl
U2NvcGUgPSBzY29wZSA/IHNjb3BlIDogVHJlZVNjb3BlOjpudWxsSW5zdGFuY2UoKTsKKyAgICBz
ZXRGbGFnKCFtX3RyZWVTY29wZS0+aXNEb2N1bWVudFNjb3BlKCksIEluU2hhZG93VHJlZSk7Cit9
CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1lbnRJbnRlcm5hbCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGdldEZsYWcoSW5TaGFkb3dUcmVlKSkKKyAgICAgICAgcmV0dXJuIG1fdHJlZVNjb3Bl
LT5yb290RG9jdW1lbnQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3Ry
ZWVTY29wZSk7Cit9CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1lbnQoKSBjb25zdAor
eworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvY3VtZW50SW50ZXJuYWwoKTsKKyAgICAvLyBG
SVhNRTogYmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9j
dW1lbnQoKSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgorICAgIC8vIGR1ZSB0byB0
aGUgdmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCisgICAgQVNTRVJUKGRvY3Vt
ZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgp
KSk7CisgICAgcmV0dXJuIGRvY3VtZW50OworfQorCiBpbmxpbmUgYm9vbCBOb2RlOjppc0RvY3Vt
ZW50Tm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXMgPT0gbV9kb2N1bWVudDsKKyAgICBy
ZXR1cm4gdGhpcyA9PSBkb2N1bWVudEludGVybmFsKCk7Cit9CisKK2lubGluZSBib29sIE5vZGU6
OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJlZVNjb3BlKCkgIT0gZG9j
dW1lbnQoKTsKIH0KIAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25z
dHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0eXBlKQotICAgICwgbV9kb2N1
bWVudChkb2N1bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKDApCiAgICAgLCBtX3ByZXZpb3VzKDAp
CiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKIHsKICAgICBpZiAoZG9jdW1l
bnQpCiAgICAgICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOworICAgIHNldFRyZWVTY29wZShkb2N1
bWVudCk7CiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RBVElT
VElDUykgJiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDA5NTBjZDkzM2Y2MWQ1MDEwYjk3ZjExNjZjMjgx
M2FiZDA5MGUzNjMuLjFiMWZlMGQ3ZDQ4YTRlYTBmMzFmNTZhMTliNTVhYmVhNmQwNDM2NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYg
KHJlbmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1f
ZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBp
ZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5h
eE9iamVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1v
dmVOb2RlRm9yVXNlKHRoaXMpOwogICAgIApAQCAtNDIwLDQxICs0MjAsNiBAQCBOb2RlOjp+Tm9k
ZSgpCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291
bnRlcnM6Ok5vZGVDb3VudGVyKTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9
PSBkb2N1bWVudCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3Vt
ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7Ci19Ci0K
LU5vZGVSYXJlRGF0YSogTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCi17Ci0g
ICAgaWYgKCFzY29wZSkgewotICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewotICAgICAgICAg
ICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gcmFyZURhdGEoKTsKLSAgICAgICAgICAgIGRhdGEtPnNl
dFRyZWVTY29wZSgwKTsKLSAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJl
UmFyZURhdGEoKTsKLSAgICBkYXRhLT5zZXRUcmVlU2NvcGUoc2NvcGUpOwotICAgIHJldHVybiBk
YXRhOwotfQotCi1UcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17Ci0gICAgLy8g
RklYTUU6IFVzaW5nIG1fZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4gc2VlIGNvbW1l
bnQgd2l0aCBkb2N1bWVudCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KLSAgICBpZiAoIWhhc1JhcmVE
YXRhKCkpCi0gICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIFRyZWVTY29wZSogc2NvcGUg
PSByYXJlRGF0YSgpLT50cmVlU2NvcGUoKTsKLSAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IG1f
ZG9jdW1lbnQ7Ci19Ci0KIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAogewog
ICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAgLTE0NzcsMTEgKzE0NDIsNiBAQCBDb250YWlu
ZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJl
dHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQog
Ci1ib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNj
b3BlKCkgIT0gZG9jdW1lbnQoKTsKLX0KLQogRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxl
bWVudCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0
Tm9kZSgpOwpAQCAtMjgxNiw3ICsyNzc2LDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIG1lbW9yeU9i
amVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpE
T00pOwogICAgIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5
VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0UG9p
bnRlcihtX2RvY3VtZW50LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgbWVtb3J5
T2JqZWN0SW5mby0+cmVwb3J0UG9pbnRlcihkb2N1bWVudCgpLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OkRPTSk7CiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRl
cihtX25leHQpOwogICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50
ZXIobV9wcmV2aW91cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5M2E2NmQ5ZWM4YTViMjYzNTE1ZDVm
YzI1NjZkMmE1ZTlmZGViZWYyLi4xYTAzM2RjMGM2NjgwZThjNmUyNTVkYjEzN2RhZTE0MTRkNzg4
NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQwNywxNCArNDA3LDcgQEAgcHVibGljOgogCiAgICAgLy8g
UmV0dXJucyB0aGUgZG9jdW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbm9kZS4gVGhpcyBtZXRo
b2QgbmV2ZXIgcmV0dXJucyBOVUxMLCBleGNlcHQgaW4gdGhlIGNhc2UgCiAgICAgLy8gb2YgYSBE
b2N1bWVudFR5cGUgbm9kZSB0aGF0IGlzIG5vdCB1c2VkIHdpdGggYW55IERvY3VtZW50IHlldC4g
QSBEb2N1bWVudCBub2RlIHJldHVybnMgaXRzZWxmLgotICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodGhpcyk7Ci0gICAgICAgIC8vIEZJWE1FOiBi
ZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQgcHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgp
IGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yCi0gICAgICAgIC8vIGR1ZSB0byB0aGUg
dmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCi0gICAgICAgIEFTU0VSVChtX2Rv
Y3VtZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVu
dCgpKSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIH0KKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3Q7CiAK
QEAgLTQyMiw3ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gbm9kZSB0cmVlLCBmYWxzZSBvdGhl
cndpc2UuCiAgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QgCiAgICAgeyAKLSAgICAgICAgQVNT
RVJUKG1fZG9jdW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAgICAgICAgQVNT
RVJUKHRyZWVTY29wZSgpIHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CiAgICAgICAgIHJl
dHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CiAKQEAgLTY5MywxMCArNjg2LDEy
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgSW5OYW1lZEZsb3dGbGFnID0gMSA8PCAyNiwK
ICAgICAgICAgSGFzQXR0ckxpc3RGbGFnID0gMSA8PCAyNywKLSAgICAgICAgSGFzQ3VzdG9tQ2Fs
bGJhY2tzRmxhZyA9IDEgPDwgMjgKKyAgICAgICAgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyA9IDEg
PDwgMjgsCisgICAgICAgIEluU2hhZG93VHJlZSA9IDEgPDwgMjkKKwogICAgIH07CiAKLSAgICAv
LyA0IGJpdHMgcmVtYWluaW5nCisgICAgLy8gMyBiaXRzIHJlbWFpbmluZwogCiAgICAgYm9vbCBn
ZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7
IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25v
ZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9
IApAQCAtNzMyLDE2ICs3MjcsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRIYXNDdXN0
b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyk7IH0K
IAorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOworICAgIERvY3VtZW50KiBkb2N1
bWVudEludGVybmFsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVT
aGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7
CiAKLSAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0cmVlIHNjb3Bl
IG1pZ3JhdGlvbi4KLSAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVSYXJlRGF0YSB0
byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBjYWxsZXIgc2l0
ZS4KLSAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKLSAgICB2b2lk
IHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0KICAgICBlbnVtIEVkaXRhYmxlTGV2ZWwgeyBFZGl0
YWJsZSwgUmljaGx5RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0
YWJsZUxldmVsKSBjb25zdDsKICAgICBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkoRWRp
dGFibGVMZXZlbCkgY29uc3Q7CkBAIC03ODQsNyArNzc3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVudCogbV9kb2N1
bWVudDsKKyAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7
CiAgICAgTm9kZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA1YzAzZDhiMzgxODIwZTllY2NjMzIwNDk0MjA2ZWE1
ZWEwNzMxMWY3Li45NTEyM2I5MDlhNDRhOTNkNGYxMTA0OWRjZmJkNWVkNWRlNzNiYTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xODAsOCArMTgwLDcgQEAgY2xhc3MgTm9kZVJh
cmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFyZURhdGEpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9kZVJhcmVEYXRhKCkKLSAgICAg
ICAgOiBtX3RyZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgwKQorICAgICAg
ICA6IG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKICAgICAgICAg
LCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNl
ZChmYWxzZSkKQEAgLTIwOSw5ICsyMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByYXJl
RGF0YU1hcCgpLmdldChub2RlKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJl
ZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0KLSAgICAKICAg
ICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9CiAgICAgdm9p
ZCBzZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlzdHMpIHsgbV9u
b2RlTGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKSBj
b25zdCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpAQCAtMzQyLDcgKzMzOCw2IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVOb2RlTGlzdHMoTm9kZSopOwogCi0g
ICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+
IG1fbm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBP
d25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAppbmRleCAyYzU3NTYwYmYyNmYzMjc3MjIzYzQ4YmU0OTU3NGRlNDRmZDcyMDVl
Li43YzgyZjQ1YWJhY2M1NGM2MzAyMTUyYTA2NDIwMTZjNjU3YmUzMGIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBEb2N1bWVu
dEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNjb3BlKHRo
aXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYoMCkKICAg
ICAsIG1fbmV4dCgwKQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKQEAgLTU1LDEx
ICs1NSw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCi0gICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBh
cmVudCBzY29wZS4KLSAgICBzZXRQYXJlbnRUcmVlU2NvcGUoZG9jdW1lbnQpOwogICAgIC8vIFNo
YWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBwb2ludGVyIHBvaW50IHRvIHRoZW1zZWx2
ZXMuCiAgICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGlsZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNv
cnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUo
dGhpcyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogfQogCiBTaGFkb3dSb290Ojp+U2hhZG93
Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDU2NDJmY2Y4ZGQzM2ZiYzFmYmYy
MDNiZGRiMWZiOGJlMjUzN2FlZmIuLjdlMWIyNjk3YmU1ZWY4OWQyYjBlMDdjN2YwNjA4ZWUwYzg4
MmY4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC01MSwxNCArNTEsMjQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2Nv
cGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKK1RyZWVTY29wZTo6VHJlZVNj
b3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlLCBEb2N1bWVudCogcm9vdERvY3VtZW50KQogICAg
IDogbV9yb290Tm9kZShyb290Tm9kZSkKLSAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAg
LCBtX3Jvb3REb2N1bWVudChyb290RG9jdW1lbnQpCisgICAgLCBtX3BhcmVudFRyZWVTY29wZShy
b290Tm9kZSA9PSByb290RG9jdW1lbnQgPyAwIDogcm9vdERvY3VtZW50KQogICAgICwgbV9udW1O
b2RlTGlzdENhY2hlcygwKQogewogICAgIEFTU0VSVChyb290Tm9kZSk7CiB9CiAKK1RyZWVTY29w
ZTo6VHJlZVNjb3BlKCkKKyAgICA6IG1fcm9vdE5vZGUoMCkKKyAgICAsIG1fcm9vdERvY3VtZW50
KDApCisgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9udW1Ob2RlTGlzdENhY2hl
cygwKQoreworfQorCisKIFRyZWVTY29wZTo6flRyZWVTY29wZSgpCiB7CiAgICAgaWYgKG1fc2Vs
ZWN0aW9uKSB7CkBAIC04MSw2ICs5MSw3IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVl
U2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKICAgICBBU1NFUlQobmV3UGFyZW50U2Nv
cGUpOwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKKyAgICBtX3Jv
b3REb2N1bWVudCA9IG5ld1BhcmVudFNjb3BlLT5yb290RG9jdW1lbnQoKTsKIH0KIAogRWxlbWVu
dCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJ
ZCkgY29uc3QKQEAgLTI0NSw2ICsyNTYsMTEgQEAgTm9kZSogVHJlZVNjb3BlOjpmb2N1c2VkTm9k
ZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgVHJlZVNjb3BlOjppc0RvY3VtZW50U2NvcGUo
KSBjb25zdAoreworICAgIHJldHVybiB0aGlzID09IG1fcm9vdERvY3VtZW50OworfQorCiBzdGF0
aWMgdm9pZCBsaXN0VHJlZVNjb3BlcyhOb2RlKiBub2RlLCBWZWN0b3I8VHJlZVNjb3BlKiwgNT4m
IHRyZWVTY29wZXMpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTI3OCw1ICsyOTQsMTEgQEAg
VHJlZVNjb3BlKiBjb21tb25UcmVlU2NvcGUoTm9kZSogbm9kZUEsIE5vZGUqIG5vZGVCKQogICAg
IHJldHVybiB0cmVlU2NvcGVzQVtpbmRleEFdID09IHRyZWVTY29wZXNCW2luZGV4Ql0gPyB0cmVl
U2NvcGVzQVtpbmRleEFdIDogMDsKIH0KIAorVHJlZVNjb3BlKiBUcmVlU2NvcGU6Om51bGxJbnN0
YW5jZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUcmVlU2NvcGUsIGluc3RhbmNlLCAo
KSk7CisgICAgcmV0dXJuICZpbnN0YW5jZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggNWVjYzAzOTJmMzcxNzBiZWUzMDUzOTkyMTQyNDk3
Y2ZhYjdhY2IwYi4uMjUwNmQ1NGQzZDc3MjVlMjc5MGRhY2FmMDhjZmY3NzUyZmJmOWMxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBET01TZWxlY3Rpb247CitjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIE5vZGU7
CkBAIC04MSwxNSArODIsMjIgQEAgcHVibGljOgogICAgIHZvaWQgYWRvcHRJZk5lZWRlZChOb2Rl
Kik7CiAKICAgICBDb250YWluZXJOb2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9v
dE5vZGU7IH0KKyAgICBEb2N1bWVudCogcm9vdERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9y
b290RG9jdW1lbnQ7IH0KKyAgICBib29sIGlzRG9jdW1lbnRTY29wZSgpIGNvbnN0OworCisgICAg
c3RhdGljIFRyZWVTY29wZSogbnVsbEluc3RhbmNlKCk7CiAKIHByb3RlY3RlZDoKLSAgICBUcmVl
U2NvcGUoQ29udGFpbmVyTm9kZSopOworICAgIFRyZWVTY29wZShDb250YWluZXJOb2RlKiwgRG9j
dW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogICAgIHZvaWQgZGVzdHJveVRy
ZWVTY29wZURhdGEoKTsKIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUoKTsKKwogICAgIENvbnRh
aW5lck5vZGUqIG1fcm9vdE5vZGU7CisgICAgRG9jdW1lbnQqIG1fcm9vdERvY3VtZW50OwogICAg
IFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAg
bV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
QWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5k
ZXggODhlMWE2ZmQ1ZGUxM2VkZjdmNzAzOTJhYWFhOTEyYWRmZDZmZTcyNy4uZDMyNGYzNGNmMjA3
NjA3YWJhMTQxMGMyYTEwMzBlNDBlMmUwNjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcApAQCAtNDcsNyArNDcsOCBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1v
dmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBjb25zdAogICAgICAgICBvbGREb2N1bWVudC0+
aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7
IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7Ci0gICAgICAgIE5vZGVSYXJl
RGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRUcmVlU2NvcGUobmV3RG9jdW1lbnQgPT0gbV9uZXdT
Y29wZSA/IDAgOiBtX25ld1Njb3BlKTsKKyAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG1fbmV3
U2NvcGUpOworICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+aGFzUmFyZURh
dGEoKSA/IG5vZGUtPnJhcmVEYXRhKCkgOiAwOwogICAgICAgICBpZiAocmFyZURhdGEgJiYgcmFy
ZURhdGEtPm5vZGVMaXN0cygpKQogICAgICAgICAgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5h
ZG9wdFRyZWVTY29wZShtX29sZFNjb3BlLCBtX25ld1Njb3BlLCBvbGREb2N1bWVudCwgbmV3RG9j
dW1lbnQpOwogCkBAIC05MSw4ICs5Miw2IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6
Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAg
aWYgKG9sZERvY3VtZW50KQogICAgICAgICBvbGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNU
b05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3VtZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50
KG5ld0RvY3VtZW50KTsKLQogI2lmbmRlZiBOREVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVu
dFdhc0NhbGxlZCA9IGZhbHNlOwogICAgIG9sZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRX
YXNDYWxsZWRXaXRoID0gb2xkRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5
NDM4ZjQ1OWRjZmExMzQuLjViZjU0NTQxMzIzYzA3OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNl
bGVjdGlvbkNvbW1hbmQuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMTk2
NTdhYzBmYzc3MjEyMjM1ODM1NzRiYzZiZDIwODFkM2RjNzY5Ni4uOGJlMjA3MDYxNGM0OTUzMTM4
YTNjNTlmMDVmNDc1YmViM2JkYjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1v
dmVOb2RlQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVu
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5n
Q2hpbGRyZW5Db21tYW5kLmNwcAppbmRleCAxNDUyZjg4MDNmYWJjNTcwYTI1NGZhNWEyZTk2ZTQw
ZjE0ZGVhOWM1Li4yODFmZGJkZjMyYmQ1MDUxY2RlYmQyNzVmZGYwNjk0NWZhYmVlZjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRy
ZW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgi
CiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNv
bGVBZ2VudC5jcHAKaW5kZXggZjU1ZGRhNThmMDYyOTk1YTQ4YmI3M2Q2ODM2ZjZhNjJlZTcyNWY5
Mi4uYjBkNTI3NTQxZWU4MTYzNDA5MjU1MjhlZTU0YjYxYmFkNGExNmRkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQWdlbnQuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0Lmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
QWdlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA4NjRmNmVjNTkwMTQwNDFiMzEwOGI0
MmI4NjFiYWM2YThkZDNmY2ZkLi45YTAzNzVkZjUzNjVlOThjMzhlZTNmYjNkYzFjZjBmZTNkNDVi
MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0yNTUsNiArMjU1LDcgQEAgRVhQT1JUUwog
ICAgICAgICA/dXRmOEBTdHJpbmdAV1RGQEBRQkU/QVZDU3RyaW5nQDJAX05AWgogICAgICAgICA/
dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgogICAgICAgICA/d2ls
bERldGFjaFBhZ2VARnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgorICAg
ICAgICA/bnVsbEluc3RhbmNlQFRyZWVTY29wZUBXZWJDb3JlQEBTQVBBVjEyQFhaCiAgICAgICAg
ID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9k
ZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0
SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1h
cmtlckAyQEhIQFoKICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyQ0ZMaXRlLmRlZgppbmRleCBkZmNiY2RkMDM0YjBiYmY5NjVmYzZhMmFjOTE1YjhhY2RlN2E1
MWI0Li4xMTY0ZWZhNzAyMmIyZGZlNDczZjdkMjE0M2M3NDBkZWY1MDE1NzA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0yNDksNiArMjQ5LDcgQEAgRVhQT1JUUwogICAg
ICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgogICAgICAg
ICA/d2lsbERldGFjaFBhZ2VARnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhY
WgogICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NS
ZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMEBaCisgICAgICAgID9udWxs
SW5zdGFuY2VAVHJlZVNjb3BlQFdlYkNvcmVAQFNBUEFWMTJAWFoKICAgICAgICAgP3NlbGVjdGlv
blN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1
bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP3Jlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxT
Y2FsZUlmTm90VXNlclNjYWxhYmxlQFdlYkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRlc0Ax
QEBaCiAgICAgICAgID9yZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplQFdl
YkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRlc0AxQFZJbnRTaXplQDFAQFoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCmluZGV4IGE2MDcyMWE2NDQwMWY1MGNjZjZhMzMyMDc3NmU0NmRjMzM5Yzgz
NjEuLmQyZGQ3ZWJkNzcxM2NlY2M2MTdiMTM4YmEwMDkwMDdiNDdlYTg4N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgpAQCAtMTY3LDYgKzE2Nyw3IEBAIF9aTjdXZWJDb3JlOERvY3VtZW50MzV3
ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFOwogX1pON1dl
YkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0NnNfaW5mb0U7CiBfWk43V2ViQ29yZTdUZXh0UnVuMjJz
ZXRBbGxvd3NSb3VuZGluZ0hhY2tzRWI7CiBfWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlz
QWN0aXZlRXY7CitfWk43V2ViQ29yZTlUcmVlU2NvcGUxMm51bGxJbnN0YW5jZUV2OwogbG9jYWw6
CiBfWio7CiBjdGkqOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152715</attachid>
            <date>2012-07-17 01:26:42 -0700</date>
            <delta_ts>2012-07-17 03:57:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120717172641.patch</filename>
            <type>text/plain</type>
            <size>23553</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNiMDUyNGJlZjgxZGQw
NWMyMTQxOGFlNzJmZTk5MDVkYmY4MzRiZi4uY2JjYjI4ZWRiODUwYzRmMDQ3OTM4NjliYzg4YjMy
YzY4OThjOTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA3LTE3ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRo
aXMgY2hhbmdlLCBOb2RlOjp0cmVlU2NvcGUoKSBmZXRjaGVzIHRoZSBUcmVlU2NvcGUgb2JqZWN0
CisgICAgICAgIGZyb20gRWxlbWVudFJhcmVEYXRhLiBUaGlzIGFwcHJvYWNoIGhhcyBzZXZlcmFs
IHNob3J0Y29taW5nczoKKworICAgICAgICAtIHJhcmVEYXRhKCkgY2FsbCBpcyBzbG93IGR1ZSB0
byBhIGhhc2h0YWJsZSBsb29rdXAuCisgICAgICAgIC0gSW4gc2hhZG93IHRyZWUsIGVhY2ggbm9k
ZSBoYXMgaXRzIHRyZWUgc2NvcGUgaW4gRWxlbWVudFJhcmVEYXRhLAorICAgICAgICAgIHRoYXQg
bWVhbnMgdGhlIHJhcmUtZGF0YSBpcyBubyBsb25nZXIgcmFyZSBpbiB0aGF0IGNhc2UuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZ2V0cyByaWQgb2YgRWxlbWVudFJhcmVEYXRhOjptX3RyZWVTY29w
ZSBieSByZXBsYWNpbmcKKyAgICAgICAgTm9kZTo6bV9kb2N1bWVudCB3aXRoIE5vZGU6Om1fdHJl
ZVNjb3BlLiBBbmQgcmV0cmlldmVzIHRoZQorICAgICAgICBkb2N1bWVudCBvZiBOb2RlIHRocm91
Z2ggbV90cmVlU2NvcGUuCisKKyAgICAgICAgTm90ZSB0aGF0IE5vZGU6OmRvY3VtZW50KCkgaXMg
YSBob3QgZnVuY3Rpb24gYW5kIG5haXZlCisgICAgICAgIHJlcGxhY2VtZW5udCBvZiBtX2RvY3Vt
ZW50IHdpdGggbV90cmVlU2NvcGUgY2FuIGh1cnQgdGhlCisgICAgICAgIHNwZWVkLiBUaGlzIGNo
YW5nZSBlbXBsb3lzIHNvbWUgdHJpY2tzIHRvIGFkZHJlc3MgaXQuCisKKyAgICAgICAgLSBUaGlz
IGNoYW5nZSBpbnRyb2R1Y2VzIE5vZGU6OkluU2hhZG93VHJlZSBmbGFnLCBpZiB0aGUgZmxhZyBp
cyBvZmYsCisgICAgICAgICAgdGhhdCBtZWFucyBtX3RyZWVTY29wZSBpcyBhY3R1YWxseSBhIGRv
Y3VtZW50IGFuIGNhbiBiZSByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LgorICAgICAgICAgIHRoaXMg
ZWxpbWluYXRlcyBhbiBleHRyYWN0IGRlcmVmZXJlbmNlLgorICAgICAgICAtIE5vZGU6Om1fdHJl
ZVNjb3BlIGNhbiBiZSBudWxsLiBCdXQgd2UgZG9uJ3Qgd2FudCB0byBpc3N1ZSBhbnkgZXh0cmEK
KyAgICAgICAgICBjb25kaXRpb25hbCBzdGF0ZW1lbnQuIFNvIHRoaXMgY2hhbmdlIHJlcHJlc2Vu
dHMgYSBudWxsCisgICAgICAgICAgVHJlZVNjb3BlIGFzIFRyZWVTY29wZTo6bnVsbEluc3RhbmNl
KCksIHdoaWNoIHNhdmVzIG9uZSBjb25kaXRpb25hbAorICAgICAgICAgIHN0YXRlbWVudC4KKwor
ICAgICAgICBXaXRoIHRoZXNlIGNoYW5nZXMsIHRoZSBOb2RlOjpkb2N1bWVudCgpIHNsb3dkb3du
IGlzIG1pbmltaXplZCB0bworICAgICAgICB1bm5vdGljZWFibGUgc2l6ZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOiBUb29rIGNhcmUgb2YgY29ubmVjdGlvIGJldHdlbiBUcmVlU2NvcGUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dHJlZVNjb3BlKTogTm93IGp1c3QgcmV0dXJuIG1fdHJlZVNjb3BlLCB0YWtpbmcg
Y2FyZSBvZiBudWxsSW5zdGFuY2UoKSBjYXNlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOiBOb3cganVzdCBzZXRzIG1fdHJlZVNjb3Bl
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnRJbnRlcm5hbCk6IEV4dHJhY3RlZCBm
cm9tIGRvY3VtZW50KCkgdG8gaGF2ZSBBU1NFUlQtZnJlZSB2ZXJzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZG9jdW1lbnQpOiBSZS1pbXBsZW1lbnRlZCBvdmVyIHRyZWVTY29wZSgpIGFu
ZCB0aGUgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKTogUmUt
aW1wbGVtZW50ZWQgdXNpbmcgdHJlZVNjb3BlKCkKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
SW5TaGFkb3dUcmVlKTogTW92ZWQgZnJvbSBOb2RlLmNwcAorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Tm9kZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmluRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKTogRWxpbWluYXRlZCBtX3Ry
ZWVTY29wZS4KKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jv
b3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRy
ZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6c2V0UGFyZW50VHJlZVNjb3BlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OmlzRG9jdW1lbnRTY29wZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjpudWxsSW5zdGFuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6IEFkZGVk
IG1fcGFyZW50VHJlZVNjb3BlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmVlU2NvcGU6OnJvb3REb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAoVHJlZVNjb3BlKToK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6IE5vIGxvbmdlciBjYWxscyBzZXRE
b2N1bWVudCgpCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRv
TmV3U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVU
b05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNw
cDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAg
ICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQu
aCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0
byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5jcHA6IEluY2x1ZGVzIERvY3VtZW50LmggdG8gZmluZCBpbmxpbmVkIE5vZGUg
ZnVuY3Rpb25zCisKIDIwMTItMDctMTcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdIE1vdmUgY29kZXMgcmVsYXRlZCB0byB0aGVtZSBzZXR0aW5n
IGZyb20gV2lkZ2V0IHRvIFJlbmRlclRoZW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDE1ZTIw
MmE2NjVlOGI4OTBkNWFkYjAyZjQyYjM2NjYxZGY3YmQyNTcuLjM3ZmRiZmQ0ODIwMjM4ZTk1MGJl
MWJkMGNlYTNiZjY1Y2I1ZmE1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMDI4LDYgKzEw
MjgsNyBAQCBfX1pON1dlYkNvcmU5VGltZXJCYXNlNHN0b3BFdgogX19aTjdXZWJDb3JlOVRpbWVy
QmFzZTVzdGFydEVkZAogX19aTjdXZWJDb3JlOVRpbWVyQmFzZUMyRXYKIF9fWk43V2ViQ29yZTlU
aW1lckJhc2VEMkV2CitfX1pON1dlYkNvcmU5VHJlZVNjb3BlMTJudWxsSW5zdGFuY2VFdgogX19a
TjdXZWJDb3JlOWNsb3NlRmlsZUVSaQogX19aTjdXZWJDb3JlOWVuZE9mV29yZEVSS05TXzE1Vmlz
aWJsZVBvc2l0aW9uRU5TXzlFV29yZFNpZGVFCiBfX1pON1dlYkNvcmU5Zm9udENhY2hlRXYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDcyNGYxMWQ4NThmOWRmMTMzM2Y4NTE1ZjhkNjgyNDA3
NDIwMDc4ODMuLjE4MDg2NDA4ZGY4OGU0N2RhNzg0ZWQwNDJkMTkxYzgxMWI1MDRkMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDIxLDcgKzQyMSw3IEBAIHVpbnQ2NF90IERvY3VtZW50
OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAogRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgIDog
Q29udGFpbmVyTm9kZSgwLCBDcmVhdGVEb2N1bWVudCkKLSAgICAsIFRyZWVTY29wZSh0aGlzKQor
ICAgICwgVHJlZVNjb3BlKHRoaXMsIHRoaXMpCiAgICAgLCBtX2d1YXJkUmVmQ291bnQoMCkKICAg
ICAsIG1fY29udGV4dEZlYXR1cmVzKENvbnRleHRGZWF0dXJlczo6ZGVmYXVsdFN3aXRjaCgpKQog
ICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZShOb1F1aXJrc01vZGUpCkBAIC00OTMsNyArNDkzLDcg
QEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29s
IGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVy
dGllc0NoYW5nZWQoZmFsc2UpCiAjZW5kaWYKIHsKLSAgICBtX2RvY3VtZW50ID0gdGhpczsKKyAg
ICBzZXRUcmVlU2NvcGUodGhpcyk7CiAKICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFs
aWQgPSBmYWxzZTsKIApAQCAtNjYzLDcgKzY2Myw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKG1fY29sbGVjdGlv
bnMpOyBpKyspCiAgICAgICAgIEFTU0VSVCghbV9jb2xsZWN0aW9uc1tpXSk7CiAKLSAgICBtX2Rv
Y3VtZW50ID0gMDsKKyAgICBzZXRUcmVlU2NvcGUoMCk7CiAKICAgICBJbnNwZWN0b3JDb3VudGVy
czo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9jdW1lbnRDb3VudGVyKTsK
IH0KQEAgLTEzMzcsMTMgKzEzMzcsMTQgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudChjb25z
dCBTdHJpbmcmIGNvbnRlbnQpCiAKIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUo
KSBjb25zdAogewotICAgIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKKyAgICBE
b2N1bWVudCogZG9jID0gZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jLT5pc1hIVE1MRG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiOwotICAgIGlmIChtX2Rv
Y3VtZW50LT5pc1NWR0RvY3VtZW50KCkpCisgICAgaWYgKGRvYy0+aXNTVkdEb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gImltYWdlL3N2Zyt4bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT54bWxT
dGFuZGFsb25lKCkpCisgICAgaWYgKGRvYy0+eG1sU3RhbmRhbG9uZSgpKQogICAgICAgICByZXR1
cm4gInRleHQveG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKKyAg
ICBpZiAoZG9jLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gInRleHQvaHRtbCI7
CiAKICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbG9hZGVyKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDZiOWQwYTMyZjgyMWNjZDc4ZGM1NGNiZGE4YWM1NmY5YTcw
Mzg5YzEuLmFlNWY1YzcxZTUyYjE2M2ZlODJlZjk1YTA0N2YwMzcwMzcyODE4MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xNTM5LDIwICsxNTM5LDUzIEBAIHByaXZhdGU6CiAKIC8vIFB1dCB0
aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZp
bml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCiAKK2lubGluZSBUcmVl
U2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJlZVNjb3Bl
ID09IFRyZWVTY29wZTo6bnVsbEluc3RhbmNlKCkgPyAwIDogbV90cmVlU2NvcGU7Cit9CisKK2lu
bGluZSB2b2lkIE5vZGU6OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQoreworICAgIG1f
dHJlZVNjb3BlID0gc2NvcGUgPyBzY29wZSA6IFRyZWVTY29wZTo6bnVsbEluc3RhbmNlKCk7Cisg
ICAgc2V0RmxhZyghbV90cmVlU2NvcGUtPmlzRG9jdW1lbnRTY29wZSgpLCBJblNoYWRvd1RyZWUp
OworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6OmRvY3VtZW50SW50ZXJuYWwoKSBjb25zdAor
eworICAgIGlmIChnZXRGbGFnKEluU2hhZG93VHJlZSkpCisgICAgICAgIHJldHVybiBtX3RyZWVT
Y29wZS0+cm9vdERvY3VtZW50KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
bV90cmVlU2NvcGUpOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6OmRvY3VtZW50KCkgY29u
c3QKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb2N1bWVudEludGVybmFsKCk7CisgICAg
Ly8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9m
IGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKKyAgICAvLyBkdWUg
dG8gdGhlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgorICAgIEFTU0VSVChk
b2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1l
bnQoKSkpOworICAgIHJldHVybiBkb2N1bWVudDsKK30KKwogaW5saW5lIGJvb2wgTm9kZTo6aXNE
b2N1bWVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7Cisg
ICAgcmV0dXJuIHRoaXMgPT0gZG9jdW1lbnRJbnRlcm5hbCgpOworfQorCitpbmxpbmUgYm9vbCBO
b2RlOjppc0luU2hhZG93VHJlZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRyZWVTY29wZSgpICE9
IGRvY3VtZW50KCk7CiB9CiAKIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwg
Q29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgIDogbV9ub2RlRmxhZ3ModHlwZSkKLSAgICAsIG1f
ZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3RyZWVTY29wZSgwKQogICAgICwgbV9wcmV2aW91
cygwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX3JlbmRlcmVyKDApCiB7CiAgICAgaWYgKGRv
Y3VtZW50KQogICAgICAgICBkb2N1bWVudC0+Z3VhcmRSZWYoKTsKKyAgICBzZXRUcmVlU2NvcGUo
ZG9jdW1lbnQpOwogI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgKGRlZmluZWQoRFVNUF9OT0RFX1NU
QVRJU1RJQ1MpICYmIERVTVBfTk9ERV9TVEFUSVNUSUNTKQogICAgIHRyYWNrRm9yRGVidWdnaW5n
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBjYjUyMDk0ZGI3MjRhMmNlNTNhOGU3ZTcy
N2RlNTUxMWM0MzIwMzU3Li5lYjgxNjljYTU5ZjIwZjNiMTU0NDNlOWYzNTQzNjExODU2Y2M1YWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MDYsNyArNDA2LDcgQEAgTm9kZTo6fk5vZGUoKQogICAg
IGlmIChyZW5kZXJlcigpKQogICAgICAgICBkZXRhY2goKTsKIAotICAgIERvY3VtZW50KiBkb2Mg
PSBtX2RvY3VtZW50OworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudEludGVybmFsKCk7CiAg
ICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZG9jICYmIGRv
Yy0+YXhPYmplY3RDYWNoZUV4aXN0cygpKQogICAgICAgICBkb2MtPmF4T2JqZWN0Q2FjaGUoKS0+
cmVtb3ZlTm9kZUZvclVzZSh0aGlzKTsKICAgICAKQEAgLTQyMSw0MSArNDIxLDYgQEAgTm9kZTo6
fk5vZGUoKQogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3Rv
ckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiB9CiAKLXZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQotewotICAgIEFTU0VSVCghaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1l
bnQgPT0gZG9jdW1lbnQpOwotICAgIGlmIChpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBk
b2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kb2N1bWVudCA9IGRvY3VtZW50Owot
fQotCi1Ob2RlUmFyZURhdGEqIE5vZGU6OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQot
ewotICAgIGlmICghc2NvcGUpIHsKLSAgICAgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKLSAgICAg
ICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IHJhcmVEYXRhKCk7Ci0gICAgICAgICAgICBkYXRh
LT5zZXRUcmVlU2NvcGUoMCk7Ci0gICAgICAgICAgICByZXR1cm4gZGF0YTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGVu
c3VyZVJhcmVEYXRhKCk7Ci0gICAgZGF0YS0+c2V0VHJlZVNjb3BlKHNjb3BlKTsKLSAgICByZXR1
cm4gZGF0YTsKLX0KLQotVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAotewotICAg
IC8vIEZJWE1FOiBVc2luZyBtX2RvY3VtZW50IGRpcmVjdGx5IGlzIG5vdCBnb29kIC0+IHNlZSBj
b21tZW50IHdpdGggZG9jdW1lbnQoKSBpbiB0aGUgaGVhZGVyIGZpbGUuCi0gICAgaWYgKCFoYXNS
YXJlRGF0YSgpKQotICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICBUcmVlU2NvcGUqIHNj
b3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7Ci0gICAgcmV0dXJuIHNjb3BlID8gc2NvcGUg
OiBtX2RvY3VtZW50OwotfQotCiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CkBAIC0xNDQ0LDExICsxNDA5LDYgQEAgQ29u
dGFpbmVyTm9kZSogTm9kZTo6bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkgY29uc3QKICAg
ICByZXR1cm4gcGFyZW50ICYmICFwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gcGFyZW50IDogMDsK
IH0KIAotYm9vbCBOb2RlOjppc0luU2hhZG93VHJlZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRy
ZWVTY29wZSgpICE9IGRvY3VtZW50KCk7Ci19Ci0KIEVsZW1lbnQqIE5vZGU6OnBhcmVudE9ySG9z
dEVsZW1lbnQoKSBjb25zdAogewogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9y
SG9zdE5vZGUoKTsKQEAgLTI3NzEsNyArMjczMSw3IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBNZW1v
cnlDbGFzc0luZm88Tm9kZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OkRPTSk7CiAgICAgaW5mby52aXNpdEJhc2VDbGFzczxUcmVlU2hhcmVkPE5v
ZGUsIENvbnRhaW5lck5vZGU+ID4odGhpcyk7CiAgICAgaW5mby52aXNpdEJhc2VDbGFzczxTY3Jp
cHRXcmFwcGFibGU+KHRoaXMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZG9j
dW1lbnQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGRvY3VtZW50KCkpOwogICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fbmV4dCk7CiAgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9wcmV2aW91cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBjOWEyOGY0OWQyZTBm
NTAyZTY3ODJlOTY3ZjQxMDU2MzM3MjEwMzhlLi4xYjYzNmU3ZGU3MGMwYjMyZDgzNTMwMjc3MDA5
Y2U0MWRjY2MxYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQwNywxNCArNDA3LDcgQEAgcHVibGljOgog
CiAgICAgLy8gUmV0dXJucyB0aGUgZG9jdW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbm9kZS4g
VGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBOVUxMLCBleGNlcHQgaW4gdGhlIGNhc2UgCiAgICAg
Ly8gb2YgYSBEb2N1bWVudFR5cGUgbm9kZSB0aGF0IGlzIG5vdCB1c2VkIHdpdGggYW55IERvY3Vt
ZW50IHlldC4gQSBEb2N1bWVudCBub2RlIHJldHVybnMgaXRzZWxmLgotICAgIERvY3VtZW50KiBk
b2N1bWVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodGhpcyk7Ci0gICAgICAgIC8v
IEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQgcHJldmVudHMgdGhlIHVzZSBvZiBk
b2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yCi0gICAgICAgIC8vIGR1
ZSB0byB0aGUgdmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCkuCi0gICAgICAgIEFT
U0VSVChtX2RvY3VtZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAh
aW5Eb2N1bWVudCgpKSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIH0KKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkg
Y29uc3Q7CiAKQEAgLTQyMiw3ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gbm9kZSB0cmVlLCBm
YWxzZSBvdGhlcndpc2UuCiAgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QgCiAgICAgeyAKLSAg
ICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAg
ICAgICAgQVNTRVJUKHRyZWVTY29wZSgpIHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CiAg
ICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CiAKQEAgLTY5Miwx
MCArNjg1LDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgSW5OYW1lZEZsb3dGbGFnID0g
MSA8PCAyNiwKICAgICAgICAgSGFzQXR0ckxpc3RGbGFnID0gMSA8PCAyNywKLSAgICAgICAgSGFz
Q3VzdG9tQ2FsbGJhY2tzRmxhZyA9IDEgPDwgMjgKKyAgICAgICAgSGFzQ3VzdG9tQ2FsbGJhY2tz
RmxhZyA9IDEgPDwgMjgsCisgICAgICAgIEluU2hhZG93VHJlZSA9IDEgPDwgMjkKKwogICAgIH07
CiAKLSAgICAvLyA0IGJpdHMgcmVtYWluaW5nCisgICAgLy8gMyBiaXRzIHJlbWFpbmluZwogCiAg
ICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFn
cyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29u
c3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAm
IG1hc2spOyB9IApAQCAtNzMxLDE2ICs3MjYsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBz
ZXRIYXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3VzdG9tQ2FsbGJhY2tz
RmxhZyk7IH0KIAorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOworICAgIERvY3Vt
ZW50KiBkb2N1bWVudEludGVybmFsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKICAgICB2b2lkIHJlbW92ZWRM
YXN0UmVmKCk7CiAKLSAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0
cmVlIHNjb3BlIG1pZ3JhdGlvbi4KLSAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVS
YXJlRGF0YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBj
YWxsZXIgc2l0ZS4KLSAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsK
LSAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0KICAgICBlbnVtIEVkaXRhYmxlTGV2
ZWwgeyBFZGl0YWJsZSwgUmljaGx5RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0
YWJsZShFZGl0YWJsZUxldmVsKSBjb25zdDsKICAgICBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2li
aWxpdHkoRWRpdGFibGVMZXZlbCkgY29uc3Q7CkBAIC03ODMsNyArNzc2LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVu
dCogbV9kb2N1bWVudDsKKyAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1f
cHJldmlvdXM7CiAgICAgTm9kZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCAwYmRjM2U4YWMyMDU3ZTFjMTg0Zjhk
Y2E1OTE5ODVlZTVlOWZiMDc1Li5iODRhNGIwOWZkMzI3NWUwNGJlOTRkNjA0NGQyMGQ2Y2NhOTdi
ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xODQsOCArMTg0LDcgQEAgY2xh
c3MgTm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFyZURhdGEp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9kZVJhcmVEYXRh
KCkKLSAgICAgICAgOiBtX3RyZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgw
KQorICAgICAgICA6IG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkK
ICAgICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBt
X2lzRm9jdXNlZChmYWxzZSkKQEAgLTIxMyw5ICsyMTIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiByYXJlRGF0YU1hcCgpLmdldChub2RlKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRy
ZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVl
U2NvcGUoVHJlZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0K
LSAgICAKICAgICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9
CiAgICAgdm9pZCBzZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlz
dHMpIHsgbV9ub2RlTGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2Rl
TGlzdHMoKSBjb25zdCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpAQCAtMzQ5LDcgKzM0
NSw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKIAotICAgIFRyZWVTY29wZSogbV90cmVlU2Nv
cGU7CiAgICAgT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBDaGls
ZE5vZGVMaXN0KiBtX2NoaWxkTm9kZUxpc3Q7CiAgICAgT3duUHRyPEV2ZW50VGFyZ2V0RGF0YT4g
bV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjdiYjg2
MThlZGUzODM1NDhiMzViNGI4NDQ3NGQ0NDkzMmQ5NWYwZS4uYjU4NjY4N2MxMWE2ZDg3MGZhZTk0
ZjhlNzQwMjJhYjU0ODRhZmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNDYs
NyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3Qo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3Jl
YXRlU2hhZG93Um9vdCkKLSAgICAsIFRyZWVTY29wZSh0aGlzKQorICAgICwgVHJlZVNjb3BlKHRo
aXMsIGRvY3VtZW50KQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1f
YXBwbHlBdXRob3JTdHlsZXMoZmFsc2UpCkBAIC01NSwxMSArNTUsOSBAQCBTaGFkb3dSb290OjpT
aGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwog
ICAgIAotICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUuCi0gICAgc2V0UGFy
ZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKICAgICAvLyBTaGFkb3cgdHJlZSBzY29wZXMgaGF2ZSB0
aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgogICAgIC8vIFRoaXMgd2F5LCBk
aXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3BlIHBvaW50ZXIuCi0g
ICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAgIHNldFRyZWVTY29w
ZSh0aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcAppbmRleCBlODhiMTNhYjg4ZTc1ZWExMzQ3MWQ0OTBkNmQ5ZTM2YjkzOWM3OTEyLi4w
MzJlZGYxMjZlMDgwN2Q0MTc1ZTJlZGI5Y2U1ZDEyODkzOWZhZjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmNwcApAQCAtNTIsMTQgKzUyLDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFpbmVy
Tm9kZSogcm9vdE5vZGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290
Tm9kZSwgRG9jdW1lbnQqIHJvb3REb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUp
Ci0gICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9yb290RG9jdW1lbnQocm9vdERv
Y3VtZW50KQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUocm9vdE5vZGUgPT0gcm9vdERvY3VtZW50
ID8gMCA6IHJvb3REb2N1bWVudCkKICAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6Y3JlYXRlKCkpCiB7CiAgICAgQVNTRVJUKHJvb3ROb2Rl
KTsKIH0KIAorVHJlZVNjb3BlOjpUcmVlU2NvcGUoKQorICAgIDogbV9yb290Tm9kZSgwKQorICAg
ICwgbV9yb290RG9jdW1lbnQoMCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCit7Cit9CisK
IFRyZWVTY29wZTo6flRyZWVTY29wZSgpCiB7CiAgICAgaWYgKG1fc2VsZWN0aW9uKSB7CkBAIC04
Miw2ICs5MCw3IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3Bl
KiBuZXdQYXJlbnRTY29wZSkKICAgICBBU1NFUlQobmV3UGFyZW50U2NvcGUpOwogCiAgICAgbV9w
YXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKKyAgICBtX3Jvb3REb2N1bWVudCA9IG5l
d1BhcmVudFNjb3BlLT5yb290RG9jdW1lbnQoKTsKIH0KIAogRWxlbWVudCogVHJlZVNjb3BlOjpn
ZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKQEAgLTI0
OCw2ICsyNTcsMTEgQEAgTm9kZSogVHJlZVNjb3BlOjpmb2N1c2VkTm9kZSgpCiAgICAgcmV0dXJu
IDA7CiB9CiAKK2Jvb2wgVHJlZVNjb3BlOjppc0RvY3VtZW50U2NvcGUoKSBjb25zdAoreworICAg
IHJldHVybiB0aGlzID09IG1fcm9vdERvY3VtZW50OworfQorCiBzdGF0aWMgdm9pZCBsaXN0VHJl
ZVNjb3BlcyhOb2RlKiBub2RlLCBWZWN0b3I8VHJlZVNjb3BlKiwgNT4mIHRyZWVTY29wZXMpCiB7
CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTI4MSw1ICsyOTUsMTEgQEAgVHJlZVNjb3BlKiBjb21t
b25UcmVlU2NvcGUoTm9kZSogbm9kZUEsIE5vZGUqIG5vZGVCKQogICAgIHJldHVybiB0cmVlU2Nv
cGVzQVtpbmRleEFdID09IHRyZWVTY29wZXNCW2luZGV4Ql0gPyB0cmVlU2NvcGVzQVtpbmRleEFd
IDogMDsKIH0KIAorVHJlZVNjb3BlKiBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChUcmVlU2NvcGUsIGluc3RhbmNlLCAoKSk7CisgICAgcmV0dXJu
ICZpbnN0YW5jZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmgKaW5kZXggODQxYmJiNmMxY2JiOWNjMTk2ZjAxOTQyMDhjNGE3MGU5ODIxZDhmNS4uZjkz
M2M2ZjI1Y2ZkOTczYjU0ZDBlMzRiZmYyNmMxZGY4NDM1NzlhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRh
aW5lck5vZGU7CiBjbGFzcyBET01TZWxlY3Rpb247CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeTsKQEAgLTc4LDE3ICs3OSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZG9wdElmTmVlZGVk
KE5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9yb290Tm9kZTsgfQotCisgICAgRG9jdW1lbnQqIHJvb3REb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcm9vdERvY3VtZW50OyB9CisgICAgYm9vbCBpc0RvY3VtZW50U2NvcGUoKSBjb25zdDsK
ICAgICBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkmIGlkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgp
IGNvbnN0IHsgcmV0dXJuICptX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5nZXQoKTsgfQogCisg
ICAgc3RhdGljIFRyZWVTY29wZSogbnVsbEluc3RhbmNlKCk7CisKIHByb3RlY3RlZDoKLSAgICBU
cmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOworICAgIFRyZWVTY29wZShDb250YWluZXJOb2RlKiwg
RG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogICAgIHZvaWQgZGVzdHJv
eVRyZWVTY29wZURhdGEoKTsKIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUoKTsKKwogICAgIENv
bnRhaW5lck5vZGUqIG1fcm9vdE5vZGU7CisgICAgRG9jdW1lbnQqIG1fcm9vdERvY3VtZW50Owog
ICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBEb2N1bWVudE9yZGVyZWRN
YXAgbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAK
aW5kZXggMzYwMWUwODU5OGI1N2MwNGRmMTMzY2Q0MTA4ZTRkMmViZTlmYjViOC4uMWRmYjVjZWY1
Yjk0NjBiYjM0NjMyNWJmY2E2NTU1ZTQ0MTMzYzU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGVBZG9wdGVyLmNwcApAQCAtNDksNyArNDksOSBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6
Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBjb25zdAogICAgICAgICBvbGREb2N1bWVu
dC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5v
ZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7Ci0gICAgICAgIGlmIChO
b2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+c2V0VHJlZVNjb3BlKG5ld0RvY3VtZW50ID09
IG1fbmV3U2NvcGUgPyAwIDogbV9uZXdTY29wZSkpIHsKKyAgICAgICAgbm9kZS0+c2V0VHJlZVNj
b3BlKG1fbmV3U2NvcGUpOworICAgICAgICBpZiAobm9kZS0+aGFzUmFyZURhdGEoKSkgeworICAg
ICAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7CiAgICAg
ICAgICAgICBpZiAocmFyZURhdGEtPm5vZGVMaXN0cygpKQogICAgICAgICAgICAgICAgIHJhcmVE
YXRhLT5ub2RlTGlzdHMoKS0+YWRvcHRUcmVlU2NvcGUob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50
KTsKICAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpCkBAIC05Niw4ICs5OCw2
IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChO
b2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAg
ICBvbGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0Rv
Y3VtZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3VtZW50KTsKLQogI2lmbmRl
ZiBOREVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOwogICAg
IG9sZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gb2xkRG9jdW1l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5NDM4ZjQ1OWRjZmExMzQuLjViZjU0NTQx
MzIzYzA3OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCIKIAorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMTk2NTdhYzBmYzc3MjEyMjM1ODM1NzRiYzZi
ZDIwODFkM2RjNzY5Ni4uOGJlMjA3MDYxNGM0OTUzMTM4YTNjNTlmMDVmNDc1YmViM2JkYjQ0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlQ29t
bWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAppbmRl
eCAxNDUyZjg4MDNmYWJjNTcwYTI1NGZhNWEyZTk2ZTQwZjE0ZGVhOWM1Li4yODFmZGJkZjMyYmQ1
MDUxY2RlYmQyNzVmZGYwNjk0NWZhYmVlZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZjU1ZGRh
NThmMDYyOTk1YTQ4YmI3M2Q2ODM2ZjZhNjJlZTcyNWY5Mi4uYjBkNTI3NTQxZWU4MTYzNDA5MjU1
MjhlZTU0YjYxYmFkNGExNmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
Q29uc29sZUFnZW50LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlBhZ2VDb25zb2xl
QWdlbnQuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZgppbmRleCA1NjM3NTgwNjQzZWFhYWZjODM5YjUyNGNhMzBjOGNhYTZjN2UyMGIyLi5kOGUw
YTZmNTI1YzIwYTI5NDJhOWU5ZmVmNThkYWNhMDY5ZGM5MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCkBAIC0yNTMsNiArMjUzLDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0cm95ZWRA
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/MENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRpb25D
b250ZXh0QDFAQFoKKyAgICAgICAgP251bGxJbnN0YW5jZUBUcmVlU2NvcGVAV2ViQ29yZUBAU0FQ
QVYxMkBYWgogICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/
JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMEBaCiAgICAgICAg
ID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtl
clR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID93ZWJraXRXaWxsRW50ZXJGdWxs
U2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMGU1ZDFiMmM3MTE3OWJiNjdhOTlj
ZjE2NDc1ZTcyMGMzZjFlNjRkOS4uMzJmNGU4NzQ4MzdmYTBhMWM0MjMxNGMxYjEzZjk0MGM1OWMy
YjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisr
KyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMjQ2LDYgKzI0Niw3
IEBAIEVYUE9SVFMKICAgICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/
QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCiAgICAgICAgID91dGY4QFN0cmlu
Z0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBfTkBaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNv
cmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCisgICAgICAgID9udWxsSW5zdGFuY2VAVHJlZVNjb3Bl
QFdlYkNvcmVAQFNBUEFWMTJAWFoKICAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2Vi
Q29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlf
TjBAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVA
QFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/cmVzdHJp
Y3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGVAV2ViQ29yZUBAWUFY
QUFVVmlld3BvcnRBdHRyaWJ1dGVzQDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDVk
ZWY0NzQ3MWQ1ZjY3ODEwMGMwNzhhNGMxMDcxMTBiNzVmMmUxMWUuLjA4YjI2NjRhMGM4ZDc2MTkw
NjRiODUxNWVkNjYyYzJjNjgzZWYzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTY3
LDYgKzE2Nyw3IEBAIF9aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3RpdmVFdjsKIF9a
TjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckQyRXY7CiBfWk43V2ViQ29yZTI2
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJDMkVQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0
RTsKIF9aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjE2Y29udGV4dERlc3Ry
b3llZEV2OworX1pON1dlYkNvcmU5VHJlZVNjb3BlMTJudWxsSW5zdGFuY2VFdjsKIGxvY2FsOgog
X1oqOwogY3RpKjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152727</attachid>
            <date>2012-07-17 03:58:04 -0700</date>
            <delta_ts>2012-07-19 22:10:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20120717195803.patch</filename>
            <type>text/plain</type>
            <size>23850</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFjMzNhZjAyNzQ3ODdk
NGJiMzJjZWM1YWQ1OTExMDdhNTY1NmNhMS4uZDc1NDEzNzFlNTU5YzFhZTIzZTllNTA1NmU5ZTBl
MjViNmNjMjlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA3LTE3ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRo
aXMgY2hhbmdlLCBOb2RlOjp0cmVlU2NvcGUoKSBmZXRjaGVzIHRoZSBUcmVlU2NvcGUgb2JqZWN0
CisgICAgICAgIGZyb20gRWxlbWVudFJhcmVEYXRhLiBUaGlzIGFwcHJvYWNoIGhhcyBzZXZlcmFs
IHNob3J0Y29taW5nczoKKworICAgICAgICAtIHJhcmVEYXRhKCkgY2FsbCBpcyBzbG93IGR1ZSB0
byBhIGhhc2h0YWJsZSBsb29rdXAuCisgICAgICAgIC0gSW4gc2hhZG93IHRyZWUsIGVhY2ggbm9k
ZSBoYXMgaXRzIHRyZWUgc2NvcGUgaW4gRWxlbWVudFJhcmVEYXRhLAorICAgICAgICAgIHRoYXQg
bWVhbnMgdGhlIHJhcmUtZGF0YSBpcyBubyBsb25nZXIgcmFyZSBpbiB0aGF0IGNhc2UuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZ2V0cyByaWQgb2YgRWxlbWVudFJhcmVEYXRhOjptX3RyZWVTY29w
ZSBieSByZXBsYWNpbmcKKyAgICAgICAgTm9kZTo6bV9kb2N1bWVudCB3aXRoIE5vZGU6Om1fdHJl
ZVNjb3BlLiBBbmQgcmV0cmlldmVzIHRoZQorICAgICAgICBkb2N1bWVudCBvZiBOb2RlIHRocm91
Z2ggbV90cmVlU2NvcGUuCisKKyAgICAgICAgTm90ZSB0aGF0IE5vZGU6OmRvY3VtZW50KCkgaXMg
YSBob3QgZnVuY3Rpb24gYW5kIG5haXZlCisgICAgICAgIHJlcGxhY2VtZW5udCBvZiBtX2RvY3Vt
ZW50IHdpdGggbV90cmVlU2NvcGUgY2FuIGh1cnQgdGhlCisgICAgICAgIHNwZWVkLiBUaGlzIGNo
YW5nZSBlbXBsb3lzIHNvbWUgdHJpY2tzIHRvIGFkZHJlc3MgaXQuCisKKyAgICAgICAgLSBUaGlz
IGNoYW5nZSBpbnRyb2R1Y2VzIE5vZGU6OkluU2hhZG93VHJlZSBmbGFnLCBpZiB0aGUgZmxhZyBp
cyBvZmYsCisgICAgICAgICAgdGhhdCBtZWFucyBtX3RyZWVTY29wZSBpcyBhY3R1YWxseSBhIGRv
Y3VtZW50IGFuIGNhbiBiZSByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LgorICAgICAgICAgIHRoaXMg
ZWxpbWluYXRlcyBhbiBleHRyYWN0IGRlcmVmZXJlbmNlLgorICAgICAgICAtIE5vZGU6Om1fdHJl
ZVNjb3BlIGNhbiBiZSBudWxsLiBCdXQgd2UgZG9uJ3Qgd2FudCB0byBpc3N1ZSBhbnkgZXh0cmEK
KyAgICAgICAgICBjb25kaXRpb25hbCBzdGF0ZW1lbnQuIFNvIHRoaXMgY2hhbmdlIHJlcHJlc2Vu
dHMgYSBudWxsCisgICAgICAgICAgVHJlZVNjb3BlIGFzIFRyZWVTY29wZTo6bnVsbEluc3RhbmNl
KCksIHdoaWNoIHNhdmVzIG9uZSBjb25kaXRpb25hbAorICAgICAgICAgIHN0YXRlbWVudC4KKwor
ICAgICAgICBXaXRoIHRoZXNlIGNoYW5nZXMsIHRoZSBOb2RlOjpkb2N1bWVudCgpIHNsb3dkb3du
IGlzIG1pbmltaXplZCB0bworICAgICAgICB1bm5vdGljZWFibGUgc2l6ZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOiBUb29rIGNhcmUgb2YgY29ubmVjdGlvIGJldHdlbiBUcmVlU2NvcGUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dHJlZVNjb3BlKTogTm93IGp1c3QgcmV0dXJuIG1fdHJlZVNjb3BlLCB0YWtpbmcg
Y2FyZSBvZiBudWxsSW5zdGFuY2UoKSBjYXNlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOiBOb3cganVzdCBzZXRzIG1fdHJlZVNjb3Bl
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnRJbnRlcm5hbCk6IEV4dHJhY3RlZCBm
cm9tIGRvY3VtZW50KCkgdG8gaGF2ZSBBU1NFUlQtZnJlZSB2ZXJzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZG9jdW1lbnQpOiBSZS1pbXBsZW1lbnRlZCBvdmVyIHRyZWVTY29wZSgpIGFu
ZCB0aGUgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKTogUmUt
aW1wbGVtZW50ZWQgdXNpbmcgdHJlZVNjb3BlKCkKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5v
ZGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjppbkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzSW5TaGFkb3dUcmVlKTog
UmV3cm90ZSB0byB1c2UgSW5TaGFkb3dUcmVlIGZsYWcuCisgICAgICAgICogZG9tL05vZGVSYXJl
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEpOiBF
bGltaW5hdGVkIG1fdHJlZVNjb3BlLgorICAgICAgICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpTaGFk
b3dSb290KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRyZWVTY29wZTo6aXNEb2N1bWVudFNjb3BlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9UcmVl
U2NvcGUuaDogQWRkZWQgbV9wYXJlbnRUcmVlU2NvcGUuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6cm9vdERvY3VtZW50KTogQWRkZWQuCisgICAgICAg
IChUcmVlU2NvcGUpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcDogTm8gbG9u
Z2VyIGNhbGxzIHNldERvY3VtZW50KCkKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0
ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9w
dGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvTW92ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwOiBJbmNsdWRlcyBEb2N1bWVudC5oIHRvIGZpbmQgaW5saW5lZCBOb2Rl
IGZ1bmN0aW9ucworICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwOiBJbmNs
dWRlcyBEb2N1bWVudC5oIHRvIGZpbmQgaW5saW5lZCBOb2RlIGZ1bmN0aW9ucworICAgICAgICAq
IGVkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwOiBJbmNsdWRl
cyBEb2N1bWVudC5oIHRvIGZpbmQgaW5saW5lZCBOb2RlIGZ1bmN0aW9ucworICAgICAgICAqIGlu
c3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0byBmaW5k
IGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKwogMjAxMi0wNy0xNyAgS3dhbmcgWXVsIFNlbyAgPHNr
eXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgICJpbiBib2R5IiBpbnNlcnRpb24gbW9kZSwg
ImFueSBvdGhlciBlbmQgdGFnIiBzdGVwIDIuMSBpcyB1cGRhdGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDE1ZTIwMmE2NjVlOGI4OTBkNWFkYjAyZjQyYjM2NjYxZGY3YmQyNTcuLjM3ZmRiZmQ0
ODIwMjM4ZTk1MGJlMWJkMGNlYTNiZjY1Y2I1ZmE1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0xMDI4LDYgKzEwMjgsNyBAQCBfX1pON1dlYkNvcmU5VGltZXJCYXNlNHN0b3BFdgogX19aTjdX
ZWJDb3JlOVRpbWVyQmFzZTVzdGFydEVkZAogX19aTjdXZWJDb3JlOVRpbWVyQmFzZUMyRXYKIF9f
Wk43V2ViQ29yZTlUaW1lckJhc2VEMkV2CitfX1pON1dlYkNvcmU5VHJlZVNjb3BlMTJudWxsSW5z
dGFuY2VFdgogX19aTjdXZWJDb3JlOWNsb3NlRmlsZUVSaQogX19aTjdXZWJDb3JlOWVuZE9mV29y
ZEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzlFV29yZFNpZGVFCiBfX1pON1dlYkNvcmU5Zm9u
dENhY2hlRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDcyNGYxMWQ4NThmOWRmMTMzM2Y4
NTE1ZjhkNjgyNDA3NDIwMDc4ODMuLjE4MDg2NDA4ZGY4OGU0N2RhNzg0ZWQwNDJkMTkxYzgxMWI1
MDRkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDIxLDcgKzQyMSw3IEBAIHVpbnQ2
NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAogRG9jdW1lbnQ6OkRvY3Vt
ZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNI
VE1MKQogICAgIDogQ29udGFpbmVyTm9kZSgwLCBDcmVhdGVEb2N1bWVudCkKLSAgICAsIFRyZWVT
Y29wZSh0aGlzKQorICAgICwgVHJlZVNjb3BlKHRoaXMsIHRoaXMpCiAgICAgLCBtX2d1YXJkUmVm
Q291bnQoMCkKICAgICAsIG1fY29udGV4dEZlYXR1cmVzKENvbnRleHRGZWF0dXJlczo6ZGVmYXVs
dFN3aXRjaCgpKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZShOb1F1aXJrc01vZGUpCkBAIC00
OTMsNyArNDkzLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9kaWREaXNwYXRjaFZp
ZXdwb3J0UHJvcGVydGllc0NoYW5nZWQoZmFsc2UpCiAjZW5kaWYKIHsKLSAgICBtX2RvY3VtZW50
ID0gdGhpczsKKyAgICBzZXRUcmVlU2NvcGUodGhpcyk7CiAKICAgICBtX3BhZ2VHcm91cFVzZXJT
aGVldENhY2hlVmFsaWQgPSBmYWxzZTsKIApAQCAtNjYzLDcgKzY2Myw3IEBAIERvY3VtZW50Ojp+
RG9jdW1lbnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KG1fY29sbGVjdGlvbnMpOyBpKyspCiAgICAgICAgIEFTU0VSVCghbV9jb2xsZWN0aW9uc1tpXSk7
CiAKLSAgICBtX2RvY3VtZW50ID0gMDsKKyAgICBzZXRUcmVlU2NvcGUoMCk7CiAKICAgICBJbnNw
ZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9jdW1l
bnRDb3VudGVyKTsKIH0KQEAgLTEzMzcsMTMgKzEzMzcsMTQgQEAgdm9pZCBEb2N1bWVudDo6c2V0
Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAKIFN0cmluZyBEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUoKSBjb25zdAogewotICAgIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1l
bnQoKSkKKyAgICBEb2N1bWVudCogZG9jID0gZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jLT5pc1hI
VE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiOwot
ICAgIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpCisgICAgaWYgKGRvYy0+aXNTVkdE
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImltYWdlL3N2Zyt4bWwiOwotICAgIGlmIChtX2Rv
Y3VtZW50LT54bWxTdGFuZGFsb25lKCkpCisgICAgaWYgKGRvYy0+eG1sU3RhbmRhbG9uZSgpKQog
ICAgICAgICByZXR1cm4gInRleHQveG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNIVE1MRG9j
dW1lbnQoKSkKKyAgICBpZiAoZG9jLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
InRleHQvaHRtbCI7CiAKICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0g
bG9hZGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDZiOWQwYTMyZjgyMWNjZDc4ZGM1NGNi
ZGE4YWM1NmY5YTcwMzg5YzEuLjE5OGY1MzYzMmVkZjEwMjcyMWVjM2E4YmU1NTY3Nzc5N2Q0MTg0
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNTM5LDIwICsxNTM5LDQ4IEBAIHByaXZhdGU6
CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBE
b2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCiAK
K2lubGluZSBUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdHJlZVNjb3BlID09IFRyZWVTY29wZTo6bnVsbEluc3RhbmNlKCkgPyAwIDogbV90cmVlU2Nv
cGU7Cit9CisKK2lubGluZSB2b2lkIE5vZGU6OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3Bl
KQoreworICAgIG1fdHJlZVNjb3BlID0gc2NvcGUgPyBzY29wZSA6IFRyZWVTY29wZTo6bnVsbElu
c3RhbmNlKCk7CisgICAgc2V0RmxhZyghbV90cmVlU2NvcGUtPmlzRG9jdW1lbnRTY29wZSgpLCBJ
blNoYWRvd1RyZWUpOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6OmRvY3VtZW50SW50ZXJu
YWwoKSBjb25zdAoreworICAgIGlmIChnZXRGbGFnKEluU2hhZG93VHJlZSkpCisgICAgICAgIHJl
dHVybiBtX3RyZWVTY29wZS0+cm9vdERvY3VtZW50KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PERvY3VtZW50Kj4obV90cmVlU2NvcGUpOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6OmRv
Y3VtZW50KCkgY29uc3QKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb2N1bWVudEludGVy
bmFsKCk7CisgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50
cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IK
KyAgICAvLyBkdWUgdG8gdGhlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgor
ICAgIEFTU0VSVChkb2N1bWVudCB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUg
JiYgIWluRG9jdW1lbnQoKSkpOworICAgIHJldHVybiBkb2N1bWVudDsKK30KKwogaW5saW5lIGJv
b2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzID09IG1f
ZG9jdW1lbnQ7CisgICAgcmV0dXJuIHRoaXMgPT0gZG9jdW1lbnRJbnRlcm5hbCgpOwogfQogCiBp
bmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlw
ZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQor
ICAgICwgbV90cmVlU2NvcGUoMCkKICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgw
KQogICAgICwgbV9yZW5kZXJlcigwKQogewogICAgIGlmIChkb2N1bWVudCkKICAgICAgICAgZG9j
dW1lbnQtPmd1YXJkUmVmKCk7CisgICAgc2V0VHJlZVNjb3BlKGRvY3VtZW50KTsKICNpZiAhZGVm
aW5lZChOREVCVUcpIHx8IChkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05P
REVfU1RBVElTVElDUykKICAgICB0cmFja0ZvckRlYnVnZ2luZygpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKaW5kZXggNjIxNGIyOWQyNjE0ODIyYThhZDMzYTdjYjE3NzgwOGRiNzI1MjEzOS4uOTI3
MTQ3YjgwZGE0YTQ5MTY0YzMyMjE1MTA2ZGM4NjdlZjVmZDFiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApA
QCAtNDA2LDcgKzQwNiw3IEBAIE5vZGU6On5Ob2RlKCkKICAgICBpZiAocmVuZGVyZXIoKSkKICAg
ICAgICAgZGV0YWNoKCk7CiAKLSAgICBEb2N1bWVudCogZG9jID0gbV9kb2N1bWVudDsKKyAgICBE
b2N1bWVudCogZG9jID0gZG9jdW1lbnRJbnRlcm5hbCgpOwogICAgIGlmIChBWE9iamVjdENhY2hl
OjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0Q2FjaGVFeGlz
dHMoKSkKICAgICAgICAgZG9jLT5heE9iamVjdENhY2hlKCktPnJlbW92ZU5vZGVGb3JVc2UodGhp
cyk7CiAgICAgCkBAIC00MjEsNDEgKzQyMSw2IEBAIE5vZGU6On5Ob2RlKCkKICAgICBJbnNwZWN0
b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6Tm9kZUNvdW50
ZXIpOwogfQogCi12b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLXsK
LSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KTsKLSAg
ICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKLX0KLQotTm9kZVJhcmVEYXRhKiBO
b2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKLXsKLSAgICBpZiAoIXNjb3BlKSB7
Ci0gICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0gICAgICAgICAgICBOb2RlUmFyZURhdGEq
IGRhdGEgPSByYXJlRGF0YSgpOwotICAgICAgICAgICAgZGF0YS0+c2V0VHJlZVNjb3BlKDApOwot
ICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KLSAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOwotICAg
IGRhdGEtPnNldFRyZWVTY29wZShzY29wZSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLVRyZWVT
Y29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVXNpbmcgbV9k
b2N1bWVudCBkaXJlY3RseSBpcyBub3QgZ29vZCAtPiBzZWUgY29tbWVudCB3aXRoIGRvY3VtZW50
KCkgaW4gdGhlIGhlYWRlciBmaWxlLgotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAg
cmV0dXJuIG1fZG9jdW1lbnQ7Ci0gICAgVHJlZVNjb3BlKiBzY29wZSA9IHJhcmVEYXRhKCktPnRy
ZWVTY29wZSgpOwotICAgIHJldHVybiBzY29wZSA/IHNjb3BlIDogbV9kb2N1bWVudDsKLX0KLQog
Tm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Jh
cmVEYXRhKCkpOwpAQCAtMTQzNSwxMSArMTQwMCw2IEBAIENvbnRhaW5lck5vZGUqIE5vZGU6Om5v
blNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcmVudCAmJiAh
cGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHBhcmVudCA6IDA7CiB9CiAKLWJvb2wgTm9kZTo6aXNJ
blNoYWRvd1RyZWUoKSBjb25zdAotewotICAgIHJldHVybiB0cmVlU2NvcGUoKSAhPSBkb2N1bWVu
dCgpOwotfQotCiBFbGVtZW50KiBOb2RlOjpwYXJlbnRPckhvc3RFbGVtZW50KCkgY29uc3QKIHsK
ICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRPckhvc3ROb2RlKCk7CkBAIC0yNzYy
LDcgKzI3MjIsNyBAQCB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgTWVtb3J5Q2xhc3NJbmZvPE5vZGU+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwog
ICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8VHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPiA+
KHRoaXMpOwogICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8U2NyaXB0V3JhcHBhYmxlPih0aGlzKTsK
LSAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2RvY3VtZW50KTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZE1lbWJlcihkb2N1bWVudCgpKTsKICAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX25leHQpOwogICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcHJldmlv
dXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYzlhMjhmNDlkMmUwZjUwMmU2NzgyZTk2N2Y0MTA1NjMz
NzIxMDM4ZS4uZWIzOGVjMjc0N2IwZTUyMTZhMDM2ZjYzMzhkZWQxNzdhN2E1M2Y0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCkBAIC0yMjksNyArMjI5LDggQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyAwLCBh
IGNoaWxkIG9mIFNoYWRvd1Jvb3QsIG9yIGEgbGVnYWN5IHNoYWRvdyByb290LgogICAgIE5vZGUq
IG5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCk7Ci0gICAgYm9vbCBpc0luU2hhZG93VHJl
ZSgpIGNvbnN0OworICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKEluU2hhZG93VHJlZSk7IH0KKwogICAgIC8vIE5vZGUncyBwYXJlbnQsIHNoYWRvdyB0cmVl
IGhvc3QuCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0OwogICAg
IEVsZW1lbnQqIHBhcmVudE9ySG9zdEVsZW1lbnQoKSBjb25zdDsKQEAgLTQwNywxNCArNDA4LDcg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0aGUgZG9jdW1lbnQgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgbm9kZS4gVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBOVUxMLCBleGNlcHQgaW4gdGhl
IGNhc2UgCiAgICAgLy8gb2YgYSBEb2N1bWVudFR5cGUgbm9kZSB0aGF0IGlzIG5vdCB1c2VkIHdp
dGggYW55IERvY3VtZW50IHlldC4gQSBEb2N1bWVudCBub2RlIHJldHVybnMgaXRzZWxmLgotICAg
IERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodGhpcyk7
Ci0gICAgICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQgcHJldmVudHMg
dGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yCi0g
ICAgICAgIC8vIGR1ZSB0byB0aGUgdmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVUeXBlKCku
Ci0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZ
UEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3VtZW50Owot
ICAgIH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIFRyZWVTY29wZSog
dHJlZVNjb3BlKCkgY29uc3Q7CiAKQEAgLTQyMiw3ICs0MTYsNyBAQCBwdWJsaWM6CiAgICAgLy8g
bm9kZSB0cmVlLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3Qg
CiAgICAgeyAKLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVu
dEZsYWcpKTsKKyAgICAgICAgQVNTRVJUKHRyZWVTY29wZSgpIHx8ICFnZXRGbGFnKEluRG9jdW1l
bnRGbGFnKSk7CiAgICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9
CiAKQEAgLTY5MiwxMCArNjg2LDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgSW5OYW1l
ZEZsb3dGbGFnID0gMSA8PCAyNiwKICAgICAgICAgSGFzQXR0ckxpc3RGbGFnID0gMSA8PCAyNywK
LSAgICAgICAgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyA9IDEgPDwgMjgKKyAgICAgICAgSGFzQ3Vz
dG9tQ2FsbGJhY2tzRmxhZyA9IDEgPDwgMjgsCisgICAgICAgIEluU2hhZG93VHJlZSA9IDEgPDwg
MjkKKwogICAgIH07CiAKLSAgICAvLyA0IGJpdHMgcmVtYWluaW5nCisgICAgLy8gMyBiaXRzIHJl
bWFpbmluZwogCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVy
biBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxh
Z3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgt
KGludDMyX3QpZiAmIG1hc2spOyB9IApAQCAtNzMxLDE2ICs3MjcsMTQgQEAgcHJvdGVjdGVkOgog
CiAgICAgdm9pZCBzZXRIYXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3Vz
dG9tQ2FsbGJhY2tzRmxhZyk7IH0KIAorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSop
OworICAgIERvY3VtZW50KiBkb2N1bWVudEludGVybmFsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKICAgICB2
b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAKLSAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkg
dXNlZCBmb3IgYSB0cmVlIHNjb3BlIG1pZ3JhdGlvbi4KLSAgICAvLyBzZXRUcmVlU2NvcGUoKSBy
ZXR1cm5zIE5vZGVSYXJlRGF0YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRp
b25zIG9uIHRoZSBjYWxsZXIgc2l0ZS4KLSAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShU
cmVlU2NvcGUqKTsKLSAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0KICAgICBlbnVt
IEVkaXRhYmxlTGV2ZWwgeyBFZGl0YWJsZSwgUmljaGx5RWRpdGFibGUgfTsKICAgICBib29sIHJl
bmRlcmVySXNFZGl0YWJsZShFZGl0YWJsZUxldmVsKSBjb25zdDsKICAgICBib29sIGlzRWRpdGFi
bGVUb0FjY2Vzc2liaWxpdHkoRWRpdGFibGVMZXZlbCkgY29uc3Q7CkBAIC03ODMsNyArNzc3LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsK
LSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwog
ICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9kZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVj
dCogbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCAwYmRjM2U4YWMy
MDU3ZTFjMTg0ZjhkY2E1OTE5ODVlZTVlOWZiMDc1Li5iODRhNGIwOWZkMzI3NWUwNGJlOTRkNjA0
NGQyMGQ2Y2NhOTdiZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xODQsOCAr
MTg0LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShO
b2RlUmFyZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAg
Tm9kZVJhcmVEYXRhKCkKLSAgICAgICAgOiBtX3RyZWVTY29wZSgwKQotICAgICAgICAsIG1fY2hp
bGROb2RlTGlzdCgwKQorICAgICAgICA6IG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1f
dGFiSW5kZXgoMCkKICAgICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkK
ICAgICAgICAgLCBtX2lzRm9jdXNlZChmYWxzZSkKQEAgLTIxMyw5ICsyMTIsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByYXJlRGF0YU1hcCgpLmdldChub2RlKTsKICAgICB9CiAKLSAgICBU
cmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9Ci0gICAg
dm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2NvcGUgPSB0
cmVlU2NvcGU7IH0KLSAgICAKICAgICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0
cy5jbGVhcigpOyB9CiAgICAgdm9pZCBzZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNO
b2RlRGF0YT4gbGlzdHMpIHsgbV9ub2RlTGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05v
ZGVEYXRhKiBub2RlTGlzdHMoKSBjb25zdCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQpA
QCAtMzQ5LDcgKzM0NSw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKIAotICAgIFRyZWVTY29w
ZSogbV90cmVlU2NvcGU7CiAgICAgT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0
czsKICAgICBDaGlsZE5vZGVMaXN0KiBtX2NoaWxkTm9kZUxpc3Q7CiAgICAgT3duUHRyPEV2ZW50
VGFyZ2V0RGF0YT4gbV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
aW5kZXggNjdiYjg2MThlZGUzODM1NDhiMzViNGI4NDQ3NGQ0NDkzMmQ5NWYwZS4uYjU4NjY4N2Mx
MWE2ZDg3MGZhZTk0ZjhlNzQwMjJhYjU0ODRhZmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYWRvd1Jvb3Q6
OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogRG9jdW1lbnRGcmFnbWVudChk
b2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKLSAgICAsIFRyZWVTY29wZSh0aGlzKQorICAgICwg
VHJlZVNjb3BlKHRoaXMsIGRvY3VtZW50KQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQo
MCkKICAgICAsIG1fYXBwbHlBdXRob3JTdHlsZXMoZmFsc2UpCkBAIC01NSwxMSArNTUsOSBAQCBT
aGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
ZG9jdW1lbnQpOwogICAgIAotICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUu
Ci0gICAgc2V0UGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKICAgICAvLyBTaGFkb3cgdHJlZSBz
Y29wZXMgaGF2ZSB0aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgogICAgIC8v
IFRoaXMgd2F5LCBkaXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3Bl
IHBvaW50ZXIuCi0gICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAg
IHNldFRyZWVTY29wZSh0aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCBlODhiMTNhYjg4ZTc1ZWExMzQ3MWQ0OTBkNmQ5ZTM2
YjkzOWM3OTEyLi4wMzJlZGYxMjZlMDgwN2Q0MTc1ZTJlZGI5Y2U1ZDEyODkzOWZhZjJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNTIsMTQgKzUyLDIyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotVHJlZVNjb3BlOjpUcmVlU2Nv
cGUoQ29udGFpbmVyTm9kZSogcm9vdE5vZGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWlu
ZXJOb2RlKiByb290Tm9kZSwgRG9jdW1lbnQqIHJvb3REb2N1bWVudCkKICAgICA6IG1fcm9vdE5v
ZGUocm9vdE5vZGUpCi0gICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9yb290RG9j
dW1lbnQocm9vdERvY3VtZW50KQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUocm9vdE5vZGUgPT0g
cm9vdERvY3VtZW50ID8gMCA6IHJvb3REb2N1bWVudCkKICAgICAsIG1faWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5KElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6Y3JlYXRlKCkpCiB7CiAgICAgQVNT
RVJUKHJvb3ROb2RlKTsKIH0KIAorVHJlZVNjb3BlOjpUcmVlU2NvcGUoKQorICAgIDogbV9yb290
Tm9kZSgwKQorICAgICwgbV9yb290RG9jdW1lbnQoMCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3Bl
KDApCit7Cit9CisKIFRyZWVTY29wZTo6flRyZWVTY29wZSgpCiB7CiAgICAgaWYgKG1fc2VsZWN0
aW9uKSB7CkBAIC04Miw2ICs5MCw3IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2Nv
cGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKICAgICBBU1NFUlQobmV3UGFyZW50U2NvcGUp
OwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKKyAgICBtX3Jvb3RE
b2N1bWVudCA9IG5ld1BhcmVudFNjb3BlLT5yb290RG9jdW1lbnQoKTsKIH0KIAogRWxlbWVudCog
VHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkg
Y29uc3QKQEAgLTI0OCw2ICsyNTcsMTEgQEAgTm9kZSogVHJlZVNjb3BlOjpmb2N1c2VkTm9kZSgp
CiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgVHJlZVNjb3BlOjppc0RvY3VtZW50U2NvcGUoKSBj
b25zdAoreworICAgIHJldHVybiB0aGlzID09IG1fcm9vdERvY3VtZW50OworfQorCiBzdGF0aWMg
dm9pZCBsaXN0VHJlZVNjb3BlcyhOb2RlKiBub2RlLCBWZWN0b3I8VHJlZVNjb3BlKiwgNT4mIHRy
ZWVTY29wZXMpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTI4MSw1ICsyOTUsMTEgQEAgVHJl
ZVNjb3BlKiBjb21tb25UcmVlU2NvcGUoTm9kZSogbm9kZUEsIE5vZGUqIG5vZGVCKQogICAgIHJl
dHVybiB0cmVlU2NvcGVzQVtpbmRleEFdID09IHRyZWVTY29wZXNCW2luZGV4Ql0gPyB0cmVlU2Nv
cGVzQVtpbmRleEFdIDogMDsKIH0KIAorVHJlZVNjb3BlKiBUcmVlU2NvcGU6Om51bGxJbnN0YW5j
ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUcmVlU2NvcGUsIGluc3RhbmNlLCAoKSk7
CisgICAgcmV0dXJuICZpbnN0YW5jZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggODQxYmJiNmMxY2JiOWNjMTk2ZjAxOTQyMDhjNGE3MGU5
ODIxZDhmNS4uZjkzM2M2ZjI1Y2ZkOTczYjU0ZDBlMzRiZmYyNmMxZGY4NDM1NzlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBET01TZWxlY3Rpb247CitjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeTsKQEAgLTc4LDE3ICs3OSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
ZG9wdElmTmVlZGVkKE5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9yb290Tm9kZTsgfQotCisgICAgRG9jdW1lbnQqIHJvb3REb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcm9vdERvY3VtZW50OyB9CisgICAgYm9vbCBpc0RvY3VtZW50U2Nv
cGUoKSBjb25zdDsKICAgICBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkmIGlkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeSgpIGNvbnN0IHsgcmV0dXJuICptX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5n
ZXQoKTsgfQogCisgICAgc3RhdGljIFRyZWVTY29wZSogbnVsbEluc3RhbmNlKCk7CisKIHByb3Rl
Y3RlZDoKLSAgICBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOworICAgIFRyZWVTY29wZShDb250
YWluZXJOb2RlKiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogICAg
IHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUo
KTsKKwogICAgIENvbnRhaW5lck5vZGUqIG1fcm9vdE5vZGU7CisgICAgRG9jdW1lbnQqIG1fcm9v
dERvY3VtZW50OwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBEb2N1
bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
QWRvcHRlci5jcHAKaW5kZXggMzYwMWUwODU5OGI1N2MwNGRmMTMzY2Q0MTA4ZTRkMmViZTlmYjVi
OC4uMWRmYjVjZWY1Yjk0NjBiYjM0NjMyNWJmY2E2NTU1ZTQ0MTMzYzU2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtNDksNyArNDksOSBAQCB2b2lkIFRyZWVT
Y29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBjb25zdAogICAgICAg
ICBvbGREb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSogbm9k
ZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7Ci0g
ICAgICAgIGlmIChOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+c2V0VHJlZVNjb3BlKG5l
d0RvY3VtZW50ID09IG1fbmV3U2NvcGUgPyAwIDogbV9uZXdTY29wZSkpIHsKKyAgICAgICAgbm9k
ZS0+c2V0VHJlZVNjb3BlKG1fbmV3U2NvcGUpOworICAgICAgICBpZiAobm9kZS0+aGFzUmFyZURh
dGEoKSkgeworICAgICAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnJhcmVE
YXRhKCk7CiAgICAgICAgICAgICBpZiAocmFyZURhdGEtPm5vZGVMaXN0cygpKQogICAgICAgICAg
ICAgICAgIHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+YWRvcHRUcmVlU2NvcGUob2xkRG9jdW1lbnQs
IG5ld0RvY3VtZW50KTsKICAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpCkBA
IC05Niw4ICs5OCw2IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9O
ZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERvY3Vt
ZW50KQogICAgICAgICBvbGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50
KG5vZGUsIG5ld0RvY3VtZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3VtZW50
KTsKLQogI2lmbmRlZiBOREVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9
IGZhbHNlOwogICAgIG9sZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRo
ID0gb2xkRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVT
ZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCmluZGV4IDVhMjE0M2M2M2Q0NTA1NTVjZWYzOTgwYjc5NDM4ZjQ1OWRjZmEx
MzQuLjViZjU0NTQxMzIzYzA3OWVhN2Q2YzI3Y2Y4ODMwOWNlOTBkMzc3MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW92ZVNlbGVjdGlvbkNvbW1h
bmQuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMTk2NTdhYzBmYzc3MjEy
MjM1ODM1NzRiYzZiZDIwODFkM2RjNzY5Ni4uOGJlMjA3MDYxNGM0OTUzMTM4YTNjNTlmMDVmNDc1
YmViM2JkYjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2Rl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFu
ZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJS
ZW1vdmVOb2RlQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJO
b2RlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21t
YW5kLmNwcAppbmRleCAxNDUyZjg4MDNmYWJjNTcwYTI1NGZhNWEyZTk2ZTQwZjE0ZGVhOWM1Li4y
ODFmZGJkZjMyYmQ1MDUxY2RlYmQyNzVmZGYwNjk0NWZhYmVlZjNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRy
ZW5Db21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgiCiAKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAK
aW5kZXggZjU1ZGRhNThmMDYyOTk1YTQ4YmI3M2Q2ODM2ZjZhNjJlZTcyNWY5Mi4uYjBkNTI3NTQx
ZWU4MTYzNDA5MjU1MjhlZTU0YjYxYmFkNGExNmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlQWdlbnQuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgppbmRleCA1NjM3NTgwNjQzZWFhYWZjODM5YjUyNGNhMzBjOGNhYTZj
N2UyMGIyLi5kOGUwYTZmNTI1YzIwYTI5NDJhOWU5ZmVmNThkYWNhMDY5ZGM5MTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmCkBAIC0yNTMsNiArMjUzLDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRl
eHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAg
ICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QDFAQFoKKyAgICAgICAgP251bGxJbnN0YW5jZUBUcmVlU2NvcGVA
V2ViQ29yZUBAU0FQQVYxMkBYWgogICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJD
b3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9O
MEBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBA
UUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID93ZWJraXRX
aWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxl
bWVudEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMGU1ZDFiMmM3
MTE3OWJiNjdhOTljZjE2NDc1ZTcyMGMzZjFlNjRkOS4uMzJmNGU4NzQ4MzdmYTBhMWM0MjMxNGMx
YjEzZjk0MGM1OWMyYjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAt
MjQ2LDYgKzI0Niw3IEBAIEVYUE9SVFMKICAgICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFnZXNA
V2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCiAgICAgICAg
ID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBfTkBaCiAgICAgICAgID92aWV3QERv
Y3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCisgICAgICAgID9udWxsSW5zdGFu
Y2VAVHJlZVNjb3BlQFdlYkNvcmVAQFNBUEFWMTJAWFoKICAgICAgICAgP25vZGVzRnJvbVJlY3RA
RG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBA
V1RGQEBISElJSUlfTjBAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRp
dG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAg
ICAgICA/cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGVA
V2ViQ29yZUBAWUFYQUFVVmlld3BvcnRBdHRyaWJ1dGVzQDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCmluZGV4IDVkZWY0NzQ3MWQ1ZjY3ODEwMGMwNzhhNGMxMDcxMTBiNzVmMmUxMWUuLjA4YjI2
NjRhMGM4ZDc2MTkwNjRiODUxNWVkNjYyYzJjNjgzZWYzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgpAQCAtMTY3LDYgKzE2Nyw3IEBAIF9aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4aXNB
Y3RpdmVFdjsKIF9aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckQyRXY7CiBf
Wk43V2ViQ29yZTI2Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJDMkVQTlNfMjJTY3JpcHRFeGVj
dXRpb25Db250ZXh0RTsKIF9aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjE2
Y29udGV4dERlc3Ryb3llZEV2OworX1pON1dlYkNvcmU5VHJlZVNjb3BlMTJudWxsSW5zdGFuY2VF
djsKIGxvY2FsOgogX1oqOwogY3RpKjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153407</attachid>
            <date>2012-07-19 22:10:44 -0700</date>
            <delta_ts>2012-08-08 04:06:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-59816-20120720141040.patch</filename>
            <type>text/plain</type>
            <size>25158</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlZDk3ZDZkNWRkZTRi
MWM1YmY5ODQxZGQzYzRjNGUxY2VlYjU4YS4uNjQ4NzVkMjhkNjE2Zjc3MzA5YjJhMmM4YjRmNzdi
YTViMWE4NmY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA3LTE5ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEJlZm9yZSB0aGlz
IGNoYW5nZSwgTm9kZTo6dHJlZVNjb3BlKCkgZmV0Y2hlcyB0aGUgVHJlZVNjb3BlIG9iamVjdAor
ICAgICAgICBmcm9tIEVsZW1lbnRSYXJlRGF0YS4gVGhpcyBhcHByb2FjaCBoYXMgc2V2ZXJhbCBz
aG9ydGNvbWluZ3M6CisKKyAgICAgICAgLSByYXJlRGF0YSgpIGNhbGwgaXMgc2xvdyBkdWUgdG8g
YSBoYXNodGFibGUgbG9va3VwLgorICAgICAgICAtIEluIHNoYWRvdyB0cmVlLCBlYWNoIG5vZGUg
aGFzIGl0cyB0cmVlIHNjb3BlIGluIEVsZW1lbnRSYXJlRGF0YSwKKyAgICAgICAgICB0aGF0IG1l
YW5zIHRoZSByYXJlLWRhdGEgaXMgbm8gbG9uZ2VyIHJhcmUgaW4gdGhhdCBjYXNlLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIGdldHMgcmlkIG9mIEVsZW1lbnRSYXJlRGF0YTo6bV90cmVlU2NvcGUg
YnkgcmVwbGFjaW5nCisgICAgICAgIE5vZGU6Om1fZG9jdW1lbnQgd2l0aCBOb2RlOjptX3RyZWVT
Y29wZS4gQW5kIHJldHJpZXZlcyB0aGUKKyAgICAgICAgZG9jdW1lbnQgb2YgTm9kZSB0aHJvdWdo
IG1fdHJlZVNjb3BlLgorCisgICAgICAgIE5vdGUgdGhhdCBOb2RlOjpkb2N1bWVudCgpIGlzIGEg
aG90IGZ1bmN0aW9uIGFuZCBuYWl2ZQorICAgICAgICByZXBsYWNlbWVubnQgb2YgbV9kb2N1bWVu
dCB3aXRoIG1fdHJlZVNjb3BlIGNhbiBodXJ0IHRoZQorICAgICAgICBzcGVlZC4gVGhpcyBjaGFu
Z2UgZW1wbG95cyBzb21lIHRyaWNrcyB0byBhZGRyZXNzIGl0LgorCisgICAgICAgIC0gVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBOb2RlOjpJblNoYWRvd1RyZWUgZmxhZywgaWYgdGhlIGZsYWcgaXMg
b2ZmLAorICAgICAgICAgIHRoYXQgbWVhbnMgbV90cmVlU2NvcGUgaXMgYWN0dWFsbHkgYSBkb2N1
bWVudCBhbiBjYW4gYmUgcmV0dXJuZWQgYXMgdGhlIHJlc3VsdC4KKyAgICAgICAgICB0aGlzIGVs
aW1pbmF0ZXMgYW4gZXh0cmFjdCBkZXJlZmVyZW5jZS4KKyAgICAgICAgLSBOb2RlOjptX3RyZWVT
Y29wZSBjYW4gYmUgbnVsbC4gQnV0IHdlIGRvbid0IHdhbnQgdG8gaXNzdWUgYW55IGV4dHJhCisg
ICAgICAgICAgY29uZGl0aW9uYWwgc3RhdGVtZW50LiBTbyB0aGlzIGNoYW5nZSByZXByZXNlbnRz
IGEgbnVsbAorICAgICAgICAgIFRyZWVTY29wZSBhcyBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgp
LCB3aGljaCBzYXZlcyBvbmUgY29uZGl0aW9uYWwKKyAgICAgICAgICBzdGF0ZW1lbnQuCisKKyAg
ICAgICAgV2l0aCB0aGVzZSBjaGFuZ2VzLCB0aGUgTm9kZTo6ZG9jdW1lbnQoKSBzbG93ZG93biBp
cyBtaW5pbWl6ZWQgdG8KKyAgICAgICAgdW5ub3RpY2VhYmxlIHNpemUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDogVG9vayBjYXJlIG9mIGNvbm5lY3RpbyBiZXR3ZW4gVHJlZVNjb3BlLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1Z2dlc3Rl
ZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnRyZWVTY29wZSk6IE5vdyBqdXN0IHJldHVybiBtX3RyZWVTY29wZSwgdGFraW5nIGNh
cmUgb2YgbnVsbEluc3RhbmNlKCkgY2FzZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6c2V0VHJlZVNjb3BlKTogTm93IGp1c3Qgc2V0cyBtX3RyZWVTY29wZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50SW50ZXJuYWwpOiBFeHRyYWN0ZWQgZnJv
bSBkb2N1bWVudCgpIHRvIGhhdmUgQVNTRVJULWZyZWUgdmVyc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRvY3VtZW50KTogUmUtaW1wbGVtZW50ZWQgb3ZlciB0cmVlU2NvcGUoKSBhbmQg
dGhlIGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RvY3VtZW50Tm9kZSk6IFJlLWlt
cGxlbWVudGVkIHVzaW5nIHRyZWVTY29wZSgpCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2Rl
KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0luU2hhZG93VHJlZSk6IFJl
d3JvdGUgdG8gdXNlIEluU2hhZG93VHJlZSBmbGFnLgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKTogRWxp
bWluYXRlZCBtX3RyZWVTY29wZS4KKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjpudWxsSW5zdGFuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vVHJlZVNj
b3BlLmg6IEFkZGVkIG1fcGFyZW50VHJlZVNjb3BlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnJvb3REb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAo
VHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6IE5vIGxvbmdl
ciBjYWxscyBzZXREb2N1bWVudCgpCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlVHJlZVRvTmV3U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRl
cjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rp
b25Db21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBm
dW5jdGlvbnMKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDogSW5jbHVk
ZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBl
ZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDogSW5jbHVkZXMg
RG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBpbnNw
ZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6IEluY2x1ZGVzIERvY3VtZW50LmggdG8gZmluZCBp
bmxpbmVkIE5vZGUgZnVuY3Rpb25zCisKIDIwMTItMDctMTkgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZvcm0gc3RhdGUgcmVzdG9yZTogTmVlZCB0byBpZGVu
dGlmeSBhIGZvcm0gYnkgaXRzIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyN2RmNTBhYjFmMGNiNjU1
ZTMyZWUxZjY5ZDhiNjA1ZTM4MTRiN2VkLi40OTdhMzk0YTU1MzNiOTE4NzA5Mjk2NGEzNzYyNTcx
MDE4NTI1MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDctMTkgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBS
ZXBsYWNlIE5vZGUncyBEb2N1bWVudCBwb2ludGVyIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0
Mi5kZWY6IEFkZGVkIG5ld2x5IGV4cG9ydGVkIHN5bWJvbHMuCisgICAgICAgICogd2luL1dlYktp
dDJDRkxpdGUuZGVmOiBEaXR0by4KKwogMjAxMi0wNy0xOSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8
c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBbV0sy
XSBBZGQgbWV0aG9kcyB0byBnZXQvc2V0IGEgY3VzdG9tIHRleHQgZW5jb2RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggOWVmYjJjNzdhYzNlZWQ3MjUzZWZlYjgzMGM3ODY2MWY5NjUzZGY1NC4u
YzA0Yzk1ZmNjY2Q0NTc4ZmRlYzYzOTA1ZWViN2EwOGM1NDY0ODM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTEwMjksNiArMTAyOSw3IEBAIF9fWk43V2ViQ29yZTlUaW1lckJhc2U0c3RvcEV2
CiBfX1pON1dlYkNvcmU5VGltZXJCYXNlNXN0YXJ0RWRkCiBfX1pON1dlYkNvcmU5VGltZXJCYXNl
QzJFdgogX19aTjdXZWJDb3JlOVRpbWVyQmFzZUQyRXYKK19fWk43V2ViQ29yZTlUcmVlU2NvcGUx
Mm51bGxJbnN0YW5jZUV2CiBfX1pON1dlYkNvcmU5Y2xvc2VGaWxlRVJpCiBfX1pON1dlYkNvcmU5
ZW5kT2ZXb3JkRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfOUVXb3JkU2lkZUUKIF9fWk43V2Vi
Q29yZTlmb250Q2FjaGVFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWZhNzMyZmExMDI1
YWEwNDE2ODQxMDAwMzUxMjkyMTNhODZkNDViZi4uZjFjNWI1NjEzZTdkNGNhYmZiNGY5ZTkxZDhm
MGJkMzA2ZjQxMTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCiBEb2N1bWVu
dDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwg
Ym9vbCBpc0hUTUwpCiAgICAgOiBDb250YWluZXJOb2RlKDAsIENyZWF0ZURvY3VtZW50KQotICAg
ICwgVHJlZVNjb3BlKHRoaXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywgdGhpcykKICAgICAsIG1f
Z3VhcmRSZWZDb3VudCgwKQogICAgICwgbV9jb250ZXh0RmVhdHVyZXMoQ29udGV4dEZlYXR1cmVz
OjpkZWZhdWx0U3dpdGNoKCkpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlKE5vUXVpcmtzTW9k
ZSkKQEAgLTQ5Myw3ICs0OTMsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2RpZERp
c3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZChmYWxzZSkKICNlbmRpZgogewotICAgIG1f
ZG9jdW1lbnQgPSB0aGlzOworICAgIHNldFRyZWVTY29wZSh0aGlzKTsKIAogICAgIG1fcGFnZUdy
b3VwVXNlclNoZWV0Q2FjaGVWYWxpZCA9IGZhbHNlOwogCkBAIC02NzYsNyArNjc2LDcgQEAgRG9j
dW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgobV9jb2xsZWN0aW9ucyk7IGkrKykKICAgICAgICAgQVNTRVJUKCFtX2NvbGxlY3Rp
b25zW2ldKTsKIAotICAgIG1fZG9jdW1lbnQgPSAwOworICAgIHNldFRyZWVTY29wZSgwKTsKIAog
ICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJz
OjpEb2N1bWVudENvdW50ZXIpOwogfQpAQCAtMTM1MCwxMyArMTM1MCwxNCBAQCB2b2lkIERvY3Vt
ZW50OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgY29udGVudCkKIAogU3RyaW5nIERvY3VtZW50
OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzWEhU
TUxEb2N1bWVudCgpKQorICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmIChk
b2MtPmlzWEhUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1s
K3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICBpZiAoZG9j
LT5pc1NWR0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCI7Ci0gICAg
aWYgKG1fZG9jdW1lbnQtPnhtbFN0YW5kYWxvbmUoKSkKKyAgICBpZiAoZG9jLT54bWxTdGFuZGFs
b25lKCkpCiAgICAgICAgIHJldHVybiAidGV4dC94bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5p
c0hUTUxEb2N1bWVudCgpKQorICAgIGlmIChkb2MtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiAidGV4dC9odG1sIjsKIAogICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBsb2FkZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjYzNjE4NDkyOGQ1MzY2
NmQ1MDc1NGI4MzJkOTAwZDUwY2NkYzU5ZC4uMjAxNGRjZDg0ZGExYjBiZWUwZTAwMDhmY2U2OGFk
NTcyZWE0NjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1MzksMjAgKzE1MzksNDggQEAg
cHJpdmF0ZToKIAogLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVp
cmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUg
dGhlbS4KIAoraW5saW5lIFRyZWVTY29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV90cmVlU2NvcGUgPT0gVHJlZVNjb3BlOjpudWxsSW5zdGFuY2UoKSA/IDAgOiBt
X3RyZWVTY29wZTsKK30KKworaW5saW5lIHZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29w
ZSogc2NvcGUpCit7CisgICAgbV90cmVlU2NvcGUgPSBzY29wZSA/IHNjb3BlIDogVHJlZVNjb3Bl
OjpudWxsSW5zdGFuY2UoKTsKKyAgICBzZXRGbGFnKCFtX3RyZWVTY29wZS0+aXNEb2N1bWVudFNj
b3BlKCksIEluU2hhZG93VHJlZSk7Cit9CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1l
bnRJbnRlcm5hbCgpIGNvbnN0Cit7CisgICAgaWYgKGdldEZsYWcoSW5TaGFkb3dUcmVlKSkKKyAg
ICAgICAgcmV0dXJuIG1fdHJlZVNjb3BlLT5yb290RG9jdW1lbnQoKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihtX3RyZWVTY29wZSk7Cit9CisKK2lubGluZSBEb2N1bWVudCog
Tm9kZTo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvY3Vt
ZW50SW50ZXJuYWwoKTsKKyAgICAvLyBGSVhNRTogYmVsb3cgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0
IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1lbnQoKSBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVz
dHJ1Y3RvcgorICAgIC8vIGR1ZSB0byB0aGUgdmlydHVhbCBmdW5jdGlvbiBjYWxsIHRvIG5vZGVU
eXBlKCkuCisgICAgQVNTRVJUKGRvY3VtZW50IHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZ
UEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7CisgICAgcmV0dXJuIGRvY3VtZW50OworfQorCiBp
bmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRo
aXMgPT0gbV9kb2N1bWVudDsKKyAgICByZXR1cm4gdGhpcyA9PSBkb2N1bWVudEludGVybmFsKCk7
CiB9CiAKIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9u
VHlwZSB0eXBlKQogICAgIDogbV9ub2RlRmxhZ3ModHlwZSkKLSAgICAsIG1fZG9jdW1lbnQoZG9j
dW1lbnQpCisgICAgLCBtX3RyZWVTY29wZSgwKQogICAgICwgbV9wcmV2aW91cygwKQogICAgICwg
bV9uZXh0KDApCiAgICAgLCBtX3JlbmRlcmVyKDApCiB7CiAgICAgaWYgKGRvY3VtZW50KQogICAg
ICAgICBkb2N1bWVudC0+Z3VhcmRSZWYoKTsKKyAgICBzZXRUcmVlU2NvcGUoZG9jdW1lbnQpOwog
I2lmICFkZWZpbmVkKE5ERUJVRykgfHwgKGRlZmluZWQoRFVNUF9OT0RFX1NUQVRJU1RJQ1MpICYm
IERVTVBfTk9ERV9TVEFUSVNUSUNTKQogICAgIHRyYWNrRm9yRGVidWdnaW5nKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCA4ZmQ2ZDVjNGYyNjAwY2FhOTZjMDVhNWI4MmVmODkzNWEwZDU2
MWMxLi45NDM0NWUxZDkwMTRmYmM1ZGUzNDEzYzkyZjE5ZTU1MGI4OWMyNzZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC00MDYsNyArNDA2LDcgQEAgTm9kZTo6fk5vZGUoKQogICAgIGlmIChyZW5kZXJl
cigpKQogICAgICAgICBkZXRhY2goKTsKIAotICAgIERvY3VtZW50KiBkb2MgPSBtX2RvY3VtZW50
OworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudEludGVybmFsKCk7CiAgICAgaWYgKEFYT2Jq
ZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZG9jICYmIGRvYy0+YXhPYmplY3RD
YWNoZUV4aXN0cygpKQogICAgICAgICBkb2MtPmF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlTm9kZUZv
clVzZSh0aGlzKTsKICAgICAKQEAgLTQyMSw0MSArNDIxLDYgQEAgTm9kZTo6fk5vZGUoKQogICAg
IEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpO
b2RlQ291bnRlcik7CiB9CiAKLXZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQotewotICAgIEFTU0VSVCghaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1l
bnQpOwotICAgIGlmIChpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9kb2N1bWVudCA9IGRvY3VtZW50OwotfQotCi1Ob2RlUmFy
ZURhdGEqIE5vZGU6OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQotewotICAgIGlmICgh
c2NvcGUpIHsKLSAgICAgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKLSAgICAgICAgICAgIE5vZGVS
YXJlRGF0YSogZGF0YSA9IHJhcmVEYXRhKCk7Ci0gICAgICAgICAgICBkYXRhLT5zZXRUcmVlU2Nv
cGUoMCk7Ci0gICAgICAgICAgICByZXR1cm4gZGF0YTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGVuc3VyZVJhcmVEYXRh
KCk7Ci0gICAgZGF0YS0+c2V0VHJlZVNjb3BlKHNjb3BlKTsKLSAgICByZXR1cm4gZGF0YTsKLX0K
LQotVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBV
c2luZyBtX2RvY3VtZW50IGRpcmVjdGx5IGlzIG5vdCBnb29kIC0+IHNlZSBjb21tZW50IHdpdGgg
ZG9jdW1lbnQoKSBpbiB0aGUgaGVhZGVyIGZpbGUuCi0gICAgaWYgKCFoYXNSYXJlRGF0YSgpKQot
ICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICBUcmVlU2NvcGUqIHNjb3BlID0gcmFyZURh
dGEoKS0+dHJlZVNjb3BlKCk7Ci0gICAgcmV0dXJuIHNjb3BlID8gc2NvcGUgOiBtX2RvY3VtZW50
OwotfQotCiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaGFzUmFyZURhdGEoKSk7CkBAIC0xNDM1LDExICsxNDAwLDYgQEAgQ29udGFpbmVyTm9kZSog
Tm9kZTo6bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkgY29uc3QKICAgICByZXR1cm4gcGFy
ZW50ICYmICFwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8gcGFyZW50IDogMDsKIH0KIAotYm9vbCBO
b2RlOjppc0luU2hhZG93VHJlZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRyZWVTY29wZSgpICE9
IGRvY3VtZW50KCk7Ci19Ci0KIEVsZW1lbnQqIE5vZGU6OnBhcmVudE9ySG9zdEVsZW1lbnQoKSBj
b25zdAogewogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUoKTsK
QEAgLTI3NTYsNyArMjcxNiw3IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBNZW1vcnlDbGFzc0luZm88
Tm9kZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSk7CiAgICAgaW5mby52aXNpdEJhc2VDbGFzczxUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5l
ck5vZGU+ID4odGhpcyk7CiAgICAgaW5mby52aXNpdEJhc2VDbGFzczxTY3JpcHRXcmFwcGFibGU+
KHRoaXMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZG9jdW1lbnQpOworICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGRvY3VtZW50KCkpOwogICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fbmV4dCk7CiAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
bV9wcmV2aW91cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBjOWEyOGY0OWQyZTBmNTAyZTY3ODJlOTY3
ZjQxMDU2MzM3MjEwMzhlLi5lYjM4ZWMyNzQ3YjBlNTIxNmEwMzZmNjMzOGRlZDE3N2E3YTUzZjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKQEAgLTIyOSw3ICsyMjksOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1
cm5zIDAsIGEgY2hpbGQgb2YgU2hhZG93Um9vdCwgb3IgYSBsZWdhY3kgc2hhZG93IHJvb3QuCiAg
ICAgTm9kZSogbm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKTsKLSAgICBib29sIGlzSW5T
aGFkb3dUcmVlKCkgY29uc3Q7CisgICAgYm9vbCBpc0luU2hhZG93VHJlZSgpIGNvbnN0IHsgcmV0
dXJuIGdldEZsYWcoSW5TaGFkb3dUcmVlKTsgfQorCiAgICAgLy8gTm9kZSdzIHBhcmVudCwgc2hh
ZG93IHRyZWUgaG9zdC4KICAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCkgY29u
c3Q7CiAgICAgRWxlbWVudCogcGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0OwpAQCAtNDA3LDE0
ICs0MDgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkb2N1bWVudCBhc3NvY2lh
dGVkIHdpdGggdGhpcyBub2RlLiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2Vw
dCBpbiB0aGUgY2FzZSAKICAgICAvLyBvZiBhIERvY3VtZW50VHlwZSBub2RlIHRoYXQgaXMgbm90
IHVzZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0LiBBIERvY3VtZW50IG5vZGUgcmV0dXJucyBpdHNl
bGYuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCh0aGlzKTsKLSAgICAgICAgLy8gRklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBw
cmV2ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3Ry
dWN0b3IKLSAgICAgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9k
ZVR5cGUoKS4KLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9D
VU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKLSAgICAgICAgcmV0dXJuIG1fZG9j
dW1lbnQ7Ci0gICAgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgVHJl
ZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKIApAQCAtNDIyLDcgKzQxNiw3IEBAIHB1YmxpYzoK
ICAgICAvLyBub2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGluRG9jdW1lbnQo
KSBjb25zdCAKICAgICB7IAotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJ
bkRvY3VtZW50RmxhZykpOworICAgICAgICBBU1NFUlQodHJlZVNjb3BlKCkgfHwgIWdldEZsYWco
SW5Eb2N1bWVudEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVudEZsYWcp
OwogICAgIH0KIApAQCAtNjkyLDEwICs2ODYsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAg
ICBJbk5hbWVkRmxvd0ZsYWcgPSAxIDw8IDI2LAogICAgICAgICBIYXNBdHRyTGlzdEZsYWcgPSAx
IDw8IDI3LAotICAgICAgICBIYXNDdXN0b21DYWxsYmFja3NGbGFnID0gMSA8PCAyOAorICAgICAg
ICBIYXNDdXN0b21DYWxsYmFja3NGbGFnID0gMSA8PCAyOCwKKyAgICAgICAgSW5TaGFkb3dUcmVl
ID0gMSA8PCAyOQorCiAgICAgfTsKIAotICAgIC8vIDQgYml0cyByZW1haW5pbmcKKyAgICAvLyAz
IGJpdHMgcmVtYWluaW5nCiAKICAgICBib29sIGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0
IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFzazsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYs
IE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1h
c2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7IH0gCkBAIC03MzEsMTYgKzcyNywxNCBAQCBwcm90
ZWN0ZWQ6CiAKICAgICB2b2lkIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpIHsgc2V0RmxhZyh0cnVl
LCBIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQogCisgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJl
ZVNjb3BlKik7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50SW50ZXJuYWwoKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsK
IAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIC8vIFRoZXNlIEFQSSBzaG91bGQg
YmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgotICAgIC8vIHNldFRyZWVT
Y29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkg
aW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRlLgotICAgIE5vZGVSYXJlRGF0YSogc2V0VHJl
ZVNjb3BlKFRyZWVTY29wZSopOwotICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKLQog
ICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAg
IGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwpIGNvbnN0OwogICAgIGJvb2wg
aXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShFZGl0YWJsZUxldmVsKSBjb25zdDsKQEAgLTc4Myw3
ICs3NzcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9k
ZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIFRyZWVTY29wZSogbV90cmVl
U2NvcGU7CiAgICAgTm9kZSogbV9wcmV2aW91czsKICAgICBOb2RlKiBtX25leHQ7CiAgICAgUmVu
ZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDBi
ZGMzZThhYzIwNTdlMWMxODRmOGRjYTU5MTk4NWVlNWU5ZmIwNzUuLmI4NGE0YjA5ZmQzMjc1ZTA0
YmU5NGQ2MDQ0ZDIwZDZjY2E5N2JkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAg
LTE4NCw4ICsxODQsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKE5vZGVSYXJlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAg
ICAKICAgICBOb2RlUmFyZURhdGEoKQotICAgICAgICA6IG1fdHJlZVNjb3BlKDApCi0gICAgICAg
ICwgbV9jaGlsZE5vZGVMaXN0KDApCisgICAgICAgIDogbV9jaGlsZE5vZGVMaXN0KDApCiAgICAg
ICAgICwgbV90YWJJbmRleCgwKQogICAgICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5
KGZhbHNlKQogICAgICAgICAsIG1faXNGb2N1c2VkKGZhbHNlKQpAQCAtMjEzLDkgKzIxMiw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KG5vZGUpOwogICAgIH0K
IAotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7
IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRyZWVTY29wZSkgeyBtX3RyZWVT
Y29wZSA9IHRyZWVTY29wZTsgfQotICAgIAogICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1f
bm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2b2lkIHNldE5vZGVMaXN0cyhQYXNzT3duUHRyPE5v
ZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBtX25vZGVMaXN0cyA9IGxpc3RzOyB9CiAgICAgTm9k
ZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUxpc3RzLmdl
dCgpOyB9CkBAIC0zNDksNyArMzQ1LDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogCi0gICAg
VHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1f
bm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBPd25Q
dHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcAppbmRleCA2N2JiODYxOGVkZTM4MzU0OGIzNWI0Yjg0NDc0ZDQ0OTMyZDk1ZjBlLi5i
NTg2Njg3YzExYTZkODcwZmFlOTRmOGU3NDAyMmFiNTQ4NGFmYWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hh
ZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBEb2N1bWVudEZy
YWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNjb3BlKHRoaXMp
CisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYoMCkKICAgICAs
IG1fbmV4dCgwKQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKQEAgLTU1LDExICs1
NSw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChkb2N1bWVudCk7CiAgICAgCi0gICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBhcmVu
dCBzY29wZS4KLSAgICBzZXRQYXJlbnRUcmVlU2NvcGUoZG9jdW1lbnQpOwogICAgIC8vIFNoYWRv
dyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBwb2ludGVyIHBvaW50IHRvIHRoZW1zZWx2ZXMu
CiAgICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGlsZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNvcnJl
Y3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUodGhp
cyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogfQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9v
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IGU4OGIxM2FiODhlNzVlYTEzNDcxZDQ5
MGQ2ZDllMzZiOTM5Yzc5MTIuLjAzMmVkZjEyNmUwODA3ZDQxNzVlMmVkYjljZTVkMTI4OTM5ZmFm
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC01MiwxNCArNTIsMjIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6
OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKK1RyZWVTY29wZTo6VHJlZVNjb3Bl
KENvbnRhaW5lck5vZGUqIHJvb3ROb2RlLCBEb2N1bWVudCogcm9vdERvY3VtZW50KQogICAgIDog
bV9yb290Tm9kZShyb290Tm9kZSkKLSAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBt
X3Jvb3REb2N1bWVudChyb290RG9jdW1lbnQpCisgICAgLCBtX3BhcmVudFRyZWVTY29wZShyb290
Tm9kZSA9PSByb290RG9jdW1lbnQgPyAwIDogcm9vdERvY3VtZW50KQogICAgICwgbV9pZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKIHsK
ICAgICBBU1NFUlQocm9vdE5vZGUpOwogfQogCitUcmVlU2NvcGU6OlRyZWVTY29wZSgpCisgICAg
OiBtX3Jvb3ROb2RlKDApCisgICAgLCBtX3Jvb3REb2N1bWVudCgwKQorICAgICwgbV9wYXJlbnRU
cmVlU2NvcGUoMCkKK3sKK30KKwogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKIHsKICAgICBpZiAo
bV9zZWxlY3Rpb24pIHsKQEAgLTgyLDYgKzkwLDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVu
dFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQYXJl
bnRTY29wZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAg
IG1fcm9vdERvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQogCiBF
bGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxl
bWVudElkKSBjb25zdApAQCAtMjQ4LDYgKzI1NywxMSBAQCBOb2RlKiBUcmVlU2NvcGU6OmZvY3Vz
ZWROb2RlKCkKICAgICByZXR1cm4gMDsKIH0KIAorYm9vbCBUcmVlU2NvcGU6OmlzRG9jdW1lbnRT
Y29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRoaXMgPT0gbV9yb290RG9jdW1lbnQ7Cit9CisK
IHN0YXRpYyB2b2lkIGxpc3RUcmVlU2NvcGVzKE5vZGUqIG5vZGUsIFZlY3RvcjxUcmVlU2NvcGUq
LCA1PiYgdHJlZVNjb3BlcykKIHsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMjgxLDUgKzI5NSwx
MSBAQCBUcmVlU2NvcGUqIGNvbW1vblRyZWVTY29wZShOb2RlKiBub2RlQSwgTm9kZSogbm9kZUIp
CiAgICAgcmV0dXJuIHRyZWVTY29wZXNBW2luZGV4QV0gPT0gdHJlZVNjb3Blc0JbaW5kZXhCXSA/
IHRyZWVTY29wZXNBW2luZGV4QV0gOiAwOwogfQogCitUcmVlU2NvcGUqIFRyZWVTY29wZTo6bnVs
bEluc3RhbmNlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRyZWVTY29wZSwgaW5zdGFu
Y2UsICgpKTsKKyAgICByZXR1cm4gJmluc3RhbmNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAppbmRleCA4NDFiYmI2YzFjYmI5Y2MxOTZmMDE5NDIw
OGM0YTcwZTk4MjFkOGY1Li5mOTMzYzZmMjVjZmQ5NzNiNTRkMGUzNGJmZjI2YzFkZjg0MzU3OWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVNlbGVjdGlvbjsKK2NsYXNz
IERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogY2xhc3Mg
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OwpAQCAtNzgsMTcgKzc5LDIzIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkb3B0SWZOZWVkZWQoTm9kZSopOwogCiAgICAgQ29udGFpbmVyTm9kZSogcm9vdE5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9Ci0KKyAgICBEb2N1bWVudCogcm9vdERv
Y3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RG9jdW1lbnQ7IH0KKyAgICBib29sIGlzRG9j
dW1lbnRTY29wZSgpIGNvbnN0OwogICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgaWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gKm1faWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmdldCgpOyB9CiAKKyAgICBzdGF0aWMgVHJlZVNjb3BlKiBudWxsSW5zdGFuY2UoKTsK
KwogcHJvdGVjdGVkOgotICAgIFRyZWVTY29wZShDb250YWluZXJOb2RlKik7CisgICAgVHJlZVNj
b3BlKENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgp
OwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCiBwcml2YXRlOgorICAgIFRy
ZWVTY29wZSgpOworCiAgICAgQ29udGFpbmVyTm9kZSogbV9yb290Tm9kZTsKKyAgICBEb2N1bWVu
dCogbV9yb290RG9jdW1lbnQ7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29wZTsKIAog
ICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGVBZG9wdGVyLmNwcAppbmRleCAzNjAxZTA4NTk4YjU3YzA0ZGYxMzNjZDQxMDhlNGQy
ZWJlOWZiNWI4Li4xZGZiNWNlZjViOTQ2MGJiMzQ2MzI1YmZjYTY1NTVlNDQxMzNjNTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00OSw3ICs0OSw5IEBAIHZv
aWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0
CiAgICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgZm9yIChO
b2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9v
dCkpIHsKLSAgICAgICAgaWYgKE5vZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRUcmVl
U2NvcGUobmV3RG9jdW1lbnQgPT0gbV9uZXdTY29wZSA/IDAgOiBtX25ld1Njb3BlKSkgeworICAg
ICAgICBub2RlLT5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7CisgICAgICAgIGlmIChub2RlLT5o
YXNSYXJlRGF0YSgpKSB7CisgICAgICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9k
ZS0+cmFyZURhdGEoKTsKICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+bm9kZUxpc3RzKCkpCiAg
ICAgICAgICAgICAgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5hZG9wdFRyZWVTY29wZShvbGRE
b2N1bWVudCwgbmV3RG9jdW1lbnQpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5v
ZGUoKSkKQEAgLTk2LDggKzk4LDYgQEAgaW5saW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92
ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2MKICAgICBpZiAo
b2xkRG9jdW1lbnQpCiAgICAgICAgIG9sZERvY3VtZW50LT5tb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3
RG9jdW1lbnQobm9kZSwgbmV3RG9jdW1lbnQpOwogCi0gICAgbm9kZS0+c2V0RG9jdW1lbnQobmV3
RG9jdW1lbnQpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2Fz
Q2FsbGVkID0gZmFsc2U7CiAgICAgb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0Nh
bGxlZFdpdGggPSBvbGREb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3Zl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNWEyMTQzYzYzZDQ1MDU1NWNlZjM5ODBiNzk0Mzhm
NDU5ZGNmYTEzNC4uNWJmNTQ1NDEzMjNjMDc5ZWE3ZDZjMjdjZjg4MzA5Y2U5MGQzNzcyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb3ZlU2VsZWN0
aW9uQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAppbmRleCAxOTY1N2Fj
MGZjNzcyMTIyMzU4MzU3NGJjNmJkMjA4MWQzZGM3Njk2Li44YmUyMDcwNjE0YzQ5NTMxMzhhM2M1
OWYwNWY0NzViZWIzYmRiNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bW92ZU5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5v
ZGVDb21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlJlbW92ZU5vZGVDb21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGls
ZHJlbkNvbW1hbmQuY3BwCmluZGV4IDE0NTJmODgwM2ZhYmM1NzBhMjU0ZmE1YTJlOTZlNDBmMTRk
ZWE5YzUuLjI4MWZkYmRmMzJiZDUwNTFjZGViZDI3NWZkZjA2OTQ1ZmFiZWVmM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZp
bmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuaCIKIAor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
Q29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFn
ZW50LmNwcAppbmRleCBmNTVkZGE1OGYwNjI5OTVhNDhiYjczZDY4MzZmNmE2MmVlNzI1ZjkyLi5i
MGQ1Mjc1NDFlZTgxNjM0MDkyNTUyOGVlNTRiNjFiYWQ0YTE2ZGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiUGFnZUNvbnNvbGVBZ2VudC5oIgogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2Vu
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDU2Mzc1ODA2NDNlYWFhZmM4MzliNTI0Y2Ez
MGM4Y2FhNmM3ZTIwYjIuLmQ4ZTBhNmY1MjVjMjBhMjk0MmE5ZTlmZWY1OGRhY2EwNjlkYzkxMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTI1Myw2ICsyNTMsNyBAQCBFWFBPUlRTCiAgICAg
ICAgID8/MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQE1BRUBYWgogICAgICAg
ICA/Y29udGV4dERlc3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBV
QUVYWFoKICAgICAgICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAUUFF
QFBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMUBAWgorICAgICAgICA/bnVsbEluc3RhbmNlQFRy
ZWVTY29wZUBXZWJDb3JlQEBTQVBBVjEyQFhaCiAgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3Vt
ZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBA
SEhJSUlJX04wQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBX
ZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAg
P3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFB
RVhQQVZFbGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCAw
ZTVkMWIyYzcxMTc5YmI2N2E5OWNmMTY0NzVlNzIwYzNmMWU2NGQ5Li4zMmY0ZTg3NDgzN2ZhMGEx
YzQyMzE0YzFiMTNmOTQwYzU5YzJiNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUu
ZGVmCkBAIC0yNDYsNiArMjQ2LDcgQEAgRVhQT1JUUwogICAgICAgICA/dXNlclByZWZlcnJlZExh
bmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoK
ICAgICAgICAgP3V0ZjhAU3RyaW5nQFdURkBAUUJFP0FWQ1N0cmluZ0AyQF9OQFoKICAgICAgICAg
P3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKKyAgICAgICAgP251
bGxJbnN0YW5jZUBUcmVlU2NvcGVAV2ViQ29yZUBAU0FQQVYxMkBYWgogICAgICAgICA/bm9kZXNG
cm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdl
YkNvcmVAQEBXVEZAQEhISUlJSV9OMEBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBI
SEBaCiAgICAgICAgID9yZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJT
Y2FsYWJsZUBXZWJDb3JlQEBZQVhBQVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBAWgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggNWRlZjQ3NDcxZDVmNjc4MTAwYzA3OGE0YzEwNzExMGI3NWYyZTEx
ZS4uMDhiMjY2NGEwYzhkNzYxOTA2NGI4NTE1ZWQ2NjJjMmM2ODNlZjM0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC0xNjcsNiArMTY3LDcgQEAgX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Q
b2ludDhpc0FjdGl2ZUV2OwogX1pON1dlYkNvcmUyNkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
RDJFdjsKIF9aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckMyRVBOU18yMlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRFOwogX1pON1dlYkNvcmUyNkNvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyMTZjb250ZXh0RGVzdHJveWVkRXY7CitfWk43V2ViQ29yZTlUcmVlU2NvcGUxMm51bGxJ
bnN0YW5jZUV2OwogbG9jYWw6CiBfWio7CiBjdGkqOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IGQ0OGRhNGFkYzYxZDAwYmIzNTBmMGJjMDM4NTVjNjU1ZWRjZWY2YTUu
LjE1ZDQ2OTBkNTRlYWQ2OTA1MThjODYzYWQ2Zjk4Mjg5MWNlZDA5MTIgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNy0xOSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbUmVmYWN0b3Jpbmdd
IFJlcGxhY2UgTm9kZSdzIERvY3VtZW50IHBvaW50ZXIgd2l0aCBhIFRyZWVTY29wZSBwb2ludGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTgxNgor
CisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICAqIFNvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IEFkZGVkIG5ld2x5IGV4cG9ydGVkIHN5bWJvbHMuCisK
IDIwMTItMDctMTkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNv
bT4KIAogICAgICAgICBbRUZMXSBCdW1wIGxpYnNvdXAgZGVwZW5kZW5jeSB0byB2Mi4zOS40LjEg
dG8gZml4IGNvb2tpZSBpc3N1ZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157171</attachid>
            <date>2012-08-08 04:06:20 -0700</date>
            <delta_ts>2012-08-08 04:12:03 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-59816-20120808200554.patch</filename>
            <type>text/plain</type>
            <size>26707</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM3MTQ3YmZhZWE3OWI5
OTgzOTQzODZmN2I4MjNlM2IyYjQ2YmM5ZC4uY2ZkOGEwMGU4MGRmZTlkYWNhNDg0Yjg5NzM1ZGVl
ZDZlY2Q3MjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA4LTA4ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEJlZm9yZSB0aGlz
IGNoYW5nZSwgTm9kZTo6dHJlZVNjb3BlKCkgZmV0Y2hlcyB0aGUgVHJlZVNjb3BlIG9iamVjdAor
ICAgICAgICBmcm9tIEVsZW1lbnRSYXJlRGF0YS4gVGhpcyBhcHByb2FjaCBoYXMgc2V2ZXJhbCBz
aG9ydGNvbWluZ3M6CisKKyAgICAgICAgLSByYXJlRGF0YSgpIGNhbGwgaXMgc2xvdyBkdWUgdG8g
YSBoYXNodGFibGUgbG9va3VwLgorICAgICAgICAtIEluIHNoYWRvdyB0cmVlLCBlYWNoIG5vZGUg
aGFzIGl0cyB0cmVlIHNjb3BlIGluIEVsZW1lbnRSYXJlRGF0YSwKKyAgICAgICAgICB0aGF0IG1l
YW5zIHRoZSByYXJlLWRhdGEgaXMgbm8gbG9uZ2VyIHJhcmUgaW4gdGhhdCBjYXNlLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIGdldHMgcmlkIG9mIEVsZW1lbnRSYXJlRGF0YTo6bV90cmVlU2NvcGUg
YnkgcmVwbGFjaW5nCisgICAgICAgIE5vZGU6Om1fZG9jdW1lbnQgd2l0aCBOb2RlOjptX3RyZWVT
Y29wZS4gQW5kIHJldHJpZXZlcyB0aGUKKyAgICAgICAgZG9jdW1lbnQgb2YgTm9kZSB0aHJvdWdo
IG1fdHJlZVNjb3BlLgorCisgICAgICAgIE5vdGUgdGhhdCBOb2RlOjpkb2N1bWVudCgpIGlzIGEg
aG90IGZ1bmN0aW9uIGFuZCBuYWl2ZQorICAgICAgICByZXBsYWNlbWVubnQgb2YgbV9kb2N1bWVu
dCB3aXRoIG1fdHJlZVNjb3BlIGNhbiBodXJ0IHRoZQorICAgICAgICBzcGVlZC4gVGhpcyBjaGFu
Z2UgZW1wbG95cyBzb21lIHRyaWNrcyB0byBhZGRyZXNzIGl0LgorCisgICAgICAgIC0gVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBOb2RlOjpJblNoYWRvd1RyZWUgZmxhZywgaWYgdGhlIGZsYWcgaXMg
b2ZmLAorICAgICAgICAgIHRoYXQgbWVhbnMgbV90cmVlU2NvcGUgaXMgYWN0dWFsbHkgYSBkb2N1
bWVudCBhbiBjYW4gYmUgcmV0dXJuZWQgYXMgdGhlIHJlc3VsdC4KKyAgICAgICAgICB0aGlzIGVs
aW1pbmF0ZXMgYW4gZXh0cmFjdCBkZXJlZmVyZW5jZS4KKyAgICAgICAgLSBOb2RlOjptX3RyZWVT
Y29wZSBjYW4gYmUgbnVsbC4gQnV0IHdlIGRvbid0IHdhbnQgdG8gaXNzdWUgYW55IGV4dHJhCisg
ICAgICAgICAgY29uZGl0aW9uYWwgc3RhdGVtZW50LiBTbyB0aGlzIGNoYW5nZSByZXByZXNlbnRz
IGEgbnVsbAorICAgICAgICAgIFRyZWVTY29wZSBhcyBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgp
LCB3aGljaCBzYXZlcyBvbmUgY29uZGl0aW9uYWwKKyAgICAgICAgICBzdGF0ZW1lbnQuCisKKyAg
ICAgICAgV2l0aCB0aGVzZSBjaGFuZ2VzLCB0aGUgTm9kZTo6ZG9jdW1lbnQoKSBzbG93ZG93biBp
cyBtaW5pbWl6ZWQgdG8KKyAgICAgICAgdW5ub3RpY2VhYmxlIHNpemUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDogVG9vayBjYXJlIG9mIGNvbm5lY3RpbyBiZXR3ZW4gVHJlZVNjb3BlLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1Z2dlc3Rl
ZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnRyZWVTY29wZSk6IE5vdyBqdXN0IHJldHVybiBtX3RyZWVTY29wZSwgdGFraW5nIGNh
cmUgb2YgbnVsbEluc3RhbmNlKCkgY2FzZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6c2V0VHJlZVNjb3BlKTogTm93IGp1c3Qgc2V0cyBtX3RyZWVTY29wZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50SW50ZXJuYWwpOiBFeHRyYWN0ZWQgZnJv
bSBkb2N1bWVudCgpIHRvIGhhdmUgQVNTRVJULWZyZWUgdmVyc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRvY3VtZW50KTogUmUtaW1wbGVtZW50ZWQgb3ZlciB0cmVlU2NvcGUoKSBhbmQg
dGhlIGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RvY3VtZW50Tm9kZSk6IFJlLWlt
cGxlbWVudGVkIHVzaW5nIHRyZWVTY29wZSgpCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2Rl
KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0luU2hhZG93VHJlZSk6IFJl
d3JvdGUgdG8gdXNlIEluU2hhZG93VHJlZSBmbGFnLgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKTogRWxp
bWluYXRlZCBtX3RyZWVTY29wZS4KKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjpudWxsSW5zdGFuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vVHJlZVNj
b3BlLmg6IEFkZGVkIG1fcGFyZW50VHJlZVNjb3BlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnJvb3REb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAo
VHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6IE5vIGxvbmdl
ciBjYWxscyBzZXREb2N1bWVudCgpCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlVHJlZVRvTmV3U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRl
cjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rp
b25Db21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBm
dW5jdGlvbnMKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDogSW5jbHVk
ZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBl
ZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDogSW5jbHVkZXMg
RG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBpbnNw
ZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6IEluY2x1ZGVzIERvY3VtZW50LmggdG8gZmluZCBp
bmxpbmVkIE5vZGUgZnVuY3Rpb25zCisKIDIwMTItMDgtMDggIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgICdjbGFzcyBXcmFwcGVyVHlwZUluZm8nIHNob3Vs
ZCBiZSAnc3RydWN0IFdyYXBwZXJUeXBlSW5mbycKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlOThjNjEzOWM3YzQ0
YjEyMTFlZTFmYzcxMDI0ZjYxOGU2YTRkMDU5Li5kMzQ4MDEwNjIxYjBlY2U0YjJhYTE2NzhhZmE2
YThiZDk3MjFmMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMDggIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5n
XSBSZXBsYWNlIE5vZGUncyBEb2N1bWVudCBwb2ludGVyIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MTYK
KworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiB3aW4vV2Vi
S2l0Mi5kZWY6IEFkZGVkIG5ld2x5IGV4cG9ydGVkIHN5bWJvbHMuCisgICAgICAgICogd2luL1dl
YktpdDJDRkxpdGUuZGVmOiBEaXR0by4KKwogMjAxMi0wOC0wOCAgQW5kcmFzIEJlY3NpICA8YW5k
cmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gU2V0IHRoZSBmaXhlZCBs
YXlvdXQgc2V0dGluZyBiZWZvcmUgY3JlYXRpbmcgdGhlIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggNDdkMDQ5NzE3NzY4NmRhNGFjMGEwMzkyYjEzYzc5ZjMxMTMwMmUwMS4uMzNhYTA5NGUw
OTY3YWRiMTJjMDJjZGU5ZTg3NzA5Y2U0YzliOGI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTEwMzIsNiArMTAzMiw3IEBAIF9fWk43V2ViQ29yZTlUaW1lckJhc2U0c3RvcEV2CiBfX1pON1dl
YkNvcmU5VGltZXJCYXNlNXN0YXJ0RWRkCiBfX1pON1dlYkNvcmU5VGltZXJCYXNlQzJFdgogX19a
TjdXZWJDb3JlOVRpbWVyQmFzZUQyRXYKK19fWk43V2ViQ29yZTlUcmVlU2NvcGUxMm51bGxJbnN0
YW5jZUV2CiBfX1pON1dlYkNvcmU5Y2xvc2VGaWxlRVJpCiBfX1pON1dlYkNvcmU5ZW5kT2ZXb3Jk
RVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfOUVXb3JkU2lkZUUKIF9fWk43V2ViQ29yZTlmb250
Q2FjaGVFdgpAQCAtMTI3NCw3ICsxMjc1LDYgQEAgX19aTks3V2ViQ29yZTROb2RlMjB0cmF2ZXJz
ZVByZXZpb3VzTm9kZUVQS1MwXwogX19aTks3V2ViQ29yZTROb2RlMjd0cmF2ZXJzZU5leHRBbmNl
c3RvclNpYmxpbmdFdgogX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJPZlNjb3BlZEhUTUxTdHls
ZUNoaWxkcmVuRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTlub2RlSW5kZXhFdgotX19aTks3V2ViQ29y
ZTROb2RlOXRyZWVTY29wZUV2CiBfX1pOSzdXZWJDb3JlNFBhZ2UxMHBsdWdpbkRhdGFFdgogX19a
Tks3V2ViQ29yZTRQYWdlMTRyZW5kZXJUcmVlU2l6ZUV2CiBfX1pOSzdXZWJDb3JlNFBhZ2UxNWJh
Y2tGb3J3YXJkTGlzdEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2ZTU4ODM4ZDM0OGQ4
YjIxMDVhOTM3NmYyZjVjMDg3NGFhYWQ5NzRiLi5jZTBlZjU4MmRhZjgyYjRhMjc1ZDExZjIyOWI4
YmIyMDRiMTNlODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQyMyw3ICs0MjMsNyBA
QCB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBi
b29sIGlzSFRNTCkKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9jdW1lbnQpCi0gICAg
LCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCB0aGlzKQogICAgICwgbV9n
dWFyZFJlZkNvdW50KDApCiAgICAgLCBtX2NvbnRleHRGZWF0dXJlcyhDb250ZXh0RmVhdHVyZXM6
OmRlZmF1bHRTd2l0Y2goKSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUoTm9RdWlya3NNb2Rl
KQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fZGlkRGlz
cGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlmCiB7Ci0gICAgbV9k
b2N1bWVudCA9IHRoaXM7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogCiAgICAgbV9wYWdlR3Jv
dXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7CiAKQEAgLTY4MCw3ICs2ODAsNyBAQCBEb2N1
bWVudDo6fkRvY3VtZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChtX2NvbGxlY3Rpb25zKTsgaSsrKQogICAgICAgICBBU1NFUlQoIW1fY29sbGVjdGlv
bnNbaV0pOwogCi0gICAgbV9kb2N1bWVudCA9IDA7CisgICAgc2V0VHJlZVNjb3BlKDApOwogCiAg
ICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6
OkRvY3VtZW50Q291bnRlcik7CiB9CkBAIC0xMzU0LDEzICsxMzU0LDE0IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6
OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRN
TERvY3VtZW50KCkpCisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRv
Yy0+aXNYSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0bWwr
eG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChkb2Mt
PmlzU1ZHRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIjsKLSAgICBp
ZiAobV9kb2N1bWVudC0+eG1sU3RhbmRhbG9uZSgpKQorICAgIGlmIChkb2MtPnhtbFN0YW5kYWxv
bmUoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlz
SFRNTERvY3VtZW50KCkpCisgICAgaWYgKGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IGxvYWRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNjc2N2Y4NjQzYmU3ZGQ4
NTEzYzc2MWU3OGNmOWU3MTY4NzA0MzMzLi5mN2NhNTc2MmRjMTgzMDU5NzA0ZmY2M2FiODAxY2Yy
OTkyMTYxOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU1NywyMCArMTU1Nyw0OCBAQCBw
cml2YXRlOgogCiAvLyBQdXQgdGhlc2UgbWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWly
ZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0
aGVtLgogCitpbmxpbmUgVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3RyZWVTY29wZSA9PSBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpID8gMCA6IG1f
dHJlZVNjb3BlOworfQorCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3Bl
KiBzY29wZSkKK3sKKyAgICBtX3RyZWVTY29wZSA9IHNjb3BlID8gc2NvcGUgOiBUcmVlU2NvcGU6
Om51bGxJbnN0YW5jZSgpOworICAgIHNldEZsYWcoIW1fdHJlZVNjb3BlLT5pc0RvY3VtZW50U2Nv
cGUoKSwgSW5TaGFkb3dUcmVlKTsKK30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVu
dEludGVybmFsKCkgY29uc3QKK3sKKyAgICBpZiAoZ2V0RmxhZyhJblNoYWRvd1RyZWUpKQorICAg
ICAgICByZXR1cm4gbV90cmVlU2NvcGUtPnJvb3REb2N1bWVudCgpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fdHJlZVNjb3BlKTsKK30KKworaW5saW5lIERvY3VtZW50KiBO
b2RlOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1l
bnRJbnRlcm5hbCgpOworICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQg
cHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0
cnVjdG9yCisgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5
cGUoKS4KKyAgICBBU1NFUlQoZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQ
RV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQ7Cit9CisKIGlu
bGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhp
cyA9PSBtX2RvY3VtZW50OworICAgIHJldHVybiB0aGlzID09IGRvY3VtZW50SW50ZXJuYWwoKTsK
IH0KIAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25U
eXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0eXBlKQotICAgICwgbV9kb2N1bWVudChkb2N1
bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKDApCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBt
X25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKIHsKICAgICBpZiAoZG9jdW1lbnQpCiAgICAg
ICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOworICAgIHNldFRyZWVTY29wZShkb2N1bWVudCk7CiAj
aWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RBVElTVElDUykgJiYg
RFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCmluZGV4IDM4NDFlMGNkZDI0YmY3ZGYxZGY0YTJkYjQ0ZDIyOTYxYjlmZjgw
MGIuLjU5NGEyZDJkZjEzM2RjYjI1ZmY1MmM4NWQ4Y2I2OTI5NzE4N2IxZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKQEAgLTQxMiw3ICs0MTIsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKHJlbmRlcmVy
KCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZG9jdW1lbnQ7
CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBpZiAoQVhPYmpl
Y3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5heE9iamVjdENh
Y2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1vdmVOb2RlRm9y
VXNlKHRoaXMpOwogICAgIApAQCAtNDI3LDQxICs0MjcsNiBAQCBOb2RlOjp+Tm9kZSgpCiAgICAg
SW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6Ok5v
ZGVDb3VudGVyKTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1l
bnQpCi17Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVu
dCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7Ci19Ci0KLU5vZGVSYXJl
RGF0YSogTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCi17Ci0gICAgaWYgKCFz
Y29wZSkgewotICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewotICAgICAgICAgICAgTm9kZVJh
cmVEYXRhKiBkYXRhID0gcmFyZURhdGEoKTsKLSAgICAgICAgICAgIGRhdGEtPnNldFRyZWVTY29w
ZSgwKTsKLSAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotCi0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEo
KTsKLSAgICBkYXRhLT5zZXRUcmVlU2NvcGUoc2NvcGUpOwotICAgIHJldHVybiBkYXRhOwotfQot
Ci1UcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFVz
aW5nIG1fZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4gc2VlIGNvbW1lbnQgd2l0aCBk
b2N1bWVudCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0g
ICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIFRyZWVTY29wZSogc2NvcGUgPSByYXJlRGF0
YSgpLT50cmVlU2NvcGUoKTsKLSAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IG1fZG9jdW1lbnQ7
Ci19Ci0KIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAogewogICAgIEFTU0VS
VChoYXNSYXJlRGF0YSgpKTsKQEAgLTE0ODEsMTEgKzE0NDYsNiBAQCBDb250YWluZXJOb2RlKiBO
b2RlOjpub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiBwYXJl
bnQgJiYgIXBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQogCi1ib29sIE5v
ZGU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkgIT0g
ZG9jdW1lbnQoKTsKLX0KLQogRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNv
bnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwpA
QCAtMjgyMCw3ICsyNzgwLDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsK
ICAgICBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKICAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZG9j
dW1lbnQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGRvY3VtZW50KCkpOwogICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fbmV4dCk7CiAgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9wcmV2aW91cyk7CiAgICAgaWYgKG1fcmVuZGVyZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApp
bmRleCAxNDFjZTk2YmI1ZWIyOWVlMmNhODQ3YjFjNTFkYjViMWM4ZDViYmNmLi45ZTgxY2E0MWM3
NjMxZmVlNWIxMmZhZTRiN2FiZGMxYTEyNWExMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTIzOSw3ICsy
MzksOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIDAsIGEgY2hpbGQgb2YgU2hhZG93Um9v
dCwgb3IgYSBsZWdhY3kgc2hhZG93IHJvb3QuCiAgICAgTm9kZSogbm9uQm91bmRhcnlTaGFkb3dU
cmVlUm9vdE5vZGUoKTsKLSAgICBib29sIGlzSW5TaGFkb3dUcmVlKCkgY29uc3Q7CisgICAgYm9v
bCBpc0luU2hhZG93VHJlZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSW5TaGFkb3dUcmVlKTsg
fQorCiAgICAgLy8gTm9kZSdzIHBhcmVudCwgc2hhZG93IHRyZWUgaG9zdC4KICAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50T3JI
b3N0RWxlbWVudCgpIGNvbnN0OwpAQCAtNDE3LDE0ICs0MTgsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBSZXR1cm5zIHRoZSBkb2N1bWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBub2RlLiBUaGlzIG1l
dGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBpbiB0aGUgY2FzZSAKICAgICAvLyBvZiBh
IERvY3VtZW50VHlwZSBub2RlIHRoYXQgaXMgbm90IHVzZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0
LiBBIERvY3VtZW50IG5vZGUgcmV0dXJucyBpdHNlbGYuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0aGlzKTsKLSAgICAgICAgLy8gRklYTUU6
IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50
KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKLSAgICAgICAgLy8gZHVlIHRvIHRo
ZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5cGUoKS4KLSAgICAgICAgQVNTRVJUKG1f
ZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3Vt
ZW50KCkpKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7Ci0gICAgfQorICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdDsK
IApAQCAtNDMyLDcgKzQyNiw3IEBAIHB1YmxpYzoKICAgICAvLyBub2RlIHRyZWUsIGZhbHNlIG90
aGVyd2lzZS4KICAgICBib29sIGluRG9jdW1lbnQoKSBjb25zdCAKICAgICB7IAotICAgICAgICBB
U1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOworICAgICAgICBB
U1NFUlQodHJlZVNjb3BlKCkgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKICAgICAgICAg
cmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVudEZsYWcpOwogICAgIH0KIApAQCAtNzA3LDEwICs3MDEs
MTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICBJbk5hbWVkRmxvd0ZsYWcgPSAxIDw8IDI2
LAogICAgICAgICBIYXNBdHRyTGlzdEZsYWcgPSAxIDw8IDI3LAotICAgICAgICBIYXNDdXN0b21D
YWxsYmFja3NGbGFnID0gMSA8PCAyOAorICAgICAgICBIYXNDdXN0b21DYWxsYmFja3NGbGFnID0g
MSA8PCAyOCwKKyAgICAgICAgSW5TaGFkb3dUcmVlID0gMSA8PCAyOQorCiAgICAgfTsKIAotICAg
IC8vIDQgYml0cyByZW1haW5pbmcKKyAgICAvLyAzIGJpdHMgcmVtYWluaW5nCiAKICAgICBib29s
IGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFz
azsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1f
bm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7
IH0gCkBAIC03NDYsMTYgKzc0MiwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldEhhc0N1
c3RvbUNhbGxiYWNrcygpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsg
fQogCisgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CisgICAgRG9jdW1lbnQqIGRv
Y3VtZW50SW50ZXJuYWwoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJl
ZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYo
KTsKIAotICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2Nv
cGUgbWlncmF0aW9uLgotICAgIC8vIHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRh
IHRvIHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBz
aXRlLgotICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwotICAgIHZv
aWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKLQogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVk
aXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVk
aXRhYmxlTGV2ZWwpIGNvbnN0OwogICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShF
ZGl0YWJsZUxldmVsKSBjb25zdDsKQEAgLTc5OCw3ICs3OTIsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2Rv
Y3VtZW50OworICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgTm9kZSogbV9wcmV2aW91
czsKICAgICBOb2RlKiBtX25leHQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDFmZGViYjZkMjE4NzM0ODU0NGM4MzIwZTJjNTVk
NmJkODcwOTc3ZjQuLjk3ZjA5MGFlYmRhNTAzOTQ5YjQ1YWM5NmVkNWQ5YjJhZDJlNjVmOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE4MCw4ICsxODAsNyBAQCBjbGFzcyBOb2Rl
UmFyZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0YSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKICAgICBOb2RlUmFyZURhdGEoKQotICAg
ICAgICA6IG1fdHJlZVNjb3BlKDApCi0gICAgICAgICwgbV9jaGlsZE5vZGVMaXN0KDApCisgICAg
ICAgIDogbV9jaGlsZE5vZGVMaXN0KDApCiAgICAgICAgICwgbV90YWJJbmRleCgwKQogICAgICAg
ICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNGb2N1
c2VkKGZhbHNlKQpAQCAtMjA5LDkgKzIwOCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJh
cmVEYXRhTWFwKCkuZ2V0KG5vZGUpOwogICAgIH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShU
cmVlU2NvcGUqIHRyZWVTY29wZSkgeyBtX3RyZWVTY29wZSA9IHRyZWVTY29wZTsgfQotICAgIAog
ICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2
b2lkIHNldE5vZGVMaXN0cyhQYXNzT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBt
X25vZGVMaXN0cyA9IGxpc3RzOyB9CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZUxpc3RzLmdldCgpOyB9CkBAIC0zNDUsNyArMzQxLDYgQEAg
cHJvdGVjdGVkOgogCiBwcml2YXRlOgogCi0gICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAg
ICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxp
c3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBPd25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50
VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBiOWM0ODFjMTg5ODY0
ODFlMTliNjI2ZjY5NGMyMDZkZjEyMjE0NzRkLi44ODFlOTk3MTEwNjEwNjc0ODI0N2Y2Y2FhMTZi
NzY0ZDc2NDQ1YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFk
b3dSb290KQotICAgICwgVHJlZVNjb3BlKHRoaXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9j
dW1lbnQpCiAgICAgLCBtX3ByZXYoMCkKICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9hcHBseUF1
dGhvclN0eWxlcyhmYWxzZSkKQEAgLTU4LDExICs1OCw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jv
b3QoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCi0g
ICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29wZS4KLSAgICBzZXRQYXJlbnRUcmVl
U2NvcGUoZG9jdW1lbnQpOwogICAgIC8vIFNoYWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29w
ZSBwb2ludGVyIHBvaW50IHRvIHRoZW1zZWx2ZXMuCiAgICAgLy8gVGhpcyB3YXksIGRpcmVjdCBj
aGlsZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1
cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMp
OwogfQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
CmluZGV4IGQzNzc0YWVkYjA2ZThjNTMzYWZhZTZmMzZjMWU2ZThiMzAzZWFmOTkuLjA3ZTJkMDJh
ODBhZTlmYTYzN2M3NDZkN2ZhMzkzNWU0NTA4NTViNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
Y3BwCkBAIC01MiwxNCArNTIsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiBy
b290Tm9kZSkKK1RyZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlLCBE
b2N1bWVudCogcm9vdERvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKLSAgICAs
IG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX3Jvb3REb2N1bWVudChyb290RG9jdW1lbnQp
CisgICAgLCBtX3BhcmVudFRyZWVTY29wZShyb290Tm9kZSA9PSByb290RG9jdW1lbnQgPyAwIDog
cm9vdERvY3VtZW50KQogICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKIHsKICAgICBBU1NFUlQocm9vdE5vZGUpOwogfQog
CitUcmVlU2NvcGU6OlRyZWVTY29wZSgpCisgICAgOiBtX3Jvb3ROb2RlKDApCisgICAgLCBtX3Jv
b3REb2N1bWVudCgwKQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKK3sKK30KKwogVHJlZVNj
b3BlOjp+VHJlZVNjb3BlKCkKIHsKICAgICBpZiAobV9zZWxlY3Rpb24pIHsKQEAgLTc0LDYgKzgy
LDExIEBAIHZvaWQgVHJlZVNjb3BlOjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCiAgICAgbV9pbWFn
ZU1hcHNCeU5hbWUuY2xlYXIoKTsKIH0KIAordm9pZCBUcmVlU2NvcGU6OnJlc2V0Um9vdERvY3Vt
ZW50KCkKK3sKKyAgICBtX3Jvb3REb2N1bWVudCA9IG1fcGFyZW50U2NvcGUtPnJvb3REb2N1bWVu
dCgpOworfQorCiB2b2lkIFRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29wZSog
bmV3UGFyZW50U2NvcGUpCiB7CiAgICAgLy8gQSBkb2N1bWVudCBub2RlIGNhbm5vdCBiZSByZS1w
YXJlbnRlZC4KQEAgLTgyLDYgKzk1LDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVT
Y29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQYXJlbnRTY29w
ZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIG1fcm9v
dERvY3VtZW50ID0gbmV3UGFyZW50U2NvcGUtPnJvb3REb2N1bWVudCgpOwogfQogCiBFbGVtZW50
KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElk
KSBjb25zdApAQCAtMjQ4LDYgKzI2MiwxMSBAQCBOb2RlKiBUcmVlU2NvcGU6OmZvY3VzZWROb2Rl
KCkKICAgICByZXR1cm4gMDsKIH0KIAorYm9vbCBUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHRoaXMgPT0gbV9yb290RG9jdW1lbnQ7Cit9CisKIHN0YXRp
YyB2b2lkIGxpc3RUcmVlU2NvcGVzKE5vZGUqIG5vZGUsIFZlY3RvcjxUcmVlU2NvcGUqLCA1PiYg
dHJlZVNjb3BlcykKIHsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMjgxLDUgKzMwMCwxMSBAQCBU
cmVlU2NvcGUqIGNvbW1vblRyZWVTY29wZShOb2RlKiBub2RlQSwgTm9kZSogbm9kZUIpCiAgICAg
cmV0dXJuIHRyZWVTY29wZXNBW2luZGV4QV0gPT0gdHJlZVNjb3Blc0JbaW5kZXhCXSA/IHRyZWVT
Y29wZXNBW2luZGV4QV0gOiAwOwogfQogCitUcmVlU2NvcGUqIFRyZWVTY29wZTo6bnVsbEluc3Rh
bmNlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRyZWVTY29wZSwgaW5zdGFuY2UsICgp
KTsKKyAgICByZXR1cm4gJmluc3RhbmNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuaAppbmRleCBkOTc1OGIwMjhlNGQ0NTY3ODRmNDU5MGUwOTBlNWEy
NTdkMjk0NWYzLi5mMzQ0NmZmMDQ3Y2RjMWJiNzJjZDM0YzI1ZjZjNmQzNDk1ZjE4YWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVNlbGVjdGlvbjsKK2NsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogY2xhc3MgSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5OwpAQCAtNDgsNiArNDksNyBAQCBjbGFzcyBUcmVlU2NvcGUgewog
cHVibGljOgogICAgIFRyZWVTY29wZSogcGFyZW50VHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJlbnRUcmVlU2NvcGU7IH0KICAgICB2b2lkIHNldFBhcmVudFRyZWVTY29wZShUcmVlU2Nv
cGUqKTsKKyAgICB2b2lkIHJlc2V0Um9vdERvY3VtZW50KCk7CiAKICAgICBOb2RlKiBmb2N1c2Vk
Tm9kZSgpOwogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYp
IGNvbnN0OwpAQCAtNzgsMTcgKzgwLDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkb3B0SWZOZWVk
ZWQoTm9kZSopOwogCiAgICAgQ29udGFpbmVyTm9kZSogcm9vdE5vZGUoKSBjb25zdCB7IHJldHVy
biBtX3Jvb3ROb2RlOyB9CisgICAgRG9jdW1lbnQqIHJvb3REb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcm9vdERvY3VtZW50OyB9CisgICAgYm9vbCBpc0RvY3VtZW50U2NvcGUoKSBjb25zdDsK
IAogICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
KCkgY29uc3QgeyByZXR1cm4gKm1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmdldCgpOyB9CiAK
KyAgICBzdGF0aWMgVHJlZVNjb3BlKiBudWxsSW5zdGFuY2UoKTsKKwogcHJvdGVjdGVkOgotICAg
IGV4cGxpY2l0IFRyZWVTY29wZShDb250YWluZXJOb2RlKik7CisgICAgVHJlZVNjb3BlKENvbnRh
aW5lck5vZGUqLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAg
dm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCiBwcml2YXRlOgorICAgIFRyZWVTY29wZSgp
OworCiAgICAgQ29udGFpbmVyTm9kZSogbV9yb290Tm9kZTsKKyAgICBEb2N1bWVudCogbV9yb290
RG9jdW1lbnQ7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29wZTsKIAogICAgIERvY3Vt
ZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVB
ZG9wdGVyLmNwcAppbmRleCAzNjAxZTA4NTk4YjU3YzA0ZGYxMzNjZDQxMDhlNGQyZWJlOWZiNWI4
Li42NzIxMDQzZGI1ZjdjNjI5YzUwMjhhYTE5ZWIwYjI0OTM1MzNiZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00OSw3ICs0OSw5IEBAIHZvaWQgVHJlZVNj
b3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAgICAgICAg
IG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgZm9yIChOb2RlKiBub2Rl
ID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkpIHsKLSAg
ICAgICAgaWYgKE5vZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRUcmVlU2NvcGUobmV3
RG9jdW1lbnQgPT0gbV9uZXdTY29wZSA/IDAgOiBtX25ld1Njb3BlKSkgeworICAgICAgICBub2Rl
LT5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7CisgICAgICAgIGlmIChub2RlLT5oYXNSYXJlRGF0
YSgpKSB7CisgICAgICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+cmFyZURh
dGEoKTsKICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+bm9kZUxpc3RzKCkpCiAgICAgICAgICAg
ICAgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5hZG9wdFRyZWVTY29wZShvbGREb2N1bWVudCwg
bmV3RG9jdW1lbnQpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKQEAg
LTcxLDggKzczLDEwIEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld0RvY3Vt
ZW50KE5vZGUqIHJvb3QsIERvY3VtZW50KiBvbGREb2N1bWVudCwKIHsKICAgICBmb3IgKE5vZGUq
IG5vZGUgPSByb290OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290KSkg
ewogICAgICAgICBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQobm9kZSwgb2xkRG9jdW1lbnQsIG5ld0Rv
Y3VtZW50KTsKLSAgICAgICAgZm9yIChTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT55b3VuZ2Vz
dFNoYWRvd1Jvb3QoKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ctPm9sZGVyU2hhZG93Um9vdCgp
KQorICAgICAgICBmb3IgKFNoYWRvd1Jvb3QqIHNoYWRvdyA9IG5vZGUtPnlvdW5nZXN0U2hhZG93
Um9vdCgpOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+b2xkZXJTaGFkb3dSb290KCkpIHsKKyAg
ICAgICAgICAgIHNoYWRvdy0+cmVzZXRSb290RG9jdW1lbnQoKTsKICAgICAgICAgICAgIG1vdmVU
cmVlVG9OZXdEb2N1bWVudChzaGFkb3csIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CisgICAg
ICAgIH0KICAgICB9CiB9CiAKQEAgLTk2LDggKzEwMCw2IEBAIGlubGluZSB2b2lkIFRyZWVTY29w
ZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xk
RG9jCiAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAgICBvbGREb2N1bWVudC0+bW92ZU5vZGVJ
dGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3VtZW50KTsKIAotICAgIG5vZGUtPnNl
dERvY3VtZW50KG5ld0RvY3VtZW50KTsKLQogI2lmbmRlZiBOREVCVUcKICAgICBkaWRNb3ZlVG9O
ZXdEb2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOwogICAgIG9sZERvY3VtZW50RGlkTW92ZVRvTmV3
RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gb2xkRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDVhMjE0M2M2M2Q0NTA1NTVj
ZWYzOTgwYjc5NDM4ZjQ1OWRjZmExMzQuLjViZjU0NTQxMzIzYzA3OWVhN2Q2YzI3Y2Y4ODMwOWNl
OTBkMzc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTW92ZVNlbGVjdGlvbkNvbW1hbmQuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAK
aW5kZXggMTk2NTdhYzBmYzc3MjEyMjM1ODM1NzRiYzZiZDIwODFkM2RjNzY5Ni4uOGJlMjA3MDYx
NGM0OTUzMTM4YTNjNTlmMDVmNDc1YmViM2JkYjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2Vydmlu
Z0NoaWxkcmVuQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQ
cmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAppbmRleCAxNDUyZjg4MDNmYWJjNTcwYTI1NGZh
NWEyZTk2ZTQwZjE0ZGVhOWM1Li4yODFmZGJkZjMyYmQ1MDUxY2RlYmQyNzVmZGYwNjk0NWZhYmVl
ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2
aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5D
b21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZjU1ZGRhNThmMDYyOTk1YTQ4YmI3M2Q2ODM2ZjZh
NjJlZTcyNWY5Mi4uYjBkNTI3NTQxZWU4MTYzNDA5MjU1MjhlZTU0YjYxYmFkNGExNmRkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQWdlbnQuaCIKIAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQWdlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBkZWEzNmVkOTAyOWFl
YjIyZDU1YWM3MzE3N2E5ZmNlNGUyODU5NDkyLi44ZWRkYWI5MmU3NDEwMTJiOTNiNDAxNDM4Y2Q4
OTY4Y2Q2YWNkZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYK
KysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0yNTYsNiArMjU2LDcgQEAg
RVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBN
QUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
QFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDFAQFoKKyAgICAgICAgP251
bGxJbnN0YW5jZUBUcmVlU2NvcGVAV2ViQ29yZUBAU0FQQVYxMkBYWgogICAgICAgICA/bm9kZXNG
cm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdl
YkNvcmVAQEBXVEZAQEhISUlJSV9OMEBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBI
SEBaCiAgICAgICAgID93ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVu
dEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYKaW5kZXggMWE0N2QyZjNhNTA0ZWI1NjRiMDg3ZWE5ZmFmMGFjNGM2OWM5Mjc5ZS4uN2Q4
NGY3OTlmMTY3Njg0MDVkZmE4MWVhOTg1NTdhMDkzZjY4MDRkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMjUwLDYgKzI1MCw3IEBAIEVYUE9SVFMKICAgICAgICAgP3Vz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBA
JDBBQEBXVEZAQFhaCiAgICAgICAgID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBf
TkBaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFha
CisgICAgICAgID9udWxsSW5zdGFuY2VAVHJlZVNjb3BlQFdlYkNvcmVAQFNBUEFWMTJAWFoKICAg
ICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRy
QFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjBAWgogICAgICAgICA/c2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3Vt
ZW50TWFya2VyQDJASEhAWgogICAgICAgICA/cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNj
YWxlSWZOb3RVc2VyU2NhbGFibGVAV2ViQ29yZUBAWUFYQUFVVmlld3BvcnRBdHRyaWJ1dGVzQDFA
QFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDgyZmZjMmU5YTRjNDMzYmM4ODg2NGFmNTNi
MzllZmMzMjA4ZmQwMDAuLjEwNjkzN2ZjY2QyYjg2NzEwNWU4MGI0ZmRiZTJlM2Q0MTM4ZTdiY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTcxLDYgKzE3MSw3IEBAIF9aTks3V2ViQ29y
ZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3RpdmVFdjsKIF9aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlckQyRXY7CiBfWk43V2ViQ29yZTI2Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXJDMkVQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RTsKIF9aTjdXZWJDb3JlMjZDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcjE2Y29udGV4dERlc3Ryb3llZEV2OworX1pON1dlYkNvcmU5VHJl
ZVNjb3BlMTJudWxsSW5zdGFuY2VFdjsKIGxvY2FsOgogX1oqOwogY3RpKjsKZGlmZiAtLWdpdCBh
L0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2N2I2ODZkNDZhNjIwNTc0NjI2YTRiMTk0OTE5
ODYxZjhmOTIwOTAzLi5kNTRiYzg3NTg1YjZlZTdmM2NmNGJkZDRlZDZiZDE1YTg1YzZkN2NhIDEw
MDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTItMDgtMDggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAg
W1JlZmFjdG9yaW5nXSBSZXBsYWNlIE5vZGUncyBEb2N1bWVudCBwb2ludGVyIHdpdGggYSBUcmVl
U2NvcGUgcG9pbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTk4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAg
ICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOiBBZGRlZCBuZXdseSBleHBvcnRl
ZCBzeW1ib2xzLgorCiAyMDEyLTA4LTA3ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNv
bmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW1dLMl1bRUZMXSBJbXBsZW1lbnQgYWNjZWxlcmF0
ZWQgY29tcG9zaXRpbmcgb24gV0syIEVmbCBwb3J0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157174</attachid>
            <date>2012-08-08 04:12:14 -0700</date>
            <delta_ts>2012-12-06 19:12:02 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-59816-20120808201148.patch</filename>
            <type>text/plain</type>
            <size>26711</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM3MTQ3YmZhZWE3OWI5
OTgzOTQzODZmN2I4MjNlM2IyYjQ2YmM5ZC4uY2ZkOGEwMGU4MGRmZTlkYWNhNDg0Yjg5NzM1ZGVl
ZDZlY2Q3MjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA4LTA4ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEJlZm9yZSB0aGlz
IGNoYW5nZSwgTm9kZTo6dHJlZVNjb3BlKCkgZmV0Y2hlcyB0aGUgVHJlZVNjb3BlIG9iamVjdAor
ICAgICAgICBmcm9tIEVsZW1lbnRSYXJlRGF0YS4gVGhpcyBhcHByb2FjaCBoYXMgc2V2ZXJhbCBz
aG9ydGNvbWluZ3M6CisKKyAgICAgICAgLSByYXJlRGF0YSgpIGNhbGwgaXMgc2xvdyBkdWUgdG8g
YSBoYXNodGFibGUgbG9va3VwLgorICAgICAgICAtIEluIHNoYWRvdyB0cmVlLCBlYWNoIG5vZGUg
aGFzIGl0cyB0cmVlIHNjb3BlIGluIEVsZW1lbnRSYXJlRGF0YSwKKyAgICAgICAgICB0aGF0IG1l
YW5zIHRoZSByYXJlLWRhdGEgaXMgbm8gbG9uZ2VyIHJhcmUgaW4gdGhhdCBjYXNlLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIGdldHMgcmlkIG9mIEVsZW1lbnRSYXJlRGF0YTo6bV90cmVlU2NvcGUg
YnkgcmVwbGFjaW5nCisgICAgICAgIE5vZGU6Om1fZG9jdW1lbnQgd2l0aCBOb2RlOjptX3RyZWVT
Y29wZS4gQW5kIHJldHJpZXZlcyB0aGUKKyAgICAgICAgZG9jdW1lbnQgb2YgTm9kZSB0aHJvdWdo
IG1fdHJlZVNjb3BlLgorCisgICAgICAgIE5vdGUgdGhhdCBOb2RlOjpkb2N1bWVudCgpIGlzIGEg
aG90IGZ1bmN0aW9uIGFuZCBuYWl2ZQorICAgICAgICByZXBsYWNlbWVubnQgb2YgbV9kb2N1bWVu
dCB3aXRoIG1fdHJlZVNjb3BlIGNhbiBodXJ0IHRoZQorICAgICAgICBzcGVlZC4gVGhpcyBjaGFu
Z2UgZW1wbG95cyBzb21lIHRyaWNrcyB0byBhZGRyZXNzIGl0LgorCisgICAgICAgIC0gVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBOb2RlOjpJblNoYWRvd1RyZWUgZmxhZywgaWYgdGhlIGZsYWcgaXMg
b2ZmLAorICAgICAgICAgIHRoYXQgbWVhbnMgbV90cmVlU2NvcGUgaXMgYWN0dWFsbHkgYSBkb2N1
bWVudCBhbiBjYW4gYmUgcmV0dXJuZWQgYXMgdGhlIHJlc3VsdC4KKyAgICAgICAgICB0aGlzIGVs
aW1pbmF0ZXMgYW4gZXh0cmFjdCBkZXJlZmVyZW5jZS4KKyAgICAgICAgLSBOb2RlOjptX3RyZWVT
Y29wZSBjYW4gYmUgbnVsbC4gQnV0IHdlIGRvbid0IHdhbnQgdG8gaXNzdWUgYW55IGV4dHJhCisg
ICAgICAgICAgY29uZGl0aW9uYWwgc3RhdGVtZW50LiBTbyB0aGlzIGNoYW5nZSByZXByZXNlbnRz
IGEgbnVsbAorICAgICAgICAgIFRyZWVTY29wZSBhcyBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgp
LCB3aGljaCBzYXZlcyBvbmUgY29uZGl0aW9uYWwKKyAgICAgICAgICBzdGF0ZW1lbnQuCisKKyAg
ICAgICAgV2l0aCB0aGVzZSBjaGFuZ2VzLCB0aGUgTm9kZTo6ZG9jdW1lbnQoKSBzbG93ZG93biBp
cyBtaW5pbWl6ZWQgdG8KKyAgICAgICAgdW5ub3RpY2VhYmxlIHNpemUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDogVG9vayBjYXJlIG9mIGNvbm5lY3RpbyBiZXR3ZW4gVHJlZVNjb3BlLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1Z2dlc3Rl
ZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnRyZWVTY29wZSk6IE5vdyBqdXN0IHJldHVybiBtX3RyZWVTY29wZSwgdGFraW5nIGNh
cmUgb2YgbnVsbEluc3RhbmNlKCkgY2FzZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6c2V0VHJlZVNjb3BlKTogTm93IGp1c3Qgc2V0cyBtX3RyZWVTY29wZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50SW50ZXJuYWwpOiBFeHRyYWN0ZWQgZnJv
bSBkb2N1bWVudCgpIHRvIGhhdmUgQVNTRVJULWZyZWUgdmVyc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRvY3VtZW50KTogUmUtaW1wbGVtZW50ZWQgb3ZlciB0cmVlU2NvcGUoKSBhbmQg
dGhlIGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RvY3VtZW50Tm9kZSk6IFJlLWlt
cGxlbWVudGVkIHVzaW5nIHRyZWVTY29wZSgpCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2Rl
KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0luU2hhZG93VHJlZSk6IFJl
d3JvdGUgdG8gdXNlIEluU2hhZG93VHJlZSBmbGFnLgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKTogRWxp
bWluYXRlZCBtX3RyZWVTY29wZS4KKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmlzRG9jdW1lbnRTY29wZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjpudWxsSW5zdGFuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vVHJlZVNj
b3BlLmg6IEFkZGVkIG1fcGFyZW50VHJlZVNjb3BlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnJvb3REb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAo
VHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6IE5vIGxvbmdl
ciBjYWxscyBzZXREb2N1bWVudCgpCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlVHJlZVRvTmV3U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRl
cjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rp
b25Db21tYW5kLmNwcDogSW5jbHVkZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBm
dW5jdGlvbnMKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDogSW5jbHVk
ZXMgRG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBl
ZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDogSW5jbHVkZXMg
RG9jdW1lbnQuaCB0byBmaW5kIGlubGluZWQgTm9kZSBmdW5jdGlvbnMKKyAgICAgICAgKiBpbnNw
ZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6IEluY2x1ZGVzIERvY3VtZW50LmggdG8gZmluZCBp
bmxpbmVkIE5vZGUgZnVuY3Rpb25zCisKIDIwMTItMDgtMDggIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgICdjbGFzcyBXcmFwcGVyVHlwZUluZm8nIHNob3Vs
ZCBiZSAnc3RydWN0IFdyYXBwZXJUeXBlSW5mbycKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlOThjNjEzOWM3YzQ0
YjEyMTFlZTFmYzcxMDI0ZjYxOGU2YTRkMDU5Li5kMzQ4MDEwNjIxYjBlY2U0YjJhYTE2NzhhZmE2
YThiZDk3MjFmMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMDggIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5n
XSBSZXBsYWNlIE5vZGUncyBEb2N1bWVudCBwb2ludGVyIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk4MTYK
KworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiB3aW4vV2Vi
S2l0Mi5kZWY6IEFkZGVkIG5ld2x5IGV4cG9ydGVkIHN5bWJvbHMuCisgICAgICAgICogd2luL1dl
YktpdDJDRkxpdGUuZGVmOiBEaXR0by4KKwogMjAxMi0wOC0wOCAgQW5kcmFzIEJlY3NpICA8YW5k
cmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gU2V0IHRoZSBmaXhlZCBs
YXlvdXQgc2V0dGluZyBiZWZvcmUgY3JlYXRpbmcgdGhlIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggNDdkMDQ5NzE3NzY4NmRhNGFjMGEwMzkyYjEzYzc5ZjMxMTMwMmUwMS4uMzNhYTA5NGUw
OTY3YWRiMTJjMDJjZGU5ZTg3NzA5Y2U0YzliOGI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTEwMzIsNiArMTAzMiw3IEBAIF9fWk43V2ViQ29yZTlUaW1lckJhc2U0c3RvcEV2CiBfX1pON1dl
YkNvcmU5VGltZXJCYXNlNXN0YXJ0RWRkCiBfX1pON1dlYkNvcmU5VGltZXJCYXNlQzJFdgogX19a
TjdXZWJDb3JlOVRpbWVyQmFzZUQyRXYKK19fWk43V2ViQ29yZTlUcmVlU2NvcGUxMm51bGxJbnN0
YW5jZUV2CiBfX1pON1dlYkNvcmU5Y2xvc2VGaWxlRVJpCiBfX1pON1dlYkNvcmU5ZW5kT2ZXb3Jk
RVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfOUVXb3JkU2lkZUUKIF9fWk43V2ViQ29yZTlmb250
Q2FjaGVFdgpAQCAtMTI3NCw3ICsxMjc1LDYgQEAgX19aTks3V2ViQ29yZTROb2RlMjB0cmF2ZXJz
ZVByZXZpb3VzTm9kZUVQS1MwXwogX19aTks3V2ViQ29yZTROb2RlMjd0cmF2ZXJzZU5leHRBbmNl
c3RvclNpYmxpbmdFdgogX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJPZlNjb3BlZEhUTUxTdHls
ZUNoaWxkcmVuRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTlub2RlSW5kZXhFdgotX19aTks3V2ViQ29y
ZTROb2RlOXRyZWVTY29wZUV2CiBfX1pOSzdXZWJDb3JlNFBhZ2UxMHBsdWdpbkRhdGFFdgogX19a
Tks3V2ViQ29yZTRQYWdlMTRyZW5kZXJUcmVlU2l6ZUV2CiBfX1pOSzdXZWJDb3JlNFBhZ2UxNWJh
Y2tGb3J3YXJkTGlzdEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2ZTU4ODM4ZDM0OGQ4
YjIxMDVhOTM3NmYyZjVjMDg3NGFhYWQ5NzRiLi5jZTBlZjU4MmRhZjgyYjRhMjc1ZDExZjIyOWI4
YmIyMDRiMTNlODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQyMyw3ICs0MjMsNyBA
QCB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBi
b29sIGlzSFRNTCkKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9jdW1lbnQpCi0gICAg
LCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCB0aGlzKQogICAgICwgbV9n
dWFyZFJlZkNvdW50KDApCiAgICAgLCBtX2NvbnRleHRGZWF0dXJlcyhDb250ZXh0RmVhdHVyZXM6
OmRlZmF1bHRTd2l0Y2goKSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUoTm9RdWlya3NNb2Rl
KQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fZGlkRGlz
cGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlmCiB7Ci0gICAgbV9k
b2N1bWVudCA9IHRoaXM7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogCiAgICAgbV9wYWdlR3Jv
dXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7CiAKQEAgLTY4MCw3ICs2ODAsNyBAQCBEb2N1
bWVudDo6fkRvY3VtZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChtX2NvbGxlY3Rpb25zKTsgaSsrKQogICAgICAgICBBU1NFUlQoIW1fY29sbGVjdGlv
bnNbaV0pOwogCi0gICAgbV9kb2N1bWVudCA9IDA7CisgICAgc2V0VHJlZVNjb3BlKDApOwogCiAg
ICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6
OkRvY3VtZW50Q291bnRlcik7CiB9CkBAIC0xMzU0LDEzICsxMzU0LDE0IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6
OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRN
TERvY3VtZW50KCkpCisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRv
Yy0+aXNYSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0bWwr
eG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChkb2Mt
PmlzU1ZHRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIjsKLSAgICBp
ZiAobV9kb2N1bWVudC0+eG1sU3RhbmRhbG9uZSgpKQorICAgIGlmIChkb2MtPnhtbFN0YW5kYWxv
bmUoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlz
SFRNTERvY3VtZW50KCkpCisgICAgaWYgKGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IGxvYWRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNjc2N2Y4NjQzYmU3ZGQ4
NTEzYzc2MWU3OGNmOWU3MTY4NzA0MzMzLi5mN2NhNTc2MmRjMTgzMDU5NzA0ZmY2M2FiODAxY2Yy
OTkyMTYxOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU1NywyMCArMTU1Nyw0OCBAQCBw
cml2YXRlOgogCiAvLyBQdXQgdGhlc2UgbWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWly
ZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0
aGVtLgogCitpbmxpbmUgVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3RyZWVTY29wZSA9PSBUcmVlU2NvcGU6Om51bGxJbnN0YW5jZSgpID8gMCA6IG1f
dHJlZVNjb3BlOworfQorCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3Bl
KiBzY29wZSkKK3sKKyAgICBtX3RyZWVTY29wZSA9IHNjb3BlID8gc2NvcGUgOiBUcmVlU2NvcGU6
Om51bGxJbnN0YW5jZSgpOworICAgIHNldEZsYWcoIW1fdHJlZVNjb3BlLT5pc0RvY3VtZW50U2Nv
cGUoKSwgSW5TaGFkb3dUcmVlKTsKK30KKworaW5saW5lIERvY3VtZW50KiBOb2RlOjpkb2N1bWVu
dEludGVybmFsKCkgY29uc3QKK3sKKyAgICBpZiAoZ2V0RmxhZyhJblNoYWRvd1RyZWUpKQorICAg
ICAgICByZXR1cm4gbV90cmVlU2NvcGUtPnJvb3REb2N1bWVudCgpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG1fdHJlZVNjb3BlKTsKK30KKworaW5saW5lIERvY3VtZW50KiBO
b2RlOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1l
bnRJbnRlcm5hbCgpOworICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNlZnVsLCBidXQg
cHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0
cnVjdG9yCisgICAgLy8gZHVlIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5
cGUoKS4KKyAgICBBU1NFUlQoZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQ
RV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQ7Cit9CisKIGlu
bGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhp
cyA9PSBtX2RvY3VtZW50OworICAgIHJldHVybiB0aGlzID09IGRvY3VtZW50SW50ZXJuYWwoKTsK
IH0KIAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25U
eXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0eXBlKQotICAgICwgbV9kb2N1bWVudChkb2N1
bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKDApCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBt
X25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKIHsKICAgICBpZiAoZG9jdW1lbnQpCiAgICAg
ICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOworICAgIHNldFRyZWVTY29wZShkb2N1bWVudCk7CiAj
aWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RBVElTVElDUykgJiYg
RFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCmluZGV4IDM4NDFlMGNkZDI0YmY3ZGYxZGY0YTJkYjQ0ZDIyOTYxYjlmZjgw
MGIuLjU5NGEyZDJkZjEzM2RjYjI1ZmY1MmM4NWQ4Y2I2OTI5NzE4N2IxZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKQEAgLTQxMiw3ICs0MTIsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKHJlbmRlcmVy
KCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZG9jdW1lbnQ7
CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBpZiAoQVhPYmpl
Y3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5heE9iamVjdENh
Y2hlRXhpc3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1vdmVOb2RlRm9y
VXNlKHRoaXMpOwogICAgIApAQCAtNDI3LDQxICs0MjcsNiBAQCBOb2RlOjp+Tm9kZSgpCiAgICAg
SW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6Ok5v
ZGVDb3VudGVyKTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1l
bnQpCi17Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVu
dCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7Ci19Ci0KLU5vZGVSYXJl
RGF0YSogTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCi17Ci0gICAgaWYgKCFz
Y29wZSkgewotICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewotICAgICAgICAgICAgTm9kZVJh
cmVEYXRhKiBkYXRhID0gcmFyZURhdGEoKTsKLSAgICAgICAgICAgIGRhdGEtPnNldFRyZWVTY29w
ZSgwKTsKLSAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotCi0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEo
KTsKLSAgICBkYXRhLT5zZXRUcmVlU2NvcGUoc2NvcGUpOwotICAgIHJldHVybiBkYXRhOwotfQot
Ci1UcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFVz
aW5nIG1fZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4gc2VlIGNvbW1lbnQgd2l0aCBk
b2N1bWVudCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0g
ICAgICAgIHJldHVybiBtX2RvY3VtZW50OwotICAgIFRyZWVTY29wZSogc2NvcGUgPSByYXJlRGF0
YSgpLT50cmVlU2NvcGUoKTsKLSAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IG1fZG9jdW1lbnQ7
Ci19Ci0KIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAogewogICAgIEFTU0VS
VChoYXNSYXJlRGF0YSgpKTsKQEAgLTE0ODEsMTEgKzE0NDYsNiBAQCBDb250YWluZXJOb2RlKiBO
b2RlOjpub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiBwYXJl
bnQgJiYgIXBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQogCi1ib29sIE5v
ZGU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkgIT0g
ZG9jdW1lbnQoKTsKLX0KLQogRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNv
bnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwpA
QCAtMjgyMCw3ICsyNzgwLDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsK
ICAgICBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKICAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZG9j
dW1lbnQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGRvY3VtZW50KCkpOwogICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fbmV4dCk7CiAgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9wcmV2aW91cyk7CiAgICAgaWYgKG1fcmVuZGVyZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApp
bmRleCAxNDFjZTk2YmI1ZWIyOWVlMmNhODQ3YjFjNTFkYjViMWM4ZDViYmNmLi45ZTgxY2E0MWM3
NjMxZmVlNWIxMmZhZTRiN2FiZGMxYTEyNWExMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTIzOSw3ICsy
MzksOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIDAsIGEgY2hpbGQgb2YgU2hhZG93Um9v
dCwgb3IgYSBsZWdhY3kgc2hhZG93IHJvb3QuCiAgICAgTm9kZSogbm9uQm91bmRhcnlTaGFkb3dU
cmVlUm9vdE5vZGUoKTsKLSAgICBib29sIGlzSW5TaGFkb3dUcmVlKCkgY29uc3Q7CisgICAgYm9v
bCBpc0luU2hhZG93VHJlZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSW5TaGFkb3dUcmVlKTsg
fQorCiAgICAgLy8gTm9kZSdzIHBhcmVudCwgc2hhZG93IHRyZWUgaG9zdC4KICAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50T3JI
b3N0RWxlbWVudCgpIGNvbnN0OwpAQCAtNDE3LDE0ICs0MTgsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBSZXR1cm5zIHRoZSBkb2N1bWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBub2RlLiBUaGlzIG1l
dGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBpbiB0aGUgY2FzZSAKICAgICAvLyBvZiBh
IERvY3VtZW50VHlwZSBub2RlIHRoYXQgaXMgbm90IHVzZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0
LiBBIERvY3VtZW50IG5vZGUgcmV0dXJucyBpdHNlbGYuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0aGlzKTsKLSAgICAgICAgLy8gRklYTUU6
IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50
KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKLSAgICAgICAgLy8gZHVlIHRvIHRo
ZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5cGUoKS4KLSAgICAgICAgQVNTRVJUKG1f
ZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3Vt
ZW50KCkpKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7Ci0gICAgfQorICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdDsK
IApAQCAtNDMyLDcgKzQyNiw3IEBAIHB1YmxpYzoKICAgICAvLyBub2RlIHRyZWUsIGZhbHNlIG90
aGVyd2lzZS4KICAgICBib29sIGluRG9jdW1lbnQoKSBjb25zdCAKICAgICB7IAotICAgICAgICBB
U1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOworICAgICAgICBB
U1NFUlQodHJlZVNjb3BlKCkgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKICAgICAgICAg
cmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVudEZsYWcpOwogICAgIH0KIApAQCAtNzA3LDEwICs3MDEs
MTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICBJbk5hbWVkRmxvd0ZsYWcgPSAxIDw8IDI2
LAogICAgICAgICBIYXNBdHRyTGlzdEZsYWcgPSAxIDw8IDI3LAotICAgICAgICBIYXNDdXN0b21D
YWxsYmFja3NGbGFnID0gMSA8PCAyOAorICAgICAgICBIYXNDdXN0b21DYWxsYmFja3NGbGFnID0g
MSA8PCAyOCwKKyAgICAgICAgSW5TaGFkb3dUcmVlID0gMSA8PCAyOQorCiAgICAgfTsKIAotICAg
IC8vIDQgYml0cyByZW1haW5pbmcKKyAgICAvLyAzIGJpdHMgcmVtYWluaW5nCiAKICAgICBib29s
IGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFz
azsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1f
bm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7
IH0gCkBAIC03NDYsMTYgKzc0MiwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldEhhc0N1
c3RvbUNhbGxiYWNrcygpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsg
fQogCisgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CisgICAgRG9jdW1lbnQqIGRv
Y3VtZW50SW50ZXJuYWwoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJl
ZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYo
KTsKIAotICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2Nv
cGUgbWlncmF0aW9uLgotICAgIC8vIHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRh
IHRvIHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBz
aXRlLgotICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwotICAgIHZv
aWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKLQogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVk
aXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVk
aXRhYmxlTGV2ZWwpIGNvbnN0OwogICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShF
ZGl0YWJsZUxldmVsKSBjb25zdDsKQEAgLTc5OCw3ICs3OTIsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2Rv
Y3VtZW50OworICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgTm9kZSogbV9wcmV2aW91
czsKICAgICBOb2RlKiBtX25leHQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDFmZGViYjZkMjE4NzM0ODU0NGM4MzIwZTJjNTVk
NmJkODcwOTc3ZjQuLjk3ZjA5MGFlYmRhNTAzOTQ5YjQ1YWM5NmVkNWQ5YjJhZDJlNjVmOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE4MCw4ICsxODAsNyBAQCBjbGFzcyBOb2Rl
UmFyZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0YSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKICAgICBOb2RlUmFyZURhdGEoKQotICAg
ICAgICA6IG1fdHJlZVNjb3BlKDApCi0gICAgICAgICwgbV9jaGlsZE5vZGVMaXN0KDApCisgICAg
ICAgIDogbV9jaGlsZE5vZGVMaXN0KDApCiAgICAgICAgICwgbV90YWJJbmRleCgwKQogICAgICAg
ICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNGb2N1
c2VkKGZhbHNlKQpAQCAtMjA5LDkgKzIwOCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJh
cmVEYXRhTWFwKCkuZ2V0KG5vZGUpOwogICAgIH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShU
cmVlU2NvcGUqIHRyZWVTY29wZSkgeyBtX3RyZWVTY29wZSA9IHRyZWVTY29wZTsgfQotICAgIAog
ICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2
b2lkIHNldE5vZGVMaXN0cyhQYXNzT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBt
X25vZGVMaXN0cyA9IGxpc3RzOyB9CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZUxpc3RzLmdldCgpOyB9CkBAIC0zNDUsNyArMzQxLDYgQEAg
cHJvdGVjdGVkOgogCiBwcml2YXRlOgogCi0gICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAg
ICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxpc3RzOwogICAgIENoaWxkTm9kZUxp
c3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBPd25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50
VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBiOWM0ODFjMTg5ODY0
ODFlMTliNjI2ZjY5NGMyMDZkZjEyMjE0NzRkLi44ODFlOTk3MTEwNjEwNjc0ODI0N2Y2Y2FhMTZi
NzY0ZDc2NDQ1YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFk
b3dSb290KQotICAgICwgVHJlZVNjb3BlKHRoaXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9j
dW1lbnQpCiAgICAgLCBtX3ByZXYoMCkKICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9hcHBseUF1
dGhvclN0eWxlcyhmYWxzZSkKQEAgLTU4LDExICs1OCw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jv
b3QoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCi0g
ICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29wZS4KLSAgICBzZXRQYXJlbnRUcmVl
U2NvcGUoZG9jdW1lbnQpOwogICAgIC8vIFNoYWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29w
ZSBwb2ludGVyIHBvaW50IHRvIHRoZW1zZWx2ZXMuCiAgICAgLy8gVGhpcyB3YXksIGRpcmVjdCBj
aGlsZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1
cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMp
OwogfQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
CmluZGV4IGQzNzc0YWVkYjA2ZThjNTMzYWZhZTZmMzZjMWU2ZThiMzAzZWFmOTkuLjhhYjE2YWQz
ZmUyZjE1MTQ5ZGEwYzAwMWU2NTRjNGMyZTI0YTZlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
Y3BwCkBAIC01MiwxNCArNTIsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiBy
b290Tm9kZSkKK1RyZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlLCBE
b2N1bWVudCogcm9vdERvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKLSAgICAs
IG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX3Jvb3REb2N1bWVudChyb290RG9jdW1lbnQp
CisgICAgLCBtX3BhcmVudFRyZWVTY29wZShyb290Tm9kZSA9PSByb290RG9jdW1lbnQgPyAwIDog
cm9vdERvY3VtZW50KQogICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKIHsKICAgICBBU1NFUlQocm9vdE5vZGUpOwogfQog
CitUcmVlU2NvcGU6OlRyZWVTY29wZSgpCisgICAgOiBtX3Jvb3ROb2RlKDApCisgICAgLCBtX3Jv
b3REb2N1bWVudCgwKQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKK3sKK30KKwogVHJlZVNj
b3BlOjp+VHJlZVNjb3BlKCkKIHsKICAgICBpZiAobV9zZWxlY3Rpb24pIHsKQEAgLTc0LDYgKzgy
LDExIEBAIHZvaWQgVHJlZVNjb3BlOjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCiAgICAgbV9pbWFn
ZU1hcHNCeU5hbWUuY2xlYXIoKTsKIH0KIAordm9pZCBUcmVlU2NvcGU6OnJlc2V0Um9vdERvY3Vt
ZW50KCkKK3sKKyAgICBtX3Jvb3REb2N1bWVudCA9IG1fcGFyZW50VHJlZVNjb3BlLT5yb290RG9j
dW1lbnQoKTsKK30KKwogdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2Nv
cGUqIG5ld1BhcmVudFNjb3BlKQogewogICAgIC8vIEEgZG9jdW1lbnQgbm9kZSBjYW5ub3QgYmUg
cmUtcGFyZW50ZWQuCkBAIC04Miw2ICs5NSw3IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRU
cmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKICAgICBBU1NFUlQobmV3UGFyZW50
U2NvcGUpOwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKKyAgICBt
X3Jvb3REb2N1bWVudCA9IG5ld1BhcmVudFNjb3BlLT5yb290RG9jdW1lbnQoKTsKIH0KIAogRWxl
bWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1l
bnRJZCkgY29uc3QKQEAgLTI0OCw2ICsyNjIsMTEgQEAgTm9kZSogVHJlZVNjb3BlOjpmb2N1c2Vk
Tm9kZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgVHJlZVNjb3BlOjppc0RvY3VtZW50U2Nv
cGUoKSBjb25zdAoreworICAgIHJldHVybiB0aGlzID09IG1fcm9vdERvY3VtZW50OworfQorCiBz
dGF0aWMgdm9pZCBsaXN0VHJlZVNjb3BlcyhOb2RlKiBub2RlLCBWZWN0b3I8VHJlZVNjb3BlKiwg
NT4mIHRyZWVTY29wZXMpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTI4MSw1ICszMDAsMTEg
QEAgVHJlZVNjb3BlKiBjb21tb25UcmVlU2NvcGUoTm9kZSogbm9kZUEsIE5vZGUqIG5vZGVCKQog
ICAgIHJldHVybiB0cmVlU2NvcGVzQVtpbmRleEFdID09IHRyZWVTY29wZXNCW2luZGV4Ql0gPyB0
cmVlU2NvcGVzQVtpbmRleEFdIDogMDsKIH0KIAorVHJlZVNjb3BlKiBUcmVlU2NvcGU6Om51bGxJ
bnN0YW5jZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUcmVlU2NvcGUsIGluc3RhbmNl
LCAoKSk7CisgICAgcmV0dXJuICZpbnN0YW5jZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggZDk3NThiMDI4ZTRkNDU2Nzg0ZjQ1OTBlMDkw
ZTVhMjU3ZDI5NDVmMy4uZjM0NDZmZjA0N2NkYzFiYjcyY2QzNGMyNWY2YzZkMzQ5NWYxOGFkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBET01TZWxlY3Rpb247CitjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTsKQEAgLTQ4LDYgKzQ5LDcgQEAgY2xhc3MgVHJlZVNjb3Bl
IHsKIHB1YmxpYzoKICAgICBUcmVlU2NvcGUqIHBhcmVudFRyZWVTY29wZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyZW50VHJlZVNjb3BlOyB9CiAgICAgdm9pZCBzZXRQYXJlbnRUcmVlU2NvcGUoVHJl
ZVNjb3BlKik7CisgICAgdm9pZCByZXNldFJvb3REb2N1bWVudCgpOwogCiAgICAgTm9kZSogZm9j
dXNlZE5vZGUoKTsKICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdDsKQEAgLTc4LDE3ICs4MCwyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZG9wdElm
TmVlZGVkKE5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290Tm9kZTsgfQorICAgIERvY3VtZW50KiByb290RG9jdW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX3Jvb3REb2N1bWVudDsgfQorICAgIGJvb2wgaXNEb2N1bWVudFNjb3BlKCkgY29u
c3Q7CiAKICAgICBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkmIGlkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeSgpIGNvbnN0IHsgcmV0dXJuICptX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5nZXQoKTsg
fQogCisgICAgc3RhdGljIFRyZWVTY29wZSogbnVsbEluc3RhbmNlKCk7CisKIHByb3RlY3RlZDoK
LSAgICBleHBsaWNpdCBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOworICAgIFRyZWVTY29wZShD
b250YWluZXJOb2RlKiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAog
ICAgIHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKIAogcHJpdmF0ZToKKyAgICBUcmVlU2Nv
cGUoKTsKKwogICAgIENvbnRhaW5lck5vZGUqIG1fcm9vdE5vZGU7CisgICAgRG9jdW1lbnQqIG1f
cm9vdERvY3VtZW50OwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBE
b2N1bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlQWRvcHRlci5jcHAKaW5kZXggMzYwMWUwODU5OGI1N2MwNGRmMTMzY2Q0MTA4ZTRkMmViZTlm
YjViOC4uNjcyMTA0M2RiNWY3YzYyOWM1MDI4YWExOWViMGIyNDkzNTMzYmQ3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtNDksNyArNDksOSBAQCB2b2lkIFRy
ZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBjb25zdAogICAg
ICAgICBvbGREb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSog
bm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7
Ci0gICAgICAgIGlmIChOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+c2V0VHJlZVNjb3Bl
KG5ld0RvY3VtZW50ID09IG1fbmV3U2NvcGUgPyAwIDogbV9uZXdTY29wZSkpIHsKKyAgICAgICAg
bm9kZS0+c2V0VHJlZVNjb3BlKG1fbmV3U2NvcGUpOworICAgICAgICBpZiAobm9kZS0+aGFzUmFy
ZURhdGEoKSkgeworICAgICAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnJh
cmVEYXRhKCk7CiAgICAgICAgICAgICBpZiAocmFyZURhdGEtPm5vZGVMaXN0cygpKQogICAgICAg
ICAgICAgICAgIHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+YWRvcHRUcmVlU2NvcGUob2xkRG9jdW1l
bnQsIG5ld0RvY3VtZW50KTsKICAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkp
CkBAIC03MSw4ICs3MywxMCBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdE
b2N1bWVudChOb2RlKiByb290LCBEb2N1bWVudCogb2xkRG9jdW1lbnQsCiB7CiAgICAgZm9yIChO
b2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9v
dCkpIHsKICAgICAgICAgbW92ZU5vZGVUb05ld0RvY3VtZW50KG5vZGUsIG9sZERvY3VtZW50LCBu
ZXdEb2N1bWVudCk7Ci0gICAgICAgIGZvciAoU2hhZG93Um9vdCogc2hhZG93ID0gbm9kZS0+eW91
bmdlc3RTaGFkb3dSb290KCk7IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5vbGRlclNoYWRvd1Jv
b3QoKSkKKyAgICAgICAgZm9yIChTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT55b3VuZ2VzdFNo
YWRvd1Jvb3QoKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ctPm9sZGVyU2hhZG93Um9vdCgpKSB7
CisgICAgICAgICAgICBzaGFkb3ctPnJlc2V0Um9vdERvY3VtZW50KCk7CiAgICAgICAgICAgICBt
b3ZlVHJlZVRvTmV3RG9jdW1lbnQoc2hhZG93LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwor
ICAgICAgICB9CiAgICAgfQogfQogCkBAIC05Niw4ICsxMDAsNiBAQCBpbmxpbmUgdm9pZCBUcmVl
U2NvcGVBZG9wdGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1lbnQoTm9kZSogbm9kZSwgRG9jdW1lbnQq
IG9sZERvYwogICAgIGlmIChvbGREb2N1bWVudCkKICAgICAgICAgb2xkRG9jdW1lbnQtPm1vdmVO
b2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChub2RlLCBuZXdEb2N1bWVudCk7CiAKLSAgICBub2Rl
LT5zZXREb2N1bWVudChuZXdEb2N1bWVudCk7Ci0KICNpZm5kZWYgTkRFQlVHCiAgICAgZGlkTW92
ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQgPSBmYWxzZTsKICAgICBvbGREb2N1bWVudERpZE1vdmVU
b05ld0RvY3VtZW50V2FzQ2FsbGVkV2l0aCA9IG9sZERvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA1YTIxNDNjNjNkNDUw
NTU1Y2VmMzk4MGI3OTQzOGY0NTlkY2ZhMTM0Li41YmY1NDU0MTMyM2MwNzllYTdkNmMyN2NmODgz
MDljZTkwZDM3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxl
Y3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rp
b25Db21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk1vdmVTZWxlY3Rpb25Db21tYW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5v
ZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQu
Y3BwCmluZGV4IDE5NjU3YWMwZmM3NzIxMjIzNTgzNTc0YmM2YmQyMDgxZDNkYzc2OTYuLjhiZTIw
NzA2MTRjNDk1MzEzOGEzYzU5ZjA1ZjQ3NWJlYjNiZGI0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZUNvbW1hbmQuaCIKIAorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNl
cnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVO
b2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKaW5kZXggMTQ1MmY4ODAzZmFiYzU3MGEy
NTRmYTVhMmU5NmU0MGYxNGRlYTljNS4uMjgxZmRiZGYzMmJkNTA1MWNkZWJkMjc1ZmRmMDY5NDVm
YWJlZWYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJl
c2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxk
cmVuQ29tbWFuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IGY1NWRkYTU4ZjA2Mjk5NWE0OGJiNzNkNjgz
NmY2YTYyZWU3MjVmOTIuLmIwZDUyNzU0MWVlODE2MzQwOTI1NTI4ZWU1NGI2MWJhZDRhMTZkZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQYWdlQ29uc29sZUFnZW50LmgiCiAKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckFnZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZGVhMzZlZDkw
MjlhZWIyMmQ1NWFjNzMxNzdhOWZjZTRlMjg1OTQ5Mi4uOGVkZGFiOTJlNzQxMDEyYjkzYjQwMTQz
OGNkODk2OGNkNmFjZGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjU2LDYgKzI1Niw3
IEBAIEVYUE9SVFMKICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29y
ZUBATUFFQFhaCiAgICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlckBXZWJDb3JlQEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAxQEBaCisgICAgICAg
ID9udWxsSW5zdGFuY2VAVHJlZVNjb3BlQFdlYkNvcmVAQFNBUEFWMTJAWFoKICAgICAgICAgP25v
ZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlz
dEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjBAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNN
YXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2Vy
QDJASEhAWgogICAgICAgICA/d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9j
dW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCmluZGV4IDFhNDdkMmYzYTUwNGViNTY0YjA4N2VhOWZhZjBhYzRjNjljOTI3OWUu
LjdkODRmNzk5ZjE2NzY4NDA1ZGZhODFlYTk4NTU3YTA5M2Y2ODA0ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTI1MCw2ICsyNTAsNyBAQCBFWFBPUlRTCiAgICAgICAg
ID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BX
VEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/dXRmOEBTdHJpbmdAV1RGQEBRQkU/QVZDU3RyaW5n
QDJAX05AWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdA
MkBYWgorICAgICAgICA/bnVsbEluc3RhbmNlQFRyZWVTY29wZUBXZWJDb3JlQEBTQVBBVjEyQFha
CiAgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1Jl
ZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wQFoKICAgICAgICAgP3NlbGVj
dGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBE
b2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP3Jlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRp
YWxTY2FsZUlmTm90VXNlclNjYWxhYmxlQFdlYkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRl
c0AxQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA4MmZmYzJlOWE0YzQzM2JjODg4NjRh
ZjUzYjM5ZWZjMzIwOGZkMDAwLi4xMDY5MzdmY2NkMmI4NjcxMDVlODBiNGZkYmUyZTNkNDEzOGU3
YmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE3MSw2ICsxNzEsNyBAQCBfWk5LN1dl
YkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXY7CiBfWk43V2ViQ29yZTI2Q29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXJEMkV2OwogX1pON1dlYkNvcmUyNkNvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyQzJFUE5TXzIyU2NyaXB0RXhlY3V0aW9uQ29udGV4dEU7CiBfWk43V2ViQ29yZTI2Q29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIxNmNvbnRleHREZXN0cm95ZWRFdjsKK19aTjdXZWJDb3Jl
OVRyZWVTY29wZTEybnVsbEluc3RhbmNlRXY7CiBsb2NhbDoKIF9aKjsKIGN0aSo7CmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjdiNjg2ZDQ2YTYyMDU3NDYyNmE0YjE5
NDkxOTg2MWY4ZjkyMDkwMy4uZDU0YmM4NzU4NWI2ZWU3ZjNjZjRiZGQ0ZWQ2YmQxNWE4NWM2ZDdj
YSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEyLTA4LTA4ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFtSZWZhY3RvcmluZ10gUmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEg
VHJlZVNjb3BlIHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5ODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisg
ICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogQWRkZWQgbmV3bHkgZXhw
b3J0ZWQgc3ltYm9scy4KKwogMjAxMi0wOC0wNyAgWW91bmdUYWVjayBTb25nICA8eW91bmd0YWVj
ay5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtXSzJdW0VGTF0gSW1wbGVtZW50IGFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nIG9uIFdLMiBFZmwgcG9ydAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178136</attachid>
            <date>2012-12-06 19:12:10 -0800</date>
            <delta_ts>2012-12-12 12:24:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20121206190934.patch</filename>
            <type>text/plain</type>
            <size>20578</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA4MjJhOTEzMTg5Yjc3
YmVjMjA0NDllY2EyY2E2YTM4MjM3YmQ4Ny4uYzUwNDFhOTkwZTBmMjJhYmQzODNlMmQ1OGFmMjAw
MmZkN2JhNDY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTEyLTA2ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBv
ZiBnaXZpbmcgZXZlcnkgbm9kZSBpbiBhIHNoYWRvdyBhIHJhcmUgZGF0YSwgd2hpY2ggY2FuIGJl
IHF1aXRlCisgICAgICAgIGxhcmdlLCB3ZSByZXBsYWNlIHRoZSBEb2N1bWVudCBwb2ludGVyIGlu
IE5vZGUgd2l0aCBhIFRyZWVTY29wZSBwb2ludGVyCisgICAgICAgIGFuZCB3ZSBnaXZlIFRyZWVT
Y29wZSBhIHBvaW50ZXIgdG8gaXQncyBkb2N1bWVudCBzY29wZS4KKworICAgICAgICBUaGlzIGlu
dHJvZHVjZXMgbm8gYnJhbmNoZXMgaW4gZG9jdW1lbnQoKSBiZWNhdXNlIGluIHRoZSBjb21tb24K
KyAgICAgICAgY2FzZSBkb2N1bWVudCgpIGJlY29tZXMgZXF1aXZhbGVudCB0byBtX3RyZWVTY29w
ZS0+bV9kb2N1bWVudFNjb3BlIHdoZXJlCisgICAgICAgIHRoZSBkb2N1bWVudFNjb3BlIGlzIGFj
dHVhbGx5IG1fdHJlZVNjb3BlIHNvIHRoaXMgc2hvdWxkbid0IGludHJvZHVjZSBhCisgICAgICAg
IHBlcmYgcmVncmVzc2lvbi4KKworICAgICAgICBOb3RlIGFsc28gdGhhdCBUcmVlU2NvcGUgY2Fu
IG5ldmVyIGJlIG51bGwgYWZ0ZXIgcjEzNjMyOCwgYW5kIHRoZSBkb2N1bWVudAorICAgICAgICBw
b2ludGVyIGlzIG9ubHkgbnVsbCBmb3IgRG9jdW1lbnRUeXBlIG5vZGVzIHNvIHdlIGNhbiB1c2Ug
YSBzcGVjaWFsCisgICAgICAgIG5vLWRvY3VtZW50IFRyZWVTY29wZSBmb3IgdGhpcyBjYXNlIHRo
YXQgYWx3YXlzIHJldHVybnMgbnVsbCBmcm9tCisgICAgICAgIGRvY3VtZW50U2NvcGUoKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNEb2N1bWVudE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlUmFyZURhdGEpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50UmFyZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y3JlYXRlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXR0YWNo
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmFyZURhdGFCYXNlOjpOb2RlUmFyZURhdGFCYXNlKToKKyAgICAgICAgKE5vZGVSYXJlRGF0YUJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmluRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgorICAgICAg
ICAoTm9kZSk6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmFyZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTm9k
ZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0
YSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAg
ICAgIChTYW1lU2l6ZUFzVHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNj
b3BlOjpub0RvY3VtZW50SW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpz
ZXRQYXJlbnRUcmVlU2NvcGUpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoVHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVT
Y29wZTo6ZG9jdW1lbnRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldERv
Y3VtZW50U2NvcGUpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3RG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50
KToKKwogMjAxMi0xMi0wNiAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRWxlbWVudC5wc2V1ZG8gcHJvcGVydHkgc2hvdWxkIGJlIHByZWZpeGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5ZmQ0MWYxMDhkYzA2N2M5MTAxYmIyOGQyMjAyZTgy
NTE5NzJhOTYzLi5lMGM1OTI1ZjA4ZTY4ZGIzZGNmOTQ4Yjg3MTljNTZkMGI5M2VjZmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBwcml2YXRlOgogdWludDY0
X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCiBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hU
TUwpCi0gICAgOiBDb250YWluZXJOb2RlKDAsIENyZWF0ZURvY3VtZW50KQorICAgIDogQ29udGFp
bmVyTm9kZSh0aGlzLCBDcmVhdGVEb2N1bWVudCkKICAgICAsIFRyZWVTY29wZSh0aGlzKQogICAg
ICwgbV9ndWFyZFJlZkNvdW50KDApCiAgICAgLCBtX2NvbnRleHRGZWF0dXJlcyhDb250ZXh0RmVh
dHVyZXM6OmRlZmF1bHRTd2l0Y2goKSkKQEAgLTUwNiw4ICs1MDYsNiBAQCBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBp
c0hUTUwpCiAgICAgLCBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZChmYWxz
ZSkKICNlbmRpZgogewotICAgIG1fZG9jdW1lbnQgPSB0aGlzOwotCiAgICAgbV9wcmludGluZyA9
IGZhbHNlOwogICAgIG1fcGFnaW5hdGVkRm9yU2NyZWVuID0gZmFsc2U7CiAKQEAgLTY2NSw4ICs2
NjMsNiBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgV1RGX0FSUkFZX0xFTkdUSChtX25vZGVMaXN0Q291bnRzKTsgaSsrKQogICAgICAgICBBU1NF
UlQoIW1fbm9kZUxpc3RDb3VudHNbaV0pOwogCi0gICAgbV9kb2N1bWVudCA9IDA7Ci0KICAgICBJ
bnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9j
dW1lbnRDb3VudGVyKTsKIH0KIApAQCAtMTM0MywxMyArMTMzOSwxMyBAQCB2b2lkIERvY3VtZW50
OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgY29udGVudCkKIAogU3RyaW5nIERvY3VtZW50Ojpz
dWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzWEhUTUxE
b2N1bWVudCgpKQorICAgIGlmIChpc1hIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJh
cHBsaWNhdGlvbi94aHRtbCt4bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3VtZW50
KCkpCisgICAgaWYgKGlzU1ZHRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuICJpbWFnZS9zdmcr
eG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+eG1sU3RhbmRhbG9uZSgpKQorICAgIGlmICh4bWxT
dGFuZGFsb25lKCkpCiAgICAgICAgIHJldHVybiAidGV4dC94bWwiOwotICAgIGlmIChtX2RvY3Vt
ZW50LT5pc0hUTUxEb2N1bWVudCgpKQorICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gInRleHQvaHRtbCI7CiAKICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gbG9hZGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDcxM2Q5ZTVjZGRjMGM2
Mzg3ZDc2MjRiMTg1ZmFjYTMwMjMwMDM1ZGUuLmZlMDA0M2M2ZTA0MzJkZDMwNGEyYzZiMzBlZjkw
OTg4ZDUxYjE0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNTQ5LDIyICsxNTQ5LDIwIEBA
IGlubGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgp
CiAKIGlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gdGhpcyA9PSBtX2RvY3VtZW50OwotfQotCi1pbmxpbmUgVHJlZVNjb3BlKiBOb2RlOjp0cmVl
U2NvcGUoKSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gbV9kYXRhLm1fcmFy
ZURhdGEtPnRyZWVTY29wZSgpIDogZG9jdW1lbnRJbnRlcm5hbCgpOworICAgIHJldHVybiB0aGlz
ID09IGRvY3VtZW50SW50ZXJuYWwoKTsKIH0KIAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0eXBl
KQotICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKGRvY3VtZW50
KQogICAgICwgbV9wcmV2aW91cygwKQogICAgICwgbV9uZXh0KDApCiB7CiAgICAgaWYgKGRvY3Vt
ZW50KQogICAgICAgICBkb2N1bWVudC0+Z3VhcmRSZWYoKTsKKyAgICBlbHNlCisgICAgICAgIG1f
dHJlZVNjb3BlID0gVHJlZVNjb3BlOjpub0RvY3VtZW50SW5zdGFuY2UoKTsKKwogI2lmICFkZWZp
bmVkKE5ERUJVRykgfHwgKGRlZmluZWQoRFVNUF9OT0RFX1NUQVRJU1RJQ1MpICYmIERVTVBfTk9E
RV9TVEFUSVNUSUNTKQogICAgIHRyYWNrRm9yRGVidWdnaW5nKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCBhYjE5OWYwMThkNTI5ZjQ1Mzk1ZDEwZTJjMmQ4NWEzOTlkNjdjYzU0
Li45MzBkYmVlYWEzOTEzYmNlYTE2ZWM1NjA2ZTI1YzQ0OGYyOWRmOGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YSogRWxl
bWVudDo6ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkKIAogUGFzc093blB0cjxOb2RlUmFyZURhdGE+
IEVsZW1lbnQ6OmNyZWF0ZVJhcmVEYXRhKCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVs
ZW1lbnRSYXJlRGF0YShkb2N1bWVudEludGVybmFsKCkpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEVsZW1lbnRSYXJlRGF0YSgpKTsKIH0KIAogREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKEVsZW1lbnQsIGJsdXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCmluZGV4IDc5MDVjYjU0OGU1ZmZjNDlmMjA0YTM5ZGVjNTAxYzQwOWVkMmZhMTUuLjg4ZjI2
YmQxNjRhYzc1M2FmZGRlMzhmZGYyOGQ0MTNkY2YwMWIxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBFbGVtZW50UmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhIHsKIHB1YmxpYzoKLSAg
ICBFbGVtZW50UmFyZURhdGEoRG9jdW1lbnQqKTsKKyAgICBFbGVtZW50UmFyZURhdGEoKTsKICAg
ICB2aXJ0dWFsIH5FbGVtZW50UmFyZURhdGEoKTsKIAogICAgIHZvaWQgc2V0UHNldWRvRWxlbWVu
dChQc2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50Pik7CkBAIC0xMzAsOSArMTMwLDgg
QEAgaW5saW5lIEludFNpemUgZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKQogICAgIHJl
dHVybiBJbnRTaXplKExheW91dFVuaXQ6Om1heCgpLCBMYXlvdXRVbml0OjptYXgoKSk7CiB9CiAK
LWlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShEb2N1bWVudCogZG9jdW1l
bnQpCi0gICAgOiBOb2RlUmFyZURhdGEoZG9jdW1lbnQpCi0gICAgLCBtX21pbmltdW1TaXplRm9y
UmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKSkKK2lubGluZSBFbGVtZW50
UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgpCisgICAgOiBtX21pbmltdW1TaXplRm9yUmVzaXpp
bmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKSkKICAgICAsIG1fZ2VuZXJhdGVkQmVm
b3JlKDApCiAgICAgLCBtX2dlbmVyYXRlZEFmdGVyKDApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXgg
NTg0ZGJlOWZlMjRkNWM5N2FjODk4NTVhMjY4ZTU0OTA0NzMwM2RiOC4uYzYxNDE1YmUwMzI1MTA2
MGU3NTIwM2EzZTE4Yjc0N2Y5YjdjNjAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDE1LDcgKzQx
NSw3IEBAIE5vZGU6On5Ob2RlKCkKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgZGV0YWNo
KCk7CiAKLSAgICBEb2N1bWVudCogZG9jID0gbV9kb2N1bWVudDsKKyAgICBEb2N1bWVudCogZG9j
ID0gZG9jdW1lbnRJbnRlcm5hbCgpOwogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmls
aXR5RW5hYmxlZCgpICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSAmJiAhaXND
b250YWluZXJOb2RlKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yZW1vdmUodGhp
cyk7CiAgICAgCkBAIC00MjQsMjkgKzQyNCwxMiBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKG1f
bmV4dCkKICAgICAgICAgbV9uZXh0LT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CiAKLSAgICBpZiAo
ZG9jKQorICAgIGlmIChkb2MgJiYgIWlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIGRvYy0+Z3Vh
cmREZXJlZigpOwogCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5z
cGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgbV9k
b2N1bWVudCA9PSBkb2N1bWVudCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50
ID09IGRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RvY3VtZW50ID0gZG9jdW1l
bnQ7Ci19Ci0KLXZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCi17Ci0g
ICAgaWYgKCFoYXNSYXJlRGF0YSgpICYmIHNjb3BlLT5yb290Tm9kZSgpLT5pc0RvY3VtZW50Tm9k
ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2Nv
cGUoc2NvcGUpOwotfQotCiBOb2RlKiBOb2RlOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygp
IGNvbnN0CiB7CiAgICAgaWYgKGlzRWxlbWVudE5vZGUoKSAmJiAhcHJldmlvdXNTaWJsaW5nKCkp
IHsKQEAgLTQ5Niw3ICs0NzksNyBAQCBOb2RlUmFyZURhdGEqIE5vZGU6OmVuc3VyZVJhcmVEYXRh
KCkKIAogUGFzc093blB0cjxOb2RlUmFyZURhdGE+IE5vZGU6OmNyZWF0ZVJhcmVEYXRhKCkKIHsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vZGVSYXJlRGF0YShkb2N1bWVudEludGVybmFsKCkp
KTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vZGVSYXJlRGF0YSgpKTsKIH0KIAogdm9pZCBO
b2RlOjpjbGVhclJhcmVEYXRhKCkKQEAgLTEyMTksNyArMTIwMiw3IEBAIHZvaWQgTm9kZTo6YXR0
YWNoKCkKICAgICBzZXRBdHRhY2hlZCgpOwogICAgIGNsZWFyTmVlZHNTdHlsZVJlY2FsYygpOwog
Ci0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRv
Y3VtZW50SW50ZXJuYWwoKTsKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVu
YWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5heE9iamVjdENhY2hlRXhpc3RzKCkpCiAgICAgICAgIGRv
Yy0+YXhPYmplY3RDYWNoZSgpLT51cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNoZWQodGhpcyk7
CiB9CkBAIC0yNzM0LDcgKzI3MTcsNyBAQCB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00p
OwogICAgIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwogICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9kb2N1bWVudCk7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV90cmVlU2NvcGUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbmV4
dCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmV2aW91cyk7CiAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggN2E0NzBlZWMw
NjliYTYyNzNiMTY1NTYwZDZlNzY5Yzg4NDZiMzBmOC4uOWE4MzZjZDI4ODExN2ZlNjJiMzU0ZTk2
NzNhMTc4YTVjZjllZWVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIK
ICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKKyNpbmNsdWRlICJUcmVlU2NvcGUu
aCIKICNpbmNsdWRlICJUcmVlU2hhcmVkLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTg1LDcgKzg2LDYgQEAgY2xhc3MgUmVuZGVy
T2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgVGFn
Tm9kZUxpc3Q7Ci1jbGFzcyBUcmVlU2NvcGU7CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
CiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKQEAgLTExNSwxOCArMTE1LDExIEBAIHB1Ymxp
YzoKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJl
cjsgfQogICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3Jl
bmRlcmVyID0gcmVuZGVyZXI7IH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV90cmVlU2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUq
IHNjb3BlKSB7IG1fdHJlZVNjb3BlID0gc2NvcGU7IH0KLQogICAgIHZpcnR1YWwgfk5vZGVSYXJl
RGF0YUJhc2UoKSB7IH0KIHByb3RlY3RlZDoKLSAgICBOb2RlUmFyZURhdGFCYXNlKFRyZWVTY29w
ZSogc2NvcGUpCi0gICAgICAgIDogbV90cmVlU2NvcGUoc2NvcGUpCi0gICAgewotICAgIH0KKyAg
ICBOb2RlUmFyZURhdGFCYXNlKCkgeyB9CiBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogbV9y
ZW5kZXJlcjsKLSAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogfTsKIAogY2xhc3MgTm9kZSA6
IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFRyZWVT
aGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT4gewpAQCAtNDYxLDEzICs0NTQsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gZG9jdW1lbnRJbnRlcm5hbCgpOwogICAgIH0KIAotICAgIFRyZWVT
Y29wZSogdHJlZVNjb3BlKCkgY29uc3Q7CisgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX3RyZWVTY29wZTsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMg
bm9kZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBkb2N1bWVudCBhbmQgaXMgaW4gaXRzIGFzc29jaWF0
ZWQgZG9jdW1lbnQncwogICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgIGJv
b2wgaW5Eb2N1bWVudCgpIGNvbnN0IAogICAgIHsgCi0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50
IHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CisgICAgICAgIEFTU0VSVChkb2N1bWVudElu
dGVybmFsKCkgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdl
dEZsYWcoSW5Eb2N1bWVudEZsYWcpOwogICAgIH0KIApAQCAtNzg1LDE3ICs3NzgsMTQgQEAgcHJv
dGVjdGVkOgogCiAgICAgdm9pZCBzZXRIYXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1
ZSwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyk7IH0KIAotICAgIERvY3VtZW50KiBkb2N1bWVudElu
dGVybmFsKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQorICAgIERvY3VtZW50KiBkb2N1
bWVudEludGVybmFsKCkgY29uc3QgeyByZXR1cm4gdHJlZVNjb3BlKCktPmRvY3VtZW50U2NvcGUo
KTsgfQorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpIHsgbV90cmVlU2Nv
cGUgPSBzY29wZTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5v
ZGUsIENvbnRhaW5lck5vZGU+OwogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAg
Ly8gVGhlc2UgQVBJIHNob3VsZCBiZSBvbmx5IHVzZWQgZm9yIGEgdHJlZSBzY29wZSBtaWdyYXRp
b24uCi0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7Ci0gICAgdm9pZCBzZXREb2N1
bWVudChEb2N1bWVudCopOwotCiAgICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJp
Y2hseUVkaXRhYmxlIH07CiAgICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVMZXZl
bCwgVXNlclNlbGVjdEFsbFRyZWF0bWVudCA9IFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRh
YmxlKSBjb25zdDsKICAgICBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkoRWRpdGFibGVM
ZXZlbCkgY29uc3Q7CkBAIC04MzcsNyArODI3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
bXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsK
KyAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAg
Tm9kZSogbV9uZXh0OwogICAgIC8vIFdoZW4gYSBub2RlIGhhcyByYXJlIGRhdGEgd2UgbW92ZSB0
aGUgcmVuZGVyZXIgaW50byB0aGUgcmFyZSBkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmNwcAppbmRleCBmZGI4NjI0NzlmYjVkY2IyZTdhNDBiMjhkYmY3NzM5MzQ0MWVhZTg4Li5hNGY4
YjIxNmEwOTJhYTJiNWE2OWVmN2JhYTM3MTRkMWEzZjI5Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJhcmVEYXRhLmNwcApAQCAtNDksNyArNDksNiBAQCB2b2lkIE5vZGVMaXN0c05vZGVEYXRhOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjbwog
dm9pZCBOb2RlUmFyZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwotICAgIGluZm8uYWRk
TWVtYmVyKHRyZWVTY29wZSgpKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25vZGVMaXN0cyk7CiAg
ICAgaW5mby5hZGRNZW1iZXIobV9jaGlsZE5vZGVMaXN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCmluZGV4IDI0ZWYyMzM0YmRkMGMxNWU3Y2UwNDQyMGQ0YzBlMGZkODBmNDc4NTcuLjkx
MjM0ZTczYTIwYjY1M2RhNGU4NzUxOGM2OTJlN2I1YTU1NzlmODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJhcmVEYXRhLmgKQEAgLTE5OSw5ICsxOTksOCBAQCBwcml2YXRlOgogY2xhc3MgTm9kZVJhcmVE
YXRhIDogcHVibGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE5vZGVSYXJlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKLSAg
ICBOb2RlUmFyZURhdGEoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IE5vZGVSYXJlRGF0
YUJhc2UoZG9jdW1lbnQpCi0gICAgICAgICwgbV9jaGlsZE5vZGVMaXN0KDApCisgICAgTm9kZVJh
cmVEYXRhKCkKKyAgICAgICAgOiBtX2NoaWxkTm9kZUxpc3QoMCkKICAgICAgICAgLCBtX3RhYklu
ZGV4KDApCiAgICAgICAgICwgbV9jaGlsZEluZGV4KDApCiAgICAgICAgICwgbV90YWJJbmRleFdh
c1NldEV4cGxpY2l0bHkoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjI4
OTM5YjRlMDA0YjEzMGEzNWMwYTIxMDFhYmFkOGFkOTQzNWQ3NS4uMmU2M2ZlMWI0NzY0MGUwNmNh
Mzc5YmNlYzQ1YzlkNTdjMmYxMzE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAt
NjUsNyArNjUsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoU2hhZG93Um9vdCkgPT0gc2l6ZW9m
KFNhbWVTaXplQXNTaGFkb3dSb290KSwgc2hhZG93cm9vdF9zaAogCiBTaGFkb3dSb290OjpTaGFk
b3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1l
bnQsIENyZWF0ZVNoYWRvd1Jvb3QpCi0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVT
Y29wZSh0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0KDApCiAg
ICAgLCBtX251bWJlck9mU3R5bGVzKDApCkBAIC03NSwxMiArNzUsNyBAQCBTaGFkb3dSb290OjpT
aGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fcmVnaXN0ZXJlZFdpdGhQYXJl
bnRTaGFkb3dSb290KGZhbHNlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAgCi0gICAg
Ly8gQXNzdW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29wZS4KLSAgICBzZXRQYXJlbnRUcmVlU2Nv
cGUoZG9jdW1lbnQpOwotICAgIC8vIFNoYWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBw
b2ludGVyIHBvaW50IHRvIHRoZW1zZWx2ZXMuCi0gICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGls
ZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1cmVS
YXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwog
fQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmlu
ZGV4IDZiMmZiMzBkOTE0YjY0OGYyZTkyNmNhNWYyNTZmOWJhOThlYzU3OWIuLmY5MmZmNWViYWRh
ODdhYjU2ZjMwNjEwODg2NzI3NzkzZmJiMDQ1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
CkBAIC01NCwxOSArNTQsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNp
emVBc1RyZWVTY29wZSB7CiAgICAgdmlydHVhbCB+U2FtZVNpemVBc1RyZWVTY29wZSgpOwotICAg
IHZvaWQqIHBvaW50ZXJzWzddOworICAgIHZvaWQqIHBvaW50ZXJzWzhdOwogfTsKIAogQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKFRyZWVTY29wZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNUcmVlU2NvcGUp
LCB0cmVlc2NvcGVfc2hvdWxkX3N0YXlfc21hbGwpOwogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKK1Ry
ZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKHJvb3ROb2RlKQotICAgICwgbV9wYXJlbnRUcmVlU2Nv
cGUoMCkKKyAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKKyAgICAsIG1fcGFyZW50VHJl
ZVNjb3BlKGRvY3VtZW50KQogICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKIHsKICAgICBBU1NFUlQocm9vdE5vZGUpOwor
ICAgIEFTU0VSVChkb2N1bWVudCk7CisgICAgQVNTRVJUKHJvb3ROb2RlICE9IGRvY3VtZW50KTsK
K30KKworVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogbV9y
b290Tm9kZShkb2N1bWVudCkKKyAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKKyAgICAs
IG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmNyZWF0ZSgpKQoreworICAgIEFTU0VSVChkb2N1bWVu
dCk7Cit9CisKK1RyZWVTY29wZTo6VHJlZVNjb3BlKCkKKyAgICA6IG1fcm9vdE5vZGUoMCkKKyAg
ICAsIG1fZG9jdW1lbnRTY29wZSgwKQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKK3sKIH0K
IAogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKQEAgLTc3LDYgKzk2LDEyIEBAIFRyZWVTY29wZTo6
flRyZWVTY29wZSgpCiAgICAgfQogfQogCitUcmVlU2NvcGUqIFRyZWVTY29wZTo6bm9Eb2N1bWVu
dEluc3RhbmNlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRyZWVTY29wZSwgaW5zdGFu
Y2UsICgpKTsKKyAgICByZXR1cm4gJmluc3RhbmNlOworfQorCiB2b2lkIFRyZWVTY29wZTo6ZGVz
dHJveVRyZWVTY29wZURhdGEoKQogewogICAgIG1fZWxlbWVudHNCeUlkLmNsZWFyKCk7CkBAIC05
Miw2ICsxMTcsNyBAQCB2b2lkIFRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29w
ZSogbmV3UGFyZW50U2NvcGUpCiAgICAgQVNTRVJUKG5ld1BhcmVudFNjb3BlKTsKIAogICAgIG1f
cGFyZW50VHJlZVNjb3BlID0gbmV3UGFyZW50U2NvcGU7CisgICAgc2V0RG9jdW1lbnRTY29wZShu
ZXdQYXJlbnRTY29wZS0+ZG9jdW1lbnRTY29wZSgpKTsKIH0KIAogRWxlbWVudCogVHJlZVNjb3Bl
OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuaAppbmRleCBjYjY2OTBkYzZmNTE0YmE0MTg3MTViNGNhNjRhNGI5YjI1
NmYyNjAwLi5jYWQ0ZTFhNTZlY2JjOTk0NWYyNDY2ZDM2MWMwMTQwM2ExYmE3MGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVNlbGVjdGlvbjsKK2NsYXNzIERvY3VtZW50
OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxMYWJlbEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFw
RWxlbWVudDsKQEAgLTQ2LDYgKzQ3LDcgQEAgY2xhc3MgTm9kZTsKIC8vIHRoZSBkZXN0cnVjdG9y
LgogY2xhc3MgVHJlZVNjb3BlIHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CisgICAgZnJp
ZW5kIGNsYXNzIFRyZWVTY29wZUFkb3B0ZXI7CiAKIHB1YmxpYzoKICAgICBUcmVlU2NvcGUqIHBh
cmVudFRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50VHJlZVNjb3BlOyB9CkBAIC01
OCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21p
Y1N0cmluZyYgZWxlbWVudElkLCBFbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVFbGVtZW50QnlJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCopOwogCisgICAgRG9jdW1l
bnQqIGRvY3VtZW50U2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50U2NvcGU7IH0KKwog
ICAgIE5vZGUqIGFuY2VzdG9ySW5UaGlzU2NvcGUoTm9kZSopIGNvbnN0OwogCiAgICAgdm9pZCBh
ZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopOwpAQCAtOTEsMTQgKzk1LDI1IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKKyAgICBzdGF0aWMgVHJlZVNjb3BlKiBub0RvY3VtZW50SW5zdGFuY2UoKTsKKwog
cHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFRyZWVTY29wZShDb250YWluZXJOb2RlKik7CisgICAg
VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCopOworICAgIFRyZWVTY29wZShEb2N1
bWVudCopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBkZXN0cm95VHJl
ZVNjb3BlRGF0YSgpOworICAgIHZvaWQgc2V0RG9jdW1lbnRTY29wZShEb2N1bWVudCogZG9jdW1l
bnQpCisgICAgeworICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgICAgICBtX2RvY3VtZW50
U2NvcGUgPSBkb2N1bWVudDsKKyAgICB9CiAKIHByaXZhdGU6CisgICAgVHJlZVNjb3BlKCk7CisK
ICAgICBDb250YWluZXJOb2RlKiBtX3Jvb3ROb2RlOworICAgIERvY3VtZW50KiBtX2RvY3VtZW50
U2NvcGU7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29wZTsKIAogICAgIE93blB0cjxE
b2N1bWVudE9yZGVyZWRNYXA+IG1fZWxlbWVudHNCeUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwCmluZGV4IDhjZDYyNDliZDc2MDllM2YwNjk2MWUzMDg1OWVlMmRhZGJm
YzE1OTAuLjU4ODRhNmMwYjFmMjRjZTRiMzY0NzJlNTJmNDMwN2M3ODIxOGE1NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKQEAgLTQyLDE0ICs0MiwxNSBAQCB2b2lk
IFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBjb25zdAog
ICAgIC8vIHRoYXQgZWxlbWVudCBtYXkgY29udGFpbiBzdGFsZSBkYXRhIGFzIGNoYW5nZXMgbWFk
ZSB0byBpdCB3aWxsIGhhdmUgdXBkYXRlZCB0aGUgRE9NVHJlZVZlcnNpb24KICAgICAvLyBvZiB0
aGUgZG9jdW1lbnQgaXQgd2FzIG1vdmVkIHRvLiBCeSBpbmNyZWFzaW5nIHRoZSBET01UcmVlVmVy
c2lvbiBvZiB0aGUgZG9uYXRpbmcgZG9jdW1lbnQgaGVyZQogICAgIC8vIHdlIGVuc3VyZSB0aGF0
IHRoZSBjb2xsZWN0aW9uIGNhY2hlIHdpbGwgYmUgaW52YWxpZGF0ZWQgYXMgbmVlZGVkIHdoZW4g
dGhlIGVsZW1lbnQgaXMgbW92ZWQgYmFjay4KLSAgICBEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBt
X29sZFNjb3BlID8gbV9vbGRTY29wZS0+cm9vdE5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7Ci0gICAg
RG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbV9uZXdTY29wZS0+cm9vdE5vZGUoKS0+ZG9jdW1lbnQo
KTsKKyAgICBEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBtX29sZFNjb3BlLT5kb2N1bWVudFNjb3Bl
KCk7CisgICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbV9uZXdTY29wZS0+ZG9jdW1lbnRTY29w
ZSgpOwogICAgIGJvb2wgd2lsbE1vdmVUb05ld0RvY3VtZW50ID0gb2xkRG9jdW1lbnQgIT0gbmV3
RG9jdW1lbnQ7CiAgICAgaWYgKG9sZERvY3VtZW50ICYmIHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkK
ICAgICAgICAgb2xkRG9jdW1lbnQtPmluY0RPTVRyZWVWZXJzaW9uKCk7CiAKICAgICBmb3IgKE5v
ZGUqIG5vZGUgPSByb290OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290
KSkgewogICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7CisKICAgICAgICAg
aWYgKG5vZGUtPmhhc1JhcmVEYXRhKCkpIHsKICAgICAgICAgICAgIE5vZGVSYXJlRGF0YSogcmFy
ZURhdGEgPSBub2RlLT5yYXJlRGF0YSgpOwogICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5ub2Rl
TGlzdHMoKSkKQEAgLTcxLDggKzcyLDEwIEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRy
ZWVUb05ld0RvY3VtZW50KE5vZGUqIHJvb3QsIERvY3VtZW50KiBvbGREb2N1bWVudCwKIHsKICAg
ICBmb3IgKE5vZGUqIG5vZGUgPSByb290OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0
Tm9kZShyb290KSkgewogICAgICAgICBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQobm9kZSwgb2xkRG9j
dW1lbnQsIG5ld0RvY3VtZW50KTsKLSAgICAgICAgZm9yIChTaGFkb3dSb290KiBzaGFkb3cgPSBu
b2RlLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ctPm9sZGVy
U2hhZG93Um9vdCgpKQorICAgICAgICBmb3IgKFNoYWRvd1Jvb3QqIHNoYWRvdyA9IG5vZGUtPnlv
dW5nZXN0U2hhZG93Um9vdCgpOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+b2xkZXJTaGFkb3dS
b290KCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+c2V0RG9jdW1lbnRTY29wZShuZXdEb2N1bWVu
dCk7CiAgICAgICAgICAgICBtb3ZlVHJlZVRvTmV3RG9jdW1lbnQoc2hhZG93LCBvbGREb2N1bWVu
dCwgbmV3RG9jdW1lbnQpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC05Niw4ICs5OSw2IEBA
IGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2Rl
KiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAgICBv
bGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3Vt
ZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3VtZW50KTsKLQogI2lmbmRlZiBO
REVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOwogICAgIG9s
ZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gb2xkRG9jdW1lbnQ7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178154</attachid>
            <date>2012-12-06 21:16:33 -0800</date>
            <delta_ts>2012-12-12 12:24:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20121206211355.patch</filename>
            <type>text/plain</type>
            <size>19984</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NTdiMjEzZTk2YTdm
YzY0N2M2ZGZmYTRjNjA0MWQxZmM2NGVhZi4uNzE1MzFkMzdkOTIwNDYzYTA3N2U0NDkwMTkwMmZm
MjZmZjJlMmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTEyLTA2ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBv
ZiBnaXZpbmcgZXZlcnkgbm9kZSBpbiBhIHNoYWRvdyBhIHJhcmUgZGF0YSwgd2hpY2ggY2FuIGJl
IHF1aXRlCisgICAgICAgIGxhcmdlLCB3ZSByZXBsYWNlIHRoZSBEb2N1bWVudCBwb2ludGVyIGlu
IE5vZGUgd2l0aCBhIFRyZWVTY29wZSBwb2ludGVyCisgICAgICAgIGFuZCB3ZSBnaXZlIFRyZWVT
Y29wZSBhIHBvaW50ZXIgdG8gaXQncyBkb2N1bWVudCBzY29wZS4KKworICAgICAgICBUaGlzIGlu
dHJvZHVjZXMgbm8gYnJhbmNoZXMgaW4gZG9jdW1lbnQoKSBiZWNhdXNlIGluIHRoZSBjb21tb24K
KyAgICAgICAgY2FzZSBkb2N1bWVudCgpIGJlY29tZXMgZXF1aXZhbGVudCB0byBtX3RyZWVTY29w
ZS0+bV9kb2N1bWVudFNjb3BlIHdoZXJlCisgICAgICAgIHRoZSBkb2N1bWVudFNjb3BlIGlzIGFj
dHVhbGx5IG1fdHJlZVNjb3BlIHNvIHRoaXMgc2hvdWxkbid0IGludHJvZHVjZSBhCisgICAgICAg
IHBlcmYgcmVncmVzc2lvbi4KKworICAgICAgICBOb3RlIGFsc28gdGhhdCBUcmVlU2NvcGUgY2Fu
IG5ldmVyIGJlIG51bGwgYWZ0ZXIgcjEzNjMyOCwgYW5kIHRoZSBkb2N1bWVudAorICAgICAgICBw
b2ludGVyIGlzIG9ubHkgbnVsbCBmb3IgRG9jdW1lbnRUeXBlIG5vZGVzIHNvIHdlIGNhbiB1c2Ug
YSBzcGVjaWFsCisgICAgICAgIG5vLWRvY3VtZW50IFRyZWVTY29wZSBmb3IgdGhpcyBjYXNlIHRo
YXQgYWx3YXlzIHJldHVybnMgbnVsbCBmcm9tCisgICAgICAgIGRvY3VtZW50U2NvcGUoKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNEb2N1bWVudE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlUmFyZURhdGEpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50UmFyZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y3JlYXRlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXR0YWNo
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmFyZURhdGFCYXNlOjpOb2RlUmFyZURhdGFCYXNlKToKKyAgICAgICAgKE5vZGVSYXJlRGF0YUJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmluRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOgorICAgICAg
ICAoTm9kZSk6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmFyZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTm9k
ZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0
YSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAg
ICAgIChTYW1lU2l6ZUFzVHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNj
b3BlKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmRvY3VtZW50
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpub0RvY3VtZW50SW5zdGFuY2Up
OgorICAgICAgICAgICAgUmV0dXJucyBhIHNwZWNpYWwgdHJlZSBzY29wZSB0aGF0IGhhcyBubyBk
b2N1bWVudCBmb3IgdXNlIHdpdGgKKyAgICAgICAgICAgIERvY3VtZW50VHlwZSBub2Rlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0RG9jdW1lbnRTY29wZSk6CisgICAgICAgICog
ZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRv
cHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFk
b3B0ZXI6Om1vdmVUcmVlVG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGVBZG9wdGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1lbnQpOgorCiAyMDEyLTEyLTA2ICBSaWNrIEJ5
ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDU1MgY3Vyc29yIHByb3BlcnR5
IHNob3VsZCBzdXBwb3J0IHdlYmtpdC1pbWFnZS1zZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDlmZDQxZjEwOGRjMDY3YzkxMDFiYjI4ZDIyMDJlODI1MTk3MmE5NjMuLmUwYzU5MjVmMDhl
NjhkYjNkY2Y5NDhiODcxOWM1NmQwYjkzZWNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtNDM0LDcgKzQzNCw3IEBAIHByaXZhdGU6CiB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxU
cmVlVmVyc2lvbiA9IDA7CiAKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKLSAgICA6IENvbnRhaW5lck5v
ZGUoMCwgQ3JlYXRlRG9jdW1lbnQpCisgICAgOiBDb250YWluZXJOb2RlKHRoaXMsIENyZWF0ZURv
Y3VtZW50KQogICAgICwgVHJlZVNjb3BlKHRoaXMpCiAgICAgLCBtX2d1YXJkUmVmQ291bnQoMCkK
ICAgICAsIG1fY29udGV4dEZlYXR1cmVzKENvbnRleHRGZWF0dXJlczo6ZGVmYXVsdFN3aXRjaCgp
KQpAQCAtNTA2LDggKzUwNiw2IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fZGlkRGlz
cGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlmCiB7Ci0gICAgbV9k
b2N1bWVudCA9IHRoaXM7Ci0KICAgICBtX3ByaW50aW5nID0gZmFsc2U7CiAgICAgbV9wYWdpbmF0
ZWRGb3JTY3JlZW4gPSBmYWxzZTsKIApAQCAtNjY1LDggKzY2Myw2IEBAIERvY3VtZW50Ojp+RG9j
dW1lbnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKG1f
bm9kZUxpc3RDb3VudHMpOyBpKyspCiAgICAgICAgIEFTU0VSVCghbV9ub2RlTGlzdENvdW50c1tp
XSk7CiAKLSAgICBtX2RvY3VtZW50ID0gMDsKLQogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNy
ZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpEb2N1bWVudENvdW50ZXIpOwogfQogCkBA
IC0xMzQzLDEzICsxMzM5LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnQoY29uc3QgU3Ry
aW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29u
c3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisgICAgaWYgKGlz
WEhUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7
Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNTVkdEb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gImltYWdlL3N2Zyt4bWwiOwotICAgIGlmIChtX2RvY3Vt
ZW50LT54bWxTdGFuZGFsb25lKCkpCisgICAgaWYgKHhtbFN0YW5kYWxvbmUoKSkKICAgICAgICAg
cmV0dXJuICJ0ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkp
CisgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAidGV4dC9odG1sIjsK
IAogICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggNzEzZDllNWNkZGMwYzYzODdkNzYyNGIxODVmYWNhMzAyMzAw
MzVkZS4uZmUwMDQzYzZlMDQzMmRkMzA0YTJjNmIzMGVmOTA5ODhkNTFiMTRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTE1NDksMjIgKzE1NDksMjAgQEAgaW5saW5lIHZvaWQgRG9jdW1lbnQ6
Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCkKIAogaW5saW5lIGJvb2wgTm9kZTo6
aXNEb2N1bWVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7
Ci19Ci0KLWlubGluZSBUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBtX2RhdGEubV9yYXJlRGF0YS0+dHJlZVNjb3BlKCkgOiBk
b2N1bWVudEludGVybmFsKCk7CisgICAgcmV0dXJuIHRoaXMgPT0gZG9jdW1lbnRJbnRlcm5hbCgp
OwogfQogCiBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlv
blR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRv
Y3VtZW50KQorICAgICwgbV90cmVlU2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDAp
CiAgICAgLCBtX25leHQoMCkKIHsKICAgICBpZiAoZG9jdW1lbnQpCiAgICAgICAgIGRvY3VtZW50
LT5ndWFyZFJlZigpOworICAgIGVsc2UKKyAgICAgICAgbV90cmVlU2NvcGUgPSBUcmVlU2NvcGU6
Om5vRG9jdW1lbnRJbnN0YW5jZSgpOworCiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5l
ZChEVU1QX05PREVfU1RBVElTVElDUykgJiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJh
Y2tGb3JEZWJ1Z2dpbmcoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGFiMTk5
ZjAxOGQ1MjlmNDUzOTVkMTBlMmMyZDg1YTM5OWQ2N2NjNTQuLjkzMGRiZWVhYTM5MTNiY2VhMTZl
YzU2MDZlMjVjNDQ4ZjI5ZGY4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIxNyw3ICsy
MTcsNyBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhKiBFbGVtZW50OjplbnN1cmVFbGVtZW50UmFy
ZURhdGEoKQogCiBQYXNzT3duUHRyPE5vZGVSYXJlRGF0YT4gRWxlbWVudDo6Y3JlYXRlUmFyZURh
dGEoKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKGRvY3VtZW50
SW50ZXJuYWwoKSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKCkp
OwogfQogCiBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoRWxlbWVudCwg
Ymx1cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNzkwNWNiNTQ4ZTVm
ZmM0OWYyMDRhMzlkZWM1MDFjNDA5ZWQyZmExNS4uODhmMjZiZDE2NGFjNzUzYWZkZGUzOGZkZjI4
ZDQxM2RjZjAxYjEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnRSYXJlRGF0YSA6
IHB1YmxpYyBOb2RlUmFyZURhdGEgewogcHVibGljOgotICAgIEVsZW1lbnRSYXJlRGF0YShEb2N1
bWVudCopOworICAgIEVsZW1lbnRSYXJlRGF0YSgpOwogICAgIHZpcnR1YWwgfkVsZW1lbnRSYXJl
RGF0YSgpOwogCiAgICAgdm9pZCBzZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkLCBQYXNzUmVmUHRy
PFBzZXVkb0VsZW1lbnQ+KTsKQEAgLTEzMCw5ICsxMzAsOCBAQCBpbmxpbmUgSW50U2l6ZSBkZWZh
dWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCiAgICAgcmV0dXJuIEludFNpemUoTGF5b3V0VW5p
dDo6bWF4KCksIExheW91dFVuaXQ6Om1heCgpKTsKIH0KIAotaW5saW5lIEVsZW1lbnRSYXJlRGF0
YTo6RWxlbWVudFJhcmVEYXRhKERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE5vZGVSYXJlRGF0
YShkb2N1bWVudCkKLSAgICAsIG1fbWluaW11bVNpemVGb3JSZXNpemluZyhkZWZhdWx0TWluaW11
bVNpemVGb3JSZXNpemluZygpKQoraW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVE
YXRhKCkKKyAgICA6IG1fbWluaW11bVNpemVGb3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVG
b3JSZXNpemluZygpKQogICAgICwgbV9nZW5lcmF0ZWRCZWZvcmUoMCkKICAgICAsIG1fZ2VuZXJh
dGVkQWZ0ZXIoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBlZTFiNzhiYjdkZGFhZTNlOTllYWE3
NDVlMWJkOTEwZWIxYWU1Zjk1Li4yODA2ZmMxMWE3ZGVhY2Y5YTE5MjRiYTI3MDAxZDcwZjI4ZmM2
MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgTm9kZTo6fk5vZGUoKQog
ICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBkZXRhY2goKTsKIAotICAgIERvY3VtZW50KiBk
b2MgPSBtX2RvY3VtZW50OworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudEludGVybmFsKCk7
CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZG9jICYm
IGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0cygpICYmICFpc0NvbnRhaW5lck5vZGUoKSkKICAgICAg
ICAgZG9jLT5heE9iamVjdENhY2hlKCktPnJlbW92ZSh0aGlzKTsKICAgICAKQEAgLTQyNCwyOSAr
NDI0LDEyIEBAIE5vZGU6On5Ob2RlKCkKICAgICBpZiAobV9uZXh0KQogICAgICAgICBtX25leHQt
PnNldFByZXZpb3VzU2libGluZygwKTsKIAotICAgIGlmIChkb2MpCisgICAgaWYgKGRvYyAmJiAh
aXNEb2N1bWVudE5vZGUoKSkKICAgICAgICAgZG9jLT5ndWFyZERlcmVmKCk7CiAKICAgICBJbnNw
ZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6Tm9kZUNv
dW50ZXIpOwogfQogCi12b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
LXsKLSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KTsK
LSAgICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKLX0KLQotdm9pZCBOb2RlOjpz
ZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKLXsKLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkg
JiYgc2NvcGUtPnJvb3ROb2RlKCktPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGVuc3VyZVJhcmVEYXRhKCktPnNldFRyZWVTY29wZShzY29wZSk7Ci19Ci0KIE5vZGUq
IE5vZGU6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCkgY29uc3QKIHsKICAgICBpZiAoaXNF
bGVtZW50Tm9kZSgpICYmICFwcmV2aW91c1NpYmxpbmcoKSkgewpAQCAtNDk2LDcgKzQ3OSw3IEBA
IE5vZGVSYXJlRGF0YSogTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogCiBQYXNzT3duUHRyPE5vZGVS
YXJlRGF0YT4gTm9kZTo6Y3JlYXRlUmFyZURhdGEoKQogewotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgTm9kZVJhcmVEYXRhKGRvY3VtZW50SW50ZXJuYWwoKSkpOworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTm9kZVJhcmVEYXRhKCkpOwogfQogCiB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQpA
QCAtMTIxOSw3ICsxMjAyLDcgQEAgdm9pZCBOb2RlOjphdHRhY2goKQogICAgIHNldEF0dGFjaGVk
KCk7CiAgICAgY2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBEb2N1bWVudCogZG9jID0g
bV9kb2N1bWVudDsKKyAgICBEb2N1bWVudCogZG9jID0gZG9jdW1lbnRJbnRlcm5hbCgpOwogICAg
IGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpICYmIGRvYyAmJiBkb2Mt
PmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSkKICAgICAgICAgZG9jLT5heE9iamVjdENhY2hlKCktPnVw
ZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZCh0aGlzKTsKIH0KQEAgLTI3MzYsNyArMjcxOSw3
IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CiAgICAgVHJlZVNoYXJlZDxOb2Rl
LCBDb250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAg
ICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsK
LSAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Ry
ZWVTY29wZSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9uZXh0KTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX3ByZXZpb3VzKTsKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA3YTQ3MGVlYzA2OWJhNjI3M2IxNjU1NjBkNmU3Njlj
ODg0NmIzMGY4Li45YTgzNmNkMjg4MTE3ZmU2MmIzNTRlOTY3M2ExNzhhNWNmOWVlZWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50
cy5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZENs
aWNrT3B0aW9ucy5oIgorI2luY2x1ZGUgIlRyZWVTY29wZS5oIgogI2luY2x1ZGUgIlRyZWVTaGFy
ZWQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgpAQCAtODUsNyArODYsNiBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJT
dHlsZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBUYWdOb2RlTGlzdDsKLWNsYXNzIFRyZWVT
Y29wZTsKIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGNsYXNzIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OwpAQCAtMTE1LDE4ICsxMTUsMTEgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CiAgICAgdm9pZCBzZXRSZW5k
ZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQog
Ci0gICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3RyZWVTY29wZTsg
fQotICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpIHsgbV90cmVlU2NvcGUg
PSBzY29wZTsgfQotCiAgICAgdmlydHVhbCB+Tm9kZVJhcmVEYXRhQmFzZSgpIHsgfQogcHJvdGVj
dGVkOgotICAgIE5vZGVSYXJlRGF0YUJhc2UoVHJlZVNjb3BlKiBzY29wZSkKLSAgICAgICAgOiBt
X3RyZWVTY29wZShzY29wZSkKLSAgICB7Ci0gICAgfQorICAgIE5vZGVSYXJlRGF0YUJhc2UoKSB7
IH0KIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwotICAgIFRyZWVTY29w
ZSogbV90cmVlU2NvcGU7CiB9OwogCiBjbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJO
b2RlPiB7CkBAIC00NjEsMTMgKzQ1NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBkb2N1
bWVudEludGVybmFsKCk7CiAgICAgfQogCi0gICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25z
dDsKKyAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3Bl
OyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBub2RlIGlzIGFzc29jaWF0ZWQgd2l0
aCBhIGRvY3VtZW50IGFuZCBpcyBpbiBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudCdzCiAgICAgLy8g
bm9kZSB0cmVlLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3Qg
CiAgICAgeyAKLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVu
dEZsYWcpKTsKKyAgICAgICAgQVNTRVJUKGRvY3VtZW50SW50ZXJuYWwoKSB8fCAhZ2V0RmxhZyhJ
bkRvY3VtZW50RmxhZykpOwogICAgICAgICByZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7
CiAgICAgfQogCkBAIC03ODUsMTcgKzc3OCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNl
dEhhc0N1c3RvbUNhbGxiYWNrcygpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NG
bGFnKTsgfQogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50SW50ZXJuYWwoKSBjb25zdCB7IHJldHVy
biBtX2RvY3VtZW50OyB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50SW50ZXJuYWwoKSBjb25zdCB7
IHJldHVybiB0cmVlU2NvcGUoKS0+ZG9jdW1lbnRTY29wZSgpOyB9CisgICAgdm9pZCBzZXRUcmVl
U2NvcGUoVHJlZVNjb3BlKiBzY29wZSkgeyBtX3RyZWVTY29wZSA9IHNjb3BlOyB9CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAK
ICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAKLSAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJl
IG9ubHkgdXNlZCBmb3IgYSB0cmVlIHNjb3BlIG1pZ3JhdGlvbi4KLSAgICB2b2lkIHNldFRyZWVT
Y29wZShUcmVlU2NvcGUqKTsKLSAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0KICAg
ICBlbnVtIEVkaXRhYmxlTGV2ZWwgeyBFZGl0YWJsZSwgUmljaGx5RWRpdGFibGUgfTsKICAgICBi
b29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0YWJsZUxldmVsLCBVc2VyU2VsZWN0QWxsVHJlYXRt
ZW50ID0gVXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUpIGNvbnN0OwogICAgIGJvb2wg
aXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShFZGl0YWJsZUxldmVsKSBjb25zdDsKQEAgLTgzNyw3
ICs4MjcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9k
ZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIFRyZWVTY29wZSogbV90cmVl
U2NvcGU7CiAgICAgTm9kZSogbV9wcmV2aW91czsKICAgICBOb2RlKiBtX25leHQ7CiAgICAgLy8g
V2hlbiBhIG5vZGUgaGFzIHJhcmUgZGF0YSB3ZSBtb3ZlIHRoZSByZW5kZXJlciBpbnRvIHRoZSBy
YXJlIGRhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuY3BwCmluZGV4IGZkYjg2MjQ3OWZi
NWRjYjJlN2E0MGIyOGRiZjc3MzkzNDQxZWFlODguLmE0ZjhiMjE2YTA5MmFhMmI1YTY5ZWY3YmFh
MzcxNGQxYTNmMjkzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuY3BwCkBAIC00OSw3
ICs0OSw2IEBAIHZvaWQgTm9kZUxpc3RzTm9kZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvCiB2b2lkIE5vZGVSYXJlRGF0YTo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJD
b3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgaW5mby5hZGRNZW1iZXIodHJlZVNjb3BlKCkpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fbm9kZUxpc3RzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2No
aWxkTm9kZUxpc3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggMjRlZjIzMzRi
ZGQwYzE1ZTdjZTA0NDIwZDRjMGUwZmQ4MGY0Nzg1Ny4uOTEyMzRlNzNhMjBiNjUzZGE0ZTg3NTE4
YzY5MmU3YjVhNTU3OWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMTk5LDkg
KzE5OSw4IEBAIHByaXZhdGU6CiBjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVE
YXRhQmFzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgIAotICAgIE5vZGVSYXJlRGF0YShEb2N1bWVu
dCogZG9jdW1lbnQpCi0gICAgICAgIDogTm9kZVJhcmVEYXRhQmFzZShkb2N1bWVudCkKLSAgICAg
ICAgLCBtX2NoaWxkTm9kZUxpc3QoMCkKKyAgICBOb2RlUmFyZURhdGEoKQorICAgICAgICA6IG1f
Y2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKICAgICAgICAgLCBtX2No
aWxkSW5kZXgoMCkKICAgICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA2Mjg5MzliNGUwMDRiMTMwYTM1YzBhMjEw
MWFiYWQ4YWQ5NDM1ZDc1Li4yZTYzZmUxYjQ3NjQwZTA2Y2EzNzliY2VjNDVjOWQ1N2MyZjEzMTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC02NSw3ICs2NSw3IEBAIENPTVBJTEVf
QVNTRVJUKHNpemVvZihTaGFkb3dSb290KSA9PSBzaXplb2YoU2FtZVNpemVBc1NoYWRvd1Jvb3Qp
LCBzaGFkb3dyb290X3NoCiAKIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkK
LSAgICAsIFRyZWVTY29wZSh0aGlzKQorICAgICwgVHJlZVNjb3BlKHRoaXMsIGRvY3VtZW50KQog
ICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fbnVtYmVyT2ZTdHlsZXMo
MCkKQEAgLTc1LDEyICs3NSw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgICwgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICAKLSAgICAvLyBBc3N1bWUgZG9jdW1lbnQgYXMg
cGFyZW50IHNjb3BlLgotICAgIHNldFBhcmVudFRyZWVTY29wZShkb2N1bWVudCk7Ci0gICAgLy8g
U2hhZG93IHRyZWUgc2NvcGVzIGhhdmUgdGhlIHNjb3BlIHBvaW50ZXIgcG9pbnQgdG8gdGhlbXNl
bHZlcy4KLSAgICAvLyBUaGlzIHdheSwgZGlyZWN0IGNoaWxkcmVuIHdpbGwgcmVjZWl2ZSB0aGUg
Y29ycmVjdCBzY29wZSBwb2ludGVyLgotICAgIGVuc3VyZVJhcmVEYXRhKCktPnNldFRyZWVTY29w
ZSh0aGlzKTsKKyAgICBzZXRUcmVlU2NvcGUodGhpcyk7CiB9CiAKIFNoYWRvd1Jvb3Q6On5TaGFk
b3dSb290KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggNmIyZmIzMGQ5MTRiNjQ4ZjJl
OTI2Y2E1ZjI1NmY5YmE5OGVjNTc5Yi4uYTE0MzZkYmI3NTQxNzJiYWRjZTIyNWYzMTM4MTNkYjQ4
NWM5YjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTU0LDE5ICs1NCwzOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzVHJlZVNjb3BlIHsKICAgICB2
aXJ0dWFsIH5TYW1lU2l6ZUFzVHJlZVNjb3BlKCk7Ci0gICAgdm9pZCogcG9pbnRlcnNbN107Cisg
ICAgdm9pZCogcG9pbnRlcnNbOF07CiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoVHJlZVNj
b3BlKSA9PSBzaXplb2YoU2FtZVNpemVBc1RyZWVTY29wZSksIHRyZWVzY29wZV9zaG91bGRfc3Rh
eV9zbWFsbCk7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVRyZWVTY29wZTo6VHJl
ZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKQorVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29u
dGFpbmVyTm9kZSogcm9vdE5vZGUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5v
ZGUocm9vdE5vZGUpCi0gICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9kb2N1bWVu
dFNjb3BlKGRvY3VtZW50KQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoZG9jdW1lbnQpCiAgICAg
LCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmNy
ZWF0ZSgpKQogewogICAgIEFTU0VSVChyb290Tm9kZSk7CisgICAgQVNTRVJUKGRvY3VtZW50KTsK
KyAgICBBU1NFUlQocm9vdE5vZGUgIT0gZG9jdW1lbnQpOworfQorCitUcmVlU2NvcGU6OlRyZWVT
Y29wZShEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBtX3Jvb3ROb2RlKGRvY3VtZW50KQorICAg
ICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkK
KyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6Y3JlYXRlKCkpCit7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKK30KKworVHJlZVNjb3BlOjpU
cmVlU2NvcGUoKQorICAgIDogbV9yb290Tm9kZSgwKQorICAgICwgbV9kb2N1bWVudFNjb3BlKDAp
CisgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorewogfQogCiBUcmVlU2NvcGU6On5UcmVlU2Nv
cGUoKQpAQCAtOTIsNiArMTExLDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29w
ZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7
CiAKICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIHNldERvY3Vt
ZW50U2NvcGUobmV3UGFyZW50U2NvcGUtPmRvY3VtZW50U2NvcGUoKSk7CiB9CiAKIEVsZW1lbnQq
IFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggY2I2NjkwZGM2ZjUxNGJhNDE4NzE1YjRj
YTY0YTRiOWIyNTZmMjYwMC4uYzFkMDRjNjVmYTBmZmM0YmQ3NDY3NDEzMTQ0NjY5NDNjNTE1YjEy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBET01TZWxlY3Rpb247CitjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTGFiZWxFbGVtZW50OwogY2xh
c3MgSFRNTE1hcEVsZW1lbnQ7CkBAIC00Niw2ICs0Nyw3IEBAIGNsYXNzIE5vZGU7CiAvLyB0aGUg
ZGVzdHJ1Y3Rvci4KIGNsYXNzIFRyZWVTY29wZSB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50
OworICAgIGZyaWVuZCBjbGFzcyBUcmVlU2NvcGVBZG9wdGVyOwogCiBwdWJsaWM6CiAgICAgVHJl
ZVNjb3BlKiBwYXJlbnRUcmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFRyZWVTY29w
ZTsgfQpAQCAtNTgsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFbGVtZW50QnlJZChj
b25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3Zl
RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqKTsKIAor
ICAgIERvY3VtZW50KiBkb2N1bWVudFNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFNj
b3BlOyB9CisKICAgICBOb2RlKiBhbmNlc3RvckluVGhpc1Njb3BlKE5vZGUqKSBjb25zdDsKIAog
ICAgIHZvaWQgYWRkSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKTsKQEAgLTkxLDE0ICs5NSwzMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCisgICAgc3RhdGljIFRyZWVTY29wZSogbm9Eb2N1bWVudEluc3Rh
bmNlKCkKKyAgICB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVHJlZVNjb3BlLCBpbnN0
YW5jZSwgKCkpOworICAgICAgICByZXR1cm4gJmluc3RhbmNlOworICAgIH0KKwogcHJvdGVjdGVk
OgotICAgIGV4cGxpY2l0IFRyZWVTY29wZShDb250YWluZXJOb2RlKik7CisgICAgVHJlZVNjb3Bl
KENvbnRhaW5lck5vZGUqLCBEb2N1bWVudCopOworICAgIFRyZWVTY29wZShEb2N1bWVudCopOwog
ICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0
YSgpOworICAgIHZvaWQgc2V0RG9jdW1lbnRTY29wZShEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
eworICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgICAgICBBU1NFUlQodGhpcyAhPSBub0Rv
Y3VtZW50SW5zdGFuY2UoKSk7CisgICAgICAgIG1fZG9jdW1lbnRTY29wZSA9IGRvY3VtZW50Owor
ICAgIH0KIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUoKTsKKwogICAgIENvbnRhaW5lck5vZGUq
IG1fcm9vdE5vZGU7CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnRTY29wZTsKICAgICBUcmVlU2Nv
cGUqIG1fcGFyZW50VHJlZVNjb3BlOwogCiAgICAgT3duUHRyPERvY3VtZW50T3JkZXJlZE1hcD4g
bV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
QWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5k
ZXggOGNkNjI0OWJkNzYwOWUzZjA2OTYxZTMwODU5ZWUyZGFkYmZjMTU5MC4uOTZhMTI5Yjk2NjIy
ZGE4NTBlNmRjYWVlMjU2ZTYyNmEzMTdhNzVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcApAQCAtNDIsMTQgKzQyLDE1IEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6
bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAgICAgLy8gdGhhdCBlbGVtZW50
IG1heSBjb250YWluIHN0YWxlIGRhdGEgYXMgY2hhbmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1
cGRhdGVkIHRoZSBET01UcmVlVmVyc2lvbgogICAgIC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMg
bW92ZWQgdG8uIEJ5IGluY3JlYXNpbmcgdGhlIERPTVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGlu
ZyBkb2N1bWVudCBoZXJlCiAgICAgLy8gd2UgZW5zdXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2Fj
aGUgd2lsbCBiZSBpbnZhbGlkYXRlZCBhcyBuZWVkZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3Zl
ZCBiYWNrLgotICAgIERvY3VtZW50KiBvbGREb2N1bWVudCA9IG1fb2xkU2NvcGUgPyBtX29sZFNj
b3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpIDogMDsKLSAgICBEb2N1bWVudCogbmV3RG9jdW1l
bnQgPSBtX25ld1Njb3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBv
bGREb2N1bWVudCA9IG1fb2xkU2NvcGUtPmRvY3VtZW50U2NvcGUoKTsKKyAgICBEb2N1bWVudCog
bmV3RG9jdW1lbnQgPSBtX25ld1Njb3BlLT5kb2N1bWVudFNjb3BlKCk7CiAgICAgYm9vbCB3aWxs
TW92ZVRvTmV3RG9jdW1lbnQgPSBvbGREb2N1bWVudCAhPSBuZXdEb2N1bWVudDsKICAgICBpZiAo
b2xkRG9jdW1lbnQgJiYgd2lsbE1vdmVUb05ld0RvY3VtZW50KQogICAgICAgICBvbGREb2N1bWVu
dC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5v
ZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7CiAgICAgICAgIG5vZGUt
PnNldFRyZWVTY29wZShtX25ld1Njb3BlKTsKKwogICAgICAgICBpZiAobm9kZS0+aGFzUmFyZURh
dGEoKSkgewogICAgICAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnJhcmVE
YXRhKCk7CiAgICAgICAgICAgICBpZiAocmFyZURhdGEtPm5vZGVMaXN0cygpKQpAQCAtOTYsNyAr
OTcsOCBAQCBpbmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1l
bnQoTm9kZSogbm9kZSwgRG9jdW1lbnQqIG9sZERvYwogICAgIGlmIChvbGREb2N1bWVudCkKICAg
ICAgICAgb2xkRG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChub2RlLCBu
ZXdEb2N1bWVudCk7CiAKLSAgICBub2RlLT5zZXREb2N1bWVudChuZXdEb2N1bWVudCk7CisgICAg
aWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICB0b1NoYWRvd1Jvb3Qobm9kZSktPnNl
dERvY3VtZW50U2NvcGUobmV3RG9jdW1lbnQpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGRpZE1v
dmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179102</attachid>
            <date>2012-12-12 12:24:31 -0800</date>
            <delta_ts>2012-12-12 14:36:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-59816-20121212122153.patch</filename>
            <type>text/plain</type>
            <size>18599</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUwOWJhM2IzY2MyNDk1
NDA3YzkzNjY2YmE2OThlNmI0YTllNGIxNC4uNTgxNjE5ODY5NmYyMGY1ZjMyOWUwNGNjYTE3NzAx
NzkzYWYzM2Q4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTEyLTEyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEluc3RlYWQgb2Yg
Z2l2aW5nIGV2ZXJ5IG5vZGUgaW4gYSBzaGFkb3cgYSByYXJlIGRhdGEsIHdoaWNoIGNhbiBiZSBx
dWl0ZQorICAgICAgICBsYXJnZSwgd2UgcmVwbGFjZSB0aGUgRG9jdW1lbnQgcG9pbnRlciBpbiBO
b2RlIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRlcgorICAgICAgICBhbmQgd2UgZ2l2ZSBUcmVlU2Nv
cGUgYSBwb2ludGVyIHRvIGl0J3MgZG9jdW1lbnQgc2NvcGUuCisKKyAgICAgICAgVGhpcyBpbnRy
b2R1Y2VzIG5vIGJyYW5jaGVzIGluIGRvY3VtZW50KCkgYmVjYXVzZSBpbiB0aGUgY29tbW9uCisg
ICAgICAgIGNhc2UgZG9jdW1lbnQoKSBiZWNvbWVzIGVxdWl2YWxlbnQgdG8gbV90cmVlU2NvcGUt
Pm1fZG9jdW1lbnRTY29wZSB3aGVyZQorICAgICAgICB0aGUgZG9jdW1lbnRTY29wZSBpcyBhY3R1
YWxseSBtX3RyZWVTY29wZSBzbyB0aGlzIHNob3VsZG4ndCBpbnRyb2R1Y2UgYQorICAgICAgICBw
ZXJmIHJlZ3Jlc3Npb24uCisKKyAgICAgICAgTm90ZSBhbHNvIHRoYXQgVHJlZVNjb3BlIGNhbiBu
ZXZlciBiZSBudWxsIGFmdGVyIHIxMzYzMjgsIGFuZCB0aGUgZG9jdW1lbnQKKyAgICAgICAgcG9p
bnRlciBpcyBvbmx5IG51bGwgZm9yIERvY3VtZW50VHlwZSBub2RlcyBzbyB3ZSBjYW4gdXNlIGEg
c3BlY2lhbAorICAgICAgICBuby1kb2N1bWVudCBUcmVlU2NvcGUgZm9yIHRoaXMgY2FzZSB0aGF0
IGFsd2F5cyByZXR1cm5zIG51bGwgZnJvbQorICAgICAgICBkb2N1bWVudFNjb3BlKCkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZVJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dFJhcmVEYXRhLmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmNyZWF0ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmF0dGFjaCk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJh
cmVEYXRhQmFzZTo6Tm9kZVJhcmVEYXRhQmFzZSk6CisgICAgICAgIChOb2RlUmFyZURhdGFCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjppbkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50SW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0VHJlZVNjb3BlKToKKyAgICAgICAg
KE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL05vZGVS
YXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEp
OgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAg
ICAoU2FtZVNpemVBc1RyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRy
ZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29w
ZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpkb2N1bWVudFNj
b3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bm9Eb2N1bWVudEluc3RhbmNlKToK
KyAgICAgICAgICAgIFJldHVybnMgYSBzcGVjaWFsIHRyZWUgc2NvcGUgdGhhdCBoYXMgbm8gZG9j
dW1lbnQgZm9yIHVzZSB3aXRoCisgICAgICAgICAgICBEb2N1bWVudFR5cGUgbm9kZXMuCisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldERvY3VtZW50U2NvcGUpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGVBZG9wdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0
ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9w
dGVyOjptb3ZlVHJlZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
QWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKwogMjAxMi0xMi0xMiAgTm8nYW0gUm9z
ZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtUZXhtYXBdIENvbnNvbGlkYXRl
IHJlZHVuZGFudCBjb2RlIGZvciBBUkJfUkVDVCB0ZXh0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCAxNTRjMjMyNTAzNmIyYzM4N2Y3YmU5NzExNjBhYTY1YjJiYmE4MDNmLi5lZTE4YTZk
YzM3ZDQ2ZDNkNThhOWYxODUyMzgyOGY1YTgwNjNiZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTQzNiw3ICs0MzYsNyBAQCBwcml2YXRlOgogdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xv
YmFsVHJlZVZlcnNpb24gPSAwOwogCiBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCi0gICAgOiBDb250YWlu
ZXJOb2RlKDAsIENyZWF0ZURvY3VtZW50KQorICAgIDogQ29udGFpbmVyTm9kZSh0aGlzLCBDcmVh
dGVEb2N1bWVudCkKICAgICAsIFRyZWVTY29wZSh0aGlzKQogICAgICwgbV9ndWFyZFJlZkNvdW50
KDApCiAgICAgLCBtX3N0eWxlUmVzb2x2ZXJUaHJvd2F3YXlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6
OnN0eWxlUmVzb2x2ZXJUaHJvd2F3YXlUaW1lckZpcmVkKQpAQCAtNTEwLDggKzUxMCw2IEBAIERv
Y3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hI
VE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXND
aGFuZ2VkKGZhbHNlKQogI2VuZGlmCiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7Ci0KICAgICBt
X3ByaW50aW5nID0gZmFsc2U7CiAgICAgbV9wYWdpbmF0ZWRGb3JTY3JlZW4gPSBmYWxzZTsKIApA
QCAtNjY5LDggKzY2Nyw2IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKG1fbm9kZUxpc3RDb3VudHMpOyBpKyspCiAg
ICAgICAgIEFTU0VSVCghbV9ub2RlTGlzdENvdW50c1tpXSk7CiAKLSAgICBtX2RvY3VtZW50ID0g
MDsKLQogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNv
dW50ZXJzOjpEb2N1bWVudENvdW50ZXIpOwogfQogCkBAIC0xMzQ1LDEzICsxMzQxLDEzIEBAIHZv
aWQgRG9jdW1lbnQ6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogCiBTdHJpbmcg
RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9kb2N1bWVu
dC0+aXNYSFRNTERvY3VtZW50KCkpCisgICAgaWYgKGlzWEhUTUxEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlz
U1ZHRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNTVkdEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
ImltYWdlL3N2Zyt4bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT54bWxTdGFuZGFsb25lKCkpCisg
ICAgaWYgKHhtbFN0YW5kYWxvbmUoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCI7Ci0gICAg
aWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKGlzSFRNTERvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiAidGV4dC9odG1sIjsKIAogICAgIGlmIChEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDk5
NGY2MWNlNTMxMjU0Y2MyZmI0NGUxMDllZmMxYTUyYzc1ZjY4ZS4uZGI4OTFkNTI2ODlmYjQwYWU5
NjFiNTAyMzM1MjUzOTNkOTY4M2Q2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1NTksMjIg
KzE1NTksMjAgQEAgaW5saW5lIHZvaWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVl
dElmTmVlZGVkKCkKIAogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAog
ewotICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7Ci19Ci0KLWlubGluZSBUcmVlU2NvcGUq
IE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBt
X2RhdGEubV9yYXJlRGF0YS0+dHJlZVNjb3BlKCkgOiBkb2N1bWVudEludGVybmFsKCk7CisgICAg
cmV0dXJuIHRoaXMgPT0gZG9jdW1lbnRJbnRlcm5hbCgpOwogfQogCiBpbmxpbmUgTm9kZTo6Tm9k
ZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9k
ZUZsYWdzKHR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2Nv
cGUoZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKIHsKICAg
ICBpZiAoZG9jdW1lbnQpCiAgICAgICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOworICAgIGVsc2UK
KyAgICAgICAgbV90cmVlU2NvcGUgPSBUcmVlU2NvcGU6Om5vRG9jdW1lbnRJbnN0YW5jZSgpOwor
CiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RBVElTVElDUykg
JiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDQ0OThkMzI5YTViOTllODhmYzlkMTQ3Yjk1MTdk
M2JiMDI5MDBiYWYuLjI2YWIxZTk0ZmVhYWZlNzM3MGY5NzMyYzliZTFhODJhMGNmZGFjZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBpbmxpbmUgRWxlbWVudFJh
cmVEYXRhKiBFbGVtZW50OjplbnN1cmVFbGVtZW50UmFyZURhdGEoKQogCiBQYXNzT3duUHRyPE5v
ZGVSYXJlRGF0YT4gRWxlbWVudDo6Y3JlYXRlUmFyZURhdGEoKQogewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKGRvY3VtZW50SW50ZXJuYWwoKSkpOworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKCkpOwogfQogCiBERUZJTkVfVklSVFVBTF9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoRWxlbWVudCwgYmx1cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKaW5kZXggNzkwNWNiNTQ4ZTVmZmM0OWYyMDRhMzlkZWM1MDFjNDA5ZWQy
ZmExNS4uODhmMjZiZDE2NGFjNzUzYWZkZGUzOGZkZjI4ZDQxM2RjZjAxYjEyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEVsZW1lbnRSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGEgewog
cHVibGljOgotICAgIEVsZW1lbnRSYXJlRGF0YShEb2N1bWVudCopOworICAgIEVsZW1lbnRSYXJl
RGF0YSgpOwogICAgIHZpcnR1YWwgfkVsZW1lbnRSYXJlRGF0YSgpOwogCiAgICAgdm9pZCBzZXRQ
c2V1ZG9FbGVtZW50KFBzZXVkb0lkLCBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsKQEAgLTEz
MCw5ICsxMzAsOCBAQCBpbmxpbmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemlu
ZygpCiAgICAgcmV0dXJuIEludFNpemUoTGF5b3V0VW5pdDo6bWF4KCksIExheW91dFVuaXQ6Om1h
eCgpKTsKIH0KIAotaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IE5vZGVSYXJlRGF0YShkb2N1bWVudCkKLSAgICAsIG1fbWlu
aW11bVNpemVGb3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQoraW5s
aW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKCkKKyAgICA6IG1fbWluaW11bVNp
emVGb3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQogICAgICwgbV9n
ZW5lcmF0ZWRCZWZvcmUoMCkKICAgICAsIG1fZ2VuZXJhdGVkQWZ0ZXIoMCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCA3NjUzMDJhZTEzNWQwNWMyMmQ2NjQ0OWMyZGYwNDUwOThmMDNhOTY0Li5kYjI3
ZDY3OGE0ZTMwOTQwNzM2NDdhMDMyYmE1NDQ4YWRmYjRiYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC00MTgsNyArNDE4LDcgQEAgTm9kZTo6fk5vZGUoKQogICAgIGlmIChyZW5kZXJlcigpKQogICAg
ICAgICBkZXRhY2goKTsKIAotICAgIERvY3VtZW50KiBkb2MgPSBtX2RvY3VtZW50OworICAgIERv
Y3VtZW50KiBkb2MgPSBkb2N1bWVudEludGVybmFsKCk7CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZG9jICYmIGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0
cygpICYmICFpc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgZG9jLT5heE9iamVjdENhY2hlKCkt
PnJlbW92ZSh0aGlzKTsKICAgICAKQEAgLTQ3MSw3ICs0NzEsNyBAQCBOb2RlUmFyZURhdGEqIE5v
ZGU6OmVuc3VyZVJhcmVEYXRhKCkKIAogUGFzc093blB0cjxOb2RlUmFyZURhdGE+IE5vZGU6OmNy
ZWF0ZVJhcmVEYXRhKCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vZGVSYXJlRGF0YShk
b2N1bWVudEludGVybmFsKCkpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vZGVSYXJlRGF0
YSgpKTsKIH0KIAogdm9pZCBOb2RlOjpjbGVhclJhcmVEYXRhKCkKQEAgLTEwODIsNyArMTA4Miw3
IEBAIHZvaWQgTm9kZTo6YXR0YWNoKCkKICAgICBzZXRBdHRhY2hlZCgpOwogICAgIGNsZWFyTmVl
ZHNTdHlsZVJlY2FsYygpOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZG9jdW1lbnQ7CisgICAg
RG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBpZiAoQVhPYmplY3RDYWNo
ZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5heE9iamVjdENhY2hlRXhp
c3RzKCkpCiAgICAgICAgIGRvYy0+YXhPYmplY3RDYWNoZSgpLT51cGRhdGVDYWNoZUFmdGVyTm9k
ZUlzQXR0YWNoZWQodGhpcyk7CiB9CkBAIC0yNTk5LDcgKzI1OTksNyBAQCB2b2lkIE5vZGU6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29y
ZU1lbW9yeVR5cGVzOjpET00pOwogICAgIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46
OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIFNjcmlwdFdyYXBwYWJs
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1i
ZXIobV9kb2N1bWVudCk7CisgICAgaW5mby5hZGRNZW1iZXIobV90cmVlU2NvcGUpOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fbmV4dCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmV2aW91cyk7CiAg
ICAgaW5mby5hZGRNZW1iZXIodGhpcy0+cmVuZGVyZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MDUz
OWJiOWQwZjMzZjZmNzM2MWVkODMzYzBiY2ZhZjQ2MmM2ZTQzLi44NDlkZDY1YTUxNzQ5MGYxYWUx
Y2RjNWRjOGEwYzhlZGVhMzZiM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJs
ZS5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIgorI2luY2x1ZGUgIlRyZWVT
Y29wZS5oIgogI2luY2x1ZGUgIlRyZWVTaGFyZWQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtODUsNyArODYsNiBAQCBjbGFzcyBS
ZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFz
cyBUYWdOb2RlTGlzdDsKLWNsYXNzIFRyZWVTY29wZTsKIAogI2lmIEVOQUJMRShHRVNUVVJFX0VW
RU5UUykKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OwpAQCAtMTE1LDE4ICsxMTUsMTEgQEAg
cHVibGljOgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
bmRlcmVyOyB9CiAgICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7
IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQogCi0gICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBj
b25zdCB7IHJldHVybiBtX3RyZWVTY29wZTsgfQotICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVT
Y29wZSogc2NvcGUpIHsgbV90cmVlU2NvcGUgPSBzY29wZTsgfQotCiAgICAgdmlydHVhbCB+Tm9k
ZVJhcmVEYXRhQmFzZSgpIHsgfQogcHJvdGVjdGVkOgotICAgIE5vZGVSYXJlRGF0YUJhc2UoVHJl
ZVNjb3BlKiBzY29wZSkKLSAgICAgICAgOiBtX3RyZWVTY29wZShzY29wZSkKLSAgICB7Ci0gICAg
fQorICAgIE5vZGVSYXJlRGF0YUJhc2UoKSB7IH0KIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0
KiBtX3JlbmRlcmVyOwotICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiB9OwogCiBjbGFzcyBO
b2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
VHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPiB7CkBAIC00NTksMTMgKzQ1MiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBkb2N1bWVudEludGVybmFsKCk7CiAgICAgfQogCi0gICAg
VHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKKyAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyBub2RlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRvY3VtZW50IGFuZCBpcyBpbiBpdHMgYXNz
b2NpYXRlZCBkb2N1bWVudCdzCiAgICAgLy8gbm9kZSB0cmVlLCBmYWxzZSBvdGhlcndpc2UuCiAg
ICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QgCiAgICAgeyAKLSAgICAgICAgQVNTRVJUKG1fZG9j
dW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAgICAgICAgQVNTRVJUKGRvY3Vt
ZW50SW50ZXJuYWwoKSB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOwogICAgICAgICByZXR1
cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAgICAgfQogCkBAIC03NTYsMTcgKzc0OSwxNCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpIHsgc2V0Rmxh
Zyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQogCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50SW50ZXJuYWwoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50SW50ZXJuYWwoKSBjb25zdCB7IHJldHVybiB0cmVlU2NvcGUoKS0+ZG9jdW1lbnRT
Y29wZSgpOyB9CisgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkgeyBtX3Ry
ZWVTY29wZSA9IHNjb3BlOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTaGFy
ZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAK
LSAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0cmVlIHNjb3BlIG1p
Z3JhdGlvbi4KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKLSAgICB2b2lkIHNl
dERvY3VtZW50KERvY3VtZW50Kik7Ci0KICAgICBlbnVtIEVkaXRhYmxlTGV2ZWwgeyBFZGl0YWJs
ZSwgUmljaGx5RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0YWJs
ZUxldmVsLCBVc2VyU2VsZWN0QWxsVHJlYXRtZW50ID0gVXNlclNlbGVjdEFsbElzQWx3YXlzTm9u
RWRpdGFibGUpIGNvbnN0OwogICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShFZGl0
YWJsZUxldmVsKSBjb25zdDsKQEAgLTgwOSw3ICs3OTksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwotICAgIERvY3VtZW50KiBtX2RvY3Vt
ZW50OworICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgTm9kZSogbV9wcmV2aW91czsK
ICAgICBOb2RlKiBtX25leHQ7CiAgICAgLy8gV2hlbiBhIG5vZGUgaGFzIHJhcmUgZGF0YSB3ZSBt
b3ZlIHRoZSByZW5kZXJlciBpbnRvIHRoZSByYXJlIGRhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuY3BwCmluZGV4IDk1NjA3YmIyMTdjNzFmZGJjNjAyYTIyOGFlNmViZTczNTU1ODZmMmQu
LmM5M2FhMWY1ZjdjNzkyZWVlYTA2M2M0ZTQyODAxMTZhMGJjNjY0NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmFyZURhdGEuY3BwCkBAIC02NCw3ICs2NCw2IEBAIHZvaWQgTm9kZUxpc3RzTm9kZURh
dGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvCiB2b2lkIE5vZGVSYXJlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgaW5m
by5hZGRNZW1iZXIodHJlZVNjb3BlKCkpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbm9kZUxpc3Rz
KTsKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5jcHAKaW5kZXggODk3MDg5ZTMxZDk4MDc0ZjBmYWIxOWIyMmE2M2Y1YTdjZjAzODYzZS4uZTY2
NmVjMGExYjUwOGE3YmZjNmY2NWJhNjY1MGNjZmNkNGE3YWMxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcApAQCAtNjUsNyArNjUsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoU2hhZG93
Um9vdCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTaGFkb3dSb290KSwgc2hhZG93cm9vdF9zaAogCiBT
aGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IERvY3VtZW50
RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCi0gICAgLCBUcmVlU2NvcGUodGhp
cykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fcHJldigwKQogICAg
ICwgbV9uZXh0KDApCiAgICAgLCBtX251bWJlck9mU3R5bGVzKDApCkBAIC03NSwxMiArNzUsNyBA
QCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fcmVn
aXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290KGZhbHNlKQogewogICAgIEFTU0VSVChkb2N1bWVu
dCk7Ci0gICAgCi0gICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29wZS4KLSAgICBz
ZXRQYXJlbnRUcmVlU2NvcGUoZG9jdW1lbnQpOwotICAgIC8vIFNoYWRvdyB0cmVlIHNjb3BlcyBo
YXZlIHRoZSBzY29wZSBwb2ludGVyIHBvaW50IHRvIHRoZW1zZWx2ZXMuCi0gICAgLy8gVGhpcyB3
YXksIGRpcmVjdCBjaGlsZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2NvcGUgcG9pbnRl
ci4KLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAgc2V0VHJl
ZVNjb3BlKHRoaXMpOwogfQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCmluZGV4IGZlMTlhMGZhMTg5YTEyZmQxYWVhOWVhM2FkZDcwNDBiMDliNDcz
NjcuLjlhZDU1MmI1Y2Y3NDMxYWUwMDdiYWNjZDYzNWMxZDMzZWEzOGMwNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCkBAIC01NSwxOSArNTUsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgU2FtZVNpemVBc1RyZWVTY29wZSB7CiAgICAgdmlydHVhbCB+U2FtZVNpemVBc1Ry
ZWVTY29wZSgpOwotICAgIHZvaWQqIHBvaW50ZXJzWzddOworICAgIHZvaWQqIHBvaW50ZXJzWzhd
OwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRyZWVTY29wZSkgPT0gc2l6ZW9mKFNhbWVT
aXplQXNUcmVlU2NvcGUpLCB0cmVlc2NvcGVfc2hvdWxkX3N0YXlfc21hbGwpOwogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2Rl
KiByb290Tm9kZSkKK1RyZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2Rl
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKHJvb3ROb2RlKQotICAgICwg
bV9wYXJlbnRUcmVlU2NvcGUoMCkKKyAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKKyAg
ICAsIG1fcGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KQogICAgICwgbV9pZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKIHsKICAgICBBU1NF
UlQocm9vdE5vZGUpOworICAgIEFTU0VSVChkb2N1bWVudCk7CisgICAgQVNTRVJUKHJvb3ROb2Rl
ICE9IGRvY3VtZW50KTsKK30KKworVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorICAgIDogbV9yb290Tm9kZShkb2N1bWVudCkKKyAgICAsIG1fZG9jdW1lbnRTY29wZShk
b2N1bWVudCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX2lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeShJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmNyZWF0ZSgpKQoreworICAg
IEFTU0VSVChkb2N1bWVudCk7Cit9CisKK1RyZWVTY29wZTo6VHJlZVNjb3BlKCkKKyAgICA6IG1f
cm9vdE5vZGUoMCkKKyAgICAsIG1fZG9jdW1lbnRTY29wZSgwKQorICAgICwgbV9wYXJlbnRUcmVl
U2NvcGUoMCkKK3sKIH0KIAogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKQEAgLTkzLDYgKzExMiw3
IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJl
bnRTY29wZSkKICAgICBBU1NFUlQobmV3UGFyZW50U2NvcGUpOwogCiAgICAgbV9wYXJlbnRUcmVl
U2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKKyAgICBzZXREb2N1bWVudFNjb3BlKG5ld1BhcmVudFNj
b3BlLT5kb2N1bWVudFNjb3BlKCkpOwogfQogCiBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1l
bnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5oCmluZGV4IGNiNjY5MGRjNmY1MTRiYTQxODcxNWI0Y2E2NGE0YjliMjU2ZjI2MDAuLmMx
ZDA0YzY1ZmEwZmZjNGJkNzQ2NzQxMzE0NDY2OTQzYzUxNWIxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250
YWluZXJOb2RlOwogY2xhc3MgRE9NU2VsZWN0aW9uOworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBF
bGVtZW50OwogY2xhc3MgSFRNTExhYmVsRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OwpA
QCAtNDYsNiArNDcsNyBAQCBjbGFzcyBOb2RlOwogLy8gdGhlIGRlc3RydWN0b3IuCiBjbGFzcyBU
cmVlU2NvcGUgewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKKyAgICBmcmllbmQgY2xhc3Mg
VHJlZVNjb3BlQWRvcHRlcjsKIAogcHVibGljOgogICAgIFRyZWVTY29wZSogcGFyZW50VHJlZVNj
b3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0KQEAgLTU4LDYgKzYwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50SWQsIEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZUVsZW1lbnRCeUlkKGNvbnN0IEF0
b21pY1N0cmluZyYgZWxlbWVudElkLCBFbGVtZW50Kik7CiAKKyAgICBEb2N1bWVudCogZG9jdW1l
bnRTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRTY29wZTsgfQorCiAgICAgTm9kZSog
YW5jZXN0b3JJblRoaXNTY29wZShOb2RlKikgY29uc3Q7CiAKICAgICB2b2lkIGFkZEltYWdlTWFw
KEhUTUxNYXBFbGVtZW50Kik7CkBAIC05MSwxNCArOTUsMzAgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAor
ICAgIHN0YXRpYyBUcmVlU2NvcGUqIG5vRG9jdW1lbnRJbnN0YW5jZSgpCisgICAgeworICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFRyZWVTY29wZSwgaW5zdGFuY2UsICgpKTsKKyAgICAgICAg
cmV0dXJuICZpbnN0YW5jZTsKKyAgICB9CisKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBUcmVl
U2NvcGUoQ29udGFpbmVyTm9kZSopOworICAgIFRyZWVTY29wZShDb250YWluZXJOb2RlKiwgRG9j
dW1lbnQqKTsKKyAgICBUcmVlU2NvcGUoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2Nv
cGUoKTsKIAogICAgIHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKKyAgICB2b2lkIHNldERv
Y3VtZW50U2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRv
Y3VtZW50KTsKKyAgICAgICAgQVNTRVJUKHRoaXMgIT0gbm9Eb2N1bWVudEluc3RhbmNlKCkpOwor
ICAgICAgICBtX2RvY3VtZW50U2NvcGUgPSBkb2N1bWVudDsKKyAgICB9CiAKIHByaXZhdGU6Cisg
ICAgVHJlZVNjb3BlKCk7CisKICAgICBDb250YWluZXJOb2RlKiBtX3Jvb3ROb2RlOworICAgIERv
Y3VtZW50KiBtX2RvY3VtZW50U2NvcGU7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29w
ZTsKIAogICAgIE93blB0cjxEb2N1bWVudE9yZGVyZWRNYXA+IG1fZWxlbWVudHNCeUlkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCmluZGV4IDAxOWU2N2FiNDNkZmVhMDY4
ZWYxMmZmMDk0NDMwOTlmZjRmNWFkY2YuLjRiZTZmOTc5YmNkYzAxZjEyYjY5ZGFiMTJmNjcwYTI2
MjczNDdlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKQEAgLTQz
LDE0ICs0MywxNSBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShO
b2RlKiByb290KSBjb25zdAogICAgIC8vIHRoYXQgZWxlbWVudCBtYXkgY29udGFpbiBzdGFsZSBk
YXRhIGFzIGNoYW5nZXMgbWFkZSB0byBpdCB3aWxsIGhhdmUgdXBkYXRlZCB0aGUgRE9NVHJlZVZl
cnNpb24KICAgICAvLyBvZiB0aGUgZG9jdW1lbnQgaXQgd2FzIG1vdmVkIHRvLiBCeSBpbmNyZWFz
aW5nIHRoZSBET01UcmVlVmVyc2lvbiBvZiB0aGUgZG9uYXRpbmcgZG9jdW1lbnQgaGVyZQogICAg
IC8vIHdlIGVuc3VyZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGNhY2hlIHdpbGwgYmUgaW52YWxpZGF0
ZWQgYXMgbmVlZGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgbW92ZWQgYmFjay4KLSAgICBEb2N1bWVu
dCogb2xkRG9jdW1lbnQgPSBtX29sZFNjb3BlID8gbV9vbGRTY29wZS0+cm9vdE5vZGUoKS0+ZG9j
dW1lbnQoKSA6IDA7Ci0gICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbV9uZXdTY29wZS0+cm9v
dE5vZGUoKS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBtX29sZFNj
b3BlLT5kb2N1bWVudFNjb3BlKCk7CisgICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbV9uZXdT
Y29wZS0+ZG9jdW1lbnRTY29wZSgpOwogICAgIGJvb2wgd2lsbE1vdmVUb05ld0RvY3VtZW50ID0g
b2xkRG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQ7CiAgICAgaWYgKG9sZERvY3VtZW50ICYmIHdpbGxN
b3ZlVG9OZXdEb2N1bWVudCkKICAgICAgICAgb2xkRG9jdW1lbnQtPmluY0RPTVRyZWVWZXJzaW9u
KCk7CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSByb290OyBub2RlOyBub2RlID0gTm9kZVRyYXZl
cnNhbDo6bmV4dChub2RlLCByb290KSkgewogICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGUobV9u
ZXdTY29wZSk7CisKICAgICAgICAgaWYgKG5vZGUtPmhhc1JhcmVEYXRhKCkpIHsKICAgICAgICAg
ICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5yYXJlRGF0YSgpOwogICAgICAgICAg
ICAgaWYgKHJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKQEAgLTk3LDcgKzk4LDggQEAgaW5saW5lIHZv
aWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUqIG5vZGUsIERv
Y3VtZW50KiBvbGREb2MKICAgICBpZiAob2xkRG9jdW1lbnQpCiAgICAgICAgIG9sZERvY3VtZW50
LT5tb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQobm9kZSwgbmV3RG9jdW1lbnQpOwogCi0g
ICAgbm9kZS0+c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOworICAgIGlmIChub2RlLT5pc1NoYWRv
d1Jvb3QoKSkKKyAgICAgICAgdG9TaGFkb3dSb290KG5vZGUpLT5zZXREb2N1bWVudFNjb3BlKG5l
d0RvY3VtZW50KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdh
c0NhbGxlZCA9IGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179129</attachid>
            <date>2012-12-12 14:36:20 -0800</date>
            <delta_ts>2012-12-12 18:20:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20121212143341.patch</filename>
            <type>text/plain</type>
            <size>19971</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRhNDRlYzM4MjE1NzA2
ZGI2MDkzZjMwNmVmM2M4MzJhODYxMGY3ZS4uMGJlOTY5NGI3Njg2NmZkMTliN2U2ZjZiZTU5ZWM1
OWM5NjYzNDZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTEyLTEyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEluc3RlYWQgb2Yg
Z2l2aW5nIGV2ZXJ5IG5vZGUgaW4gYSBzaGFkb3cgYSByYXJlIGRhdGEsIHdoaWNoIGNhbiBiZSBx
dWl0ZQorICAgICAgICBsYXJnZSwgd2UgcmVwbGFjZSB0aGUgRG9jdW1lbnQgcG9pbnRlciBpbiBO
b2RlIHdpdGggYSBUcmVlU2NvcGUgcG9pbnRlcgorICAgICAgICBhbmQgd2UgZ2l2ZSBUcmVlU2Nv
cGUgYSBwb2ludGVyIHRvIGl0J3MgZG9jdW1lbnQgc2NvcGUuCisKKyAgICAgICAgVGhpcyBpbnRy
b2R1Y2VzIG5vIGJyYW5jaGVzIGluIGRvY3VtZW50KCkgYmVjYXVzZSBpbiB0aGUgY29tbW9uCisg
ICAgICAgIGNhc2UgZG9jdW1lbnQoKSBiZWNvbWVzIGVxdWl2YWxlbnQgdG8gbV90cmVlU2NvcGUt
Pm1fZG9jdW1lbnRTY29wZSB3aGVyZQorICAgICAgICB0aGUgZG9jdW1lbnRTY29wZSBpcyBhY3R1
YWxseSBtX3RyZWVTY29wZSBzbyB0aGlzIHNob3VsZG4ndCBpbnRyb2R1Y2UgYQorICAgICAgICBw
ZXJmIHJlZ3Jlc3Npb24uCisKKyAgICAgICAgTm90ZSBhbHNvIHRoYXQgVHJlZVNjb3BlIGNhbiBu
ZXZlciBiZSBudWxsIGFmdGVyIHIxMzYzMjgsIGFuZCB0aGUgZG9jdW1lbnQKKyAgICAgICAgcG9p
bnRlciBpcyBvbmx5IG51bGwgZm9yIERvY3VtZW50VHlwZSBub2RlcyBzbyB3ZSBjYW4gdXNlIGEg
c3BlY2lhbAorICAgICAgICBuby1kb2N1bWVudCBUcmVlU2NvcGUgZm9yIHRoaXMgY2FzZSB0aGF0
IGFsd2F5cyByZXR1cm5zIG51bGwgZnJvbQorICAgICAgICBkb2N1bWVudFNjb3BlKCkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZVJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dFJhcmVEYXRhLmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmNyZWF0ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmF0dGFjaCk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJh
cmVEYXRhQmFzZTo6Tm9kZVJhcmVEYXRhQmFzZSk6CisgICAgICAgIChOb2RlUmFyZURhdGFCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjppbkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50SW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0VHJlZVNjb3BlKToKKyAgICAgICAg
KE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL05vZGVS
YXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEp
OgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAg
ICAoU2FtZVNpemVBc1RyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRy
ZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29w
ZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpkb2N1bWVudFNj
b3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bm9Eb2N1bWVudEluc3RhbmNlKToK
KyAgICAgICAgICAgIFJldHVybnMgYSBzcGVjaWFsIHRyZWUgc2NvcGUgdGhhdCBoYXMgbm8gZG9j
dW1lbnQgZm9yIHVzZSB3aXRoCisgICAgICAgICAgICBEb2N1bWVudFR5cGUgbm9kZXMuCisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldERvY3VtZW50U2NvcGUpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGVBZG9wdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0
ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9w
dGVyOjptb3ZlVHJlZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
QWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKwogMjAxMi0xMi0xMiAgSm9obiBHcmln
Z3MgIDxqZ3JpZ2dzQHJpbS5jb20+CiAKICAgICAgICAgMjAxMi0xMi0xMiAgSm9obiBHcmlnZ3Mg
IDxqZ3JpZ2dzQHJpbS5jb20+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxNTRjMjMyNTAz
NmIyYzM4N2Y3YmU5NzExNjBhYTY1YjJiYmE4MDNmLi5lZTE4YTZkYzM3ZDQ2ZDNkNThhOWYxODUy
MzgyOGY1YTgwNjNiZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzNiw3ICs0MzYs
NyBAQCBwcml2YXRlOgogdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAw
OwogCiBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJv
b2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCi0gICAgOiBDb250YWluZXJOb2RlKDAsIENyZWF0ZURv
Y3VtZW50KQorICAgIDogQ29udGFpbmVyTm9kZSh0aGlzLCBDcmVhdGVEb2N1bWVudCkKICAgICAs
IFRyZWVTY29wZSh0aGlzKQogICAgICwgbV9ndWFyZFJlZkNvdW50KDApCiAgICAgLCBtX3N0eWxl
UmVzb2x2ZXJUaHJvd2F3YXlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXJUaHJv
d2F3YXlUaW1lckZpcmVkKQpAQCAtNTEwLDggKzUxMCw2IEBAIERvY3VtZW50OjpEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkK
ICAgICAsIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKGZhbHNlKQogI2Vu
ZGlmCiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7Ci0KICAgICBtX3ByaW50aW5nID0gZmFsc2U7
CiAgICAgbV9wYWdpbmF0ZWRGb3JTY3JlZW4gPSBmYWxzZTsKIApAQCAtNjY5LDggKzY2Nyw2IEBA
IERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKG1fbm9kZUxpc3RDb3VudHMpOyBpKyspCiAgICAgICAgIEFTU0VSVCghbV9u
b2RlTGlzdENvdW50c1tpXSk7CiAKLSAgICBtX2RvY3VtZW50ID0gMDsKLQogICAgIEluc3BlY3Rv
ckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpEb2N1bWVudENv
dW50ZXIpOwogfQogCkBAIC0xMzQ1LDEzICsxMzQxLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnNldENv
bnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3Rl
ZE1JTUVUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50
KCkpCisgICAgaWYgKGlzWEhUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImFwcGxpY2F0
aW9uL3hodG1sK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSkKKyAg
ICBpZiAoaXNTVkdEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImltYWdlL3N2Zyt4bWwiOwot
ICAgIGlmIChtX2RvY3VtZW50LT54bWxTdGFuZGFsb25lKCkpCisgICAgaWYgKHhtbFN0YW5kYWxv
bmUoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlz
SFRNTERvY3VtZW50KCkpCisgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
biAidGV4dC9odG1sIjsKIAogICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBsb2FkZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDk5NGY2MWNlNTMxMjU0Y2MyZmI0
NGUxMDllZmMxYTUyYzc1ZjY4ZS4uZGI4OTFkNTI2ODlmYjQwYWU5NjFiNTAyMzM1MjUzOTNkOTY4
M2Q2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1NTksMjIgKzE1NTksMjAgQEAgaW5saW5l
IHZvaWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCkKIAogaW5s
aW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiB0aGlz
ID09IG1fZG9jdW1lbnQ7Ci19Ci0KLWlubGluZSBUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBtX2RhdGEubV9yYXJlRGF0YS0+
dHJlZVNjb3BlKCkgOiBkb2N1bWVudEludGVybmFsKCk7CisgICAgcmV0dXJuIHRoaXMgPT0gZG9j
dW1lbnRJbnRlcm5hbCgpOwogfQogCiBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1l
bnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAg
LCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2NvcGUoZG9jdW1lbnQpCiAgICAg
LCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKIHsKICAgICBpZiAoZG9jdW1lbnQpCiAg
ICAgICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOworICAgIGVsc2UKKyAgICAgICAgbV90cmVlU2Nv
cGUgPSBUcmVlU2NvcGU6Om5vRG9jdW1lbnRJbnN0YW5jZSgpOworCiAjaWYgIWRlZmluZWQoTkRF
QlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RBVElTVElDUykgJiYgRFVNUF9OT0RFX1NUQVRJ
U1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCmluZGV4IDQ0OThkMzI5YTViOTllODhmYzlkMTQ3Yjk1MTdkM2JiMDI5MDBiYWYuLjI2YWIx
ZTk0ZmVhYWZlNzM3MGY5NzMyYzliZTFhODJhMGNmZGFjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhKiBFbGVtZW50Ojpl
bnN1cmVFbGVtZW50UmFyZURhdGEoKQogCiBQYXNzT3duUHRyPE5vZGVSYXJlRGF0YT4gRWxlbWVu
dDo6Y3JlYXRlUmFyZURhdGEoKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRWxlbWVudFJh
cmVEYXRhKGRvY3VtZW50SW50ZXJuYWwoKSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRWxl
bWVudFJhcmVEYXRhKCkpOwogfQogCiBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoRWxlbWVudCwgYmx1cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5k
ZXggNzkwNWNiNTQ4ZTVmZmM0OWYyMDRhMzlkZWM1MDFjNDA5ZWQyZmExNS4uODhmMjZiZDE2NGFj
NzUzYWZkZGUzOGZkZjI4ZDQxM2RjZjAxYjEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFy
ZURhdGEuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVs
ZW1lbnRSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGEgewogcHVibGljOgotICAgIEVsZW1l
bnRSYXJlRGF0YShEb2N1bWVudCopOworICAgIEVsZW1lbnRSYXJlRGF0YSgpOwogICAgIHZpcnR1
YWwgfkVsZW1lbnRSYXJlRGF0YSgpOwogCiAgICAgdm9pZCBzZXRQc2V1ZG9FbGVtZW50KFBzZXVk
b0lkLCBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsKQEAgLTEzMCw5ICsxMzAsOCBAQCBpbmxp
bmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCiAgICAgcmV0dXJuIElu
dFNpemUoTGF5b3V0VW5pdDo6bWF4KCksIExheW91dFVuaXQ6Om1heCgpKTsKIH0KIAotaW5saW5l
IEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKERvY3VtZW50KiBkb2N1bWVudCkKLSAg
ICA6IE5vZGVSYXJlRGF0YShkb2N1bWVudCkKLSAgICAsIG1fbWluaW11bVNpemVGb3JSZXNpemlu
ZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQoraW5saW5lIEVsZW1lbnRSYXJlRGF0
YTo6RWxlbWVudFJhcmVEYXRhKCkKKyAgICA6IG1fbWluaW11bVNpemVGb3JSZXNpemluZyhkZWZh
dWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQogICAgICwgbV9nZW5lcmF0ZWRCZWZvcmUoMCkK
ICAgICAsIG1fZ2VuZXJhdGVkQWZ0ZXIoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3NjUzMDJh
ZTEzNWQwNWMyMmQ2NjQ0OWMyZGYwNDUwOThmMDNhOTY0Li5iNGMyZmVkOTc5NGQwMWJkN2M5MDBj
MjRmZWE0MmU2NjM3MmE3NzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MTgsNyArNDE4LDcgQEAg
Tm9kZTo6fk5vZGUoKQogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBkZXRhY2goKTsKIAot
ICAgIERvY3VtZW50KiBkb2MgPSBtX2RvY3VtZW50OworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1
bWVudEludGVybmFsKCk7CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFi
bGVkKCkgJiYgZG9jICYmIGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0cygpICYmICFpc0NvbnRhaW5l
ck5vZGUoKSkKICAgICAgICAgZG9jLT5heE9iamVjdENhY2hlKCktPnJlbW92ZSh0aGlzKTsKICAg
ICAKQEAgLTQzMywyMyArNDMzLDYgQEAgTm9kZTo6fk5vZGUoKQogICAgIEluc3BlY3RvckNvdW50
ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiB9
CiAKLXZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIEFT
U0VSVCghaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpOwotICAgIGlmIChp
bkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9kb2N1bWVudCA9IGRvY3VtZW50OwotfQotCi12b2lkIE5vZGU6OnNldFRyZWVTY29w
ZShUcmVlU2NvcGUqIHNjb3BlKQotewotICAgIGlmICghaGFzUmFyZURhdGEoKSAmJiBzY29wZS0+
cm9vdE5vZGUoKS0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZW5z
dXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHNjb3BlKTsKLX0KLQogTm9kZVJhcmVEYXRhKiBO
b2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwpAQCAt
NDcxLDcgKzQ1NCw3IEBAIE5vZGVSYXJlRGF0YSogTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogCiBQ
YXNzT3duUHRyPE5vZGVSYXJlRGF0YT4gTm9kZTo6Y3JlYXRlUmFyZURhdGEoKQogewotICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTm9kZVJhcmVEYXRhKGRvY3VtZW50SW50ZXJuYWwoKSkpOworICAg
IHJldHVybiBhZG9wdFB0cihuZXcgTm9kZVJhcmVEYXRhKCkpOwogfQogCiB2b2lkIE5vZGU6OmNs
ZWFyUmFyZURhdGEoKQpAQCAtMTA4Miw3ICsxMDY1LDcgQEAgdm9pZCBOb2RlOjphdHRhY2goKQog
ICAgIHNldEF0dGFjaGVkKCk7CiAgICAgY2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBE
b2N1bWVudCogZG9jID0gbV9kb2N1bWVudDsKKyAgICBEb2N1bWVudCogZG9jID0gZG9jdW1lbnRJ
bnRlcm5hbCgpOwogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgp
ICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSkKICAgICAgICAgZG9jLT5heE9i
amVjdENhY2hlKCktPnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZCh0aGlzKTsKIH0KQEAg
LTI1OTksNyArMjU4Miw3IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBNZW1vcnlDbGFzc0luZm8gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CiAgICAg
VHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5
T2JqZWN0SW5mbyk7CiAgICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50KTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX3RyZWVTY29wZSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9uZXh0KTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX3ByZXZpb3VzKTsKICAgICBpbmZvLmFkZE1lbWJlcih0aGlzLT5y
ZW5kZXJlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDUwNTM5YmI5ZDBmMzNmNmY3MzYxZWQ4MzNjMGJj
ZmFmNDYyYzZlNDMuLjg0OWRkNjVhNTE3NDkwZjFhZTFjZGM1ZGM4YTBjOGVkZWEzNmIzYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3Rh
bnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVk
Q2xpY2tPcHRpb25zLmgiCisjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVHJlZVNo
YXJlZC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CkBAIC04NSw3ICs4Niw2IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFRhZ05vZGVMaXN0OwotY2xhc3MgVHJl
ZVNjb3BlOwogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogY2xhc3MgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ7CkBAIC0xMTUsMTggKzExNSwxMSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KICAgICB2b2lkIHNldFJl
bmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9
CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3Bl
OyB9Ci0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkgeyBtX3RyZWVTY29w
ZSA9IHNjb3BlOyB9Ci0KICAgICB2aXJ0dWFsIH5Ob2RlUmFyZURhdGFCYXNlKCkgeyB9CiBwcm90
ZWN0ZWQ6Ci0gICAgTm9kZVJhcmVEYXRhQmFzZShUcmVlU2NvcGUqIHNjb3BlKQotICAgICAgICA6
IG1fdHJlZVNjb3BlKHNjb3BlKQotICAgIHsKLSAgICB9CisgICAgTm9kZVJhcmVEYXRhQmFzZSgp
IHsgfQogcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7Ci0gICAgVHJlZVNj
b3BlKiBtX3RyZWVTY29wZTsKIH07CiAKIGNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQs
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5l
ck5vZGU+IHsKQEAgLTQ1OSwxMyArNDUyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGRv
Y3VtZW50SW50ZXJuYWwoKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNv
bnN0OworICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2Nv
cGU7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRlZCB3
aXRoIGEgZG9jdW1lbnQgYW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKICAgICAv
LyBub2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGluRG9jdW1lbnQoKSBjb25z
dCAKICAgICB7IAotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3Vt
ZW50RmxhZykpOworICAgICAgICBBU1NFUlQoZG9jdW1lbnRJbnRlcm5hbCgpIHx8ICFnZXRGbGFn
KEluRG9jdW1lbnRGbGFnKSk7CiAgICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFn
KTsKICAgICB9CiAKQEAgLTc1NiwxNyArNzQ5LDE0IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQg
c2V0SGFzQ3VzdG9tQ2FsbGJhY2tzKCkgeyBzZXRGbGFnKHRydWUsIEhhc0N1c3RvbUNhbGxiYWNr
c0ZsYWcpOyB9CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnRJbnRlcm5hbCgpIGNvbnN0IHsgcmV0
dXJuIG1fZG9jdW1lbnQ7IH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnRJbnRlcm5hbCgpIGNvbnN0
IHsgcmV0dXJuIHRyZWVTY29wZSgpLT5kb2N1bWVudFNjb3BlKCk7IH0KKyAgICB2b2lkIHNldFRy
ZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKSB7IG1fdHJlZVNjb3BlID0gc2NvcGU7IH0KIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsK
IAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIC8vIFRoZXNlIEFQSSBzaG91bGQg
YmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgotICAgIHZvaWQgc2V0VHJl
ZVNjb3BlKFRyZWVTY29wZSopOwotICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKLQog
ICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAg
IGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwsIFVzZXJTZWxlY3RBbGxUcmVh
dG1lbnQgPSBVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkgY29uc3Q7CiAgICAgYm9v
bCBpc0VkaXRhYmxlVG9BY2Nlc3NpYmlsaXR5KEVkaXRhYmxlTGV2ZWwpIGNvbnN0OwpAQCAtODA5
LDcgKzc5OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIG11dGFibGUgdWludDMyX3QgbV9u
b2RlRmxhZ3M7Ci0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgVHJlZVNjb3BlKiBtX3Ry
ZWVTY29wZTsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKICAgICAv
LyBXaGVuIGEgbm9kZSBoYXMgcmFyZSBkYXRhIHdlIG1vdmUgdGhlIHJlbmRlcmVyIGludG8gdGhl
IHJhcmUgZGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAKaW5kZXggOTU2MDdiYjIx
N2M3MWZkYmM2MDJhMjI4YWU2ZWJlNzM1NTU4NmYyZC4uMmZiNDk0NGRlOWM1MTE0YmFjYmFjYzlh
M2FlNjdjZGRiMWQ1ODNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNOb2Rl
UmFyZURhdGEgewotICAgIHZvaWQqIG1fcG9pbnRlcls0XTsKKyAgICB2b2lkKiBtX3BvaW50ZXJb
M107CiAgICAgdW5zaWduZWQgbV9pbmRpY2VzQW5kQml0ZmllbGRzWzJdOwogCiAjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKQEAgLTY0LDcgKzY0LDYgQEAgdm9pZCBOb2RlTGlzdHNOb2Rl
RGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY28KIHZvaWQgTm9kZVJhcmVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICBp
bmZvLmFkZE1lbWJlcih0cmVlU2NvcGUoKSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9ub2RlTGlz
dHMpOwogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaAppbmRleCBkMjU5MzcxMDdjZThmZDllNzZhOWFlNGMyN2JjYmNiNjA1MzM5ZGRlLi44
MWE2NTNhZTM0ZTM0Zjk3ODdmMmZmNDI0MmQyNTRiNGJhYmI5YTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oCkBAIC0yNDYsOSArMjQ2LDggQEAgY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVi
bGljIE5vZGVSYXJlRGF0YUJhc2UgewogI2VuZGlmCiAKIHB1YmxpYzogICAgCi0gICAgTm9kZVJh
cmVEYXRhKERvY3VtZW50KiBkb2N1bWVudCkKLSAgICAgICAgOiBOb2RlUmFyZURhdGFCYXNlKGRv
Y3VtZW50KQotICAgICAgICAsIG1fdGFiSW5kZXgoMCkKKyAgICBOb2RlUmFyZURhdGEoKQorICAg
ICAgICA6IG1fdGFiSW5kZXgoMCkKICAgICAgICAgLCBtX2NoaWxkSW5kZXgoMCkKICAgICAgICAg
LCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX25lZWRzRm9j
dXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCmluZGV4IDg5NzA4OWUzMWQ5ODA3NGYwZmFiMTliMjJhNjNmNWE3Y2YwMzg2M2Uu
LmU2NjZlYzBhMWI1MDhhN2JmYzZmNjViYTY2NTBjY2ZjZDRhN2FjMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFNo
YWRvd1Jvb3QpID09IHNpemVvZihTYW1lU2l6ZUFzU2hhZG93Um9vdCksIHNoYWRvd3Jvb3Rfc2gK
IAogU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBEb2N1
bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQotICAgICwgVHJlZVNjb3Bl
KHRoaXMpCisgICAgLCBUcmVlU2NvcGUodGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3ByZXYoMCkK
ICAgICAsIG1fbmV4dCgwKQogICAgICwgbV9udW1iZXJPZlN0eWxlcygwKQpAQCAtNzUsMTIgKzc1
LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgLCBt
X3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdChmYWxzZSkKIHsKICAgICBBU1NFUlQoZG9j
dW1lbnQpOwotICAgIAotICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUuCi0g
ICAgc2V0UGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKLSAgICAvLyBTaGFkb3cgdHJlZSBzY29w
ZXMgaGF2ZSB0aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgotICAgIC8vIFRo
aXMgd2F5LCBkaXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3BlIHBv
aW50ZXIuCi0gICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAgIHNl
dFRyZWVTY29wZSh0aGlzKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcAppbmRleCBmZTE5YTBmYTE4OWExMmZkMWFlYTllYTNhZGQ3MDQwYjA5
YjQ3MzY3Li45YWQ1NTJiNWNmNzQzMWFlMDA3YmFjY2Q2MzVjMWQzM2VhMzhjMDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNTUsMTkgKzU1LDM4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IFNhbWVTaXplQXNUcmVlU2NvcGUgewogICAgIHZpcnR1YWwgflNhbWVTaXpl
QXNUcmVlU2NvcGUoKTsKLSAgICB2b2lkKiBwb2ludGVyc1s3XTsKKyAgICB2b2lkKiBwb2ludGVy
c1s4XTsKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihUcmVlU2NvcGUpID09IHNpemVvZihT
YW1lU2l6ZUFzVHJlZVNjb3BlKSwgdHJlZXNjb3BlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFpbmVy
Tm9kZSogcm9vdE5vZGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290
Tm9kZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKLSAg
ICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQp
CisgICAgLCBtX3BhcmVudFRyZWVTY29wZShkb2N1bWVudCkKICAgICAsIG1faWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5KElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6Y3JlYXRlKCkpCiB7CiAgICAg
QVNTRVJUKHJvb3ROb2RlKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIEFTU0VSVChyb290
Tm9kZSAhPSBkb2N1bWVudCk7Cit9CisKK1RyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICA6IG1fcm9vdE5vZGUoZG9jdW1lbnQpCisgICAgLCBtX2RvY3VtZW50U2Nv
cGUoZG9jdW1lbnQpCisgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9pZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKK3sK
KyAgICBBU1NFUlQoZG9jdW1lbnQpOworfQorCitUcmVlU2NvcGU6OlRyZWVTY29wZSgpCisgICAg
OiBtX3Jvb3ROb2RlKDApCisgICAgLCBtX2RvY3VtZW50U2NvcGUoMCkKKyAgICAsIG1fcGFyZW50
VHJlZVNjb3BlKDApCit7CiB9CiAKIFRyZWVTY29wZTo6flRyZWVTY29wZSgpCkBAIC05Myw2ICsx
MTIsNyBAQCB2b2lkIFRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29wZSogbmV3
UGFyZW50U2NvcGUpCiAgICAgQVNTRVJUKG5ld1BhcmVudFNjb3BlKTsKIAogICAgIG1fcGFyZW50
VHJlZVNjb3BlID0gbmV3UGFyZW50U2NvcGU7CisgICAgc2V0RG9jdW1lbnRTY29wZShuZXdQYXJl
bnRTY29wZS0+ZG9jdW1lbnRTY29wZSgpKTsKIH0KIAogRWxlbWVudCogVHJlZVNjb3BlOjpnZXRF
bGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuaAppbmRleCBjYjY2OTBkYzZmNTE0YmE0MTg3MTViNGNhNjRhNGI5YjI1NmYyNjAw
Li5jMWQwNGM2NWZhMGZmYzRiZDc0Njc0MTMxNDQ2Njk0M2M1MTViMTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZS5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVNlbGVjdGlvbjsKK2NsYXNzIERvY3VtZW50OwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEhUTUxMYWJlbEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVu
dDsKQEAgLTQ2LDYgKzQ3LDcgQEAgY2xhc3MgTm9kZTsKIC8vIHRoZSBkZXN0cnVjdG9yLgogY2xh
c3MgVHJlZVNjb3BlIHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CisgICAgZnJpZW5kIGNs
YXNzIFRyZWVTY29wZUFkb3B0ZXI7CiAKIHB1YmxpYzoKICAgICBUcmVlU2NvcGUqIHBhcmVudFRy
ZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50VHJlZVNjb3BlOyB9CkBAIC01OCw2ICs2
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZWxlbWVudElkLCBFbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVFbGVtZW50QnlJZChjb25z
dCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCopOwogCisgICAgRG9jdW1lbnQqIGRv
Y3VtZW50U2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50U2NvcGU7IH0KKwogICAgIE5v
ZGUqIGFuY2VzdG9ySW5UaGlzU2NvcGUoTm9kZSopIGNvbnN0OwogCiAgICAgdm9pZCBhZGRJbWFn
ZU1hcChIVE1MTWFwRWxlbWVudCopOwpAQCAtOTEsMTQgKzk1LDMwIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7
CiAKKyAgICBzdGF0aWMgVHJlZVNjb3BlKiBub0RvY3VtZW50SW5zdGFuY2UoKQorICAgIHsKKyAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUcmVlU2NvcGUsIGluc3RhbmNlLCAoKSk7CisgICAg
ICAgIHJldHVybiAmaW5zdGFuY2U7CisgICAgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQg
VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqKTsKKyAgICBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSos
IERvY3VtZW50Kik7CisgICAgVHJlZVNjb3BlKERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+VHJl
ZVNjb3BlKCk7CiAKICAgICB2b2lkIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7CisgICAgdm9pZCBz
ZXREb2N1bWVudFNjb3BlKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChkb2N1bWVudCk7CisgICAgICAgIEFTU0VSVCh0aGlzICE9IG5vRG9jdW1lbnRJbnN0YW5jZSgp
KTsKKyAgICAgICAgbV9kb2N1bWVudFNjb3BlID0gZG9jdW1lbnQ7CisgICAgfQogCiBwcml2YXRl
OgorICAgIFRyZWVTY29wZSgpOworCiAgICAgQ29udGFpbmVyTm9kZSogbV9yb290Tm9kZTsKKyAg
ICBEb2N1bWVudCogbV9kb2N1bWVudFNjb3BlOwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVl
U2NvcGU7CiAKICAgICBPd25QdHI8RG9jdW1lbnRPcmRlcmVkTWFwPiBtX2VsZW1lbnRzQnlJZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAppbmRleCAwMTllNjdhYjQzZGZl
YTA2OGVmMTJmZjA5NDQzMDk5ZmY0ZjVhZGNmLi40YmU2Zjk3OWJjZGMwMWYxMmI2OWRhYjEyZjY3
MGEyNjI3MzQ3ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRv
cHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBA
IC00MywxNCArNDMsMTUgQEAgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2Nv
cGUoTm9kZSogcm9vdCkgY29uc3QKICAgICAvLyB0aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3Rh
bGUgZGF0YSBhcyBjaGFuZ2VzIG1hZGUgdG8gaXQgd2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRy
ZWVWZXJzaW9uCiAgICAgLy8gb2YgdGhlIGRvY3VtZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5j
cmVhc2luZyB0aGUgRE9NVHJlZVZlcnNpb24gb2YgdGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUK
ICAgICAvLyB3ZSBlbnN1cmUgdGhhdCB0aGUgY29sbGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFs
aWRhdGVkIGFzIG5lZWRlZCB3aGVuIHRoZSBlbGVtZW50IGlzIG1vdmVkIGJhY2suCi0gICAgRG9j
dW1lbnQqIG9sZERvY3VtZW50ID0gbV9vbGRTY29wZSA/IG1fb2xkU2NvcGUtPnJvb3ROb2RlKCkt
PmRvY3VtZW50KCkgOiAwOwotICAgIERvY3VtZW50KiBuZXdEb2N1bWVudCA9IG1fbmV3U2NvcGUt
PnJvb3ROb2RlKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gbV9v
bGRTY29wZS0+ZG9jdW1lbnRTY29wZSgpOworICAgIERvY3VtZW50KiBuZXdEb2N1bWVudCA9IG1f
bmV3U2NvcGUtPmRvY3VtZW50U2NvcGUoKTsKICAgICBib29sIHdpbGxNb3ZlVG9OZXdEb2N1bWVu
dCA9IG9sZERvY3VtZW50ICE9IG5ld0RvY3VtZW50OwogICAgIGlmIChvbGREb2N1bWVudCAmJiB3
aWxsTW92ZVRvTmV3RG9jdW1lbnQpCiAgICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVy
c2lvbigpOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHQobm9kZSwgcm9vdCkpIHsKICAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3Bl
KG1fbmV3U2NvcGUpOworCiAgICAgICAgIGlmIChub2RlLT5oYXNSYXJlRGF0YSgpKSB7CiAgICAg
ICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+cmFyZURhdGEoKTsKICAgICAg
ICAgICAgIGlmIChyYXJlRGF0YS0+bm9kZUxpc3RzKCkpCkBAIC05Nyw3ICs5OCw4IEBAIGlubGlu
ZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2Rl
LCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAgICBvbGREb2N1
bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3VtZW50KTsK
IAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3VtZW50KTsKKyAgICBpZiAobm9kZS0+aXNT
aGFkb3dSb290KCkpCisgICAgICAgIHRvU2hhZG93Um9vdChub2RlKS0+c2V0RG9jdW1lbnRTY29w
ZShuZXdEb2N1bWVudCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgZGlkTW92ZVRvTmV3RG9jdW1l
bnRXYXNDYWxsZWQgPSBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179174</attachid>
            <date>2012-12-12 18:20:18 -0800</date>
            <delta_ts>2013-01-02 18:30:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20121212181739.patch</filename>
            <type>text/plain</type>
            <size>20850</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjViMDBiYjVmMWU1NGIw
MmRmZTdjODgzODY1NjliMWRkOGU2ZDY4Mi4uOTVlZGFiNjk5NDY0NzNjYWQzZjE1ZmY5MTg4NTEy
YThiNTQ1MWQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTEyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBv
ZiBnaXZpbmcgZXZlcnkgbm9kZSBpbiBhIHNoYWRvdyBhIHJhcmUgZGF0YSwgd2hpY2ggY2FuIGJl
IHF1aXRlCisgICAgICAgIGxhcmdlLCB3ZSByZXBsYWNlIHRoZSBEb2N1bWVudCBwb2ludGVyIGlu
IE5vZGUgd2l0aCBhIFRyZWVTY29wZSBwb2ludGVyCisgICAgICAgIGFuZCB3ZSBnaXZlIFRyZWVT
Y29wZSBhIHBvaW50ZXIgdG8gaXQncyBkb2N1bWVudCBzY29wZS4KKworICAgICAgICBUaGlzIGlu
dHJvZHVjZXMgbm8gYnJhbmNoZXMgaW4gZG9jdW1lbnQoKSBiZWNhdXNlIGluIHRoZSBjb21tb24K
KyAgICAgICAgY2FzZSBkb2N1bWVudCgpIGJlY29tZXMgZXF1aXZhbGVudCB0byBtX3RyZWVTY29w
ZS0+bV9kb2N1bWVudFNjb3BlIHdoZXJlCisgICAgICAgIHRoZSBkb2N1bWVudFNjb3BlIGlzIGFj
dHVhbGx5IG1fdHJlZVNjb3BlIHNvIHRoaXMgc2hvdWxkbid0IGludHJvZHVjZSBhCisgICAgICAg
IHBlcmYgcmVncmVzc2lvbi4KKworICAgICAgICBOb3RlIGFsc28gdGhhdCBUcmVlU2NvcGUgY2Fu
IG5ldmVyIGJlIG51bGwgYWZ0ZXIgcjEzNjMyOCwgYW5kIHRoZSBkb2N1bWVudAorICAgICAgICBw
b2ludGVyIGlzIG9ubHkgbnVsbCBmb3IgRG9jdW1lbnRUeXBlIG5vZGVzIHNvIHdlIGNhbiB1c2Ug
YSBzcGVjaWFsCisgICAgICAgIG5vLWRvY3VtZW50IFRyZWVTY29wZSBmb3IgdGhpcyBjYXNlIHRo
YXQgYWx3YXlzIHJldHVybnMgbnVsbCBmcm9tCisgICAgICAgIGRvY3VtZW50U2NvcGUoKS4KKwor
ICAgICAgICBNeSBvcmlnaW5hbCBwYXRjaCBpbiByMTM3NTI0IGZvciB0aGlzIGRpZCBub3QgY29y
cmVjdGx5IGhhbmRsZSB0aGUgY2FzZSAKKyAgICAgICAgd2hlcmUgdGhlIERvY3VtZW50IGlzIGJl
aW5nIGRlc3Ryb3llZCBhbmQgd2Ugd291bGQgdGhlbiBjYWxsIGd1YXJkRGVyZWYgb24KKyAgICAg
ICAgb3Vyc2VsZiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBEb2N1bWVudCBkZXN0cnVjdG9yIGNhdXNp
bmcgYXNzZXJ0cy4gVG8gZml4CisgICAgICAgIHRoaXMgd2UgbmVlZCB0byBnbyBiYWNrIHRvIHRo
ZSBvcmlnaW5hbCBtb2RlbCB3aGVyZSBEb2N1bWVudCBwYXNzZXMKKyAgICAgICAgbnVsbCB0byBp
dCdzIHN1cGVyIGNvbnN0cnVjdG9yIGZvciB0aGUgRG9jdW1lbnQgcG9pbnRlciBhbmQgYXNzaWdu
cworICAgICAgICBpdCdzIHRyZWUgc2NvcGUgbGF0ZXIsIGFuZCB3ZSBhbHNvIG5lZWQgdG8gY2xl
YXIgdGhlIHRyZWUgc2NvcGUgcG9pbnRlcgorICAgICAgICBpbiBEb2N1bWVudCdzIGRlc3RydWN0
b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZVJhcmVEYXRhKToKKyAgICAgICAgKiBk
b20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAq
IGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmNyZWF0ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6
Ok5vZGVSYXJlRGF0YUJhc2UpOgorICAgICAgICAoTm9kZVJhcmVEYXRhQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5E
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkb2N1bWVudEludGVybmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRyZWVTY29wZSk6CisgICAgICAgIChOb2RlKToKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKFNhbWVTaXplQXNOb2RlUmFy
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpyZXBvcnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoU2FtZVNpemVBc1RyZWVTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVl
U2NvcGU6OmNsZWFyRG9jdW1lbnRTY29wZSk6CisgICAgICAgICAgICBOZWVkZWQgdG8gY2xlYXIg
dGhlIGRvY3VtZW50IHNjb3BlIGR1cmluZyBEb2N1bWVudCBkZXN0cnVjdGlvbgorICAgICAgICAg
ICAgc28gdGhlIE5vZGUgZGVzdHJ1Y3RvciBkb2VzIG5vdCBndWFyZERlcmVmIHRoZSBkb2N1bWVu
dCB0aGF0IGlzCisgICAgICAgICAgICBhbHJlYWR5IGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20v
VHJlZVNjb3BlLmg6CisgICAgICAgIChUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJl
ZVNjb3BlOjpkb2N1bWVudFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bm9E
b2N1bWVudEluc3RhbmNlKToKKyAgICAgICAgICAgIFNwZWNpYWwgc2hhcmVkIHRyZWUgc2NvcGUg
dGhhdCBoYXMgYSBkb2N1bWVudCBzY29wZSB0aGF0IGlzIGFsd2F5cworICAgICAgICAgICAgbnVs
bC4gVGhpcyBpcyBuZWVkZWQgZm9yIERvY1R5cGUgbm9kZXMsIGFuZCBhbHNvIGZvciBEb2N1bWVu
dHMKKyAgICAgICAgICAgIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OnNldERvY3VtZW50U2NvcGUpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGVBZG9w
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9O
ZXdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZVRv
TmV3RG9jdW1lbnQpOgorCiAyMDEyLTEyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbU2hhZG93XSBIVE1MQ29udGVudEVsZW1lbnQ6OmdldERp
c3RyaWJ1dGVkTm9kZXMoKSBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IGlmIG5vdCBpbiBkb2N1bWVu
dCB0cmVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMTU0YzIzMjUwMzZiMmMzODdmN2Jl
OTcxMTYwYWE2NWIyYmJhODAzZi4uM2NjYzBhNGNjZmE0MzYzYjRhOGFmMWViMTgwMDEzNjdlY2Y3
ZDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MTAsNyArNTEwLDcgQEAgRG9jdW1l
bnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUws
IGJvb2wgaXNIVE1MKQogICAgICwgbV9kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5n
ZWQoZmFsc2UpCiAjZW5kaWYKIHsKLSAgICBtX2RvY3VtZW50ID0gdGhpczsKKyAgICBzZXRUcmVl
U2NvcGUodGhpcyk7CiAKICAgICBtX3ByaW50aW5nID0gZmFsc2U7CiAgICAgbV9wYWdpbmF0ZWRG
b3JTY3JlZW4gPSBmYWxzZTsKQEAgLTY2OSw3ICs2NjksNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50
KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChtX25vZGVM
aXN0Q291bnRzKTsgaSsrKQogICAgICAgICBBU1NFUlQoIW1fbm9kZUxpc3RDb3VudHNbaV0pOwog
Ci0gICAgbV9kb2N1bWVudCA9IDA7CisgICAgY2xlYXJEb2N1bWVudFNjb3BlKCk7CiAKICAgICBJ
bnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9j
dW1lbnRDb3VudGVyKTsKIH0KQEAgLTEzNDUsMTMgKzEzNDUsMTMgQEAgdm9pZCBEb2N1bWVudDo6
c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAKIFN0cmluZyBEb2N1bWVudDo6c3Vn
Z2VzdGVkTUlNRVR5cGUoKSBjb25zdAogewotICAgIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9j
dW1lbnQoKSkKKyAgICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiYXBw
bGljYXRpb24veGh0bWwreG1sIjsKLSAgICBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgp
KQorICAgIGlmIChpc1NWR0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3ht
bCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPnhtbFN0YW5kYWxvbmUoKSkKKyAgICBpZiAoeG1sU3Rh
bmRhbG9uZSgpKQogICAgICAgICByZXR1cm4gInRleHQveG1sIjsKLSAgICBpZiAobV9kb2N1bWVu
dC0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IGxvYWRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkOTk0ZjYxY2U1MzEyNTRj
YzJmYjQ0ZTEwOWVmYzFhNTJjNzVmNjhlLi5kYjg5MWQ1MjY4OWZiNDBhZTk2MWI1MDIzMzUyNTM5
M2Q5NjgzZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU1OSwyMiArMTU1OSwyMCBAQCBp
bmxpbmUgdm9pZCBEb2N1bWVudDo6bm90aWZ5UmVtb3ZlUGVuZGluZ1NoZWV0SWZOZWVkZWQoKQog
CiBpbmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHRoaXMgPT0gbV9kb2N1bWVudDsKLX0KLQotaW5saW5lIFRyZWVTY29wZSogTm9kZTo6dHJlZVNj
b3BlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IG1fZGF0YS5tX3JhcmVE
YXRhLT50cmVlU2NvcGUoKSA6IGRvY3VtZW50SW50ZXJuYWwoKTsKKyAgICByZXR1cm4gdGhpcyA9
PSBkb2N1bWVudEludGVybmFsKCk7CiB9CiAKIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBk
b2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgIDogbV9ub2RlRmxhZ3ModHlwZSkK
LSAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3RyZWVTY29wZShkb2N1bWVudCkK
ICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgwKQogewogICAgIGlmIChkb2N1bWVu
dCkKICAgICAgICAgZG9jdW1lbnQtPmd1YXJkUmVmKCk7CisgICAgZWxzZQorICAgICAgICBtX3Ry
ZWVTY29wZSA9IFRyZWVTY29wZTo6bm9Eb2N1bWVudEluc3RhbmNlKCk7CisKICNpZiAhZGVmaW5l
ZChOREVCVUcpIHx8IChkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVf
U1RBVElTVElDUykKICAgICB0cmFja0ZvckRlYnVnZ2luZygpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggNDQ5OGQzMjlhNWI5OWU4OGZjOWQxNDdiOTUxN2QzYmIwMjkwMGJhZi4u
MjZhYjFlOTRmZWFhZmU3MzcwZjk3MzJjOWJlMWE4MmEwY2ZkYWNlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIGlubGluZSBFbGVtZW50UmFyZURhdGEqIEVsZW1l
bnQ6OmVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpCiAKIFBhc3NPd25QdHI8Tm9kZVJhcmVEYXRhPiBF
bGVtZW50OjpjcmVhdGVSYXJlRGF0YSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFbGVt
ZW50UmFyZURhdGEoZG9jdW1lbnRJbnRlcm5hbCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBFbGVtZW50UmFyZURhdGEoKSk7CiB9CiAKIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihFbGVtZW50LCBibHVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aAppbmRleCA3OTA1Y2I1NDhlNWZmYzQ5ZjIwNGEzOWRlYzUwMWM0MDllZDJmYTE1Li44OGYyNmJk
MTY0YWM3NTNhZmRkZTM4ZmRmMjhkNDEzZGNmMDFiMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRWxlbWVudFJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0YSB7CiBwdWJsaWM6Ci0gICAg
RWxlbWVudFJhcmVEYXRhKERvY3VtZW50Kik7CisgICAgRWxlbWVudFJhcmVEYXRhKCk7CiAgICAg
dmlydHVhbCB+RWxlbWVudFJhcmVEYXRhKCk7CiAKICAgICB2b2lkIHNldFBzZXVkb0VsZW1lbnQo
UHNldWRvSWQsIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4pOwpAQCAtMTMwLDkgKzEzMCw4IEBA
IGlubGluZSBJbnRTaXplIGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkKICAgICByZXR1
cm4gSW50U2l6ZShMYXlvdXRVbml0OjptYXgoKSwgTGF5b3V0VW5pdDo6bWF4KCkpOwogfQogCi1p
bmxpbmUgRWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoRG9jdW1lbnQqIGRvY3VtZW50
KQotICAgIDogTm9kZVJhcmVEYXRhKGRvY3VtZW50KQotICAgICwgbV9taW5pbXVtU2l6ZUZvclJl
c2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCitpbmxpbmUgRWxlbWVudFJh
cmVEYXRhOjpFbGVtZW50UmFyZURhdGEoKQorICAgIDogbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5n
KGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiAgICAgLCBtX2dlbmVyYXRlZEJlZm9y
ZSgwKQogICAgICwgbV9nZW5lcmF0ZWRBZnRlcigwKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDc2
NTMwMmFlMTM1ZDA1YzIyZDY2NDQ5YzJkZjA0NTA5OGYwM2E5NjQuLmI0YzJmZWQ5Nzk0ZDAxYmQ3
YzkwMGMyNGZlYTQyZTY2MzcyYTc3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQxOCw3ICs0MTgs
NyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgp
OwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIGRvYyA9
IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKSAmJiBkb2MgJiYgZG9jLT5heE9iamVjdENhY2hlRXhpc3RzKCkgJiYgIWlzQ29u
dGFpbmVyTm9kZSgpKQogICAgICAgICBkb2MtPmF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKHRoaXMp
OwogICAgIApAQCAtNDMzLDIzICs0MzMsNiBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgSW5zcGVjdG9y
Q291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVy
KTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0g
ICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCk7Ci0gICAg
aWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09IGRvY3VtZW50KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7Ci19Ci0KLXZvaWQgTm9kZTo6c2V0VHJl
ZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCi17Ci0gICAgaWYgKCFoYXNSYXJlRGF0YSgpICYmIHNj
b3BlLT5yb290Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUoc2NvcGUpOwotfQotCiBOb2RlUmFyZURh
dGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7
CkBAIC00NzEsNyArNDU0LDcgQEAgTm9kZVJhcmVEYXRhKiBOb2RlOjplbnN1cmVSYXJlRGF0YSgp
CiAKIFBhc3NPd25QdHI8Tm9kZVJhcmVEYXRhPiBOb2RlOjpjcmVhdGVSYXJlRGF0YSgpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb2RlUmFyZURhdGEoZG9jdW1lbnRJbnRlcm5hbCgpKSk7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb2RlUmFyZURhdGEoKSk7CiB9CiAKIHZvaWQgTm9k
ZTo6Y2xlYXJSYXJlRGF0YSgpCkBAIC0xMDgyLDcgKzEwNjUsNyBAQCB2b2lkIE5vZGU6OmF0dGFj
aCgpCiAgICAgc2V0QXR0YWNoZWQoKTsKICAgICBjbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKIAot
ICAgIERvY3VtZW50KiBkb2MgPSBtX2RvY3VtZW50OworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1
bWVudEludGVybmFsKCk7CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFi
bGVkKCkgJiYgZG9jICYmIGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0cygpKQogICAgICAgICBkb2Mt
PmF4T2JqZWN0Q2FjaGUoKS0+dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKHRoaXMpOwog
fQpAQCAtMjU5OSw3ICsyNTgyLDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsK
ICAgICBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKICAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1fZG9jdW1lbnQpOworICAg
IGluZm8uYWRkTWVtYmVyKG1fdHJlZVNjb3BlKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25leHQp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJldmlvdXMpOwogICAgIGluZm8uYWRkTWVtYmVyKHRo
aXMtPnJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTA1MzliYjlkMGYzM2Y2ZjczNjFlZDgz
M2MwYmNmYWY0NjJjNmU0My4uODQ5ZGQ2NWE1MTc0OTBmMWFlMWNkYzVkYzhhMGM4ZWRlYTM2YjNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVD
b25zdGFudHMuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTaW11
bGF0ZWRDbGlja09wdGlvbnMuaCIKKyNpbmNsdWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlICJU
cmVlU2hhcmVkLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KQEAgLTg1LDcgKzg2LDYgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3Mg
UmVuZGVyU3R5bGU7CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgVGFnTm9kZUxpc3Q7Ci1jbGFz
cyBUcmVlU2NvcGU7CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBjbGFzcyBQbGF0Zm9y
bUdlc3R1cmVFdmVudDsKQEAgLTExNSwxOCArMTE1LDExIEBAIHB1YmxpYzoKICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQogICAgIHZvaWQg
c2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVy
ZXI7IH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVl
U2NvcGU7IH0KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKSB7IG1fdHJl
ZVNjb3BlID0gc2NvcGU7IH0KLQogICAgIHZpcnR1YWwgfk5vZGVSYXJlRGF0YUJhc2UoKSB7IH0K
IHByb3RlY3RlZDoKLSAgICBOb2RlUmFyZURhdGFCYXNlKFRyZWVTY29wZSogc2NvcGUpCi0gICAg
ICAgIDogbV90cmVlU2NvcGUoc2NvcGUpCi0gICAgewotICAgIH0KKyAgICBOb2RlUmFyZURhdGFC
YXNlKCkgeyB9CiBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKLSAgICBU
cmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogfTsKIAogY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVudFRh
cmdldCwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFRyZWVTaGFyZWQ8Tm9kZSwgQ29u
dGFpbmVyTm9kZT4gewpAQCAtNDU5LDEzICs0NTIsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gZG9jdW1lbnRJbnRlcm5hbCgpOwogICAgIH0KIAotICAgIFRyZWVTY29wZSogdHJlZVNjb3Bl
KCkgY29uc3Q7CisgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3Ry
ZWVTY29wZTsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbm9kZSBpcyBhc3NvY2lh
dGVkIHdpdGggYSBkb2N1bWVudCBhbmQgaXMgaW4gaXRzIGFzc29jaWF0ZWQgZG9jdW1lbnQncwog
ICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgIGJvb2wgaW5Eb2N1bWVudCgp
IGNvbnN0IAogICAgIHsgCi0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8ICFnZXRGbGFnKElu
RG9jdW1lbnRGbGFnKSk7CisgICAgICAgIEFTU0VSVChkb2N1bWVudEludGVybmFsKCkgfHwgIWdl
dEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVu
dEZsYWcpOwogICAgIH0KIApAQCAtNzU2LDE3ICs3NDksMTQgQEAgcHJvdGVjdGVkOgogCiAgICAg
dm9pZCBzZXRIYXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3VzdG9tQ2Fs
bGJhY2tzRmxhZyk7IH0KIAotICAgIERvY3VtZW50KiBkb2N1bWVudEludGVybmFsKCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudEludGVybmFsKCkg
Y29uc3QgeyByZXR1cm4gdHJlZVNjb3BlKCktPmRvY3VtZW50U2NvcGUoKTsgfQorICAgIHZvaWQg
c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpIHsgbV90cmVlU2NvcGUgPSBzY29wZTsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5v
ZGU+OwogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgLy8gVGhlc2UgQVBJIHNo
b3VsZCBiZSBvbmx5IHVzZWQgZm9yIGEgdHJlZSBzY29wZSBtaWdyYXRpb24uCi0gICAgdm9pZCBz
ZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7Ci0gICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCop
OwotCiAgICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJpY2hseUVkaXRhYmxlIH07
CiAgICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVMZXZlbCwgVXNlclNlbGVjdEFs
bFRyZWF0bWVudCA9IFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlKSBjb25zdDsKICAg
ICBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkoRWRpdGFibGVMZXZlbCkgY29uc3Q7CkBA
IC04MDksNyArNzk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgbXV0YWJsZSB1aW50MzJf
dCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBUcmVlU2NvcGUq
IG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9kZSogbV9uZXh0Owog
ICAgIC8vIFdoZW4gYSBub2RlIGhhcyByYXJlIGRhdGEgd2UgbW92ZSB0aGUgcmVuZGVyZXIgaW50
byB0aGUgcmFyZSBkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAppbmRleCA5NTYw
N2JiMjE3YzcxZmRiYzYwMmEyMjhhZTZlYmU3MzU1NTg2ZjJkLi4yZmI0OTQ0ZGU5YzUxMTRiYWNi
YWNjOWEzYWU2N2NkZGIxZDU4M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcApA
QCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVB
c05vZGVSYXJlRGF0YSB7Ci0gICAgdm9pZCogbV9wb2ludGVyWzRdOworICAgIHZvaWQqIG1fcG9p
bnRlclszXTsKICAgICB1bnNpZ25lZCBtX2luZGljZXNBbmRCaXRmaWVsZHNbMl07CiAKICNpZiBF
TkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpAQCAtNjQsNyArNjQsNiBAQCB2b2lkIE5vZGVMaXN0
c05vZGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjbwogdm9pZCBOb2RlUmFyZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwot
ICAgIGluZm8uYWRkTWVtYmVyKHRyZWVTY29wZSgpKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25v
ZGVMaXN0cyk7CiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oCmluZGV4IGQyNTkzNzEwN2NlOGZkOWU3NmE5YWU0YzI3YmNiY2I2MDUzMzlk
ZGUuLjgxYTY1M2FlMzRlMzRmOTc4N2YyZmY0MjQyZDI1NGI0YmFiYjlhM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJhcmVEYXRhLmgKQEAgLTI0Niw5ICsyNDYsOCBAQCBjbGFzcyBOb2RlUmFyZURhdGEg
OiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAjZW5kaWYKIAogcHVibGljOiAgICAKLSAgICBO
b2RlUmFyZURhdGEoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IE5vZGVSYXJlRGF0YUJh
c2UoZG9jdW1lbnQpCi0gICAgICAgICwgbV90YWJJbmRleCgwKQorICAgIE5vZGVSYXJlRGF0YSgp
CisgICAgICAgIDogbV90YWJJbmRleCgwKQogICAgICAgICAsIG1fY2hpbGRJbmRleCgwKQogICAg
ICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1fbmVl
ZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2goZmFsc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKaW5kZXggODk3MDg5ZTMxZDk4MDc0ZjBmYWIxOWIyMmE2M2Y1YTdjZjAz
ODYzZS4uZTY2NmVjMGExYjUwOGE3YmZjNmY2NWJhNjY1MGNjZmNkNGE3YWMxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcApAQCAtNjUsNyArNjUsNyBAQCBDT01QSUxFX0FTU0VSVChzaXpl
b2YoU2hhZG93Um9vdCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTaGFkb3dSb290KSwgc2hhZG93cm9v
dF9zaAogCiBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCi0gICAgLCBUcmVl
U2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fcHJl
digwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX251bWJlck9mU3R5bGVzKDApCkBAIC03NSwx
MiArNzUsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICAsIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290KGZhbHNlKQogewogICAgIEFTU0VS
VChkb2N1bWVudCk7Ci0gICAgCi0gICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29w
ZS4KLSAgICBzZXRQYXJlbnRUcmVlU2NvcGUoZG9jdW1lbnQpOwotICAgIC8vIFNoYWRvdyB0cmVl
IHNjb3BlcyBoYXZlIHRoZSBzY29wZSBwb2ludGVyIHBvaW50IHRvIHRoZW1zZWx2ZXMuCi0gICAg
Ly8gVGhpcyB3YXksIGRpcmVjdCBjaGlsZHJlbiB3aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2Nv
cGUgcG9pbnRlci4KLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7Cisg
ICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogfQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IGZlMTlhMGZhMTg5YTEyZmQxYWVhOWVhM2FkZDcw
NDBiMDliNDczNjcuLmI4YzMyOTNjNzY4YTY5NGNlYjRhZGU4MjMwNDk0NTY2MDYxZmNiOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC01NSwxOSArNTUsMzggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc1RyZWVTY29wZSB7CiAgICAgdmlydHVhbCB+U2Ft
ZVNpemVBc1RyZWVTY29wZSgpOwotICAgIHZvaWQqIHBvaW50ZXJzWzddOworICAgIHZvaWQqIHBv
aW50ZXJzWzhdOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRyZWVTY29wZSkgPT0gc2l6
ZW9mKFNhbWVTaXplQXNUcmVlU2NvcGUpLCB0cmVlc2NvcGVfc2hvdWxkX3N0YXlfc21hbGwpOwog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShDb250
YWluZXJOb2RlKiByb290Tm9kZSkKK1RyZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUq
IHJvb3ROb2RlLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKHJvb3ROb2Rl
KQotICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKKyAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1
bWVudCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KQogICAgICwgbV9pZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKIHsK
ICAgICBBU1NFUlQocm9vdE5vZGUpOworICAgIEFTU0VSVChkb2N1bWVudCk7CisgICAgQVNTRVJU
KHJvb3ROb2RlICE9IGRvY3VtZW50KTsKK30KKworVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgIDogbV9yb290Tm9kZShkb2N1bWVudCkKKyAgICAsIG1fZG9jdW1l
bnRTY29wZShkb2N1bWVudCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX2lk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmNyZWF0ZSgp
KQoreworICAgIEFTU0VSVChkb2N1bWVudCk7Cit9CisKK1RyZWVTY29wZTo6VHJlZVNjb3BlKCkK
KyAgICA6IG1fcm9vdE5vZGUoMCkKKyAgICAsIG1fZG9jdW1lbnRTY29wZSgwKQorICAgICwgbV9w
YXJlbnRUcmVlU2NvcGUoMCkKK3sKIH0KIAogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKQEAgLTg1
LDYgKzEwNCwxMiBAQCB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQogICAg
IG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUuY2xlYXIoKTsKIH0KIAordm9pZCBUcmVlU2NvcGU6OmNs
ZWFyRG9jdW1lbnRTY29wZSgpCit7CisgICAgQVNTRVJUKHJvb3ROb2RlKCktPmlzRG9jdW1lbnRO
b2RlKCkpOworICAgIG1fZG9jdW1lbnRTY29wZSA9IDA7Cit9CisKIHZvaWQgVHJlZVNjb3BlOjpz
ZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKIHsKICAgICAvLyBB
IGRvY3VtZW50IG5vZGUgY2Fubm90IGJlIHJlLXBhcmVudGVkLgpAQCAtOTMsNiArMTE4LDcgQEAg
dm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNj
b3BlKQogICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAKICAgICBtX3BhcmVudFRyZWVTY29w
ZSA9IG5ld1BhcmVudFNjb3BlOworICAgIHNldERvY3VtZW50U2NvcGUobmV3UGFyZW50U2NvcGUt
PmRvY3VtZW50U2NvcGUoKSk7CiB9CiAKIEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmgKaW5kZXggY2I2NjkwZGM2ZjUxNGJhNDE4NzE1YjRjYTY0YTRiOWIyNTZmMjYwMC4uYmRkZDNm
ODI0ZDA5MzBmZmM1MDBhZDc2MzlhMzdmMTE4NjgwMGYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
aApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRhaW5l
ck5vZGU7CiBjbGFzcyBET01TZWxlY3Rpb247CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBIVE1MTGFiZWxFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CkBAIC00
Niw2ICs0Nyw3IEBAIGNsYXNzIE5vZGU7CiAvLyB0aGUgZGVzdHJ1Y3Rvci4KIGNsYXNzIFRyZWVT
Y29wZSB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OworICAgIGZyaWVuZCBjbGFzcyBUcmVl
U2NvcGVBZG9wdGVyOwogCiBwdWJsaWM6CiAgICAgVHJlZVNjb3BlKiBwYXJlbnRUcmVlU2NvcGUo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudFRyZWVTY29wZTsgfQpAQCAtNTgsNiArNjAsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1l
bnRJZCwgRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlRWxlbWVudEJ5SWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqKTsKIAorICAgIERvY3VtZW50KiBkb2N1bWVudFNj
b3BlKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFNjb3BlOyB9CisKICAgICBOb2RlKiBhbmNl
c3RvckluVGhpc1Njb3BlKE5vZGUqKSBjb25zdDsKIAogICAgIHZvaWQgYWRkSW1hZ2VNYXAoSFRN
TE1hcEVsZW1lbnQqKTsKQEAgLTkxLDE0ICs5NSwzMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAg
c3RhdGljIFRyZWVTY29wZSogbm9Eb2N1bWVudEluc3RhbmNlKCkKKyAgICB7CisgICAgICAgIERF
RklORV9TVEFUSUNfTE9DQUwoVHJlZVNjb3BlLCBpbnN0YW5jZSwgKCkpOworICAgICAgICByZXR1
cm4gJmluc3RhbmNlOworICAgIH0KKwogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFRyZWVTY29w
ZShDb250YWluZXJOb2RlKik7CisgICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqLCBEb2N1bWVu
dCopOworICAgIFRyZWVTY29wZShEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgp
OwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOworICAgIHZvaWQgY2xlYXJEb2N1
bWVudFNjb3BlKCk7CisgICAgdm9pZCBzZXREb2N1bWVudFNjb3BlKERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChkb2N1bWVudCk7CisgICAgICAgIEFTU0VSVCh0aGlz
ICE9IG5vRG9jdW1lbnRJbnN0YW5jZSgpKTsKKyAgICAgICAgbV9kb2N1bWVudFNjb3BlID0gZG9j
dW1lbnQ7CisgICAgfQogCiBwcml2YXRlOgorICAgIFRyZWVTY29wZSgpOworCiAgICAgQ29udGFp
bmVyTm9kZSogbV9yb290Tm9kZTsKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudFNjb3BlOwogICAg
IFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBPd25QdHI8RG9jdW1lbnRPcmRl
cmVkTWFwPiBtX2VsZW1lbnRzQnlJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVy
LmNwcAppbmRleCAwMTllNjdhYjQzZGZlYTA2OGVmMTJmZjA5NDQzMDk5ZmY0ZjVhZGNmLi40YmU2
Zjk3OWJjZGMwMWYxMmI2OWRhYjEyZjY3MGEyNjI3MzQ3ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00MywxNCArNDMsMTUgQEAgdm9pZCBUcmVlU2NvcGVB
ZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSogcm9vdCkgY29uc3QKICAgICAvLyB0aGF0
IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBjaGFuZ2VzIG1hZGUgdG8gaXQgd2ls
bCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJzaW9uCiAgICAgLy8gb2YgdGhlIGRvY3VtZW50
IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVhc2luZyB0aGUgRE9NVHJlZVZlcnNpb24gb2YgdGhl
IGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKICAgICAvLyB3ZSBlbnN1cmUgdGhhdCB0aGUgY29sbGVj
dGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRhdGVkIGFzIG5lZWRlZCB3aGVuIHRoZSBlbGVtZW50
IGlzIG1vdmVkIGJhY2suCi0gICAgRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gbV9vbGRTY29wZSA/
IG1fb2xkU2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCkgOiAwOwotICAgIERvY3VtZW50KiBu
ZXdEb2N1bWVudCA9IG1fbmV3U2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCk7CisgICAgRG9j
dW1lbnQqIG9sZERvY3VtZW50ID0gbV9vbGRTY29wZS0+ZG9jdW1lbnRTY29wZSgpOworICAgIERv
Y3VtZW50KiBuZXdEb2N1bWVudCA9IG1fbmV3U2NvcGUtPmRvY3VtZW50U2NvcGUoKTsKICAgICBi
b29sIHdpbGxNb3ZlVG9OZXdEb2N1bWVudCA9IG9sZERvY3VtZW50ICE9IG5ld0RvY3VtZW50Owog
ICAgIGlmIChvbGREb2N1bWVudCAmJiB3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCiAgICAgICAgIG9s
ZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0g
cm9vdDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgcm9vdCkpIHsKICAg
ICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG1fbmV3U2NvcGUpOworCiAgICAgICAgIGlmIChub2Rl
LT5oYXNSYXJlRGF0YSgpKSB7CiAgICAgICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0g
bm9kZS0+cmFyZURhdGEoKTsKICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+bm9kZUxpc3RzKCkp
CkBAIC05Nyw3ICs5OCw4IEBAIGlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2Rl
VG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERv
Y3VtZW50KQogICAgICAgICBvbGREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3Vt
ZW50KG5vZGUsIG5ld0RvY3VtZW50KTsKIAotICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3Vt
ZW50KTsKKyAgICBpZiAobm9kZS0+aXNTaGFkb3dSb290KCkpCisgICAgICAgIHRvU2hhZG93Um9v
dChub2RlKS0+c2V0RG9jdW1lbnRTY29wZShuZXdEb2N1bWVudCk7CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgZGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQgPSBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181128</attachid>
            <date>2013-01-02 18:30:18 -0800</date>
            <delta_ts>2013-01-03 13:40:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59816-20130102182726.patch</filename>
            <type>text/plain</type>
            <size>21097</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE5MjUyM2RkZWMzNDRi
YjAzMjQ1NGQzN2UxNTk4N2IwN2M2YTg0Yi4uYTEzNGQ4MTdlNGZiMjA3ZDVkNmE0Y2YyODRmY2M1
NzY5NTg4YmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEzLTAxLTAyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
UmVwbGFjZSBOb2RlJ3MgRG9jdW1lbnQgcG9pbnRlciB3aXRoIGEgVHJlZVNjb3BlIHBvaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBv
ZiBnaXZpbmcgZXZlcnkgbm9kZSBpbiBhIHNoYWRvdyBhIHJhcmUgZGF0YSwgd2hpY2ggY2FuIGJl
IHF1aXRlCisgICAgICAgIGxhcmdlLCB3ZSByZXBsYWNlIHRoZSBEb2N1bWVudCBwb2ludGVyIGlu
IE5vZGUgd2l0aCBhIFRyZWVTY29wZSBwb2ludGVyCisgICAgICAgIGFuZCB3ZSBnaXZlIFRyZWVT
Y29wZSBhIHBvaW50ZXIgdG8gaXQncyBkb2N1bWVudCBzY29wZS4KKworICAgICAgICBUaGlzIGlu
dHJvZHVjZXMgbm8gYnJhbmNoZXMgaW4gZG9jdW1lbnQoKSBiZWNhdXNlIGluIHRoZSBjb21tb24K
KyAgICAgICAgY2FzZSBkb2N1bWVudCgpIGJlY29tZXMgZXF1aXZhbGVudCB0byBtX3RyZWVTY29w
ZS0+bV9kb2N1bWVudFNjb3BlIHdoZXJlCisgICAgICAgIHRoZSBkb2N1bWVudFNjb3BlIGlzIGFj
dHVhbGx5IG1fdHJlZVNjb3BlIHNvIHRoaXMgc2hvdWxkbid0IGludHJvZHVjZSBhCisgICAgICAg
IHBlcmYgcmVncmVzc2lvbi4KKworICAgICAgICBOb3RlIGFsc28gdGhhdCBUcmVlU2NvcGUgY2Fu
IG5ldmVyIGJlIG51bGwgYWZ0ZXIgcjEzNjMyOCwgYW5kIHRoZSBkb2N1bWVudAorICAgICAgICBw
b2ludGVyIGlzIG9ubHkgbnVsbCBmb3IgRG9jdW1lbnRUeXBlIG5vZGVzIHNvIHdlIGNhbiB1c2Ug
YSBzcGVjaWFsCisgICAgICAgIG5vLWRvY3VtZW50IFRyZWVTY29wZSBmb3IgdGhpcyBjYXNlIHRo
YXQgYWx3YXlzIHJldHVybnMgbnVsbCBmcm9tCisgICAgICAgIGRvY3VtZW50U2NvcGUoKS4KKwor
ICAgICAgICBNeSBvcmlnaW5hbCBwYXRjaCBpbiByMTM3NTI0IGZvciB0aGlzIGRpZCBub3QgY29y
cmVjdGx5IGhhbmRsZSB0aGUgY2FzZSAKKyAgICAgICAgd2hlcmUgdGhlIERvY3VtZW50IGlzIGJl
aW5nIGRlc3Ryb3llZCBhbmQgd2Ugd291bGQgdGhlbiBjYWxsIGd1YXJkRGVyZWYgb24KKyAgICAg
ICAgb3Vyc2VsZiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBEb2N1bWVudCBkZXN0cnVjdG9yIGNhdXNp
bmcgYXNzZXJ0cy4gVG8gZml4CisgICAgICAgIHRoaXMgd2UgbmVlZCB0byBnbyBiYWNrIHRvIHRo
ZSBvcmlnaW5hbCBtb2RlbCB3aGVyZSBEb2N1bWVudCBwYXNzZXMKKyAgICAgICAgbnVsbCB0byBp
dCdzIHN1cGVyIGNvbnN0cnVjdG9yIGZvciB0aGUgRG9jdW1lbnQgcG9pbnRlciBhbmQgYXNzaWdu
cworICAgICAgICBpdCdzIHRyZWUgc2NvcGUgbGF0ZXIsIGFuZCB3ZSBhbHNvIG5lZWQgdG8gY2xl
YXIgdGhlIHRyZWUgc2NvcGUgcG9pbnRlcgorICAgICAgICBpbiBEb2N1bWVudCdzIGRlc3RydWN0
b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZVJhcmVEYXRhKToKKyAgICAgICAgKiBk
b20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAq
IGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmNyZWF0ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6
Ok5vZGVSYXJlRGF0YUJhc2UpOgorICAgICAgICAoTm9kZVJhcmVEYXRhQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5E
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkb2N1bWVudEludGVybmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRyZWVTY29wZSk6CisgICAgICAgIChOb2RlKToKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKFNhbWVTaXplQXNOb2RlUmFy
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpyZXBvcnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoU2FtZVNpemVBc1RyZWVTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVl
U2NvcGU6OmNsZWFyRG9jdW1lbnRTY29wZSk6CisgICAgICAgICAgICBOZWVkZWQgdG8gY2xlYXIg
dGhlIGRvY3VtZW50IHNjb3BlIGR1cmluZyBEb2N1bWVudCBkZXN0cnVjdGlvbgorICAgICAgICAg
ICAgc28gdGhlIE5vZGUgZGVzdHJ1Y3RvciBkb2VzIG5vdCBndWFyZERlcmVmIHRoZSBkb2N1bWVu
dCB0aGF0IGlzCisgICAgICAgICAgICBhbHJlYWR5IGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20v
VHJlZVNjb3BlLmg6CisgICAgICAgIChUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJl
ZVNjb3BlOjpkb2N1bWVudFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bm9E
b2N1bWVudEluc3RhbmNlKToKKyAgICAgICAgICAgIFNwZWNpYWwgc2hhcmVkIHRyZWUgc2NvcGUg
dGhhdCBoYXMgYSBkb2N1bWVudCBzY29wZSB0aGF0IGlzIGFsd2F5cworICAgICAgICAgICAgbnVs
bC4gVGhpcyBpcyBuZWVkZWQgZm9yIERvY1R5cGUgbm9kZXMsIGFuZCBhbHNvIGZvciBEb2N1bWVu
dHMKKyAgICAgICAgICAgIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OnNldERvY3VtZW50U2NvcGUpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGVBZG9w
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9O
ZXdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlTm9kZVRv
TmV3RG9jdW1lbnQpOgorCiAyMDEzLTAxLTAyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1Y4XSBWOERPTVdyYXBwZXIuY3BwIGhhcyBtYW55IG1vcmUgaW5jbHVk
ZXMgdGhhbiBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGM5MGE1YmZhN2Rh
ODIxMzBiYmQ4ZTE1NmQzZGI5M2Q4YmM0ZmU4ZDguLjBkOTkwYzQ5NTVhNzUxN2NlMTliN2E5NWNm
OWQ2ZjEzOTk0N2UxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTA3LDcgKzUwNyw3
IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3Bl
cnRpZXNDaGFuZ2VkKGZhbHNlKQogI2VuZGlmCiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7Cisg
ICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogCiAgICAgbV9wcmludGluZyA9IGZhbHNlOwogICAgIG1f
cGFnaW5hdGVkRm9yU2NyZWVuID0gZmFsc2U7CkBAIC02NzAsNyArNjcwLDcgQEAgRG9jdW1lbnQ6
On5Eb2N1bWVudCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgobV9ub2RlTGlzdENvdW50cyk7IGkrKykKICAgICAgICAgQVNTRVJUKCFtX25vZGVMaXN0Q291
bnRzW2ldKTsKIAotICAgIG1fZG9jdW1lbnQgPSAwOworICAgIGNsZWFyRG9jdW1lbnRTY29wZSgp
OwogCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291
bnRlcnM6OkRvY3VtZW50Q291bnRlcik7CiB9CkBAIC0xMzQ2LDEzICsxMzQ2LDEzIEBAIHZvaWQg
RG9jdW1lbnQ6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogCiBTdHJpbmcgRG9j
dW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9kb2N1bWVudC0+
aXNYSFRNTERvY3VtZW50KCkpCisgICAgaWYgKGlzWEhUTUxEb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7Ci0gICAgaWYgKG1fZG9jdW1lbnQtPmlzU1ZH
RG9jdW1lbnQoKSkKKyAgICBpZiAoaXNTVkdEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gImlt
YWdlL3N2Zyt4bWwiOwotICAgIGlmIChtX2RvY3VtZW50LT54bWxTdGFuZGFsb25lKCkpCisgICAg
aWYgKHhtbFN0YW5kYWxvbmUoKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCI7Ci0gICAgaWYg
KG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKGlzSFRNTERvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiAidGV4dC9odG1sIjsKIAogICAgIGlmIChEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZTM5YjJk
ZGJiNjFmNWY4MWEwYjc0MjFmODFkOTQ2MTIyZWZlOTAxZC4uZDQ1YzA5ZWI0NWI3MmYxZTYwMWUz
ZWQ2YWNjYjE4YzMxNjY4MGFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1NzQsMjIgKzE1
NzQsMjAgQEAgaW5saW5lIHZvaWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElm
TmVlZGVkKCkKIAogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogewot
ICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7Ci19Ci0KLWlubGluZSBUcmVlU2NvcGUqIE5v
ZGU6OnRyZWVTY29wZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBtX2Rh
dGEubV9yYXJlRGF0YS0+dHJlZVNjb3BlKCkgOiBkb2N1bWVudEludGVybmFsKCk7CisgICAgcmV0
dXJuIHRoaXMgPT0gZG9jdW1lbnRJbnRlcm5hbCgpOwogfQogCiBpbmxpbmUgTm9kZTo6Tm9kZShE
b2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZs
YWdzKHR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2NvcGUo
ZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKIHsKICAgICBp
ZiAoZG9jdW1lbnQpCiAgICAgICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOworICAgIGVsc2UKKyAg
ICAgICAgbV90cmVlU2NvcGUgPSBUcmVlU2NvcGU6Om5vRG9jdW1lbnRJbnN0YW5jZSgpOworCiAj
aWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RBVElTVElDUykgJiYg
RFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGQ1N2QwNGVjMWRkNzRkYjk1NzBmNzY5MDU2N2U5N2Vm
YzdmMzM0ZTguLjA4OTkxNDZjN2RhM2QzNzhlY2NmMmIxNzFkYmY3MjcwZjVlOWY2NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBpbmxpbmUgRWxlbWVudFJhcmVE
YXRhKiBFbGVtZW50OjplbnN1cmVFbGVtZW50UmFyZURhdGEoKQogCiBQYXNzT3duUHRyPE5vZGVS
YXJlRGF0YT4gRWxlbWVudDo6Y3JlYXRlUmFyZURhdGEoKQogewotICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRWxlbWVudFJhcmVEYXRhKGRvY3VtZW50SW50ZXJuYWwoKSkpOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKCkpOwogfQogCiBERUZJTkVfVklSVFVBTF9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoRWxlbWVudCwgYmx1cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmgKaW5kZXggNTI2MzE1YTc0MDhhNjMyMGI3ODEyZTljMzg5MWFmNzI3MzAwMTU2
MS4uNTRhZTZmMjRiMDZkOTgzMWNhM2E0ZmE4ZTNhY2RiZmM0ZmMzOTRjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEVsZW1lbnRSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGEgewogcHVi
bGljOgotICAgIEVsZW1lbnRSYXJlRGF0YShEb2N1bWVudCopOworICAgIEVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIHZpcnR1YWwgfkVsZW1lbnRSYXJlRGF0YSgpOwogCiAgICAgdm9pZCBzZXRQc2V1
ZG9FbGVtZW50KFBzZXVkb0lkLCBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsKQEAgLTEzNSw5
ICsxMzUsOCBAQCBpbmxpbmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygp
CiAgICAgcmV0dXJuIEludFNpemUoTGF5b3V0VW5pdDo6bWF4KCksIExheW91dFVuaXQ6Om1heCgp
KTsKIH0KIAotaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKERvY3VtZW50
KiBkb2N1bWVudCkKLSAgICA6IE5vZGVSYXJlRGF0YShkb2N1bWVudCkKLSAgICAsIG1fbWluaW11
bVNpemVGb3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQoraW5saW5l
IEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKCkKKyAgICA6IG1fbWluaW11bVNpemVG
b3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQogICAgICwgbV9nZW5l
cmF0ZWRCZWZvcmUoMCkKICAgICAsIG1fZ2VuZXJhdGVkQWZ0ZXIoMCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAppbmRleCBhZTUzZmVlYjdmMTI1ZTFkZDk0NDYyYmE1YWM4M2VhYzk4OWM1YzJlLi4zN2IxZmRh
ZDNmMDEzM2U4NDM3ZTEyZjA5YWNjNGNmOWYwYzNiYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00
MTIsMTAgKzQxMiwxMiBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKGhhc1JhcmVEYXRhKCkpCiAg
ICAgICAgIGNsZWFyUmFyZURhdGEoKTsKIAorICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudElu
dGVybmFsKCk7CisKICAgICBpZiAoaGFzRXZlbnRUYXJnZXREYXRhKCkpIHsKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRfVFJBQ0tJTkcpCi0gICAgICAgIGlmIChtX2RvY3VtZW50KQotICAgICAgICAg
ICAgbV9kb2N1bWVudC0+ZGlkUmVtb3ZlRXZlbnRUYXJnZXROb2RlKHRoaXMpOworICAgICAgICBp
ZiAoZG9jKQorICAgICAgICAgICAgZG9jLT5kaWRSZW1vdmVFdmVudFRhcmdldE5vZGUodGhpcyk7
CiAjZW5kaWYKICAgICAgICAgY2xlYXJFdmVudFRhcmdldERhdGEoKTsKICAgICB9CkBAIC00MjMs
NyArNDI1LDYgQEAgTm9kZTo6fk5vZGUoKQogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBk
ZXRhY2goKTsKIAotICAgIERvY3VtZW50KiBkb2MgPSBtX2RvY3VtZW50OwogICAgIGlmIChBWE9i
amVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0
Q2FjaGVFeGlzdHMoKSAmJiAhaXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIGRvYy0+YXhPYmpl
Y3RDYWNoZSgpLT5yZW1vdmUodGhpcyk7CiAgICAgCkBAIC00MzgsMjUgKzQzOSw2IEBAIE5vZGU6
On5Ob2RlKCkKICAgICBJbnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0
b3JDb3VudGVyczo6Tm9kZUNvdW50ZXIpOwogfQogCi12b2lkIE5vZGU6OnNldERvY3VtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBtX2RvY3Vt
ZW50ID09IGRvY3VtZW50KTsKLSAgICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0g
ZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsK
LX0KLQotdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKLXsKLSAgICBB
U1NFUlQoIWlzU2hhZG93Um9vdCgpKTsKLQotICAgIGlmICghaGFzUmFyZURhdGEoKSAmJiBzY29w
ZS0+cm9vdE5vZGUoKS0+aXNEb2N1bWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
ZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHNjb3BlKTsKLX0KLQogTm9kZVJhcmVEYXRh
KiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwpA
QCAtNDc4LDcgKzQ2MCw3IEBAIE5vZGVSYXJlRGF0YSogTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQog
CiBQYXNzT3duUHRyPE5vZGVSYXJlRGF0YT4gTm9kZTo6Y3JlYXRlUmFyZURhdGEoKQogewotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgTm9kZVJhcmVEYXRhKGRvY3VtZW50SW50ZXJuYWwoKSkpOwor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTm9kZVJhcmVEYXRhKCkpOwogfQogCiB2b2lkIE5vZGU6
OmNsZWFyUmFyZURhdGEoKQpAQCAtMTA4OCw3ICsxMDcwLDcgQEAgdm9pZCBOb2RlOjphdHRhY2go
KQogICAgIHNldEF0dGFjaGVkKCk7CiAgICAgY2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAg
ICBEb2N1bWVudCogZG9jID0gbV9kb2N1bWVudDsKKyAgICBEb2N1bWVudCogZG9jID0gZG9jdW1l
bnRJbnRlcm5hbCgpOwogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxl
ZCgpICYmIGRvYyAmJiBkb2MtPmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSkKICAgICAgICAgZG9jLT5h
eE9iamVjdENhY2hlKCktPnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZCh0aGlzKTsKIH0K
QEAgLTI1ODksNyArMjU3MSw3IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CiAg
ICAgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVt
b3J5T2JqZWN0SW5mbyk7CiAgICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50KTsKKyAgICBp
bmZvLmFkZE1lbWJlcihtX3RyZWVTY29wZSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9uZXh0KTsK
ICAgICBpbmZvLmFkZE1lbWJlcihtX3ByZXZpb3VzKTsKICAgICBpbmZvLmFkZE1lbWJlcih0aGlz
LT5yZW5kZXJlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGQwZTQxZjAxZDM4NzhlZjBmMzM1NWNkYWFl
MGJmZjAzNDM1MDFmMTEuLjdhZmY0ZDdhMjdhOGU4M2VkNmZjYTdhMmYxYWFhMmJiOWJlZjI0NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29u
c3RhbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiU2ltdWxh
dGVkQ2xpY2tPcHRpb25zLmgiCisjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVHJl
ZVNoYXJlZC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RI
YXNoU2V0Lmg+CkBAIC04NSw3ICs4Niw2IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJl
bmRlclN0eWxlOwogY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFRhZ05vZGVMaXN0OwotY2xhc3Mg
VHJlZVNjb3BlOwogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogY2xhc3MgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ7CkBAIC0xMTUsMTggKzExNSwxMSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KICAgICB2b2lkIHNl
dFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVy
OyB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNj
b3BlOyB9Ci0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkgeyBtX3RyZWVT
Y29wZSA9IHNjb3BlOyB9Ci0KICAgICB2aXJ0dWFsIH5Ob2RlUmFyZURhdGFCYXNlKCkgeyB9CiBw
cm90ZWN0ZWQ6Ci0gICAgTm9kZVJhcmVEYXRhQmFzZShUcmVlU2NvcGUqIHNjb3BlKQotICAgICAg
ICA6IG1fdHJlZVNjb3BlKHNjb3BlKQotICAgIHsKLSAgICB9CisgICAgTm9kZVJhcmVEYXRhQmFz
ZSgpIHsgfQogcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7Ci0gICAgVHJl
ZVNjb3BlKiBtX3RyZWVTY29wZTsKIH07CiAKIGNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPE5vZGUsIENvbnRh
aW5lck5vZGU+IHsKQEAgLTQ2NywxMyArNDYwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGRvY3VtZW50SW50ZXJuYWwoKTsKICAgICB9CiAKLSAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgp
IGNvbnN0OworICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVl
U2NvcGU7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRl
ZCB3aXRoIGEgZG9jdW1lbnQgYW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKICAg
ICAvLyBub2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KICAgICBib29sIGluRG9jdW1lbnQoKSBj
b25zdCAKICAgICB7IAotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRv
Y3VtZW50RmxhZykpOworICAgICAgICBBU1NFUlQoZG9jdW1lbnRJbnRlcm5hbCgpIHx8ICFnZXRG
bGFnKEluRG9jdW1lbnRGbGFnKSk7CiAgICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRG
bGFnKTsKICAgICB9CiAgICAgYm9vbCBpc0luU2hhZG93VHJlZSgpIGNvbnN0IHsgcmV0dXJuIGdl
dEZsYWcoSXNJblNoYWRvd1RyZWVGbGFnKTsgfQpAQCAtNzY4LDE3ICs3NjEsMTQgQEAgcHJvdGVj
dGVkOgogCiAgICAgdm9pZCBzZXRIYXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwg
SGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyk7IH0KIAotICAgIERvY3VtZW50KiBkb2N1bWVudEludGVy
bmFsKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVu
dEludGVybmFsKCkgY29uc3QgeyByZXR1cm4gdHJlZVNjb3BlKCktPmRvY3VtZW50U2NvcGUoKTsg
fQorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpIHsgbV90cmVlU2NvcGUg
PSBzY29wZTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGUs
IENvbnRhaW5lck5vZGU+OwogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgLy8g
VGhlc2UgQVBJIHNob3VsZCBiZSBvbmx5IHVzZWQgZm9yIGEgdHJlZSBzY29wZSBtaWdyYXRpb24u
Ci0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7Ci0gICAgdm9pZCBzZXREb2N1bWVu
dChEb2N1bWVudCopOwotCiAgICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJpY2hs
eUVkaXRhYmxlIH07CiAgICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVMZXZlbCwg
VXNlclNlbGVjdEFsbFRyZWF0bWVudCA9IFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxl
KSBjb25zdDsKICAgICBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkoRWRpdGFibGVMZXZl
bCkgY29uc3Q7CkBAIC04MjEsNyArODExLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgbXV0
YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAg
ICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9k
ZSogbV9uZXh0OwogICAgIC8vIFdoZW4gYSBub2RlIGhhcyByYXJlIGRhdGEgd2UgbW92ZSB0aGUg
cmVuZGVyZXIgaW50byB0aGUgcmFyZSBkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNw
cAppbmRleCA5NTYwN2JiMjE3YzcxZmRiYzYwMmEyMjhhZTZlYmU3MzU1NTg2ZjJkLi4yZmI0OTQ0
ZGU5YzUxMTRiYWNiYWNjOWEzYWU2N2NkZGIxZDU4M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgU2FtZVNpemVBc05vZGVSYXJlRGF0YSB7Ci0gICAgdm9pZCogbV9wb2ludGVyWzRdOworICAg
IHZvaWQqIG1fcG9pbnRlclszXTsKICAgICB1bnNpZ25lZCBtX2luZGljZXNBbmRCaXRmaWVsZHNb
Ml07CiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpAQCAtNjQsNyArNjQsNiBAQCB2
b2lkIE5vZGVMaXN0c05vZGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjbwogdm9pZCBOb2RlUmFyZURhdGE6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpET00pOwotICAgIGluZm8uYWRkTWVtYmVyKHRyZWVTY29wZSgpKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX25vZGVMaXN0cyk7CiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGE1NWZjOTc3NTk2NjFmY2U1OTA2MzkyYmM4
ZmU1NGMyZDkxZTNiMTYuLjgzZDcwNWI0NmRiMTkyYTA3OWU2MGRhN2U1MjU5Y2Y2ZTRmOGFhYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTI0Niw5ICsyNDYsOCBAQCBjbGFzcyBO
b2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAjZW5kaWYKIAogcHVibGlj
OiAgICAKLSAgICBOb2RlUmFyZURhdGEoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IE5v
ZGVSYXJlRGF0YUJhc2UoZG9jdW1lbnQpCi0gICAgICAgICwgbV90YWJJbmRleCgwKQorICAgIE5v
ZGVSYXJlRGF0YSgpCisgICAgICAgIDogbV90YWJJbmRleCgwKQogICAgICAgICAsIG1fY2hpbGRJ
bmRleCgwKQogICAgICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAg
ICAgICAsIG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2goZmFsc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggMTc2ZDU5NDQ0OTM3NDY5YTIwNWNhM2Ux
YzgxMTY3M2ViMTlmNjcyMC4uNjE5YTY0NmIwMjlmMDA0YjdhNzY3MDM2Mzk3ODU0NzRhNzk5ZTMw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNjUsNyArNjUsNyBAQCBDT01QSUxF
X0FTU0VSVChzaXplb2YoU2hhZG93Um9vdCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTaGFkb3dSb290
KSwgc2hhZG93cm9vdF9zaAogCiBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3Qp
Ci0gICAgLCBUcmVlU2NvcGUodGhpcykKKyAgICAsIFRyZWVTY29wZSh0aGlzLCBkb2N1bWVudCkK
ICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX251bWJlck9mU3R5bGVz
KDApCkBAIC03NSwxMiArNzUsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAsIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290KGZhbHNlKQog
ewogICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAgCi0gICAgLy8gQXNzdW1lIGRvY3VtZW50IGFz
IHBhcmVudCBzY29wZS4KLSAgICBzZXRQYXJlbnRUcmVlU2NvcGUoZG9jdW1lbnQpOwotICAgIC8v
IFNoYWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBwb2ludGVyIHBvaW50IHRvIHRoZW1z
ZWx2ZXMuCi0gICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGlsZHJlbiB3aWxsIHJlY2VpdmUgdGhl
IGNvcnJlY3Qgc2NvcGUgcG9pbnRlci4KLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2Nv
cGUodGhpcyk7CisgICAgc2V0VHJlZVNjb3BlKHRoaXMpOwogfQogCiBTaGFkb3dSb290Ojp+U2hh
ZG93Um9vdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IGY5ZmI2NWU0MzdhNDVkMGMx
MjQ3NWU3YWMzMmY1OTQxNjk5ZTY5YWIuLmQ5MjdlZTkyYzFkY2Q1YjJlMTA0N2I0ODRlOTY4ZTM0
NWM0YWRhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC01OCwxOSArNTgsMzggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc1RyZWVTY29wZSB7CiAgICAg
dmlydHVhbCB+U2FtZVNpemVBc1RyZWVTY29wZSgpOwotICAgIHZvaWQqIHBvaW50ZXJzWzddOwor
ICAgIHZvaWQqIHBvaW50ZXJzWzhdOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRyZWVT
Y29wZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNUcmVlU2NvcGUpLCB0cmVlc2NvcGVfc2hvdWxkX3N0
YXlfc21hbGwpOwogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6OlRy
ZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKK1RyZWVTY29wZTo6VHJlZVNjb3BlKENv
bnRhaW5lck5vZGUqIHJvb3ROb2RlLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3RO
b2RlKHJvb3ROb2RlKQotICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKKyAgICAsIG1fZG9jdW1l
bnRTY29wZShkb2N1bWVudCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KQogICAg
ICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpj
cmVhdGUoKSkKIHsKICAgICBBU1NFUlQocm9vdE5vZGUpOworICAgIEFTU0VSVChkb2N1bWVudCk7
CisgICAgQVNTRVJUKHJvb3ROb2RlICE9IGRvY3VtZW50KTsKK30KKworVHJlZVNjb3BlOjpUcmVl
U2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogbV9yb290Tm9kZShkb2N1bWVudCkKKyAg
ICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDAp
CisgICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShJZFRhcmdldE9ic2VydmVyUmVnaXN0
cnk6OmNyZWF0ZSgpKQoreworICAgIEFTU0VSVChkb2N1bWVudCk7Cit9CisKK1RyZWVTY29wZTo6
VHJlZVNjb3BlKCkKKyAgICA6IG1fcm9vdE5vZGUoMCkKKyAgICAsIG1fZG9jdW1lbnRTY29wZSgw
KQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKK3sKIH0KIAogVHJlZVNjb3BlOjp+VHJlZVNj
b3BlKCkKQEAgLTg4LDYgKzEwNywxMiBAQCB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29w
ZURhdGEoKQogICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUuY2xlYXIoKTsKIH0KIAordm9pZCBU
cmVlU2NvcGU6OmNsZWFyRG9jdW1lbnRTY29wZSgpCit7CisgICAgQVNTRVJUKHJvb3ROb2RlKCkt
PmlzRG9jdW1lbnROb2RlKCkpOworICAgIG1fZG9jdW1lbnRTY29wZSA9IDA7Cit9CisKIHZvaWQg
VHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkK
IHsKICAgICAvLyBBIGRvY3VtZW50IG5vZGUgY2Fubm90IGJlIHJlLXBhcmVudGVkLgpAQCAtOTYs
NiArMTIxLDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUq
IG5ld1BhcmVudFNjb3BlKQogICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAKICAgICBtX3Bh
cmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworICAgIHNldERvY3VtZW50U2NvcGUobmV3
UGFyZW50U2NvcGUtPmRvY3VtZW50U2NvcGUoKSk7CiB9CiAKIEVsZW1lbnQqIFRyZWVTY29wZTo6
Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmgKaW5kZXggMDdkNDMzN2UyNmIzMTI3MGUwNzQxMTI5M2NiYTExMWJhMTdl
NjQ1OS4uYmU1MDBmMTA2NGM4Yjc4MTQ5Y2RjZGVkOTI4MTkxYjNmNTZiM2VmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBOb2RlOwogLy8gdGhlIGRlc3Ry
dWN0b3IuCiBjbGFzcyBUcmVlU2NvcGUgewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKKyAg
ICBmcmllbmQgY2xhc3MgVHJlZVNjb3BlQWRvcHRlcjsKIAogcHVibGljOgogICAgIFRyZWVTY29w
ZSogcGFyZW50VHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0K
QEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkRWxlbWVudEJ5SWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZUVsZW1l
bnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkLCBFbGVtZW50Kik7CiAKKyAgICBE
b2N1bWVudCogZG9jdW1lbnRTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRTY29wZTsg
fQorCiAgICAgTm9kZSogYW5jZXN0b3JJblRoaXNTY29wZShOb2RlKikgY29uc3Q7CiAKICAgICB2
b2lkIGFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50Kik7CkBAIC05NSwxNCArOTgsMzEgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIAorICAgIHN0YXRpYyBUcmVlU2NvcGUqIG5vRG9jdW1lbnRJbnN0YW5jZSgp
CisgICAgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRyZWVTY29wZSwgaW5zdGFuY2Us
ICgpKTsKKyAgICAgICAgcmV0dXJuICZpbnN0YW5jZTsKKyAgICB9CisKIHByb3RlY3RlZDoKLSAg
ICBleHBsaWNpdCBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOworICAgIFRyZWVTY29wZShDb250
YWluZXJOb2RlKiwgRG9jdW1lbnQqKTsKKyAgICBUcmVlU2NvcGUoRG9jdW1lbnQqKTsKICAgICB2
aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogICAgIHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsK
KyAgICB2b2lkIGNsZWFyRG9jdW1lbnRTY29wZSgpOworICAgIHZvaWQgc2V0RG9jdW1lbnRTY29w
ZShEb2N1bWVudCogZG9jdW1lbnQpCisgICAgeworICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOwor
ICAgICAgICBBU1NFUlQodGhpcyAhPSBub0RvY3VtZW50SW5zdGFuY2UoKSk7CisgICAgICAgIG1f
ZG9jdW1lbnRTY29wZSA9IGRvY3VtZW50OworICAgIH0KIAogcHJpdmF0ZToKKyAgICBUcmVlU2Nv
cGUoKTsKKwogICAgIENvbnRhaW5lck5vZGUqIG1fcm9vdE5vZGU7CisgICAgRG9jdW1lbnQqIG1f
ZG9jdW1lbnRTY29wZTsKICAgICBUcmVlU2NvcGUqIG1fcGFyZW50VHJlZVNjb3BlOwogCiAgICAg
T3duUHRyPERvY3VtZW50T3JkZXJlZE1hcD4gbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5kZXggMDE5ZTY3YWI0M2RmZWEwNjhlZjEyZmYwOTQ0
MzA5OWZmNGY1YWRjZi4uNGJlNmY5NzliY2RjMDFmMTJiNjlkYWIxMmY2NzBhMjYyNzM0N2U0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtNDMsMTQgKzQzLDE1
IEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3Qp
IGNvbnN0CiAgICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWluIHN0YWxlIGRhdGEgYXMgY2hh
bmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBET01UcmVlVmVyc2lvbgogICAg
IC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5IGluY3JlYXNpbmcgdGhlIERP
TVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBoZXJlCiAgICAgLy8gd2UgZW5z
dXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBpbnZhbGlkYXRlZCBhcyBuZWVk
ZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgotICAgIERvY3VtZW50KiBvbGREb2N1
bWVudCA9IG1fb2xkU2NvcGUgPyBtX29sZFNjb3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpIDog
MDsKLSAgICBEb2N1bWVudCogbmV3RG9jdW1lbnQgPSBtX25ld1Njb3BlLT5yb290Tm9kZSgpLT5k
b2N1bWVudCgpOworICAgIERvY3VtZW50KiBvbGREb2N1bWVudCA9IG1fb2xkU2NvcGUtPmRvY3Vt
ZW50U2NvcGUoKTsKKyAgICBEb2N1bWVudCogbmV3RG9jdW1lbnQgPSBtX25ld1Njb3BlLT5kb2N1
bWVudFNjb3BlKCk7CiAgICAgYm9vbCB3aWxsTW92ZVRvTmV3RG9jdW1lbnQgPSBvbGREb2N1bWVu
dCAhPSBuZXdEb2N1bWVudDsKICAgICBpZiAob2xkRG9jdW1lbnQgJiYgd2lsbE1vdmVUb05ld0Rv
Y3VtZW50KQogICAgICAgICBvbGREb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAg
IGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0
KG5vZGUsIHJvb3QpKSB7CiAgICAgICAgIG5vZGUtPnNldFRyZWVTY29wZShtX25ld1Njb3BlKTsK
KwogICAgICAgICBpZiAobm9kZS0+aGFzUmFyZURhdGEoKSkgewogICAgICAgICAgICAgTm9kZVJh
cmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7CiAgICAgICAgICAgICBpZiAocmFy
ZURhdGEtPm5vZGVMaXN0cygpKQpAQCAtOTcsNyArOTgsOCBAQCBpbmxpbmUgdm9pZCBUcmVlU2Nv
cGVBZG9wdGVyOjptb3ZlTm9kZVRvTmV3RG9jdW1lbnQoTm9kZSogbm9kZSwgRG9jdW1lbnQqIG9s
ZERvYwogICAgIGlmIChvbGREb2N1bWVudCkKICAgICAgICAgb2xkRG9jdW1lbnQtPm1vdmVOb2Rl
SXRlcmF0b3JzVG9OZXdEb2N1bWVudChub2RlLCBuZXdEb2N1bWVudCk7CiAKLSAgICBub2RlLT5z
ZXREb2N1bWVudChuZXdEb2N1bWVudCk7CisgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQor
ICAgICAgICB0b1NoYWRvd1Jvb3Qobm9kZSktPnNldERvY3VtZW50U2NvcGUobmV3RG9jdW1lbnQp
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0g
ZmFsc2U7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>