<?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>87815</bug_id>
          
          <creation_ts>2012-05-29 21:04:08 -0700</creation_ts>
          <short_desc>[Shadow DOM] ShadowRoot.getElementById() should work outside document</short_desc>
          <delta_ts>2012-12-14 01:24:32 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104241</dependson>
          <blocked>72352</blocked>
    
    <blocked>104223</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>shinyak</cc>
    
    <cc>tkent</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>636794</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-29 21:04:08 -0700</bug_when>
    <thetext>Currently getElementById() doesn&apos;t work with ShadowRoot which is attached to orphan host.
But it should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784469</commentid>
    <comment_count>1</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-05 18:47:58 -0800</bug_when>
    <thetext>At the first point, it might be OK to search everything, I think.
We could enhance the performance later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784607</commentid>
    <comment_count>2</comment_count>
      <attachid>177932</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-05 22:10:07 -0800</bug_when>
    <thetext>Created attachment 177932
Modify insertedInto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784612</commentid>
    <comment_count>3</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-05 22:12:04 -0800</bug_when>
    <thetext>This version has performance regression by 2~3% on Dromaeo/dom-modify.html

35.98 runs/s -&gt; 35.10 runs/s

I don&apos;t think this is acceptable.

Let me consider another approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784653</commentid>
    <comment_count>4</comment_count>
      <attachid>177946</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-05 23:02:18 -0800</bug_when>
    <thetext>Created attachment 177946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784666</commentid>
    <comment_count>5</comment_count>
      <attachid>177946</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-05 23:27:57 -0800</bug_when>
    <thetext>Comment on attachment 177946
Patch

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

&gt; Source/WebCore/dom/TreeScope.cpp:103
&gt; +    if (Element* element = m_elementsById ? m_elementsById-&gt;getElementById(elementId.impl(), this) : 0)

Can we have this in ShadowRoot.cpp ?
It would be cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784735</commentid>
    <comment_count>6</comment_count>
      <attachid>177946</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 01:05:48 -0800</bug_when>
    <thetext>Comment on attachment 177946
Patch

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

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:103
&gt;&gt; +    if (Element* element = m_elementsById ? m_elementsById-&gt;getElementById(elementId.impl(), this) : 0)
&gt; 
&gt; Can we have this in ShadowRoot.cpp ?
&gt; It would be cleaner.

I think m_elementsById should not be exposed to ShadowRoot. The other things can be moved to ShadowRoot.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784740</commentid>
    <comment_count>7</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-06 01:12:31 -0800</bug_when>
    <thetext>&gt; &gt; It would be cleaner.
&gt; 
&gt; I think m_elementsById should not be exposed to ShadowRoot. The other things can be moved to ShadowRoot.cpp.

Cannot we just call TreeScope::getElementById() for non-orphan case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784746</commentid>
    <comment_count>8</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 01:23:50 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; &gt; It would be cleaner.
&gt; &gt; 
&gt; &gt; I think m_elementsById should not be exposed to ShadowRoot. The other things can be moved to ShadowRoot.cpp.
&gt; 
&gt; Cannot we just call TreeScope::getElementById() for non-orphan case?

Ah, you mean we should create ShadowRoot::getElementById(), right? That makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784753</commentid>
    <comment_count>9</comment_count>
      <attachid>177970</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 01:34:51 -0800</bug_when>
    <thetext>Created attachment 177970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784758</commentid>
    <comment_count>10</comment_count>
      <attachid>177970</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-06 01:42:25 -0800</bug_when>
    <thetext>Comment on attachment 177970
Patch

Attachment 177970 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15181031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784767</commentid>
    <comment_count>11</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 01:50:33 -0800</bug_when>
    <thetext>Hmm... instead of exposing the symbol, I would like to kill Internals.getElementByIdShadowRoot. It&apos;s nonsense now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784770</commentid>
    <comment_count>12</comment_count>
      <attachid>177970</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-06 01:53:00 -0800</bug_when>
    <thetext>Comment on attachment 177970
Patch

Could you add test like this?

- Append child during the shadow is in the document,
- then remove the host from document,
- and finallly exercise against that now-orphan shadow root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784775</commentid>
    <comment_count>13</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 02:01:40 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 177970 [details])
&gt; Could you add test like this?
&gt; 
&gt; - Append child during the shadow is in the document,
&gt; - then remove the host from document,
&gt; - and finallly exercise against that now-orphan shadow root.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784792</commentid>
    <comment_count>14</comment_count>
      <attachid>177970</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-06 02:43:15 -0800</bug_when>
    <thetext>Comment on attachment 177970
Patch

Attachment 177970 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15175180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784797</commentid>
    <comment_count>15</comment_count>
      <attachid>177982</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 02:51:25 -0800</bug_when>
    <thetext>Created attachment 177982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784798</commentid>
    <comment_count>16</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 02:51:58 -0800</bug_when>
    <thetext>This patch can be built after https://bugs.webkit.org/show_bug.cgi?id=104241 is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784808</commentid>
    <comment_count>17</comment_count>
      <attachid>177982</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-06 03:02:04 -0800</bug_when>
    <thetext>Comment on attachment 177982
Patch

Attachment 177982 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15154820</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784821</commentid>
    <comment_count>18</comment_count>
      <attachid>177982</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-06 03:35:52 -0800</bug_when>
    <thetext>Comment on attachment 177982
Patch

Attachment 177982 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15144929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785388</commentid>
    <comment_count>19</comment_count>
      <attachid>178102</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 16:22:44 -0800</bug_when>
    <thetext>Created attachment 178102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785562</commentid>
    <comment_count>20</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-12-06 19:52:58 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This version has performance regression by 2~3% on Dromaeo/dom-modify.html
&gt; 
&gt; 35.98 runs/s -&gt; 35.10 runs/s
&gt; 
&gt; I don&apos;t think this is acceptable.

Was this caused by Bug 87034?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785566</commentid>
    <comment_count>21</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-06 20:03:17 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #3)
&gt; &gt; This version has performance regression by 2~3% on Dromaeo/dom-modify.html
&gt; &gt; 
&gt; &gt; 35.98 runs/s -&gt; 35.10 runs/s
&gt; &gt; 
&gt; &gt; I don&apos;t think this is acceptable.
&gt; 
&gt; Was this caused by Bug 87034?

I&apos;m not 100% sure, but since insertedInto() is very host function, I&apos;m thinking that adding if-condition can regress dom-modify performance.

At least, I tested the first version of the patch after Bug 87034 has been resolved. So I don&apos;t think such regression is mainly caused by the slowness of treeScope().

# If treeScope() is still too slow, I&apos;ll change my mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785983</commentid>
    <comment_count>22</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-07 10:52:14 -0800</bug_when>
    <thetext>This seems like a workaround for a bigger issue: the inDocument is not expressive enough to communicate the state of the tree.

In terms of shadow trees, an element in that tree should always seem inDocument, even if it&apos;s hosted by an orphan element. However, this means that we may have a situation that the root is inDocument, but the host is not. That&apos;s bad.

Customizing getElementById for ShadowRoot is just masking this issue. Let&apos;s fix the real problem :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786885</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-09 16:01:52 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; This seems like a workaround for a bigger issue: the inDocument is not expressive enough to communicate the state of the tree.
&gt; 
&gt; In terms of shadow trees, an element in that tree should always seem inDocument, even if it&apos;s hosted by an orphan element. However, this means that we may have a situation that the root is inDocument, but the host is not. That&apos;s bad.
&gt; 

&gt; Customizing getElementById for ShadowRoot is just masking this issue. Let&apos;s fix the real problem :)

I agree this, but the correct fix will take longer.
My suggestion here is that we could have workaround now and fix it since
making Shadow DOM available without making this completely broken
will be a disaster.

We could possibly change title of Bug 104223 for let the problem visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790144</commentid>
    <comment_count>24</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-12 17:57:19 -0800</bug_when>
    <thetext>My current plan is to introduce InShadowTreeFlag and make have a method isInTreeScope() (name should be reconsidered) which returns &quot;inDocument() || isInShadowTree()&quot; (actually we use bit-and to return it).
Also, I&apos;ll move setInDocument()/clearInDocument() from insertedInto()/removedFrom() to ContainerNodeAlgorithm.

I&apos;m thinking this doesn&apos;t impact performance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790256</commentid>
    <comment_count>25</comment_count>
      <attachid>179193</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-12 21:04:45 -0800</bug_when>
    <thetext>Created attachment 179193
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790268</commentid>
    <comment_count>26</comment_count>
      <attachid>179193</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 21:21:59 -0800</bug_when>
    <thetext>Comment on attachment 179193
WIP

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

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:63
&gt; +    void notifyDescendantRemovedFromDocument(ContainerNode*, Node::TreeScopeTypes);

You could define another enum here for clarity. It&apos;s really confusing to see the flag name to be cleared here.
Let&apos;s give more intention revealing name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790295</commentid>
    <comment_count>27</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-12 22:22:51 -0800</bug_when>
    <thetext>The last WIP patch regresses performance by 0.5%. (37.71runs/s -&gt; 37.45 runs/s, Dromaeo/dom-modify.html)
It would be acceptable, but let me try to improve more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790302</commentid>
    <comment_count>28</comment_count>
      <attachid>179193</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 22:40:33 -0800</bug_when>
    <thetext>Comment on attachment 179193
WIP

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

New failing tests:
fast/forms/radio/radio-group.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790316</commentid>
    <comment_count>29</comment_count>
      <attachid>179204</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-12 22:59:27 -0800</bug_when>
    <thetext>Created attachment 179204
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790318</commentid>
    <comment_count>30</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-12 23:00:39 -0800</bug_when>
    <thetext>This does not regress performance anymore.
I would like make code cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790428</commentid>
    <comment_count>31</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-13 02:12:50 -0800</bug_when>
    <thetext>It seems this still regress Parser/html5-full-render.html performance. Ohya</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790431</commentid>
    <comment_count>32</comment_count>
      <attachid>179234</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-13 02:14:38 -0800</bug_when>
    <thetext>Created attachment 179234
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790479</commentid>
    <comment_count>33</comment_count>
      <attachid>179234</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 03:52:42 -0800</bug_when>
    <thetext>Comment on attachment 179234
WIP

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

New failing tests:
fast/forms/radio/radio-group.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790504</commentid>
    <comment_count>34</comment_count>
      <attachid>179234</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-13 04:43:34 -0800</bug_when>
    <thetext>Comment on attachment 179234
WIP

Attachment 179234 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15311216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790510</commentid>
    <comment_count>35</comment_count>
      <attachid>179234</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 04:55:26 -0800</bug_when>
    <thetext>Comment on attachment 179234
WIP

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

New failing tests:
fast/forms/radio/radio-group.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791361</commentid>
    <comment_count>36</comment_count>
      <attachid>179423</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-13 23:10:41 -0800</bug_when>
    <thetext>Created attachment 179423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791363</commentid>
    <comment_count>37</comment_count>
      <attachid>179424</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-13 23:13:29 -0800</bug_when>
    <thetext>Created attachment 179424
Performance Results (first 2 is without this patch, last 2 is with this patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791364</commentid>
    <comment_count>38</comment_count>
      <attachid>179425</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-13 23:17:50 -0800</bug_when>
    <thetext>Created attachment 179425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791368</commentid>
    <comment_count>39</comment_count>
      <attachid>179425</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 23:24:50 -0800</bug_when>
    <thetext>Comment on attachment 179425
Patch

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

It&apos;s surprising to see this doesn&apos;t hurt perf. But well, that happens. Wait for bots beging green.

&gt; Source/WebCore/dom/Node.cpp:2098
&gt; +    if (parentNode() &amp;&amp; parentNode()-&gt;isInShadowTree())

You can use parentOrHostNode() here. It will be a bit faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791374</commentid>
    <comment_count>40</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-13 23:32:38 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 179425 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179425&amp;action=review
&gt; 
&gt; It&apos;s surprising to see this doesn&apos;t hurt perf. But well, that happens. Wait for bots beging green.
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:2098
&gt; &gt; +    if (parentNode() &amp;&amp; parentNode()-&gt;isInShadowTree())
&gt; 
&gt; You can use parentOrHostNode() here. It will be a bit faster.

Good point. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791375</commentid>
    <comment_count>41</comment_count>
      <attachid>179428</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-12-13 23:35:49 -0800</bug_when>
    <thetext>Created attachment 179428
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791455</commentid>
    <comment_count>42</comment_count>
      <attachid>179428</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 01:24:25 -0800</bug_when>
    <thetext>Comment on attachment 179428
Patch for landing

Clearing flags on attachment: 179428

Committed r137731: &lt;http://trac.webkit.org/changeset/137731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791456</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 01:24:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177932</attachid>
            <date>2012-12-05 22:10:07 -0800</date>
            <delta_ts>2012-12-05 23:02:14 -0800</delta_ts>
            <desc>Modify insertedInto</desc>
            <filename>bug-87815-20121206150731.patch</filename>
            <type>text/plain</type>
            <size>5994</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUxOWFlOGE1OTNkYTc3
ZTAzNDg2YjY3ODc3YmIwZDE2ODhiNjNmMC4uMzMwN2M3YTkzNWVmNzcyY2M2YzBlY2ZhY2U1MzNi
ODI4ZWY3ZWExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTA1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFs
ZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5o
dG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVJZCk6CisKIDIwMTItMTItMDUgIEdyZWcgQmlsbG9jayAg
PGdiaWxsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIHJ1bnRpbWUgZW5hYmxlIGZvciB3
ZWIgaW50ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAxZjc3NTIzZjI4MDA3OWM3Y2E3
ZTZiYmU5YTJiNmFjYmJiZjliYTJjLi5kN2I2ZDU0YjQ3YzdkMWI5NDE4YjJjZTMyMDdkNjBlMjM2
YjliNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDg4LDggKzEwODgsMTMgQEAgTm9k
ZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBFbGVtZW50OjppbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSogaW5zZXJ0aW8KICAgICAgICAgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXModHJ1ZSk7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQo
KSAmJiAhaW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIHJldHVybiBJ
bnNlcnRpb25Eb25lOworI2Vsc2UKICAgICBpZiAoIWluc2VydGlvblBvaW50LT5pbkRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOworI2VuZGlmCiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGlkVmFsdWUgPSBnZXRJZEF0dHJpYnV0ZSgpOwogICAgIGlmICghaWRWYWx1
ZS5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDAyMThjYmM4YjAyYTgwNmE4NmQxNWU2
MWNlZmYwNGViZDAwZDBlYjEuLjI5MGIzM2FiYzk2ZGU2YTNhZjMzNmE1MTM4YmM1Mzk4YmZkMzgw
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjczLDggKzY3MywxMyBAQCBpbmxpbmUgdm9pZCBF
bGVtZW50Ojp1cGRhdGVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJgogCiBpbmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZChjb25zdCBBdG9taWNT
dHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lkKQogeworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorICAgIGlmICghaW5Eb2N1bWVudCgpICYmICFpc0luU2hhZG93VHJlZSgpKQor
ICAgICAgICByZXR1cm47CisjZWxzZQogICAgIGlmICghaW5Eb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm47CisjZW5kaWYKIAogICAgIGlmIChvbGRJZCA9PSBuZXdJZCkKICAgICAgICAgcmV0dXJu
OwpAQCAtNjg0LDcgKzY4OSwxMSBAQCBpbmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZChjb25z
dCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ldwogCiBpbmxpbmUg
dm9pZCBFbGVtZW50Ojp1cGRhdGVJZChUcmVlU2NvcGUqIHNjb3BlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lkKQogeworI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorICAgIEFTU0VSVChpbkRvY3VtZW50KCkgfHwgaXNJblNoYWRvd1RyZWUoKSk7Cisj
ZWxzZQogICAgIEFTU0VSVChpbkRvY3VtZW50KCkpOworI2VuZGlmCiAgICAgQVNTRVJUKG9sZElk
ICE9IG5ld0lkKTsKIAogICAgIGlmICghb2xkSWQuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIzNzU0YTQ0
ZDUzMTUzOTY5OTk0Y2UxZDAyM2ZmYTU5OTc2ZDQwNGYuLjhjNzYxZDYyZjA1MDNjNjMyYmU2ZTc3
NTcxZDczZDg5ODdkNDdiMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMi0wNSAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBE
T01dIFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoKSBzaG91bGQgd29yayBvdXRzaWRlIGRvY3Vt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzgx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0
aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25h
bGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50Ynlp
ZC1pbi1vcnBoYW4uaHRtbDogQWRkZWQuCisKIDIwMTItMTItMDUgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRy
YW5zYWN0aW9ucyB0byBpbnRlcmxlYXZlIHJlcXVlc3QgZXhlY3V0aW9uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1v
cnBoYW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NjNlMGZiZDY1YjQ4NjQ2M2NjN2U1Zjg2
ODU1NDRmNjkwNTQ4YjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1
IEBACitUZXN0cyB0byBlbnN1cmUgU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCB3b3JrcyBldmVu
IGlmIGEgU2hhZG93Um9vdCBpcyBvcnBoYW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIGNoaWxkMQor
UEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBjaGlsZDIKK1BBU1Mg
c2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIikgaXMgbnVsbAorUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2hpbGQyIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQzIikgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRl
bGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9n
ZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjhlYWI3NTViMmYxN2Jh
MDNlOTQwN2UxNGJlOTliNjE2OGM1NWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCkBAIC0wLDAgKzEs
NDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBjcmVhdGVEaXZXaXRoSWQoaWQpCit7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pZCA9IGlkOworCisgICAgcmV0dXJuIGRp
djsKK30KKworZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3VyZSBTaGFkb3dSb290LmdldEVsZW1l
bnRCeUlkIHdvcmtzIGV2ZW4gaWYgYSBTaGFkb3dSb290IGlzIG9ycGhhbi4iKTsKKwordmFyIGhv
c3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3ZhciBzaGFkb3dSb290ID0gaG9z
dC53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CisKK3ZhciBob3N0Q2hpbGQxID0gY3JlYXRlRGl2
V2l0aElkKCdjaGlsZDEnKTsKK3ZhciBob3N0Q2hpbGQyID0gY3JlYXRlRGl2V2l0aElkKCdjaGls
ZDInKTsKK3ZhciBzaGFkb3dDaGlsZDEgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkMScpOwordmFy
IHNoYWRvd0NoaWxkMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7CisKK2hvc3QuYXBwZW5k
Q2hpbGQoaG9zdENoaWxkMSk7Citob3N0LmFwcGVuZENoaWxkKGhvc3RDaGlsZDIpOworc2hhZG93
Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZDEpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChz
aGFkb3dDaGlsZDIpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hp
bGQxIiknLCAnc2hhZG93Q2hpbGQxJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworCitzaG91bGRCZSgnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDMiKScsICdudWxsJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177946</attachid>
            <date>2012-12-05 23:02:18 -0800</date>
            <delta_ts>2012-12-06 01:34:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87815-20121206155942.patch</filename>
            <type>text/plain</type>
            <size>7403</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUxOWFlOGE1OTNkYTc3
ZTAzNDg2YjY3ODc3YmIwZDE2ODhiNjNmMC4uYWQ4ODZkYjNlYTA5OTIyYTQwYmU5OThmZjg5MjIx
NWFiNjk0NTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTA1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
dGhlIGlkcyBvZiBlbGVtZW50cyBhcmUgcmVnaXN0ZXJlZCBvbmx5IGlmIHRoZSBlbGVtZW50cyBh
cmUgaW4gZG9jdW1lbnQsIGVsZW1lbnRzIGluIFNoYWRvd1Jvb3QgYnV0IG5vdAorICAgICAgICBp
biBkb2N1bWVudCB3b24ndCBiZSByZWdpc3RlcmVkIHRvIFNoYWRvd1Jvb3QuCisKKyAgICAgICAg
U2luY2UgcmVnaXN0ZXJpbmcgZWxlbWVudHMgaW4gU2hhZG93Um9vdCB3aWxsIGNhdXNlIHBlcmZv
cm1hbmNlIHJlZ3Jlc3Npb24gKHNlZSBCdWcgODc4MTUpLCB3ZSBjaGVjayBhbGwKKyAgICAgICAg
dGhlIGVsZW1lbnRzIGluIGdldEVsZW1lbnRCeUlkKCkgaGVyZS4KKworICAgICAgICBUZXN0OiBm
YXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWwKKworICAgICAgICAq
IGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpnZXRFbGVt
ZW50QnlJZCk6CisKIDIwMTItMTItMDUgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2dsZS5j
b20+CiAKICAgICAgICAgQWRkIHJ1bnRpbWUgZW5hYmxlIGZvciB3ZWIgaW50ZW50cy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggNmIyZmIzMGQ5MTRiNjQ4ZjJlOTI2Y2E1ZjI1NmY5YmE5
OGVjNTc5Yi4uNzM2MTI4MTlkNThhNjRjZDIwOGY5N2Y1ODE4YzQ1Y2VlOTNkMGFiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTk4LDkgKzk4LDI3IEBAIEVsZW1lbnQqIFRyZWVTY29w
ZTo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7
CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOworCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBtX2VsZW1lbnRz
QnlJZCA/IG1fZWxlbWVudHNCeUlkLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQuaW1wbCgpLCB0
aGlzKSA6IDApCisgICAgICAgIHJldHVybiBlbGVtZW50OworCisgICAgLy8gRklYTUU6IFRoaXMg
aXMgc2xvdyBpZiBUcmVlU2NvcGUgaXMgbm90IGluIERvY3VtZW50LgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQyMjMKKyAgICBpZiAoIXJvb3ROb2Rl
KCktPmluRG9jdW1lbnQoKSAmJiByb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAg
ICBmb3IgKE5vZGUqIG5vZGUgPSByb290Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVy
c2VOZXh0Tm9kZShyb290Tm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVu
dE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmdldElkQXR0cmlidXRlKCkgPT0gZWxlbWVudElk
KQorICAgICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKKyNlbHNlCiAgICAgaWYgKCFtX2VsZW1lbnRzQnlJZCkKICAg
ICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQtPmdldEVsZW1lbnRC
eUlkKGVsZW1lbnRJZC5pbXBsKCksIHRoaXMpOworI2VuZGlmCiB9CiAKIHZvaWQgVHJlZVNjb3Bl
OjphZGRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCog
ZWxlbWVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBiMzc1NGE0NGQ1MzE1Mzk2OTk5NGNlMWQwMjNmZmE1OTk3NmQ0MDRm
Li45Y2FiMzg3YTY5NGM1NDA2ZGRhNDgxOTEyMTBlNGQxMDU2ODQ4NzRjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMTItMDUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCkg
c2hvdWxkIHdvcmsgb3V0c2lkZSBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1v
cnBoYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZ2V0
ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTA1ICBKb3NodWEg
QmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBBbGxvdyBt
dWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW50ZXJsZWF2ZSByZXF1ZXN0IGV4ZWN1dGlvbgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9y
cGhhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVu
dGJ5aWQtaW4tb3JwaGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODg1ODNjODM0NjQxNzk2
MzZmYzBlM2E2NjE5NDczNjU4YmU0ZmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzMiBAQAorVGVzdHMgdG8gZW5zdXJlIFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQg
d29ya3MgZXZlbiBpZiBhIFNoYWRvd1Jvb3QgaXMgb3JwaGFuLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKSBp
cyBzaGFkb3dDaGlsZDEKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikg
aXMgc2hhZG93Q2hpbGQyCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIp
IGlzIG51bGwKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVs
bAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikgaXMgbnVsbAorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQzIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQ0IikgaXMgbnVsbAorCitJbnNlcnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1l
IGlkCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0No
aWxkMgorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dD
aGlsZDJfMworCitNYWtlIHRoZSBob3N0IGluIGRvY3VtZW50CitQQVNTIHNoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIHNoYWRvd0NoaWxkMQorUEFTUyBzaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMworUEFTUyBzaGFkb3dSb290
LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKSBpcyBudWxsCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxl
bWVudEJ5SWQoImNoaWxkNCIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkMSIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIp
IGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIGNoaWxk
MworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgY2hpbGQ0CisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFu
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3Jw
aGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUxMzA1NTgwZjA5ZDQ1MDBhODIwOTU4MTRkMGU3YzEzYThm
ZmRhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRl
bGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbApAQCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMi
Pjwvc2NyaXB0PgorCis8ZGl2IGlkPSJ3cmFwcGVyIj48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUi
PjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlRGl2V2l0aElkKGlkKQoreworICAg
IHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuaWQgPSBp
ZDsKKworICAgIHJldHVybiBkaXY7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0byBlbnN1cmUg
U2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCB3b3JrcyBldmVuIGlmIGEgU2hhZG93Um9vdCBpcyBv
cnBoYW4uIik7CisKK3ZhciBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cit2
YXIgc2hhZG93Um9vdCA9IGhvc3Qud2Via2l0Q3JlYXRlU2hhZG93Um9vdCgpOworCit2YXIgc2hh
ZG93Q2hpbGQxID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDEnKTsKK3ZhciBzaGFkb3dDaGlsZDIg
PSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkMicpOwordmFyIGhvc3RDaGlsZDEgPSBjcmVhdGVEaXZX
aXRoSWQoJ2NoaWxkMycpOwordmFyIGhvc3RDaGlsZDIgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxk
NCcpOworCitob3N0LmFwcGVuZENoaWxkKGhvc3RDaGlsZDEpOworaG9zdC5hcHBlbmRDaGlsZCho
b3N0Q2hpbGQyKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93Q2hpbGQxKTsKK3NoYWRv
d1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93Q2hpbGQyKTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3Qu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ3NoYWRvd0NoaWxkMScpOworc2hvdWxkQmUoJ3No
YWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMicpOworc2hv
dWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpJywgJ251bGwnKTsKK3No
b3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKScsICdudWxsJyk7CisK
K3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIiknLCAnbnVsbCcpOwor
c2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdudWxsJyk7Citz
aG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpJywgJ251bGwnKTsKK3No
b3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IiknLCAnbnVsbCcpOworCisv
LyBJbnNlcnQgYW4gZWxlbWVudCBoYXZpbmcgdGhlIHNhbWUgaWQuCitkZWJ1ZygnJyk7CitkZWJ1
ZygnSW5zZXJ0IGVsZW1lbnRzIGhhdmluZyB0aGUgc2FtZSBpZCcpOworCit2YXIgc2hhZG93Q2hp
bGQyXzIgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkMicpOworc2hhZG93Um9vdC5hcHBlbmRDaGls
ZChzaGFkb3dDaGlsZDJfMik7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlk
KCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDInKTsKKwordmFyIHNoYWRvd0NoaWxkMl8zID0gY3Jl
YXRlRGl2V2l0aElkKCdjaGlsZDInKTsKK3NoYWRvd1Jvb3QuaW5zZXJ0QmVmb3JlKHNoYWRvd0No
aWxkMl8zLCBzaGFkb3dSb290LmZpcnN0Q2hpbGQpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyXzMnKTsKKworZGVidWcoJycp
OworZGVidWcoJ01ha2UgdGhlIGhvc3QgaW4gZG9jdW1lbnQnKTsKK3dyYXBwZXIuYXBwZW5kQ2hp
bGQoaG9zdCk7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEi
KScsICdzaGFkb3dDaGlsZDEnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlk
KCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDJfMycpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkMyIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDQiKScsICdudWxsJyk7CisKK3Nob3VsZEJlKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQxIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkMyIpJywgJ2NoaWxkMycpOworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDQiKScsICdjaGlsZDQnKTsKKworZGVidWcoJycpOword3JhcHBl
ci5pbm5lckhUTUwgPSAiIjsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177970</attachid>
            <date>2012-12-06 01:34:51 -0800</date>
            <delta_ts>2012-12-06 02:51:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87815-20121206183216.patch</filename>
            <type>text/plain</type>
            <size>7946</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUxOWFlOGE1OTNkYTc3
ZTAzNDg2YjY3ODc3YmIwZDE2ODhiNjNmMC4uOWQ1NmYyODUxYmJlNjg5ODY5NzFhZjcxYWNiMDEw
MjgyM2M2YzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEyLTA2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
dGhlIGlkcyBvZiBlbGVtZW50cyBhcmUgcmVnaXN0ZXJlZCBvbmx5IGlmIHRoZSBlbGVtZW50cyBh
cmUgaW4gZG9jdW1lbnQsIGVsZW1lbnRzIGluIFNoYWRvd1Jvb3QgYnV0IG5vdAorICAgICAgICBp
biBkb2N1bWVudCB3b24ndCBiZSByZWdpc3RlcmVkIHRvIFNoYWRvd1Jvb3QuCisKKyAgICAgICAg
U2luY2UgcmVnaXN0ZXJpbmcgZWxlbWVudHMgaW4gU2hhZG93Um9vdCB3aWxsIGNhdXNlIHBlcmZv
cm1hbmNlIHJlZ3Jlc3Npb24gKHNlZSBCdWcgODc4MTUpLCB3ZSBjaGVjayBhbGwKKyAgICAgICAg
dGhlIGVsZW1lbnRzIGluIGdldEVsZW1lbnRCeUlkKCkuCisKKyAgICAgICAgVGVzdDogZmFzdC9k
b20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCisKKyAgICAgICAgKiBkb20v
U2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpnZXRFbGVtZW50
QnlJZCk6IElmIFNoYWRvd1Jvb3QgaXMgaW4gZG9jdW1lbnQsIHdlIGRvbid0IG5lZWQgdG8gY2hl
Y2sgYWxsIHRoZSBkZXNjZW5kZW50cy4KKyAgICAgICAgSXQgc2hvdWxkIGJlIGhhbmRlbGQgaW4g
VHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZCgpLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorCiAyMDEyLTEyLTA1
ICBHcmVnIEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBydW50
aW1lIGVuYWJsZSBmb3Igd2ViIGludGVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5k
ZXggNjI4OTM5YjRlMDA0YjEzMGEzNWMwYTIxMDFhYmFkOGFkOTQzNWQ3NS4uNjVjYjlhZjA2NThm
YzY2N2RiOWIyOTkwNmY4OGQ4NDgzZjk3ZDVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cApAQCAtMjMxLDYgKzIzMSwyNSBAQCBib29sIFNoYWRvd1Jvb3Q6Omhhc0luc2VydGlvblBvaW50
KCkgY29uc3QKICAgICByZXR1cm4gaGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoKSB8fCBoYXNDb250
ZW50RWxlbWVudCgpOwogfQogCitFbGVtZW50KiBTaGFkb3dSb290OjpnZXRFbGVtZW50QnlJZChj
b25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK3sKKyAgICBpZiAoRWxlbWVudCog
ZWxlbWVudCA9IFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CisKKyAgICBpZiAoaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzIHNsb3cuIFNlZSBkaXNjdXNzaW9uIGluIEJ1ZyA4
NzgxNSBhbmQgQnVnIDEwNDIyMy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc4MTUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0MjIzCisgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdE5vZGUoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdE5vZGUoKSkpIHsKKyAgICAgICAgaWYg
KG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmdldElkQXR0cmlidXRl
KCkgPT0gZWxlbWVudElkKQorICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBTaGFkb3dSb290OjphcHBseUF1dGhvclN0
eWxlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXBwbHlBdXRob3JTdHlsZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaAppbmRleCBkMDVlMGI0NzAyNzEzMzBkYWE4YzIzZTYxZTcxZTcwNzQ0ZDE0
NzkwLi40NDY1MGNiODI1MGY2M2M0NGNiYjU0YmM1MmZiODM3YTg3ODg4NDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKQEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNJ
bnNlcnRpb25Qb2ludCgpIGNvbnN0OwogCisgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29u
c3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAK
ICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMzc1NGE0NGQ1MzE1Mzk2OTk5NGNlMWQw
MjNmZmE1OTk3NmQ0MDRmLi5lYjQ1NTE4ODJlMGQ3NDRkNGFiYTA2NDExMTBiNzg3NTJjODc2ZDlh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTItMDYgIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBTaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCkgc2hvdWxkIHdvcmsgb3V0c2lkZSBkb2N1bWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9nZXRl
bGVtZW50YnlpZC1pbi1vcnBoYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWw6IEFkZGVkLgorCiAyMDEy
LTEyLTA1ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5k
ZXhlZERCOiBBbGxvdyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW50ZXJsZWF2ZSByZXF1ZXN0
IGV4ZWN1dGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVs
ZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ODg1ODNjODM0NjQxNzk2MzZmYzBlM2E2NjE5NDczNjU4YmU0ZmUwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorVGVzdHMgdG8gZW5zdXJlIFNoYWRvd1Jvb3Qu
Z2V0RWxlbWVudEJ5SWQgd29ya3MgZXZlbiBpZiBhIFNoYWRvd1Jvb3QgaXMgb3JwaGFuLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDEiKSBpcyBzaGFkb3dDaGlsZDEKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQyIikgaXMgc2hhZG93Q2hpbGQyCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkMyIpIGlzIG51bGwKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQ0IikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikg
aXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgbnVsbAor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIikgaXMgbnVsbAorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVsbAorCitJbnNlcnQgZWxlbWVudHMg
aGF2aW5nIHRoZSBzYW1lIGlkCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxk
MiIpIGlzIHNoYWRvd0NoaWxkMgorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGls
ZDIiKSBpcyBzaGFkb3dDaGlsZDJfMworCitNYWtlIHRoZSBob3N0IGluIGRvY3VtZW50CitQQVNT
IHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIHNoYWRvd0NoaWxkMQorUEFT
UyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMwor
UEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKSBpcyBudWxsCitQQVNTIHNo
YWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkMiIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNo
aWxkMyIpIGlzIGNoaWxkMworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0Iikg
aXMgY2hpbGQ0CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVu
dGJ5aWQtaW4tb3JwaGFuLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxl
bWVudGJ5aWQtaW4tb3JwaGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYyYWE0NTAxMzQzNDAyY2QxOThl
NzFkOTE3YzM3ZTdkODJkMjdmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbApAQCAtMCwwICsxLDc2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJ3cmFwcGVyIj48L2Rpdj4KKzxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlRGl2V2l0
aElkKGlkKQoreworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICBkaXYuaWQgPSBpZDsKKworICAgIHJldHVybiBkaXY7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0cyB0byBlbnN1cmUgU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCB3b3JrcyBldmVuIGlmIGEg
U2hhZG93Um9vdCBpcyBvcnBoYW4uIik7CisKK3ZhciBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7Cit2YXIgc2hhZG93Um9vdCA9IGhvc3Qud2Via2l0Q3JlYXRlU2hhZG93Um9v
dCgpOworCit2YXIgc2hhZG93Q2hpbGQxID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDEnKTsKK3Zh
ciBzaGFkb3dDaGlsZDIgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkMicpOwordmFyIGhvc3RDaGls
ZDEgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkMycpOwordmFyIGhvc3RDaGlsZDIgPSBjcmVhdGVE
aXZXaXRoSWQoJ2NoaWxkNCcpOworCitob3N0LmFwcGVuZENoaWxkKGhvc3RDaGlsZDEpOworaG9z
dC5hcHBlbmRDaGlsZChob3N0Q2hpbGQyKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93
Q2hpbGQxKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93Q2hpbGQyKTsKKworc2hvdWxk
QmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ3NoYWRvd0NoaWxkMScp
Oworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ3NoYWRv
d0NoaWxkMicpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIp
JywgJ251bGwnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQi
KScsICdudWxsJyk7CisKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQx
IiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIi
KScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIp
JywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0Iikn
LCAnbnVsbCcpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnSW5zZXJ0IGVsZW1lbnRzIGhhdmluZyB0
aGUgc2FtZSBpZCcpOworCit2YXIgc2hhZG93Q2hpbGQyXzIgPSBjcmVhdGVEaXZXaXRoSWQoJ2No
aWxkMicpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZDJfMik7CisKK3Nob3Vs
ZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDIn
KTsKKwordmFyIHNoYWRvd0NoaWxkMl8zID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDInKTsKK3No
YWRvd1Jvb3QuaW5zZXJ0QmVmb3JlKHNoYWRvd0NoaWxkMl8zLCBzaGFkb3dSb290LmZpcnN0Q2hp
bGQpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAn
c2hhZG93Q2hpbGQyXzMnKTsKKworZGVidWcoJycpOworZGVidWcoJ01ha2UgdGhlIGhvc3QgaW4g
ZG9jdW1lbnQnKTsKK3dyYXBwZXIuYXBwZW5kQ2hpbGQoaG9zdCk7CisKK3Nob3VsZEJlKCdzaGFk
b3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdzaGFkb3dDaGlsZDEnKTsKK3Nob3Vs
ZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDJf
MycpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpJywgJ251
bGwnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKScsICdu
dWxsJyk7CisKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIiknLCAn
bnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdu
dWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpJywgJ2No
aWxkMycpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKScsICdj
aGlsZDQnKTsKKworZGVidWcoJycpOword3JhcHBlci5pbm5lckhUTUwgPSAiIjsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177982</attachid>
            <date>2012-12-06 02:51:25 -0800</date>
            <delta_ts>2012-12-06 16:22:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87815-20121206194849.patch</filename>
            <type>text/plain</type>
            <size>8306</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUxOWFlOGE1OTNkYTc3
ZTAzNDg2YjY3ODc3YmIwZDE2ODhiNjNmMC4uOWQ1NmYyODUxYmJlNjg5ODY5NzFhZjcxYWNiMDEw
MjgyM2M2YzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEyLTA2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
dGhlIGlkcyBvZiBlbGVtZW50cyBhcmUgcmVnaXN0ZXJlZCBvbmx5IGlmIHRoZSBlbGVtZW50cyBh
cmUgaW4gZG9jdW1lbnQsIGVsZW1lbnRzIGluIFNoYWRvd1Jvb3QgYnV0IG5vdAorICAgICAgICBp
biBkb2N1bWVudCB3b24ndCBiZSByZWdpc3RlcmVkIHRvIFNoYWRvd1Jvb3QuCisKKyAgICAgICAg
U2luY2UgcmVnaXN0ZXJpbmcgZWxlbWVudHMgaW4gU2hhZG93Um9vdCB3aWxsIGNhdXNlIHBlcmZv
cm1hbmNlIHJlZ3Jlc3Npb24gKHNlZSBCdWcgODc4MTUpLCB3ZSBjaGVjayBhbGwKKyAgICAgICAg
dGhlIGVsZW1lbnRzIGluIGdldEVsZW1lbnRCeUlkKCkuCisKKyAgICAgICAgVGVzdDogZmFzdC9k
b20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCisKKyAgICAgICAgKiBkb20v
U2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpnZXRFbGVtZW50
QnlJZCk6IElmIFNoYWRvd1Jvb3QgaXMgaW4gZG9jdW1lbnQsIHdlIGRvbid0IG5lZWQgdG8gY2hl
Y2sgYWxsIHRoZSBkZXNjZW5kZW50cy4KKyAgICAgICAgSXQgc2hvdWxkIGJlIGhhbmRlbGQgaW4g
VHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZCgpLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorCiAyMDEyLTEyLTA1
ICBHcmVnIEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBydW50
aW1lIGVuYWJsZSBmb3Igd2ViIGludGVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5k
ZXggNjI4OTM5YjRlMDA0YjEzMGEzNWMwYTIxMDFhYmFkOGFkOTQzNWQ3NS4uNjVjYjlhZjA2NThm
YzY2N2RiOWIyOTkwNmY4OGQ4NDgzZjk3ZDVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cApAQCAtMjMxLDYgKzIzMSwyNSBAQCBib29sIFNoYWRvd1Jvb3Q6Omhhc0luc2VydGlvblBvaW50
KCkgY29uc3QKICAgICByZXR1cm4gaGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoKSB8fCBoYXNDb250
ZW50RWxlbWVudCgpOwogfQogCitFbGVtZW50KiBTaGFkb3dSb290OjpnZXRFbGVtZW50QnlJZChj
b25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK3sKKyAgICBpZiAoRWxlbWVudCog
ZWxlbWVudCA9IFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CisKKyAgICBpZiAoaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzIHNsb3cuIFNlZSBkaXNjdXNzaW9uIGluIEJ1ZyA4
NzgxNSBhbmQgQnVnIDEwNDIyMy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc4MTUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0MjIzCisgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdE5vZGUoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdE5vZGUoKSkpIHsKKyAgICAgICAgaWYg
KG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmdldElkQXR0cmlidXRl
KCkgPT0gZWxlbWVudElkKQorICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBTaGFkb3dSb290OjphcHBseUF1dGhvclN0
eWxlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXBwbHlBdXRob3JTdHlsZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaAppbmRleCBkMDVlMGI0NzAyNzEzMzBkYWE4YzIzZTYxZTcxZTcwNzQ0ZDE0
NzkwLi40NDY1MGNiODI1MGY2M2M0NGNiYjU0YmM1MmZiODM3YTg3ODg4NDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKQEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNJ
bnNlcnRpb25Qb2ludCgpIGNvbnN0OwogCisgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29u
c3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAK
ICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMzc1NGE0NGQ1MzE1Mzk2OTk5NGNlMWQw
MjNmZmE1OTk3NmQ0MDRmLi5lYjQ1NTE4ODJlMGQ3NDRkNGFiYTA2NDExMTBiNzg3NTJjODc2ZDlh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTItMDYgIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBTaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCkgc2hvdWxkIHdvcmsgb3V0c2lkZSBkb2N1bWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9nZXRl
bGVtZW50YnlpZC1pbi1vcnBoYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWw6IEFkZGVkLgorCiAyMDEy
LTEyLTA1ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5k
ZXhlZERCOiBBbGxvdyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW50ZXJsZWF2ZSByZXF1ZXN0
IGV4ZWN1dGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVs
ZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MGUyMjJjODMwNTA0ZjgxY2RhNmUxNjgyYzM1NTY0ZjgyMWZkMTI5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdHMgdG8gZW5zdXJlIFNoYWRvd1Jvb3Qu
Z2V0RWxlbWVudEJ5SWQgd29ya3MgZXZlbiBpZiBhIFNoYWRvd1Jvb3QgaXMgb3JwaGFuLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDEiKSBpcyBzaGFkb3dDaGlsZDEKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQyIikgaXMgc2hhZG93Q2hpbGQyCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkMyIpIGlzIG51bGwKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQ0IikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikg
aXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgbnVsbAor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIikgaXMgbnVsbAorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVsbAorCitJbnNlcnQgZWxlbWVudHMg
aGF2aW5nIHRoZSBzYW1lIGlkCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxk
MiIpIGlzIHNoYWRvd0NoaWxkMgorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGls
ZDIiKSBpcyBzaGFkb3dDaGlsZDJfMworCitNYWtlIHRoZSBob3N0IGluIGRvY3VtZW50CitQQVNT
IHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIHNoYWRvd0NoaWxkMQorUEFT
UyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMwor
UEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKSBpcyBudWxsCitQQVNTIHNo
YWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkMiIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNo
aWxkMyIpIGlzIGNoaWxkMworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0Iikg
aXMgY2hpbGQ0CisKK0FkZCBhIGNoaWxkIGFuZCBtYWtlIHRoZSBob3N0IG5vdCBpbiBkb2N1bWVu
dAorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDUiKSBpcyBzaGFkb3dDaGls
ZDUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1p
bi1vcnBoYW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50Ynlp
ZC1pbi1vcnBoYW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjA0Y2QxZDI1YzVmM2RjNzcyZGIwM2UxMWRh
NTM0M2Q5NThmN2FiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5
ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9IndyYXBwZXIiPjwvZGl2PgorPHByZSBpZD0i
Y29uc29sZSI+PC9wcmU+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBjcmVhdGVEaXZXaXRoSWQoaWQp
Cit7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRp
di5pZCA9IGlkOworCisgICAgcmV0dXJuIGRpdjsKK30KKworZGVzY3JpcHRpb24oIlRlc3RzIHRv
IGVuc3VyZSBTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkIHdvcmtzIGV2ZW4gaWYgYSBTaGFkb3dS
b290IGlzIG9ycGhhbi4iKTsKKwordmFyIGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKK3ZhciBzaGFkb3dSb290ID0gaG9zdC53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CisK
K3ZhciBzaGFkb3dDaGlsZDEgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkMScpOwordmFyIHNoYWRv
d0NoaWxkMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7Cit2YXIgaG9zdENoaWxkMSA9IGNy
ZWF0ZURpdldpdGhJZCgnY2hpbGQzJyk7Cit2YXIgaG9zdENoaWxkMiA9IGNyZWF0ZURpdldpdGhJ
ZCgnY2hpbGQ0Jyk7CisKK2hvc3QuYXBwZW5kQ2hpbGQoaG9zdENoaWxkMSk7Citob3N0LmFwcGVu
ZENoaWxkKGhvc3RDaGlsZDIpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZDEp
Oworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZDIpOworCitzaG91bGRCZSgnc2hh
ZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIiknLCAnc2hhZG93Q2hpbGQxJyk7CitzaG91
bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQy
Jyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVs
bCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ251
bGwnKTsKKworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdu
dWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ251
bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVs
bCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKScsICdudWxs
Jyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdJbnNlcnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1l
IGlkJyk7CisKK3ZhciBzaGFkb3dDaGlsZDJfMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7
CitzaGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRvd0NoaWxkMl8yKTsKKworc2hvdWxkQmUoJ3No
YWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMicpOworCit2
YXIgc2hhZG93Q2hpbGQyXzMgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkMicpOworc2hhZG93Um9v
dC5pbnNlcnRCZWZvcmUoc2hhZG93Q2hpbGQyXzMsIHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCk7CisK
K3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdzaGFkb3dD
aGlsZDJfMycpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnTWFrZSB0aGUgaG9zdCBpbiBkb2N1bWVu
dCcpOword3JhcHBlci5hcHBlbmRDaGlsZChob3N0KTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3Qu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ3NoYWRvd0NoaWxkMScpOworc2hvdWxkQmUoJ3No
YWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMl8zJyk7Citz
aG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOwor
c2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsK
Kworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdudWxsJyk7
CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ251bGwnKTsK
K3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnY2hpbGQzJyk7
CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ2NoaWxkNCcp
OworCitkZWJ1ZygnJyk7CitkZWJ1ZygnQWRkIGEgY2hpbGQgYW5kIG1ha2UgdGhlIGhvc3Qgbm90
IGluIGRvY3VtZW50Jyk7Cit2YXIgc2hhZG93Q2hpbGQ1ID0gY3JlYXRlRGl2V2l0aElkKCdjaGls
ZDUnKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93Q2hpbGQ1KTsKK3dyYXBwZXIucmVt
b3ZlQ2hpbGQoaG9zdCk7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJj
aGlsZDUiKScsICdzaGFkb3dDaGlsZDUnKTsKKworZGVidWcoJycpOword3JhcHBlci5pbm5lckhU
TUwgPSAiIjsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178102</attachid>
            <date>2012-12-06 16:22:44 -0800</date>
            <delta_ts>2012-12-12 21:04:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87815-20121207092008.patch</filename>
            <type>text/plain</type>
            <size>8284</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODAyOWM1ZmNhZmU1NzU3
YWVhN2NjNGE4ZTBlY2E4ZjQ3ZjUwNzlmMS4uNGQ0YzM5ZWM5NGFmZDZjYTYwNjFiMjMyZTQzZGRi
Y2ViYmM1ZDU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEyLTA2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
dGhlIGlkcyBvZiBlbGVtZW50cyBhcmUgcmVnaXN0ZXJlZCBvbmx5IGlmIHRoZSBlbGVtZW50cyBh
cmUgaW4gZG9jdW1lbnQsIGVsZW1lbnRzIGluIFNoYWRvd1Jvb3QgYnV0IG5vdAorICAgICAgICBp
biBkb2N1bWVudCB3b24ndCBiZSByZWdpc3RlcmVkIHRvIFNoYWRvd1Jvb3QuCisKKyAgICAgICAg
U2luY2UgcmVnaXN0ZXJpbmcgZWxlbWVudHMgaW4gU2hhZG93Um9vdCB3aWxsIGNhdXNlIHBlcmZv
cm1hbmNlIHJlZ3Jlc3Npb24gKHNlZSBCdWcgODc4MTUpLCB3ZSBjaGVjayBhbGwKKyAgICAgICAg
dGhlIGVsZW1lbnRzIGluIGdldEVsZW1lbnRCeUlkKCkuCisKKyAgICAgICAgVGVzdDogZmFzdC9k
b20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCisKKyAgICAgICAgKiBkb20v
U2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpnZXRFbGVtZW50
QnlJZCk6IElmIFNoYWRvd1Jvb3QgaXMgaW4gZG9jdW1lbnQsIHdlIGRvbid0IG5lZWQgdG8gY2hl
Y2sgYWxsIHRoZSBkZXNjZW5kZW50cy4KKyAgICAgICAgSXQgc2hvdWxkIGJlIGhhbmRlbGQgaW4g
VHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZCgpLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorCiAyMDEyLTEyLTA2
ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXRyeSBzbmFwc2hvdHMg
aWYgdGhleSBhcmUgdG9vIGVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjI4
OTM5YjRlMDA0YjEzMGEzNWMwYTIxMDFhYmFkOGFkOTQzNWQ3NS4uNjVjYjlhZjA2NThmYzY2N2Ri
OWIyOTkwNmY4OGQ4NDgzZjk3ZDVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAt
MjMxLDYgKzIzMSwyNSBAQCBib29sIFNoYWRvd1Jvb3Q6Omhhc0luc2VydGlvblBvaW50KCkgY29u
c3QKICAgICByZXR1cm4gaGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoKSB8fCBoYXNDb250ZW50RWxl
bWVudCgpOwogfQogCitFbGVtZW50KiBTaGFkb3dSb290OjpnZXRFbGVtZW50QnlJZChjb25zdCBB
dG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK3sKKyAgICBpZiAoRWxlbWVudCogZWxlbWVu
dCA9IFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkKKyAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7CisKKyAgICBpZiAoaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIHNsb3cuIFNlZSBkaXNjdXNzaW9uIGluIEJ1ZyA4NzgxNSBh
bmQgQnVnIDEwNDIyMy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODc4MTUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA0MjIzCisgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdE5vZGUoKTsgbm9kZTsgbm9kZSA9
IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdE5vZGUoKSkpIHsKKyAgICAgICAgaWYgKG5vZGUt
PmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmdldElkQXR0cmlidXRlKCkgPT0g
ZWxlbWVudElkKQorICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKKyAgICB9CisK
KyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBTaGFkb3dSb290OjphcHBseUF1dGhvclN0eWxlcygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXBwbHlBdXRob3JTdHlsZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaAppbmRleCBkMDVlMGI0NzAyNzEzMzBkYWE4YzIzZTYxZTcxZTcwNzQ0ZDE0NzkwLi40
NDY1MGNiODI1MGY2M2M0NGNiYjU0YmM1MmZiODM3YTg3ODg4NDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmgKQEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNJbnNlcnRp
b25Qb2ludCgpIGNvbnN0OwogCisgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRv
bWljU3RyaW5nJikgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKICAgICB2
aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YWRjYjc1MjdhYTk1YjNlM2I4Y2U0ZTNkZThiYTJl
NzM5ZGMzYzlkLi4zYjM2ZjYxZTZmYjdhY2FlOThiNzUxZTM3NDM4NGVjZmNhOGNiZDU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTItMDYgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBTaGFkb3dSb290LmdldEVsZW1l
bnRCeUlkKCkgc2hvdWxkIHdvcmsgb3V0c2lkZSBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4MTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50
YnlpZC1pbi1vcnBoYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTA2
ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEVuYWJsZSBSZXNvdXJjZSBUaW1pbmcgYW5kIFVzZXIgVGltaW5nCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1p
bi1vcnBoYW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwZTIyMmM4MzA1MDRmODFjZGE2ZTE2
ODJjMzU1NjRmODIxZmQxMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDM1IEBACitUZXN0cyB0byBlbnN1cmUgU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCB3b3JrcyBl
dmVuIGlmIGEgU2hhZG93Um9vdCBpcyBvcnBoYW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIHNoYWRv
d0NoaWxkMQorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFk
b3dDaGlsZDIKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIikgaXMgbnVs
bAorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKSBpcyBudWxsCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKSBpcyBudWxsCitQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBudWxsCitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjaGlsZDMiKSBpcyBudWxsCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
aGlsZDQiKSBpcyBudWxsCisKK0luc2VydCBlbGVtZW50cyBoYXZpbmcgdGhlIHNhbWUgaWQKK1BB
U1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgc2hhZG93Q2hpbGQyCitQ
QVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxkMl8z
CisKK01ha2UgdGhlIGhvc3QgaW4gZG9jdW1lbnQKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQxIikgaXMgc2hhZG93Q2hpbGQxCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxkMl8zCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxl
bWVudEJ5SWQoImNoaWxkMyIpIGlzIG51bGwKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCgiY2hpbGQ0IikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQx
IikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgbnVs
bAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIikgaXMgY2hpbGQzCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKSBpcyBjaGlsZDQKKworQWRkIGEgY2hp
bGQgYW5kIG1ha2UgdGhlIGhvc3Qgbm90IGluIGRvY3VtZW50CitQQVNTIHNoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkNSIpIGlzIHNoYWRvd0NoaWxkNQorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcyMDRjZDFkMjVjNWYzZGM3NzJkYjAzZTExZGE1MzQzZDk1OGY3YWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4t
b3JwaGFuLmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKwor
PGRpdiBpZD0id3JhcHBlciI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPHNj
cmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZURpdldpdGhJZChpZCkKK3sKKyAgICB2YXIgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LmlkID0gaWQ7CisKKyAgICByZXR1
cm4gZGl2OworfQorCitkZXNjcmlwdGlvbigiVGVzdHMgdG8gZW5zdXJlIFNoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQgd29ya3MgZXZlbiBpZiBhIFNoYWRvd1Jvb3QgaXMgb3JwaGFuLiIpOworCit2
YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwordmFyIHNoYWRvd1Jvb3Qg
PSBob3N0LndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKKwordmFyIHNoYWRvd0NoaWxkMSA9IGNy
ZWF0ZURpdldpdGhJZCgnY2hpbGQxJyk7Cit2YXIgc2hhZG93Q2hpbGQyID0gY3JlYXRlRGl2V2l0
aElkKCdjaGlsZDInKTsKK3ZhciBob3N0Q2hpbGQxID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDMn
KTsKK3ZhciBob3N0Q2hpbGQyID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDQnKTsKKworaG9zdC5h
cHBlbmRDaGlsZChob3N0Q2hpbGQxKTsKK2hvc3QuYXBwZW5kQ2hpbGQoaG9zdENoaWxkMik7Citz
aGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRvd0NoaWxkMSk7CitzaGFkb3dSb290LmFwcGVuZENo
aWxkKHNoYWRvd0NoaWxkMik7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlk
KCJjaGlsZDEiKScsICdzaGFkb3dDaGlsZDEnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVs
ZW1lbnRCeUlkKCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDInKTsKK3Nob3VsZEJlKCdzaGFkb3dS
b290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKScsICdudWxsJyk7CitzaG91bGRCZSgnc2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IiknLCAnbnVsbCcpOworCitzaG91bGRCZSgnZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsKKworZGVidWcoJycpOworZGVi
dWcoJ0luc2VydCBlbGVtZW50cyBoYXZpbmcgdGhlIHNhbWUgaWQnKTsKKwordmFyIHNoYWRvd0No
aWxkMl8yID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDInKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hp
bGQoc2hhZG93Q2hpbGQyXzIpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyJyk7CisKK3ZhciBzaGFkb3dDaGlsZDJfMyA9IGNy
ZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7CitzaGFkb3dSb290Lmluc2VydEJlZm9yZShzaGFkb3dD
aGlsZDJfMywgc2hhZG93Um9vdC5maXJzdENoaWxkKTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3Qu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMl8zJyk7CisKK2RlYnVnKCcn
KTsKK2RlYnVnKCdNYWtlIHRoZSBob3N0IGluIGRvY3VtZW50Jyk7Cit3cmFwcGVyLmFwcGVuZENo
aWxkKGhvc3QpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQx
IiknLCAnc2hhZG93Q2hpbGQxJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyXzMnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDMiKScsICdudWxsJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQ0IiknLCAnbnVsbCcpOworCitzaG91bGRCZSgnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDMiKScsICdjaGlsZDMnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQ0IiknLCAnY2hpbGQ0Jyk7CisKK2RlYnVnKCcnKTsKK2RlYnVn
KCdBZGQgYSBjaGlsZCBhbmQgbWFrZSB0aGUgaG9zdCBub3QgaW4gZG9jdW1lbnQnKTsKK3ZhciBz
aGFkb3dDaGlsZDUgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkNScpOworc2hhZG93Um9vdC5hcHBl
bmRDaGlsZChzaGFkb3dDaGlsZDUpOword3JhcHBlci5yZW1vdmVDaGlsZChob3N0KTsKKworc2hv
dWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNSIpJywgJ3NoYWRvd0NoaWxk
NScpOworCitkZWJ1ZygnJyk7Cit3cmFwcGVyLmlubmVySFRNTCA9ICIiOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179193</attachid>
            <date>2012-12-12 21:04:45 -0800</date>
            <delta_ts>2012-12-12 22:59:22 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-87815-20121213140206.patch</filename>
            <type>text/plain</type>
            <size>24686</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5NjEyZDNkOWU4ZTdl
MmEwOTRmMTc3OWJjNDZjYWQxMWExMjYzMS4uOTk4MjQ1Njk5NThlNGM1ZDEyMTU3M2E2MGEwNGZh
ZTRiMjBhYTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTEyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFs
ZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5o
dG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJ
bnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3Zl
ZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oOgorICAgICAgICAoQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZp
ZXIpOgorICAgICAgICAoQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5v
dGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyOjpub3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVt
b3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkp
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
Omluc2VydGVkSW50byk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnVwZGF0ZUlkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omluc2VydGVkSW50byk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVkRnJvbSk6CisgICAgICAgICogZG9tL05vZGUuaDoK
KyAgICAgICAgKE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJblNoYWRvd1RyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJblRyZWVTY29wZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXRUcmVlU2NvcGVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpj
bGVhclRyZWVTY29wZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEluRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJJbkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnNldEluU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpjbGVhckluU2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKwog
MjAxMi0xMi0xMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVHJ5IHRvIGZpeCB0aGUgR1RLKyBkZWJ1ZyBidWxpZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggNTlkYWM3NDQ0NmZlMmU0ZDAx
ODY0ZjMzMDZhNjU4MjY4ZTZjZmIxZi4uNmM2MzBkZDRlNzU0ZjYyM2ZkZmQwOWVmODM4MzY3N2Fm
YTdiZGY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBD
aGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b0Rv
Y3VtZW50KENvbnRhaW5lck5vZGUqIG5vZGUpCit2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlm
aWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVyTm9kZSog
bm9kZSwgTm9kZTo6VHJlZVNjb3BlVHlwZXMgdHlwZXMpCiB7CiAgICAgQ2hpbGROb2Rlc0xhenlT
bmFwc2hvdCBzbmFwc2hvdChub2RlKTsKICAgICB3aGlsZSAoTm9kZSogY2hpbGQgPSBzbmFwc2hv
dC5uZXh0Tm9kZSgpKSB7CkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9u
Tm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJO
CiAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRy
ZW4gdGhhdCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1l
bnQgYmVjYXVzZSB0aGV5IGhhdmVuJ3QuCiAgICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkg
JiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAgICAgICAgICAgbm90aWZ5Tm9kZUlu
c2VydGVkSW50b0RvY3VtZW50KGNoaWxkKTsKKyAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRl
ZEludG9Eb2N1bWVudChjaGlsZCwgdHlwZXMpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNF
bGVtZW50Tm9kZSgpKQpAQCAtNTAsMjMgKzUwLDIzIEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9u
Tm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJO
CiAgICAgICAgIFNoYWRvd1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93KTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByb290cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG5v
ZGUtPmluRG9jdW1lbnQoKSAmJiByb290c1tpXS0+aG9zdCgpID09IG5vZGUpCi0gICAgICAgICAg
ICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KHJvb3RzW2ldLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQocm9vdHNbaV0uZ2V0
KCksIHN0YXRpY19jYXN0PE5vZGU6OlRyZWVTY29wZVR5cGVzPih0eXBlcyB8IE5vZGU6OkluU2hh
ZG93VHJlZSkpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENoaWxkTm9kZUluc2VydGlv
bk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJOb2Rl
KiBub2RlKQordm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFu
dEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSogbm9kZSwgTm9kZTo6VHJlZVNjb3BlVHlw
ZXMgdHlwZXMpCiB7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxk
LT5pc0NvbnRhaW5lck5vZGUoKSkKLSAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9U
cmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCkpOworICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2Vy
dGVkSW50b1RyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSwgdHlwZXMpOwogICAgIH0KIAogICAg
IGZvciAoU2hhZG93Um9vdCogcm9vdCA9IG5vZGUtPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290
OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCi0gICAgICAgIG5vdGlmeU5vZGVJbnNl
cnRlZEludG9UcmVlKHJvb3QpOworICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShy
b290LCBzdGF0aWNfY2FzdDxOb2RlOjpUcmVlU2NvcGVUeXBlcz4odHlwZXMgfCBOb2RlOjpJblNo
YWRvd1RyZWUpKTsKIH0KIAotdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURl
c2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUqIG5vZGUpCit2b2lkIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1l
bnQoQ29udGFpbmVyTm9kZSogbm9kZSwgTm9kZTo6VHJlZVNjb3BlVHlwZXMgdHlwZXMpCiB7CiAg
ICAgQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCBzbmFwc2hvdChub2RlKTsKICAgICB3aGlsZSAoTm9k
ZSogY2hpbGQgPSBzbmFwc2hvdC5uZXh0Tm9kZSgpKSB7CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1
bWVudChDb250YWluZXJOb2RlCiAgICAgICAgIC8vIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVz
dCBvZiBvdXIgY2hpbGRyZW4gdGhhdCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gcmVtb3ZlZCBm
cm9tIHRoZSBkb2N1bWVudCBiZWNhdXNlIHRoZXkgaGF2ZW4ndC4KICAgICAgICAgaWYgKCFub2Rl
LT5pbkRvY3VtZW50KCkgJiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAgICAgICAg
ICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGQpOworICAgICAgICAgICAgbm90
aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGQsIHR5cGVzKTsKICAgICB9CiAKICAgICBp
ZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKQEAgLTgzLDI5ICs4MywzMyBAQCB2b2lkIENoaWxk
Tm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQo
Q29udGFpbmVyTm9kZQogICAgIGlmIChub2RlLT5kb2N1bWVudCgpLT5jc3NUYXJnZXQoKSA9PSBu
b2RlKQogICAgICAgICBub2RlLT5kb2N1bWVudCgpLT5zZXRDU1NUYXJnZXQoMCk7CiAKKyAgICBB
U1NFUlQoKHR5cGVzICYgfk5vZGU6OkluU2hhZG93VHJlZSkgPT0gTm9kZTo6SW5Eb2N1bWVudCk7
CisKICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFk
b3coKSkgewogICAgICAgICBTaGFkb3dSb290VmVjdG9yIHJvb3RzKHNoYWRvdyk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IGlmICghbm9kZS0+aW5Eb2N1bWVudCgpICYmIHJvb3RzW2ldLT5ob3N0KCkgPT0gbm9kZSkKLSAg
ICAgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChyb290c1tpXS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQocm9vdHNb
aV0uZ2V0KCksIE5vZGU6OkluRG9jdW1lbnQpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lk
IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJl
ZShDb250YWluZXJOb2RlKiBub2RlKQordm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5v
dGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSogbm9kZSwgTm9kZTo6
VHJlZVNjb3BlVHlwZXMgdHlwZXMpCiB7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgaWYgKGNoaWxkLT5pc0NvbnRhaW5lck5vZGUoKSkKLSAgICAgICAgICAgIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbVRyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7CisgICAgICAgICAgICBub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCksIHR5cGVzKTsKICAg
ICB9CiAKICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgQVNTRVJUKCh0eXBlcyAmIH5Ob2RlOjpJblNoYWRvd1RyZWUpID09IE5vZGU6Ok91dE9m
VHJlZVNjb3BlKTsKKwogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQo
bm9kZSktPnNoYWRvdygpKSB7CiAgICAgICAgIFNoYWRvd1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290cy5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUocm9vdHNbaV0uZ2V0KCkpOworICAg
ICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShyb290c1tpXS5nZXQoKSwgTm9kZTo6
T3V0T2ZUcmVlU2NvcGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCBkZGI0MDBmMTc1M2YzMGU2NGZiYTY0NTBlZmE0Yzlm
MWYzOWY2MzZiLi5lMmY2ZmUwNjkyMDc0MTY3MmY1M2ZlMzJlZmIxMjljNzM3YThiYTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMzgsMTQg
KzM4LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBub3RpZnlJbnNlcnRl
ZEludG9Eb2N1bWVudChOb2RlKik7CiAgICAgdm9pZCBub3RpZnkoTm9kZSopOwogCiBwcml2YXRl
OgotICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50KENvbnRhaW5l
ck5vZGUqKTsKLSAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVlKENvbnRh
aW5lck5vZGUqKTsKLSAgICB2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChOb2Rl
Kik7Ci0gICAgdm9pZCBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJOb2RlKik7
CisgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVy
Tm9kZSosIE5vZGU6OlRyZWVTY29wZVR5cGVzKTsKKyAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRJ
bnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqLCBOb2RlOjpUcmVlU2NvcGVUeXBlcyk7Cisg
ICAgdm9pZCBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSosIE5vZGU6OlRyZWVT
Y29wZVR5cGVzKTsKKyAgICB2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5l
ck5vZGUqLCBOb2RlOjpUcmVlU2NvcGVUeXBlcyk7CiAKICAgICBDb250YWluZXJOb2RlKiBtX2lu
c2VydGlvblBvaW50OwogICAgIFZlY3RvcjwgUmVmUHRyPE5vZGU+ID4gbV9wb3N0SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uVGFyZ2V0czsKQEAgLTYxLDEwICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBub3RpZnkoTm9kZSopOwogCiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudFJl
bW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSopOwotICAgIHZvaWQgbm90aWZ5RGVzY2Vu
ZGFudFJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKik7Ci0gICAgdm9pZCBub3RpZnlOb2Rl
UmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlKik7Ci0gICAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZy
b21UcmVlKENvbnRhaW5lck5vZGUqKTsKKyAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVk
RnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUqLCBOb2RlOjpUcmVlU2NvcGVUeXBlcyk7CisgICAg
dm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqLCBOb2Rl
OjpUcmVlU2NvcGVUeXBlcyk7CisgICAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVu
dChOb2RlKiwgTm9kZTo6VHJlZVNjb3BlVHlwZXMpOworICAgIHZvaWQgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiwgTm9kZTo6VHJlZVNjb3BlVHlwZXMpOwogCiAgICAg
Q29udGFpbmVyTm9kZSogbV9pbnNlcnRpb25Qb2ludDsKIH07CkBAIC0xOTEsMjkgKzE5MCwyNSBA
QCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFByaXZhdGUKIAotaW5saW5l
IHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9E
b2N1bWVudChOb2RlKiBub2RlKQoraW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZp
ZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChOb2RlKiBub2RlLCBOb2RlOjpUcmVl
U2NvcGVUeXBlcyB0eXBlcykKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1
bWVudCgpKTsKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdChub2RlKTsKKyAgICBub2RlLT5zZXRU
cmVlU2NvcGVGbGFncyh0eXBlcyk7CiAgICAgaWYgKE5vZGU6Okluc2VydGlvblNob3VsZENhbGxE
aWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRlZEludG8obV9pbnNlcnRp
b25Qb2ludCkpCiAgICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMuYXBw
ZW5kKG5vZGUpOwogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKLSAgICAgICAgbm90
aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50KHRvQ29udGFpbmVyTm9kZShub2RlKSk7
CisgICAgICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudCh0b0NvbnRhaW5l
ck5vZGUobm9kZSksIHR5cGVzKTsKIH0KIAotaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9u
Tm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqIG5vZGUp
CitpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2Vy
dGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSogbm9kZSwgTm9kZTo6VHJlZVNjb3BlVHlwZXMgdHlw
ZXMpCiB7CiAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRj
aDsKICAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7Ci0KKyAgICBu
b2RlLT5zZXRUcmVlU2NvcGVGbGFncyh0eXBlcyk7CiAgICAgaWYgKE5vZGU6Okluc2VydGlvblNo
b3VsZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRlZEludG8o
bV9pbnNlcnRpb25Qb2ludCkpCiAgICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRh
cmdldHMuYXBwZW5kKG5vZGUpOwotICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVl
KG5vZGUpOwotfQotCi1pbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90
aWZ5SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9kZSkKLXsKLSAgICBub3RpZnlOb2RlSW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQobm9kZSk7CisgICAgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50
b1RyZWUobm9kZSwgdHlwZXMpOwogfQogCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25O
b3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCkBAIC0yMjgsNDAgKzIyMyw0NSBAQCBpbmxpbmUg
dm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCiAgICAg
UmVmUHRyPE5vZGU+IHByb3RlY3ROb2RlKG5vZGUpOwogCiAgICAgaWYgKG1faW5zZXJ0aW9uUG9p
bnQtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50
KG5vZGUpOworICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQobm9kZSwgbV9p
bnNlcnRpb25Qb2ludC0+aXNJblNoYWRvd1RyZWUoKSA/IE5vZGU6OkluRG9jdW1lbnRBbmRTaGFk
b3dUcmVlIDogTm9kZTo6SW5Eb2N1bWVudCk7CiAgICAgZWxzZSBpZiAobm9kZS0+aXNDb250YWlu
ZXJOb2RlKCkpCi0gICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKHRvQ29udGFpbmVy
Tm9kZShub2RlKSk7CisgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKHRvQ29udGFp
bmVyTm9kZShub2RlKSwgbV9pbnNlcnRpb25Qb2ludC0+aXNJblNoYWRvd1RyZWUoKSA/IE5vZGU6
OkluU2hhZG93VHJlZSA6IE5vZGU6Ok91dE9mVHJlZVNjb3BlKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5zaXplKCk7ICsr
aSkKICAgICAgICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0c1tpXS0+ZGlkTm90
aWZ5U3VidHJlZUluc2VydGlvbnMobV9pbnNlcnRpb25Qb2ludCk7CiB9CiAKIAotaW5saW5lIHZv
aWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVu
dChOb2RlKiBub2RlKQoraW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlKiBub2RlLCBOb2RlOjpUcmVlU2NvcGVUeXBl
cyB0eXBlcykKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsK
KyAgICBBU1NFUlQodHlwZXMgJiBOb2RlOjpJbkRvY3VtZW50KTsKICAgICBub2RlLT5yZW1vdmVk
RnJvbShtX2luc2VydGlvblBvaW50KTsKKyAgICBub2RlLT5jbGVhclRyZWVTY29wZUZsYWdzKHR5
cGVzKTsKIAogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKLSAgICAgICAgbm90aWZ5
RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAg
ICAgICAgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQodG9Db250YWluZXJOb2Rl
KG5vZGUpLCB0eXBlcyk7CiB9CiAKLWlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmll
cjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBub2RlKQoraW5saW5l
IHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVl
KENvbnRhaW5lck5vZGUqIG5vZGUsIE5vZGU6OlRyZWVTY29wZVR5cGVzIHR5cGVzKQogewogICAg
IE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CiAgICAgQVNT
RVJUKCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOworICAgIEFTU0VSVCghKHR5cGVz
ICYgTm9kZTo6SW5Eb2N1bWVudCkpOwogCiAgICAgbm9kZS0+cmVtb3ZlZEZyb20obV9pbnNlcnRp
b25Qb2ludCk7Ci0gICAgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZShub2RlKTsKKyAg
ICBub2RlLT5jbGVhclRyZWVTY29wZUZsYWdzKHR5cGVzKTsKKyAgICBub3RpZnlEZXNjZW5kYW50
UmVtb3ZlZEZyb21UcmVlKG5vZGUsIHR5cGVzKTsKIH0KIAogaW5saW5lIHZvaWQgQ2hpbGROb2Rl
UmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSkKIHsKKyAgICBib29sIHJlbW92ZXNT
aGFkb3cgPSBtX2luc2VydGlvblBvaW50LT5pc0luU2hhZG93VHJlZSgpICYmIChtX2luc2VydGlv
blBvaW50LT50cmVlU2NvcGUoKSA9PSBub2RlLT50cmVlU2NvcGUoKSk7CiAgICAgaWYgKG5vZGUt
PmluRG9jdW1lbnQoKSkgewotICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChu
b2RlKTsKKyAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQobm9kZSwgcmVtb3Zl
c1NoYWRvdyA/IE5vZGU6OkluRG9jdW1lbnRBbmRTaGFkb3dUcmVlIDogTm9kZTo6SW5Eb2N1bWVu
dCk7CiAgICAgICAgIG5vZGUtPmRvY3VtZW50KCktPm5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElm
TmVlZGVkKCk7CiAgICAgfSBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKLSAgICAg
ICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAg
ICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShub2RlKSwgcmVt
b3Zlc1NoYWRvdyA/IE5vZGU6OkluU2hhZG93VHJlZSA6IE5vZGU6Ok91dE9mVHJlZVNjb3BlKTsK
IH0KIAogY2xhc3MgQ2hpbGRGcmFtZURpc2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggNDQ5OGQzMjlhNWI5OWU4OGZjOWQxNDdiOTUxN2QzYmIwMjkwMGJhZi4uZTQ0YWI1NGU3
YmY2YThiN2ZiNjQzYzVhOGM2MWMwM2M4NzkzMDMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTA5OCw3ICsxMDk4LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBF
bGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW8KICAgICAgICAgc2V0
Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJp
ZXModHJ1ZSk7CiAjZW5kaWYKIAotICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQo
KSkKKyAgICBpZiAoIWluc2VydGlvblBvaW50LT5pc0luVHJlZVNjb3BlKCkpCiAgICAgICAgIHJl
dHVybiBJbnNlcnRpb25Eb25lOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0g
Z2V0SWRBdHRyaWJ1dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDg0MzUyYzNkMjE2NGQ3NGI1
M2YyNGY0YjM3N2ZhMGJlNjNkYWY3M2MuLjYwNTljNDk1OWU4Mzg3NWZiZTVlMWY5NDFjOTQxMmUz
YTdmMzFmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjc0LDcgKzY3NCw3IEBAIGlubGluZSB2
b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmCiAKIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKGNvbnN0IEF0
b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCiB7Ci0gICAgaWYg
KCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFpc0luVHJlZVNjb3BlKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChvbGRJZCA9PSBuZXdJZCkKQEAgLTY4NSw3ICs2ODUsNyBAQCBpbmxpbmUg
dm9pZCBFbGVtZW50Ojp1cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5ldwogCiBpbmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZChUcmVlU2Nv
cGUqIHNjb3BlLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5ld0lkKQogewotICAgIEFTU0VSVChpbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChpc0luVHJl
ZVNjb3BlKCkpOwogICAgIEFTU0VSVChvbGRJZCAhPSBuZXdJZCk7CiAKICAgICBpZiAoIW9sZElk
LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3NjUzMDJhZTEzNWQwNWMyMmQ2NjQ0OWMy
ZGYwNDUwOThmMDNhOTY0Li5jOGM4OWU2MTdkY2JiOTc5NGMwNmMyY2RjZDAwMDI4M2JhM2FlNWJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMjcwLDEwICsxMjcwLDEyIEBAIENvbnRhaW5lck5vZGUq
IE5vZGU6Om5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBh
cmVudCAmJiAhcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHBhcmVudCA6IDA7CiB9CiAKKyNpZiAw
CiBib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJlZVNj
b3BlKCkgIT0gZG9jdW1lbnQoKTsKIH0KKyNlbmRpZgogCiBFbGVtZW50KiBOb2RlOjpwYXJlbnRP
ckhvc3RFbGVtZW50KCkgY29uc3QKIHsKQEAgLTIwOTQsMTYgKzIwOTYsMjAgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogTm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiBOb2Rl
OjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IE5vZGU6Omluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQtPmlu
RG9jdW1lbnQoKSB8fCBpc0NvbnRhaW5lck5vZGUoKSk7CisjaWYgMAogICAgIGlmIChpbnNlcnRp
b25Qb2ludC0+aW5Eb2N1bWVudCgpKQogICAgICAgICBzZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsK
KyNlbmRpZgogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCiB2b2lkIE5vZGU6OnJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEFTU0VSVChpbnNl
cnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKKyNpZiAwCiAg
ICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCiAgICAgICAgIGNsZWFyRmxhZyhJ
bkRvY3VtZW50RmxhZyk7CisjZW5kaWYKIH0KIAogdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1
bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MDUzOWJiOWQwZjMz
ZjZmNzM2MWVkODMzYzBiY2ZhZjQ2MmM2ZTQzLi5hODE4YjkyZmU0OTU5Y2I0MGZkNTQ5MzM3ZjBl
NGRmZDcwOTViOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBSZXR1cm5zIDAsIGEgY2hpbGQgb2YgU2hhZG93Um9vdCwgb3IgYSBsZWdhY3kgc2hh
ZG93IHJvb3QuCiAgICAgTm9kZSogbm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKTsKLSAg
ICBib29sIGlzSW5TaGFkb3dUcmVlKCkgY29uc3Q7CisKICAgICAvLyBOb2RlJ3MgcGFyZW50LCBz
aGFkb3cgdHJlZSBob3N0LgogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9ySG9zdE5vZGUoKSBj
b25zdDsKICAgICBFbGVtZW50KiBwYXJlbnRPckhvc3RFbGVtZW50KCkgY29uc3Q7CkBAIC00Njgs
NiArNDY4LDggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0Rmxh
ZyhJbkRvY3VtZW50RmxhZykpOwogICAgICAgICByZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50Rmxh
Zyk7CiAgICAgfQorICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKElzSW5TaGFkb3dUcmVlRmxhZyk7IH0KKyAgICBib29sIGlzSW5UcmVlU2NvcGUoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKHN0YXRpY19jYXN0PE5vZGVGbGFncz4oSW5Eb2N1bWVudEZsYWcg
fCBJc0luU2hhZG93VHJlZUZsYWcpKTsgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRU5USVRZX1JFRkVSRU5DRV9OT0RFOyB9CiAgICAg
Ym9vbCBpc0RvY3VtZW50VHlwZU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERP
Q1VNRU5UX1RZUEVfTk9ERTsgfQpAQCAtNzA0LDE3ICs3MDYsMzcgQEAgcHJpdmF0ZToKICAgICAg
ICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMjMsCiAgICAgICAgIFY4Q29sbGVjdGFi
bGVEdXJpbmdNaW5vckdDRmxhZyA9IDEgPDwgMjQsCiAgICAgICAgIElzSW5zZXJ0aW9uUG9pbnRG
bGFnID0gMSA8PCAyNSwKKyAgICAgICAgSXNJblNoYWRvd1RyZWVGbGFnID0gMSA8PCAyNiwKIAog
ICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcK
ICAgICB9OwogCi0gICAgLy8gNiBiaXRzIHJlbWFpbmluZworICAgIC8vIDUgYml0cyByZW1haW5p
bmcKIAogICAgIGJvb2wgZ2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9u
b2RlRmxhZ3MgJiBtYXNrOyB9CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZsYWdzIG1h
c2spIGNvbnN0IHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAoLShpbnQz
Ml90KWYgJiBtYXNrKTsgfSAKICAgICB2b2lkIHNldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0
IHsgbV9ub2RlRmxhZ3MgfD0gbWFzazsgfSAKICAgICB2b2lkIGNsZWFyRmxhZyhOb2RlRmxhZ3Mg
bWFzaykgY29uc3QgeyBtX25vZGVGbGFncyAmPSB+bWFzazsgfSAKIAorcHVibGljOgorICAgIGVu
dW0gVHJlZVNjb3BlVHlwZXMgeworICAgICAgICBPdXRPZlRyZWVTY29wZSA9IDAsCisgICAgICAg
IEluRG9jdW1lbnQgPSBJbkRvY3VtZW50RmxhZywKKyAgICAgICAgSW5TaGFkb3dUcmVlID0gSXNJ
blNoYWRvd1RyZWVGbGFnLAorICAgICAgICBJbkRvY3VtZW50QW5kU2hhZG93VHJlZSA9IEluRG9j
dW1lbnRGbGFnIHwgSXNJblNoYWRvd1RyZWVGbGFnCisgICAgfTsKKworICAgIHZvaWQgc2V0VHJl
ZVNjb3BlRmxhZ3MoVHJlZVNjb3BlVHlwZXMgbWFzaykgeyBzZXRGbGFnKHN0YXRpY19jYXN0PE5v
ZGVGbGFncz4obWFzaykpOyB9CisgICAgdm9pZCBjbGVhclRyZWVTY29wZUZsYWdzKFRyZWVTY29w
ZVR5cGVzIG1hc2spIHsgY2xlYXJGbGFnKHN0YXRpY19jYXN0PE5vZGVGbGFncz4obWFzaykpOyB9
CisKKyNpZiAwCisgICAgdm9pZCBzZXRJbkRvY3VtZW50KCkgeyBzZXRGbGFnKEluRG9jdW1lbnRG
bGFnKTsgfQorICAgIHZvaWQgY2xlYXJJbkRvY3VtZW50KCkgeyBjbGVhckZsYWcoSW5Eb2N1bWVu
dEZsYWcpOyB9CisKKyAgICB2b2lkIHNldEluU2hhZG93VHJlZSgpIHsgc2V0RmxhZyhJc0luU2hh
ZG93VHJlZUZsYWcpOyB9CisgICAgdm9pZCBjbGVhckluU2hhZG93VHJlZSgpIHsgY2xlYXJGbGFn
KElzSW5TaGFkb3dUcmVlRmxhZyk7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBD
b25zdHJ1Y3Rpb25UeXBlIHsgCiAgICAgICAgIENyZWF0ZU90aGVyID0gRGVmYXVsdE5vZGVGbGFn
cywKQEAgLTcyMiw3ICs3NDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENyZWF0ZUNvbnRhaW5l
ciA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAgICBDcmVhdGVF
bGVtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNFbGVtZW50RmxhZywgCiAgICAgICAgIENyZWF0
ZVBzZXVkb0VsZW1lbnQgPSAgQ3JlYXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFnLAotICAgICAg
ICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50
RmxhZywKKyAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9j
dW1lbnRGcmFnbWVudEZsYWcgfCBJc0luU2hhZG93VHJlZUZsYWcsCiAgICAgICAgIENyZWF0ZURv
Y3VtZW50RnJhZ21lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFn
LAogICAgICAgICBDcmVhdGVTdHlsZWRFbGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU3R5bGVk
RWxlbWVudEZsYWcsIAogICAgICAgICBDcmVhdGVIVE1MRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVs
ZW1lbnQgfCBJc0hUTUxGbGFnLCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCmluZGV4IGFjYTAzNjRjMjQ5YTdhYjFjNzNmNzJmODFlNzNjN2FiY2E1MDE4NGIuLjE0ZDdj
YWFlZWJjODQzNjdlNmE0NDJhZTUwNzBkNmEyNmQ0ZDQ4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTQ4Myw3ICsxNDgzLDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAg
ICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAmJiAhZm9ybSgpKQogICAgICAgICBy
ZW1vdmVGcm9tUmFkaW9CdXR0b25Hcm91cCgpOwogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50
KCkpOworICAgIC8vIEFTU0VSVCghaW5Eb2N1bWVudCgpKTsKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKICAgICByZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggY2U0NTNkYzQzYmNmOGU5YTQ5Mjc4MDNhYjYzMGNhZDg3MTUwOTJiYy4uNTlhOGYy
OGZhM2U5MmFiZWYxYTZkMzRkN2IzMTZiM2ZmMzRkZmYyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDEyLTEyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbU2hhZG93IERPTV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3
b3JrIG91dHNpZGUgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg3ODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMg
YXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25z
IGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5
aWQtaW4tb3JwaGFuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0xMSAg
RW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
U3VicGl4ZWwgbGF5b3V0KTogR3JheSB2ZXJ0aWNhbCBsaW5lcyBhcHBlYXIgd2hlbiBtb3Zpbmcg
aW5zZXJ0aW9uIHBvaW50IHRvIHJpZ2h0IG9uIE1hYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMGUyMjJjODMwNTA0ZjgxY2RhNmUxNjgyYzM1NTY0ZjgyMWZk
MTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVs
ZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdHMg
dG8gZW5zdXJlIFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQgd29ya3MgZXZlbiBpZiBhIFNoYWRv
d1Jvb3QgaXMgb3JwaGFuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
aGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKSBpcyBzaGFkb3dDaGlsZDEKK1BBU1Mg
c2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgc2hhZG93Q2hpbGQyCitQQVNT
IHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIG51bGwKK1BBU1Mgc2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQxIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2hpbGQyIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQz
IikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVs
bAorCitJbnNlcnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1lIGlkCitQQVNTIHNoYWRvd1Jvb3Qu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxkMgorUEFTUyBzaGFkb3dSb290
LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMworCitNYWtlIHRoZSBo
b3N0IGluIGRvY3VtZW50CitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIp
IGlzIHNoYWRvd0NoaWxkMQorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIi
KSBpcyBzaGFkb3dDaGlsZDJfMworUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGls
ZDMiKSBpcyBudWxsCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpIGlz
IG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIG51bGwKK1BB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIG51bGwKK1BBU1MgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIGNoaWxkMworUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgY2hpbGQ0CisKK0FkZCBhIGNoaWxkIGFuZCBtYWtlIHRo
ZSBob3N0IG5vdCBpbiBkb2N1bWVudAorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJj
aGlsZDUiKSBpcyBzaGFkb3dDaGlsZDUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjA0Y2Qx
ZDI1YzVmM2RjNzcyZGIwM2UxMWRhNTM0M2Q5NThmN2FiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCkBA
IC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9IndyYXBw
ZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxzY3JpcHQ+CitmdW5jdGlv
biBjcmVhdGVEaXZXaXRoSWQoaWQpCit7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIGRpdi5pZCA9IGlkOworCisgICAgcmV0dXJuIGRpdjsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3VyZSBTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkIHdv
cmtzIGV2ZW4gaWYgYSBTaGFkb3dSb290IGlzIG9ycGhhbi4iKTsKKwordmFyIGhvc3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3ZhciBzaGFkb3dSb290ID0gaG9zdC53ZWJraXRD
cmVhdGVTaGFkb3dSb290KCk7CisKK3ZhciBzaGFkb3dDaGlsZDEgPSBjcmVhdGVEaXZXaXRoSWQo
J2NoaWxkMScpOwordmFyIHNoYWRvd0NoaWxkMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7
Cit2YXIgaG9zdENoaWxkMSA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQzJyk7Cit2YXIgaG9zdENo
aWxkMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQ0Jyk7CisKK2hvc3QuYXBwZW5kQ2hpbGQoaG9z
dENoaWxkMSk7Citob3N0LmFwcGVuZENoaWxkKGhvc3RDaGlsZDIpOworc2hhZG93Um9vdC5hcHBl
bmRDaGlsZChzaGFkb3dDaGlsZDEpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGls
ZDIpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIiknLCAn
c2hhZG93Q2hpbGQxJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hp
bGQyIiknLCAnc2hhZG93Q2hpbGQyJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsKKworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjaGlsZDEiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkMiIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDQiKScsICdudWxsJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdJbnNlcnQgZWxl
bWVudHMgaGF2aW5nIHRoZSBzYW1lIGlkJyk7CisKK3ZhciBzaGFkb3dDaGlsZDJfMiA9IGNyZWF0
ZURpdldpdGhJZCgnY2hpbGQyJyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRvd0NoaWxk
Ml8yKTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywg
J3NoYWRvd0NoaWxkMicpOworCit2YXIgc2hhZG93Q2hpbGQyXzMgPSBjcmVhdGVEaXZXaXRoSWQo
J2NoaWxkMicpOworc2hhZG93Um9vdC5pbnNlcnRCZWZvcmUoc2hhZG93Q2hpbGQyXzMsIHNoYWRv
d1Jvb3QuZmlyc3RDaGlsZCk7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlk
KCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDJfMycpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnTWFr
ZSB0aGUgaG9zdCBpbiBkb2N1bWVudCcpOword3JhcHBlci5hcHBlbmRDaGlsZChob3N0KTsKKwor
c2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ3NoYWRvd0No
aWxkMScpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywg
J3NoYWRvd0NoaWxkMl8zJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkNCIpJywgJ251bGwnKTsKKworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjaGlsZDEiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkMiIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQzIiknLCAnY2hpbGQzJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkNCIpJywgJ2NoaWxkNCcpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnQWRkIGEgY2hpbGQg
YW5kIG1ha2UgdGhlIGhvc3Qgbm90IGluIGRvY3VtZW50Jyk7Cit2YXIgc2hhZG93Q2hpbGQ1ID0g
Y3JlYXRlRGl2V2l0aElkKCdjaGlsZDUnKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93
Q2hpbGQ1KTsKK3dyYXBwZXIucmVtb3ZlQ2hpbGQoaG9zdCk7CisKK3Nob3VsZEJlKCdzaGFkb3dS
b290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDUiKScsICdzaGFkb3dDaGlsZDUnKTsKKworZGVidWco
JycpOword3JhcHBlci5pbm5lckhUTUwgPSAiIjsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179204</attachid>
            <date>2012-12-12 22:59:27 -0800</date>
            <delta_ts>2012-12-13 02:14:32 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-87815-20121213155647.patch</filename>
            <type>text/plain</type>
            <size>25553</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5NjEyZDNkOWU4ZTdl
MmEwOTRmMTc3OWJjNDZjYWQxMWExMjYzMS4uOTk4MjQ1Njk5NThlNGM1ZDEyMTU3M2E2MGEwNGZh
ZTRiMjBhYTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTEyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFs
ZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5o
dG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJ
bnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3Zl
ZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oOgorICAgICAgICAoQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZp
ZXIpOgorICAgICAgICAoQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5v
dGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyOjpub3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVt
b3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkp
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
Omluc2VydGVkSW50byk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnVwZGF0ZUlkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omluc2VydGVkSW50byk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVkRnJvbSk6CisgICAgICAgICogZG9tL05vZGUuaDoK
KyAgICAgICAgKE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJblNoYWRvd1RyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJblRyZWVTY29wZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXRUcmVlU2NvcGVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpj
bGVhclRyZWVTY29wZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEluRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJJbkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnNldEluU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpjbGVhckluU2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKwog
MjAxMi0xMi0xMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVHJ5IHRvIGZpeCB0aGUgR1RLKyBkZWJ1ZyBidWxpZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggNTlkYWM3NDQ0NmZlMmU0ZDAx
ODY0ZjMzMDZhNjU4MjY4ZTZjZmIxZi4uMjAzOWUyNmE1OWUyZWI5MWU1MDIyNGJhMDQyNGUzNmM2
YzA2MTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxh
dGU8Ym9vbCBJc0luU2hhZG93VHJlZT4KIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6
Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOb2RlKiBub2Rl
KQogewogICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3Qgc25hcHNob3Qobm9kZSk7CkBAIC00MCw3
ICs0MSw3IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRh
bnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOCiAgICAgICAgIC8vIHdlIGRvbid0IHdh
bnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4gdGhhdCB0aGV5J3ZlIGJlZW4KICAg
ICAgICAgLy8gaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1lbnQgYmVjYXVzZSB0aGV5IGhhdmVuJ3Qu
CiAgICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkgJiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9
PSBub2RlKQotICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KGNoaWxk
KTsKKyAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudDxJc0luU2hhZG93
VHJlZT4oY2hpbGQpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQpA
QCAtNTAsMjIgKzUxLDM1IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlm
eURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOCiAgICAgICAgIFNoYWRv
d1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByb290cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQo
KSAmJiByb290c1tpXS0+aG9zdCgpID09IG5vZGUpCi0gICAgICAgICAgICAgICAgbm90aWZ5Tm9k
ZUluc2VydGVkSW50b0RvY3VtZW50KHJvb3RzW2ldLmdldCgpKTsKKyAgICAgICAgICAgICAgICBu
b3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ8dHJ1ZT4ocm9vdHNbaV0uZ2V0KCkpOwogICAg
ICAgICB9CiAgICAgfQogfQogCit0ZW1wbGF0ZQordm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3Rp
Zmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50PHRydWU+KENvbnRhaW5l
ck5vZGUqKTsKK3RlbXBsYXRlCit2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3Rp
ZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQ8ZmFsc2U+KENvbnRhaW5lck5vZGUqKTsK
KworCit0ZW1wbGF0ZTxib29sIElzSW5TaGFkb3dUcmVlPgogdm9pZCBDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9k
ZSogbm9kZSkKIHsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQt
PmlzQ29udGFpbmVyTm9kZSgpKQotICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1Ry
ZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7CisgICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0
ZWRJbnRvVHJlZTxJc0luU2hhZG93VHJlZT4odG9Db250YWluZXJOb2RlKGNoaWxkKSk7CiAgICAg
fQogCiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0gbm9kZS0+eW91bmdlc3RTaGFkb3dSb290
KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKLSAgICAgICAgbm90aWZ5
Tm9kZUluc2VydGVkSW50b1RyZWUocm9vdCk7CisgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZElu
dG9UcmVlPHRydWU+KHJvb3QpOwogfQogCit0ZW1wbGF0ZQordm9pZCBDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWU8dHJ1ZT4oQ29udGFp
bmVyTm9kZSopOwordGVtcGxhdGUKK3ZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5v
dGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVlPGZhbHNlPihDb250YWluZXJOb2RlKik7CisK
K3RlbXBsYXRlPGJvb2wgSXNJblNoYWRvd1RyZWU+CiB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3Rp
Zmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSog
bm9kZSkKIHsKICAgICBDaGlsZE5vZGVzTGF6eVNuYXBzaG90IHNuYXBzaG90KG5vZGUpOwpAQCAt
NzQsNyArODgsNyBAQCB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2Vu
ZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZQogICAgICAgICAvLyBkb24ndCB3
YW50IHRvIHRlbGwgdGhlIHJlc3Qgb2Ygb3VyIGNoaWxkcmVuIHRoYXQgdGhleSd2ZSBiZWVuCiAg
ICAgICAgIC8vIHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnQgYmVjYXVzZSB0aGV5IGhhdmVuJ3Qu
CiAgICAgICAgIGlmICghbm9kZS0+aW5Eb2N1bWVudCgpICYmIGNoaWxkLT5wYXJlbnROb2RlKCkg
PT0gbm9kZSkKLSAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KGNoaWxk
KTsKKyAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50PElzSW5TaGFkb3dU
cmVlPihjaGlsZCk7CiAgICAgfQogCiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCkBA
IC04MywzMiArOTcsNDcgQEAgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURl
c2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUKICAgICBpZiAobm9kZS0+
ZG9jdW1lbnQoKS0+Y3NzVGFyZ2V0KCkgPT0gbm9kZSkKICAgICAgICAgbm9kZS0+ZG9jdW1lbnQo
KS0+c2V0Q1NTVGFyZ2V0KDApOwogCisgICAgLy8gQVNTRVJUKCh0eXBlcyAmIH5Ob2RlOjpJblNo
YWRvd1RyZWUpID09IE5vZGU6OkluRG9jdW1lbnQpOworCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cq
IHNoYWRvdyA9IHRvRWxlbWVudChub2RlKS0+c2hhZG93KCkpIHsKICAgICAgICAgU2hhZG93Um9v
dFZlY3RvciByb290cyhzaGFkb3cpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJv
b3RzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIW5vZGUtPmluRG9jdW1lbnQoKSAm
JiByb290c1tpXS0+aG9zdCgpID09IG5vZGUpCi0gICAgICAgICAgICAgICAgbm90aWZ5Tm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnQocm9vdHNbaV0uZ2V0KCkpOworICAgICAgICAgICAgICAgIG5vdGlm
eU5vZGVSZW1vdmVkRnJvbURvY3VtZW50PHRydWU+KHJvb3RzW2ldLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KIH0KIAordGVtcGxhdGUKK3ZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpu
b3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudDx0cnVlPihDb250YWluZXJOb2RlKik7
Cit0ZW1wbGF0ZQordm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRh
bnRSZW1vdmVkRnJvbURvY3VtZW50PGZhbHNlPihDb250YWluZXJOb2RlKik7CisKK3RlbXBsYXRl
PGJvb2wgSXNJblNoYWRvd1RyZWU+CiB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90
aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAg
IGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNDb250YWluZXJOb2Rl
KCkpCi0gICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9k
ZShjaGlsZCkpOworICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZTxJc0luU2hh
ZG93VHJlZT4odG9Db250YWluZXJOb2RlKGNoaWxkKSk7CiAgICAgfQogCiAgICAgaWYgKCFub2Rl
LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEFTU0VSVCgodHlw
ZXMgJiB+Tm9kZTo6SW5TaGFkb3dUcmVlKSA9PSBOb2RlOjpPdXRPZlRyZWVTY29wZSk7CisKICAg
ICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3coKSkg
ewogICAgICAgICBTaGFkb3dSb290VmVjdG9yIHJvb3RzKHNoYWRvdyk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcm9vdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBub3RpZnlO
b2RlUmVtb3ZlZEZyb21UcmVlKHJvb3RzW2ldLmdldCgpKTsKKyAgICAgICAgICAgIG5vdGlmeU5v
ZGVSZW1vdmVkRnJvbVRyZWU8dHJ1ZT4ocm9vdHNbaV0uZ2V0KCkpOwogICAgIH0KIH0KIAordGVt
cGxhdGUKK3ZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVt
b3ZlZEZyb21UcmVlPHRydWU+KENvbnRhaW5lck5vZGUqKTsKK3RlbXBsYXRlCit2b2lkIENoaWxk
Tm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZTxmYWxz
ZT4oQ29udGFpbmVyTm9kZSopOworCiB2b2lkIENoaWxkRnJhbWVEaXNjb25uZWN0b3I6OmNvbGxl
Y3REZXNjZW5kYW50KEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKIHsKICAgICBmb3IgKFNoYWRvd1Jv
b3QqIHJvb3QgPSBzaGFkb3ctPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9v
dC0+b2xkZXJTaGFkb3dSb290KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5oCmluZGV4IGRkYjQwMGYxNzUzZjMwZTY0ZmJhNjQ1MGVmYTRjOWYxZjM5ZjYz
NmIuLjRlODM4ZWE3MzhlMmVkOTQ3OGY3MzUzMWFmMGI5NmIwMDEzZTZmMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0zOCwxNCArMzgsMTMg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIG5vdGlmeUluc2VydGVkSW50b0Rv
Y3VtZW50KE5vZGUqKTsKICAgICB2b2lkIG5vdGlmeShOb2RlKik7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVyTm9kZSop
OwotICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9k
ZSopOwotICAgIHZvaWQgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqKTsKLSAg
ICB2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqKTsKKyAgICB0
ZW1wbGF0ZTxib29sIElzSW5TaGFkb3dUcmVlPiB2b2lkIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRl
ZEludG9Eb2N1bWVudChDb250YWluZXJOb2RlKik7CisgICAgdGVtcGxhdGU8Ym9vbCBJc0luU2hh
ZG93VHJlZT4gdm9pZCBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJO
b2RlKik7ICAgIAorICAgIHRlbXBsYXRlPGJvb2wgSXNJblNoYWRvd1RyZWU+IHZvaWQgbm90aWZ5
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqKTsKKyAgICB0ZW1wbGF0ZTxib29sIElzSW5T
aGFkb3dUcmVlPiB2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUq
KTsKIAogICAgIENvbnRhaW5lck5vZGUqIG1faW5zZXJ0aW9uUG9pbnQ7CiAgICAgVmVjdG9yPCBS
ZWZQdHI8Tm9kZT4gPiBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzOwpAQCAtNjEs
MTAgKzYwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeShOb2RlKik7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJO
b2RlKik7Ci0gICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENvbnRhaW5l
ck5vZGUqKTsKLSAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqKTsK
LSAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSopOworICAg
IHRlbXBsYXRlPGJvb2wgSXNJblNoYWRvd1RyZWU+IHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92
ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSopOworICAgIHRlbXBsYXRlPGJvb2wgSXNJblNo
YWRvd1RyZWU+IHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZShDb250YWluZXJO
b2RlKik7CisgICAgdGVtcGxhdGU8Ym9vbCBJc0luU2hhZG93VHJlZT4gdm9pZCBub3RpZnlOb2Rl
UmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlKik7CisgICAgdGVtcGxhdGU8Ym9vbCBJc0luU2hhZG93
VHJlZT4gdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqKTsKIAog
ICAgIENvbnRhaW5lck5vZGUqIG1faW5zZXJ0aW9uUG9pbnQ7CiB9OwpAQCAtMTkxLDI5ICsxOTAs
MzEgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogCiB9IC8vIG5hbWVzcGFjZSBQcml2YXRlCiAKK3Rl
bXBsYXRlPGJvb2wgSXNJblNoYWRvd1RyZWU+CiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZGUpCiB7
CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CiAgICAgUmVmUHRy
PE5vZGU+IHByb3RlY3Qobm9kZSk7CisgICAgaWYgKElzSW5TaGFkb3dUcmVlKQorICAgICAgICBu
b2RlLT5zZXRUcmVlU2NvcGVGbGFncyhOb2RlOjpJbkRvY3VtZW50QW5kU2hhZG93VHJlZSk7Cisg
ICAgZWxzZQorICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGVGbGFncyhOb2RlOjpJbkRvY3VtZW50
KTsKICAgICBpZiAoTm9kZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbERpZE5vdGlmeVN1YnRyZWVJbnNl
cnRpb25zID09IG5vZGUtPmluc2VydGVkSW50byhtX2luc2VydGlvblBvaW50KSkKICAgICAgICAg
bV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5hcHBlbmQobm9kZSk7CiAgICAgaWYg
KG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQotICAgICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0
ZWRJbnRvRG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICAgICAgbm90aWZ5RGVz
Y2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50PElzSW5TaGFkb3dUcmVlPih0b0NvbnRhaW5lck5v
ZGUobm9kZSkpOwogfQogCit0ZW1wbGF0ZTxib29sIElzSW5TaGFkb3dUcmVlPgogaW5saW5lIHZv
aWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVl
KENvbnRhaW5lck5vZGUqIG5vZGUpCiB7CiAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFz
c2VydE5vRXZlbnREaXNwYXRjaDsKICAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnQtPmluRG9j
dW1lbnQoKSk7Ci0KKyAgICBpZiAoSXNJblNoYWRvd1RyZWUpCisgICAgICAgIG5vZGUtPnNldFRy
ZWVTY29wZUZsYWdzKE5vZGU6OkluU2hhZG93VHJlZSk7CiAgICAgaWYgKE5vZGU6Okluc2VydGlv
blNob3VsZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRlZElu
dG8obV9pbnNlcnRpb25Qb2ludCkpCiAgICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlv
blRhcmdldHMuYXBwZW5kKG5vZGUpOwotICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9U
cmVlKG5vZGUpOwotfQotCi1pbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6
bm90aWZ5SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9kZSkKLXsKLSAgICBub3RpZnlOb2Rl
SW5zZXJ0ZWRJbnRvRG9jdW1lbnQobm9kZSk7CisgICAgbm90aWZ5RGVzY2VuZGFudEluc2VydGVk
SW50b1RyZWU8SXNJblNoYWRvd1RyZWU+KG5vZGUpOwogfQogCiBpbmxpbmUgdm9pZCBDaGlsZE5v
ZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCkBAIC0yMjcsNDEgKzIyOCw2
NSBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KE5vZGUq
IG5vZGUpCiAgICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0RG9jdW1lbnQobm9kZS0+ZG9jdW1l
bnQoKSk7CiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3ROb2RlKG5vZGUpOwogCi0gICAgaWYgKG1f
aW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVk
SW50b0RvY3VtZW50KG5vZGUpOwotICAgIGVsc2UgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgp
KQotICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSh0b0NvbnRhaW5lck5vZGUobm9k
ZSkpOworICAgIGlmIChtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpIHsKKyAgICAgICAg
aWYgKG1faW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgICAgICBub3Rp
ZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ8dHJ1ZT4obm9kZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudDxmYWxzZT4obm9kZSk7Cisg
ICAgfSBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkgeworICAgICAgICBpZiAobV9p
bnNlcnRpb25Qb2ludC0+aXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgICAgIG5vdGlmeU5vZGVJ
bnNlcnRlZEludG9UcmVlPHRydWU+KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlPGZhbHNlPih0b0NvbnRh
aW5lck5vZGUobm9kZSkpOworICAgIH0gICAKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5zaXplKCk7ICsraSkKICAgICAgICAg
bV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0c1tpXS0+ZGlkTm90aWZ5U3VidHJlZUlu
c2VydGlvbnMobV9pbnNlcnRpb25Qb2ludCk7CiB9CiAKLQordGVtcGxhdGU8Ym9vbCBJc0luU2hh
ZG93VHJlZT4KIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tRG9jdW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobV9pbnNlcnRp
b25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKICAgICBub2RlLT5yZW1vdmVkRnJvbShtX2luc2VydGlv
blBvaW50KTsKKyAgICBpZiAoSXNJblNoYWRvd1RyZWUpCisgICAgICAgIG5vZGUtPmNsZWFyVHJl
ZVNjb3BlRmxhZ3MoTm9kZTo6SW5Eb2N1bWVudEFuZFNoYWRvd1RyZWUpOworICAgIGVsc2UKKyAg
ICAgICAgbm9kZS0+Y2xlYXJUcmVlU2NvcGVGbGFncyhOb2RlOjpJbkRvY3VtZW50KTsKIAogICAg
IGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKLSAgICAgICAgbm90aWZ5RGVzY2VuZGFudFJl
bW92ZWRGcm9tRG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICAgICAgbm90aWZ5
RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQ8SXNJblNoYWRvd1RyZWU+KHRvQ29udGFpbmVy
Tm9kZShub2RlKSk7CiB9CiAKK3RlbXBsYXRlPGJvb2wgSXNJblNoYWRvd1RyZWU+CiBpbmxpbmUg
dm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUo
Q29udGFpbmVyTm9kZSogbm9kZSkKIHsKICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNz
ZXJ0Tm9FdmVudERpc3BhdGNoOwogICAgIEFTU0VSVCghbV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1
bWVudCgpKTsKIAogICAgIG5vZGUtPnJlbW92ZWRGcm9tKG1faW5zZXJ0aW9uUG9pbnQpOwotICAg
IG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUobm9kZSk7CisgICAgaWYgKElzSW5TaGFk
b3dUcmVlKQorICAgICAgICBub2RlLT5jbGVhclRyZWVTY29wZUZsYWdzKE5vZGU6OkluU2hhZG93
VHJlZSk7CisKKyAgICBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlPElzSW5TaGFkb3dU
cmVlPihub2RlKTsKIH0KIAogaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpu
b3RpZnkoTm9kZSogbm9kZSkKIHsKKyAgICBib29sIHJlbW92ZXNTaGFkb3cgPSBtX2luc2VydGlv
blBvaW50LT5pc0luU2hhZG93VHJlZSgpICYmIChtX2luc2VydGlvblBvaW50LT50cmVlU2NvcGUo
KSA9PSBub2RlLT50cmVlU2NvcGUoKSk7CiAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkgewot
ICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChub2RlKTsKKyAgICAgICAgaWYg
KHJlbW92ZXNTaGFkb3cpCisgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVu
dDx0cnVlPihub2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tRG9jdW1lbnQ8ZmFsc2U+KG5vZGUpOworICAgICAgICAgICAgCiAgICAgICAgIG5vZGUt
PmRvY3VtZW50KCktPm5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCk7Ci0gICAgfSBl
bHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKLSAgICAgICAgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAgIH0gZWxzZSBpZiAobm9kZS0+
aXNDb250YWluZXJOb2RlKCkpIHsKKyAgICAgICAgaWYgKHJlbW92ZXNTaGFkb3cpCisgICAgICAg
ICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlPHRydWU+KHRvQ29udGFpbmVyTm9kZShub2Rl
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWU8
ZmFsc2U+KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CisgICAgfQogfQogCiBjbGFzcyBDaGlsZEZy
YW1lRGlzY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0NDk4ZDMyOWE1Yjk5
ZTg4ZmM5ZDE0N2I5NTE3ZDNiYjAyOTAwYmFmLi5lNDRhYjU0ZTdiZjZhOGI3ZmI2NDNjNWE4YzYx
YzAzYzg3OTMwMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDk4LDcgKzEwOTgsNyBA
QCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEVsZW1lbnQ6Omluc2VydGVkSW50
byhDb250YWluZXJOb2RlKiBpbnNlcnRpbwogICAgICAgICBzZXRDb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyh0cnVlKTsKICNlbmRpZgog
Ci0gICAgaWYgKCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQorICAgIGlmICghaW5zZXJ0
aW9uUG9pbnQtPmlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7
CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkVmFsdWUgPSBnZXRJZEF0dHJpYnV0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggODQzNTJjM2QyMTY0ZDc0YjUzZjI0ZjRiMzc3ZmEwYmU2M2Rh
ZjczYy4uNjA1OWM0OTU5ZTgzODc1ZmJlNWUxZjk0MWM5NDEyZTNhN2YzMWYxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC02NzQsNyArNjc0LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRl
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKIAog
aW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkKIHsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkKKyAg
ICBpZiAoIWlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG9sZElk
ID09IG5ld0lkKQpAQCAtNjg1LDcgKzY4NSw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0
ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3CiAK
IGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKFRyZWVTY29wZSogc2NvcGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCiB7Ci0gICAgQVNT
RVJUKGluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGlzSW5UcmVlU2NvcGUoKSk7CiAgICAgQVNT
RVJUKG9sZElkICE9IG5ld0lkKTsKIAogICAgIGlmICghb2xkSWQuaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDc2NTMwMmFlMTM1ZDA1YzIyZDY2NDQ5YzJkZjA0NTA5OGYwM2E5NjQuLjNj
ZTU5ODE4ZmE2ZDJjOTYwODZmZTJhMjg5ZTk0ZDJmMzUwNWIxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTEyNzAsMTEgKzEyNzAsNiBAQCBDb250YWluZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3Vu
ZGFyeVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNT
aGFkb3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQogCi1ib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkgIT0gZG9jdW1lbnQoKTsKLX0KLQog
RWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQ29udGFp
bmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwpAQCAtMjA5NCwxNiArMjA4OSwx
MiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBOb2RlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgTm9kZTo6aW5zZXJ0
ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEFTU0VSVChpbnNl
cnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKLSAgICBpZiAo
aW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgc2V0RmxhZyhJbkRvY3VtZW50
RmxhZyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKIHZvaWQgTm9kZTo6cmVtb3Zl
ZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgQVNTRVJUKGluc2Vy
dGlvblBvaW50LT5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwotICAgIGlmIChp
bnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQotICAgICAgICBjbGVhckZsYWcoSW5Eb2N1bWVu
dEZsYWcpOwogfQogCiB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBv
bGREb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDUwNTM5YmI5ZDBmMzNmNmY3MzYxZWQ4MzNjMGJj
ZmFmNDYyYzZlNDMuLmJiYTIwMzA2ZjIxZGE1NmViOWM3MTZjMTgzYmJmYzA0NGQ3ODhkN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtMjY3LDcgKzI2Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMg
MCwgYSBjaGlsZCBvZiBTaGFkb3dSb290LCBvciBhIGxlZ2FjeSBzaGFkb3cgcm9vdC4KICAgICBO
b2RlKiBub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpOwotICAgIGJvb2wgaXNJblNoYWRv
d1RyZWUoKSBjb25zdDsKKwogICAgIC8vIE5vZGUncyBwYXJlbnQsIHNoYWRvdyB0cmVlIGhvc3Qu
CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0OwogICAgIEVsZW1l
bnQqIHBhcmVudE9ySG9zdEVsZW1lbnQoKSBjb25zdDsKQEAgLTQ2OCw2ICs0NjgsOCBAQCBwdWJs
aWM6CiAgICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFn
KSk7CiAgICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CisgICAg
Ym9vbCBpc0luU2hhZG93VHJlZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNJblNoYWRvd1Ry
ZWVGbGFnKTsgfQorICAgIGJvb2wgaXNJblRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoc3RhdGljX2Nhc3Q8Tm9kZUZsYWdzPihJbkRvY3VtZW50RmxhZyB8IElzSW5TaGFkb3dUcmVl
RmxhZykpOyB9CiAKICAgICBib29sIGlzUmVhZE9ubHlOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9k
ZVR5cGUoKSA9PSBFTlRJVFlfUkVGRVJFTkNFX05PREU7IH0KICAgICBib29sIGlzRG9jdW1lbnRU
eXBlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RF
OyB9CkBAIC03MDQsMTcgKzcwNiwyOSBAQCBwcml2YXRlOgogICAgICAgICBIYXNFdmVudFRhcmdl
dERhdGFGbGFnID0gMSA8PCAyMywKICAgICAgICAgVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0NG
bGFnID0gMSA8PCAyNCwKICAgICAgICAgSXNJbnNlcnRpb25Qb2ludEZsYWcgPSAxIDw8IDI1LAor
ICAgICAgICBJc0luU2hhZG93VHJlZUZsYWcgPSAxIDw8IDI2LAogCiAgICAgICAgIERlZmF1bHRO
b2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07CiAKLSAgICAv
LyA2IGJpdHMgcmVtYWluaW5nCisgICAgLy8gNSBiaXRzIHJlbWFpbmluZwogCiAgICAgYm9vbCBn
ZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7
IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25v
ZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9
IAogICAgIHZvaWQgc2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyB8
PSBtYXNrOyB9IAogICAgIHZvaWQgY2xlYXJGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1f
bm9kZUZsYWdzICY9IH5tYXNrOyB9IAogCitwdWJsaWM6CisgICAgZW51bSBUcmVlU2NvcGVUeXBl
cyB7CisgICAgICAgIE91dE9mVHJlZVNjb3BlID0gMCwKKyAgICAgICAgSW5Eb2N1bWVudCA9IElu
RG9jdW1lbnRGbGFnLAorICAgICAgICBJblNoYWRvd1RyZWUgPSBJc0luU2hhZG93VHJlZUZsYWcs
CisgICAgICAgIEluRG9jdW1lbnRBbmRTaGFkb3dUcmVlID0gSW5Eb2N1bWVudEZsYWcgfCBJc0lu
U2hhZG93VHJlZUZsYWcKKyAgICB9OworCisgICAgdm9pZCBzZXRUcmVlU2NvcGVGbGFncyhUcmVl
U2NvcGVUeXBlcyBtYXNrKSB7IHNldEZsYWcoc3RhdGljX2Nhc3Q8Tm9kZUZsYWdzPihtYXNrKSk7
IH0KKyAgICB2b2lkIGNsZWFyVHJlZVNjb3BlRmxhZ3MoVHJlZVNjb3BlVHlwZXMgbWFzaykgeyBj
bGVhckZsYWcoc3RhdGljX2Nhc3Q8Tm9kZUZsYWdzPihtYXNrKSk7IH0KKwogcHJvdGVjdGVkOgog
ICAgIGVudW0gQ29uc3RydWN0aW9uVHlwZSB7IAogICAgICAgICBDcmVhdGVPdGhlciA9IERlZmF1
bHROb2RlRmxhZ3MsCkBAIC03MjIsNyArNzM2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBDcmVh
dGVDb250YWluZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJGbGFnLCAKICAgICAg
ICAgQ3JlYXRlRWxlbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRWxlbWVudEZsYWcsIAogICAg
ICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0ZUVsZW1lbnQgfCBJbkRvY3VtZW50Rmxh
ZywKLSAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1l
bnRGcmFnbWVudEZsYWcsCisgICAgICAgIENyZWF0ZVNoYWRvd1Jvb3QgPSBDcmVhdGVDb250YWlu
ZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnIHwgSXNJblNoYWRvd1RyZWVGbGFnLAogICAgICAg
ICBDcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZy
YWdtZW50RmxhZywKICAgICAgICAgQ3JlYXRlU3R5bGVkRWxlbWVudCA9IENyZWF0ZUVsZW1lbnQg
fCBJc1N0eWxlZEVsZW1lbnRGbGFnLCAKICAgICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVh
dGVTdHlsZWRFbGVtZW50IHwgSXNIVE1MRmxhZywgCkBAIC04ODcsNiArOTAxLDcgQEAgaW5saW5l
IHZvaWQgTm9kZTo6bGF6eVJlYXR0YWNoKFNob3VsZFNldEF0dGFjaGVkIHNob3VsZFNldEF0dGFj
aGVkKQogCiB9IC8vbmFtZXNwYWNlCiAKKwogI2lmbmRlZiBOREVCVUcKIC8vIE91dHNpZGUgdGhl
IFdlYkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJvbSBnZGIuCiB2b2lk
IHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IGFjYTAzNjRjMjQ5YTdhYjFjNzNmNzJmODFlNzNjN2FiY2E1
MDE4NGIuLjE0ZDdjYWFlZWJjODQzNjdlNmE0NDJhZTUwNzBkNmEyNmQ0ZDQ4ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTQ4Myw3ICsxNDgzLDcgQEAg
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRp
b25Qb2ludCkKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAmJiAhZm9ybSgp
KQogICAgICAgICByZW1vdmVGcm9tUmFkaW9CdXR0b25Hcm91cCgpOwogICAgIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgQVNTRVJU
KCFpbkRvY3VtZW50KCkpOworICAgIC8vIEFTU0VSVCghaW5Eb2N1bWVudCgpKTsKICNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICByZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
cigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2U0NTNkYzQzYmNmOGU5YTQ5Mjc4MDNhYjYzMGNhZDg3MTUw
OTJiYy4uNTlhOGYyOGZhM2U5MmFiZWYxYTZkMzRkN2IzMTZiM2ZmMzRkZmYyOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTEyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hh
bmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24g
ZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
Z2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sOiBBZGRlZC4KKwog
MjAxMi0xMi0xMSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAoU3VicGl4ZWwgbGF5b3V0KTogR3JheSB2ZXJ0aWNhbCBsaW5lcyBhcHBlYXIg
d2hlbiBtb3ZpbmcgaW5zZXJ0aW9uIHBvaW50IHRvIHJpZ2h0IG9uIE1hYwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4t
b3JwaGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGUyMjJjODMwNTA0ZjgxY2RhNmUxNjgy
YzM1NTY0ZjgyMWZkMTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
NSBAQAorVGVzdHMgdG8gZW5zdXJlIFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQgd29ya3MgZXZl
biBpZiBhIFNoYWRvd1Jvb3QgaXMgb3JwaGFuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKSBpcyBzaGFkb3dD
aGlsZDEKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgc2hhZG93
Q2hpbGQyCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIG51bGwK
K1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVsbAorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQzIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hp
bGQ0IikgaXMgbnVsbAorCitJbnNlcnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1lIGlkCitQQVNT
IHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxkMgorUEFT
UyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMwor
CitNYWtlIHRoZSBob3N0IGluIGRvY3VtZW50CitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5
SWQoImNoaWxkMSIpIGlzIHNoYWRvd0NoaWxkMQorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMworUEFTUyBzaGFkb3dSb290LmdldEVsZW1l
bnRCeUlkKCJjaGlsZDMiKSBpcyBudWxsCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkNCIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIp
IGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIG51bGwK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIGNoaWxkMworUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgY2hpbGQ0CisKK0FkZCBhIGNoaWxk
IGFuZCBtYWtlIHRoZSBob3N0IG5vdCBpbiBkb2N1bWVudAorUEFTUyBzaGFkb3dSb290LmdldEVs
ZW1lbnRCeUlkKCJjaGlsZDUiKSBpcyBzaGFkb3dDaGlsZDUKKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MjA0Y2QxZDI1YzVmM2RjNzcyZGIwM2UxMWRhNTM0M2Q5NThmN2FiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9y
cGhhbi5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxk
aXYgaWQ9IndyYXBwZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxzY3Jp
cHQ+CitmdW5jdGlvbiBjcmVhdGVEaXZXaXRoSWQoaWQpCit7CisgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pZCA9IGlkOworCisgICAgcmV0dXJu
IGRpdjsKK30KKworZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3VyZSBTaGFkb3dSb290LmdldEVs
ZW1lbnRCeUlkIHdvcmtzIGV2ZW4gaWYgYSBTaGFkb3dSb290IGlzIG9ycGhhbi4iKTsKKwordmFy
IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3ZhciBzaGFkb3dSb290ID0g
aG9zdC53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CisKK3ZhciBzaGFkb3dDaGlsZDEgPSBjcmVh
dGVEaXZXaXRoSWQoJ2NoaWxkMScpOwordmFyIHNoYWRvd0NoaWxkMiA9IGNyZWF0ZURpdldpdGhJ
ZCgnY2hpbGQyJyk7Cit2YXIgaG9zdENoaWxkMSA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQzJyk7
Cit2YXIgaG9zdENoaWxkMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQ0Jyk7CisKK2hvc3QuYXBw
ZW5kQ2hpbGQoaG9zdENoaWxkMSk7Citob3N0LmFwcGVuZENoaWxkKGhvc3RDaGlsZDIpOworc2hh
ZG93Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZDEpOworc2hhZG93Um9vdC5hcHBlbmRDaGls
ZChzaGFkb3dDaGlsZDIpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQxIiknLCAnc2hhZG93Q2hpbGQxJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVt
ZW50QnlJZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyJyk7CitzaG91bGRCZSgnc2hhZG93Um9v
dC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jv
b3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsKKworc2hvdWxkQmUoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKScsICdudWxsJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVn
KCdJbnNlcnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1lIGlkJyk7CisKK3ZhciBzaGFkb3dDaGls
ZDJfMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxk
KHNoYWRvd0NoaWxkMl8yKTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMicpOworCit2YXIgc2hhZG93Q2hpbGQyXzMgPSBjcmVh
dGVEaXZXaXRoSWQoJ2NoaWxkMicpOworc2hhZG93Um9vdC5pbnNlcnRCZWZvcmUoc2hhZG93Q2hp
bGQyXzMsIHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCk7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDJfMycpOworCitkZWJ1ZygnJyk7
CitkZWJ1ZygnTWFrZSB0aGUgaG9zdCBpbiBkb2N1bWVudCcpOword3JhcHBlci5hcHBlbmRDaGls
ZChob3N0KTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIp
JywgJ3NoYWRvd0NoaWxkMScpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMl8zJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsKKworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQzIiknLCAnY2hpbGQzJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ2NoaWxkNCcpOworCitkZWJ1ZygnJyk7CitkZWJ1Zygn
QWRkIGEgY2hpbGQgYW5kIG1ha2UgdGhlIGhvc3Qgbm90IGluIGRvY3VtZW50Jyk7Cit2YXIgc2hh
ZG93Q2hpbGQ1ID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDUnKTsKK3NoYWRvd1Jvb3QuYXBwZW5k
Q2hpbGQoc2hhZG93Q2hpbGQ1KTsKK3dyYXBwZXIucmVtb3ZlQ2hpbGQoaG9zdCk7CisKK3Nob3Vs
ZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDUiKScsICdzaGFkb3dDaGlsZDUn
KTsKKworZGVidWcoJycpOword3JhcHBlci5pbm5lckhUTUwgPSAiIjsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179234</attachid>
            <date>2012-12-13 02:14:38 -0800</date>
            <delta_ts>2012-12-13 23:10:36 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-87815-20121213191158.patch</filename>
            <type>text/plain</type>
            <size>24841</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY0OTVjYTg5MTU1NjFk
NmY0YWY0OTdiZWQ1YjYyMjQ1MjMwNTJjZS4uMGQ2ZGQ3ODAxMWQ0MTdlMTRhMDM5ZTZjZWEwMDY3
OTliYjQ0OWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTEyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFs
ZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5o
dG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJ
bnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3Zl
ZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oOgorICAgICAgICAoQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZp
ZXIpOgorICAgICAgICAoQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5v
dGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyOjpub3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVt
b3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkp
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
Omluc2VydGVkSW50byk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnVwZGF0ZUlkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omluc2VydGVkSW50byk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVkRnJvbSk6CisgICAgICAgICogZG9tL05vZGUuaDoK
KyAgICAgICAgKE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJblNoYWRvd1RyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJblRyZWVTY29wZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXRUcmVlU2NvcGVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpj
bGVhclRyZWVTY29wZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEluRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJJbkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnNldEluU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpjbGVhckluU2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKwog
MjAxMi0xMi0xMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2gg
aW4gUGx1Z0luT3JpZ2luSGFzaCB3aXRoIGVtcHR5IE1JTUUgdHlwZSAoMTA0ODgyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggNTlkYWM3
NDQ0NmZlMmU0ZDAxODY0ZjMzMDZhNjU4MjY4ZTZjZmIxZi4uODY3Y2UzYzM4YWEwNzI3ZjQxNTEy
MDNhODkyN2IwZDk2ZjFiZDZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZUFsZ29yaXRobXMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAordGVtcGxhdGU8Ym9vbCBJc0luU2hhZG93VHJlZT4KIHZvaWQgQ2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWlu
ZXJOb2RlKiBub2RlKQogewogICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3Qgc25hcHNob3Qobm9k
ZSk7CkBAIC00MCw3ICs0MSw3IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5v
dGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOCiAgICAgICAgIC8v
IHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4gdGhhdCB0aGV5
J3ZlIGJlZW4KICAgICAgICAgLy8gaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1lbnQgYmVjYXVzZSB0
aGV5IGhhdmVuJ3QuCiAgICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkgJiYgY2hpbGQtPnBh
cmVudE5vZGUoKSA9PSBub2RlKQotICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0Rv
Y3VtZW50KGNoaWxkKTsKKyAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVu
dDxJc0luU2hhZG93VHJlZT4oY2hpbGQpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNFbGVt
ZW50Tm9kZSgpKQpAQCAtNTAsMjIgKzUxLDI5IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90
aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOCiAg
ICAgICAgIFNoYWRvd1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93KTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByb290cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG5vZGUt
PmluRG9jdW1lbnQoKSAmJiByb290c1tpXS0+aG9zdCgpID09IG5vZGUpCi0gICAgICAgICAgICAg
ICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KHJvb3RzW2ldLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ8dHJ1ZT4ocm9vdHNbaV0u
Z2V0KCkpOwogICAgICAgICB9CiAgICAgfQogfQogCit0ZW1wbGF0ZTxib29sIElzSW5TaGFkb3dU
cmVlPgogdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudElu
c2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSogbm9kZSkKIHsKICAgICBmb3IgKE5vZGUqIGNo
aWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzQ29udGFpbmVyTm9kZSgpKQotICAgICAgICAg
ICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7Cisg
ICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZTxJc0luU2hhZG93VHJlZT4odG9D
b250YWluZXJOb2RlKGNoaWxkKSk7CiAgICAgfQogCiAgICAgZm9yIChTaGFkb3dSb290KiByb290
ID0gbm9kZS0+eW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNo
YWRvd1Jvb3QoKSkKLSAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUocm9vdCk7Cisg
ICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlPHRydWU+KHJvb3QpOwogfQogCit0ZW1w
bGF0ZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQ8dHJ1ZT4oQ29udGFpbmVyTm9kZSopOwordGVtcGxhdGUgdm9pZCBD
aGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b0Rv
Y3VtZW50PGZhbHNlPihDb250YWluZXJOb2RlKik7Cit0ZW1wbGF0ZSB2b2lkIENoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZTx0cnVlPihD
b250YWluZXJOb2RlKik7Cit0ZW1wbGF0ZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
Ojpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZTxmYWxzZT4oQ29udGFpbmVyTm9kZSop
OworCit0ZW1wbGF0ZTxib29sIElzSW5TaGFkb3dUcmVlPgogdm9pZCBDaGlsZE5vZGVSZW1vdmFs
Tm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5v
ZGUqIG5vZGUpCiB7CiAgICAgQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCBzbmFwc2hvdChub2RlKTsK
QEAgLTc0LDcgKzgyLDcgQEAgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURl
c2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUKICAgICAgICAgLy8gZG9u
J3Qgd2FudCB0byB0ZWxsIHRoZSByZXN0IG9mIG91ciBjaGlsZHJlbiB0aGF0IHRoZXkndmUgYmVl
bgogICAgICAgICAvLyByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50IGJlY2F1c2UgdGhleSBoYXZl
bid0LgogICAgICAgICBpZiAoIW5vZGUtPmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9k
ZSgpID09IG5vZGUpCi0gICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChj
aGlsZCk7CisgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudDxJc0luU2hh
ZG93VHJlZT4oY2hpbGQpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgp
KQpAQCAtODcsMTYgKzk1LDE3IEBAIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3Rp
ZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlCiAgICAgICAgIFNo
YWRvd1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByb290cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKCFub2RlLT5pbkRvY3Vt
ZW50KCkgJiYgcm9vdHNbaV0tPmhvc3QoKSA9PSBub2RlKQotICAgICAgICAgICAgICAgIG5vdGlm
eU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KHJvb3RzW2ldLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudDx0cnVlPihyb290c1tpXS5nZXQoKSk7CiAg
ICAgICAgIH0KICAgICB9CiB9CiAKK3RlbXBsYXRlPGJvb2wgSXNJblNoYWRvd1RyZWU+CiB2b2lk
IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJl
ZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+aXNDb250YWluZXJOb2RlKCkpCi0gICAgICAgICAgICBub3RpZnlOb2Rl
UmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCkpOworICAgICAgICAgICAgbm90
aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZTxJc0luU2hhZG93VHJlZT4odG9Db250YWluZXJOb2RlKGNo
aWxkKSk7CiAgICAgfQogCiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCkBAIC0xMDUs
MTAgKzExNCwxNSBAQCB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2Vu
ZGFudFJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBubwogICAgIGlmIChFbGVtZW50U2hh
ZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKSB7CiAgICAgICAgIFNoYWRv
d1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByb290cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRy
ZWUocm9vdHNbaV0uZ2V0KCkpOworICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJl
ZTx0cnVlPihyb290c1tpXS5nZXQoKSk7CiAgICAgfQogfQogCit0ZW1wbGF0ZSB2b2lkIENoaWxk
Tm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQ8
dHJ1ZT4oQ29udGFpbmVyTm9kZSopOwordGVtcGxhdGUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50PGZhbHNlPihDb250YWlu
ZXJOb2RlKik7Cit0ZW1wbGF0ZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5
RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZTx0cnVlPihDb250YWluZXJOb2RlKik7Cit0ZW1wbGF0
ZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRG
cm9tVHJlZTxmYWxzZT4oQ29udGFpbmVyTm9kZSopOworCiB2b2lkIENoaWxkRnJhbWVEaXNjb25u
ZWN0b3I6OmNvbGxlY3REZXNjZW5kYW50KEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKIHsKICAgICBm
b3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3ctPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290
OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IDUzMTJkZDQ4OGRhMjE4NzMwZjQ0ODNmOTA4
MGE5ZGEzZDBkNzEwMzkuLmQyNGFlOTVmOTY0NzBmYmYyNTAyNTY5ZjY5ODRmMjYzZDc4MWNhZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC00
MSwxMCArNDEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5KE5vZGUqKTsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWlu
ZXJOb2RlKik7Ci0gICAgdm9pZCBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShDb250
YWluZXJOb2RlKik7Ci0gICAgdm9pZCBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9k
ZSopOwotICAgIHZvaWQgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSop
OworICAgIHRlbXBsYXRlPGJvb2wgSXNJblNoYWRvd1RyZWU+IHZvaWQgbm90aWZ5RGVzY2VuZGFu
dEluc2VydGVkSW50b0RvY3VtZW50KENvbnRhaW5lck5vZGUqKTsKKyAgICB0ZW1wbGF0ZTxib29s
IElzSW5TaGFkb3dUcmVlPiB2b2lkIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVlKENv
bnRhaW5lck5vZGUqKTsgICAgCisgICAgdGVtcGxhdGU8Ym9vbCBJc0luU2hhZG93VHJlZT4gdm9p
ZCBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSopOworICAgIHRlbXBsYXRlPGJv
b2wgSXNJblNoYWRvd1RyZWU+IHZvaWQgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFp
bmVyTm9kZSopOwogCiAgICAgQ29udGFpbmVyTm9kZSogbV9pbnNlcnRpb25Qb2ludDsKICAgICBW
ZWN0b3I8IFJlZlB0cjxOb2RlPiA+IG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHM7
CkBAIC02MCwxMCArNjAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5KE5vZGUqKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENv
bnRhaW5lck5vZGUqKTsKLSAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUo
Q29udGFpbmVyTm9kZSopOwotICAgIHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
Tm9kZSopOwotICAgIHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2Rl
Kik7CisgICAgdGVtcGxhdGU8Ym9vbCBJc0luU2hhZG93VHJlZT4gdm9pZCBub3RpZnlEZXNjZW5k
YW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlKik7CisgICAgdGVtcGxhdGU8Ym9v
bCBJc0luU2hhZG93VHJlZT4gdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENv
bnRhaW5lck5vZGUqKTsKKyAgICB0ZW1wbGF0ZTxib29sIElzSW5TaGFkb3dUcmVlPiB2b2lkIG5v
dGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqKTsKKyAgICB0ZW1wbGF0ZTxib29sIElz
SW5TaGFkb3dUcmVlPiB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9k
ZSopOwogCiAgICAgQ29udGFpbmVyTm9kZSogbV9pbnNlcnRpb25Qb2ludDsKIH07CkBAIC0xOTAs
MjQgKzE5MCwzNSBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFByaXZh
dGUKIAordGVtcGxhdGU8Ym9vbCBJc0luU2hhZG93VHJlZT4KIGlubGluZSB2b2lkIENoaWxkTm9k
ZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSog
bm9kZSkKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKICAg
ICBSZWZQdHI8Tm9kZT4gcHJvdGVjdChub2RlKTsKKworICAgIGlmIChJc0luU2hhZG93VHJlZSkK
KyAgICAgICAgbm9kZS0+c2V0SW5Eb2N1bWVudEFuZFNoYWRvd1RyZWUoKTsKKyAgICBlbHNlCisg
ICAgICAgIG5vZGUtPnNldEluRG9jdW1lbnQoKTsKKwogICAgIGlmIChOb2RlOjpJbnNlcnRpb25T
aG91bGRDYWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0gbm9kZS0+aW5zZXJ0ZWRJbnRv
KG1faW5zZXJ0aW9uUG9pbnQpKQogICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25U
YXJnZXRzLmFwcGVuZChub2RlKTsKICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCi0g
ICAgICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudCh0b0NvbnRhaW5lck5v
ZGUobm9kZSkpOworICAgICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQ8
SXNJblNoYWRvd1RyZWU+KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CiB9CiAKK3RlbXBsYXRlPGJv
b2wgSXNJblNoYWRvd1RyZWU+CiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSogbm9kZSkKIHsKICAg
ICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwogICAgIEFT
U0VSVCghbV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKIAorICAgIGlmIChJc0luU2hh
ZG93VHJlZSkKKyAgICAgICAgbm9kZS0+c2V0SW5TaGFkb3dUcmVlKCk7CisKICAgICBpZiAoTm9k
ZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbERpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zID09IG5vZGUt
Pmluc2VydGVkSW50byhtX2luc2VydGlvblBvaW50KSkKICAgICAgICAgbV9wb3N0SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uVGFyZ2V0cy5hcHBlbmQobm9kZSk7Ci0gICAgbm90aWZ5RGVzY2VuZGFudElu
c2VydGVkSW50b1RyZWUobm9kZSk7CisgICAgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1Ry
ZWU8SXNJblNoYWRvd1RyZWU+KG5vZGUpOwogfQogCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCkBAIC0yMjEsNDEgKzIzMiw2NSBAQCBp
bmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUp
CiAgICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0RG9jdW1lbnQobm9kZS0+ZG9jdW1lbnQoKSk7
CiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3ROb2RlKG5vZGUpOwogCi0gICAgaWYgKG1faW5zZXJ0
aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0Rv
Y3VtZW50KG5vZGUpOwotICAgIGVsc2UgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQotICAg
ICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOwor
ICAgIGlmIChtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKG1f
aW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgICAgICBub3RpZnlOb2Rl
SW5zZXJ0ZWRJbnRvRG9jdW1lbnQ8dHJ1ZT4obm9kZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudDxmYWxzZT4obm9kZSk7CisgICAgfSBl
bHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkgeworICAgICAgICBpZiAobV9pbnNlcnRp
b25Qb2ludC0+aXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRl
ZEludG9UcmVlPHRydWU+KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlPGZhbHNlPih0b0NvbnRhaW5lck5v
ZGUobm9kZSkpOworICAgIH0gICAKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb3N0
SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5zaXplKCk7ICsraSkKICAgICAgICAgbV9wb3N0
SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0c1tpXS0+ZGlkTm90aWZ5U3VidHJlZUluc2VydGlv
bnMobV9pbnNlcnRpb25Qb2ludCk7CiB9CiAKLQordGVtcGxhdGU8Ym9vbCBJc0luU2hhZG93VHJl
ZT4KIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92
ZWRGcm9tRG9jdW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpKTsKICAgICBub2RlLT5yZW1vdmVkRnJvbShtX2luc2VydGlvblBvaW50
KTsKKyAgICBpZiAoSXNJblNoYWRvd1RyZWUpCisgICAgICAgIG5vZGUtPmNsZWFySW5Eb2N1bWVu
dEFuZFNoYWRvd1RyZWUoKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGUtPmNsZWFySW5Eb2N1bWVu
dCgpOwogCiAgICAgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQotICAgICAgICBub3RpZnlE
ZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudCh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAg
ICAgICBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudDxJc0luU2hhZG93VHJlZT4o
dG9Db250YWluZXJOb2RlKG5vZGUpKTsKIH0KIAordGVtcGxhdGU8Ym9vbCBJc0luU2hhZG93VHJl
ZT4KIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92
ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAgIE5vRXZlbnREaXNwYXRjaEFz
c2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBv
aW50LT5pbkRvY3VtZW50KCkpOwogCiAgICAgbm9kZS0+cmVtb3ZlZEZyb20obV9pbnNlcnRpb25Q
b2ludCk7Ci0gICAgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZShub2RlKTsKKyAgICBp
ZiAoSXNJblNoYWRvd1RyZWUpCisgICAgICAgIG5vZGUtPmNsZWFySW5TaGFkb3dUcmVlKCk7CisK
KyAgICBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlPElzSW5TaGFkb3dUcmVlPihub2Rl
KTsKIH0KIAogaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9k
ZSogbm9kZSkKIHsKKyAgICBib29sIHJlbW92ZXNTaGFkb3cgPSBtX2luc2VydGlvblBvaW50LT5p
c0luU2hhZG93VHJlZSgpICYmIChtX2luc2VydGlvblBvaW50LT50cmVlU2NvcGUoKSA9PSBub2Rl
LT50cmVlU2NvcGUoKSk7CiAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkgewotICAgICAgICBu
b3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChub2RlKTsKKyAgICAgICAgaWYgKHJlbW92ZXNT
aGFkb3cpCisgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudDx0cnVlPihu
b2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9j
dW1lbnQ8ZmFsc2U+KG5vZGUpOworICAgICAgICAgICAgCiAgICAgICAgIG5vZGUtPmRvY3VtZW50
KCktPm5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCk7Ci0gICAgfSBlbHNlIGlmIChu
b2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKLSAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJl
ZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAgIH0gZWxzZSBpZiAobm9kZS0+aXNDb250YWlu
ZXJOb2RlKCkpIHsKKyAgICAgICAgaWYgKHJlbW92ZXNTaGFkb3cpCisgICAgICAgICAgICBub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21UcmVlPHRydWU+KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWU8ZmFsc2U+KHRv
Q29udGFpbmVyTm9kZShub2RlKSk7CisgICAgfQogfQogCiBjbGFzcyBDaGlsZEZyYW1lRGlzY29u
bmVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0NDk4ZDMyOWE1Yjk5ZTg4ZmM5ZDE0
N2I5NTE3ZDNiYjAyOTAwYmFmLi5lNDRhYjU0ZTdiZjZhOGI3ZmI2NDNjNWE4YzYxYzAzYzg3OTMw
MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBOb2RlOjpJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlKiBpbnNlcnRpbwogICAgICAgICBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25B
bmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyh0cnVlKTsKICNlbmRpZgogCi0gICAgaWYg
KCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQorICAgIGlmICghaW5zZXJ0aW9uUG9pbnQt
PmlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiAKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGlkVmFsdWUgPSBnZXRJZEF0dHJpYnV0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKaW5kZXggODQzNTJjM2QyMTY0ZDc0YjUzZjI0ZjRiMzc3ZmEwYmU2M2RhZjczYy4uNjA1
OWM0OTU5ZTgzODc1ZmJlNWUxZjk0MWM5NDEyZTNhN2YzMWYxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CkBAIC02NzQsNyArNjc0LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKIAogaW5saW5lIHZv
aWQgRWxlbWVudDo6dXBkYXRlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdJZCkKIHsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWlz
SW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG9sZElkID09IG5ld0lk
KQpAQCAtNjg1LDcgKzY4NSw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKGNvbnN0
IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3CiAKIGlubGluZSB2
b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKFRyZWVTY29wZSogc2NvcGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCiB7Ci0gICAgQVNTRVJUKGluRG9j
dW1lbnQoKSk7CisgICAgQVNTRVJUKGlzSW5UcmVlU2NvcGUoKSk7CiAgICAgQVNTRVJUKG9sZElk
ICE9IG5ld0lkKTsKIAogICAgIGlmICghb2xkSWQuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IGFlYWE1ZTE2YzkxZjZjZDkwNGQ1NzFmOWE2YTJhMjQzMzRkZTc0ZWEuLjA2MWQ1ZGM0OWM0
YTE5ZWY2NmMzMGZmMzU0NDRiYjUxYTI0NTg4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTEyNzAs
MTEgKzEyNzAsNiBAQCBDb250YWluZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3VuZGFyeVBhcmVu
dE5vZGUoKSBjb25zdAogICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNTaGFkb3dSb290
KCkgPyBwYXJlbnQgOiAwOwogfQogCi1ib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkgIT0gZG9jdW1lbnQoKTsKLX0KLQogRWxlbWVudCog
Tm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSog
cGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwpAQCAtMjA5NCwxNiArMjA4OSwxMiBAQCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBOb2RlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
IE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgTm9kZTo6aW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEFTU0VSVChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKLSAgICBpZiAoaW5zZXJ0aW9u
UG9pbnQtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgc2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAg
ICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKIHZvaWQgTm9kZTo6cmVtb3ZlZEZyb20oQ29u
dGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50
LT5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwotICAgIGlmIChpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpKQotICAgICAgICBjbGVhckZsYWcoSW5Eb2N1bWVudEZsYWcpOwog
fQogCiB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCmluZGV4IDUwNTM5YmI5ZDBmMzNmNmY3MzYxZWQ4MzNjMGJjZmFmNDYyYzZl
NDMuLjdjZTMyZDY3MTM2YjI2ZjU2YmQ2MmY1MzE1OWQwODM5Njg1NmRjY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aApAQCAtMjY3LDcgKzI2Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgMCwgYSBjaGls
ZCBvZiBTaGFkb3dSb290LCBvciBhIGxlZ2FjeSBzaGFkb3cgcm9vdC4KICAgICBOb2RlKiBub25C
b3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpOwotICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKSBj
b25zdDsKKwogICAgIC8vIE5vZGUncyBwYXJlbnQsIHNoYWRvdyB0cmVlIGhvc3QuCiAgICAgQ29u
dGFpbmVyTm9kZSogcGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0OwogICAgIEVsZW1lbnQqIHBhcmVu
dE9ySG9zdEVsZW1lbnQoKSBjb25zdDsKQEAgLTQ2OCw2ICs0NjgsMTYgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOwogICAg
ICAgICByZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAgICAgfQorICAgIGJvb2wgaXNJ
blNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSW5TaGFkb3dUcmVlRmxhZyk7
IH0KKyAgICBib29sIGlzSW5UcmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKHN0YXRp
Y19jYXN0PE5vZGVGbGFncz4oSW5Eb2N1bWVudEZsYWcgfCBJc0luU2hhZG93VHJlZUZsYWcpKTsg
fQorCisgICAgdm9pZCBzZXRJbkRvY3VtZW50KCkgeyBzZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsg
fQorICAgIHZvaWQgc2V0SW5TaGFkb3dUcmVlKCkgeyBzZXRGbGFnKElzSW5TaGFkb3dUcmVlRmxh
Zyk7IH0KKyAgICB2b2lkIHNldEluRG9jdW1lbnRBbmRTaGFkb3dUcmVlKCkgeyBzZXRGbGFnKHN0
YXRpY19jYXN0PE5vZGVGbGFncz4oSW5Eb2N1bWVudEZsYWcgfCBJc0luU2hhZG93VHJlZUZsYWcp
KTsgfQorCisgICAgdm9pZCBjbGVhckluRG9jdW1lbnQoKSB7IGNsZWFyRmxhZyhJbkRvY3VtZW50
RmxhZyk7IH0KKyAgICB2b2lkIGNsZWFySW5TaGFkb3dUcmVlKCkgeyBjbGVhckZsYWcoSXNJblNo
YWRvd1RyZWVGbGFnKTsgfQorICAgIHZvaWQgY2xlYXJJbkRvY3VtZW50QW5kU2hhZG93VHJlZSgp
IHsgY2xlYXJGbGFnKHN0YXRpY19jYXN0PE5vZGVGbGFncz4oSW5Eb2N1bWVudEZsYWcgfCBJc0lu
U2hhZG93VHJlZUZsYWcpKTsgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG5vZGVUeXBlKCkgPT0gRU5USVRZX1JFRkVSRU5DRV9OT0RFOyB9CiAgICAgYm9vbCBp
c0RvY3VtZW50VHlwZU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VNRU5U
X1RZUEVfTk9ERTsgfQpAQCAtNzA0LDExICs3MTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgSGFz
RXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMjMsCiAgICAgICAgIFY4Q29sbGVjdGFibGVEdXJp
bmdNaW5vckdDRmxhZyA9IDEgPDwgMjQsCiAgICAgICAgIElzSW5zZXJ0aW9uUG9pbnRGbGFnID0g
MSA8PCAyNSwKKyAgICAgICAgSXNJblNoYWRvd1RyZWVGbGFnID0gMSA8PCAyNiwKIAogICAgICAg
ICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcKICAgICB9
OwogCi0gICAgLy8gNiBiaXRzIHJlbWFpbmluZworICAgIC8vIDUgYml0cyByZW1haW5pbmcKIAog
ICAgIGJvb2wgZ2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9ub2RlRmxh
Z3MgJiBtYXNrOyB9CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZsYWdzIG1hc2spIGNv
bnN0IHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAoLShpbnQzMl90KWYg
JiBtYXNrKTsgfSAKQEAgLTcyMiw3ICs3MzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENyZWF0
ZUNvbnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAg
ICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNFbGVtZW50RmxhZywgCiAgICAg
ICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3JlYXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFn
LAotICAgICAgICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVu
dEZyYWdtZW50RmxhZywKKyAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5l
ciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcgfCBJc0luU2hhZG93VHJlZUZsYWcsCiAgICAgICAg
IENyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJh
Z21lbnRGbGFnLAogICAgICAgICBDcmVhdGVTdHlsZWRFbGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8
IElzU3R5bGVkRWxlbWVudEZsYWcsIAogICAgICAgICBDcmVhdGVIVE1MRWxlbWVudCA9IENyZWF0
ZVN0eWxlZEVsZW1lbnQgfCBJc0hUTUxGbGFnLCAKQEAgLTg4Nyw2ICs4OTgsNyBAQCBpbmxpbmUg
dm9pZCBOb2RlOjpsYXp5UmVhdHRhY2goU2hvdWxkU2V0QXR0YWNoZWQgc2hvdWxkU2V0QXR0YWNo
ZWQpCiAKIH0gLy9uYW1lc3BhY2UKIAorCiAjaWZuZGVmIE5ERUJVRwogLy8gT3V0c2lkZSB0aGUg
V2ViQ29yZSBuYW1lc3BhY2UgZm9yIGVhc2Ugb2YgaW52b2NhdGlvbiBmcm9tIGdkYi4KIHZvaWQg
c2hvd1RyZWUoY29uc3QgV2ViQ29yZTo6Tm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggMmYyNTVjOTYwMjUxZTdhNTZmNGJlOTdlMjhlY2E5NzQwMGJj
ZjgzOS4uNzI2N2RiNzNjYzNmMTJlNzU1YmJkZmM5YjkwOTk0NzJmMWUzNDZkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNDgzLDcgKzE0ODMsNyBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlv
blBvaW50KQogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmICFmb3JtKCkp
CiAgICAgICAgIHJlbW92ZUZyb21SYWRpb0J1dHRvbkdyb3VwKCk7CiAgICAgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKLSAgICBBU1NFUlQo
IWluRG9jdW1lbnQoKSk7CisKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICByZXNl
dExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTI1ZTI4NzJi
YjZlMjU0NmZjNTJiNWQ4Y2MyZmNjOWFhYmMxNjdiNC4uYTJlZTM1ODY5NDFlMDZmYmRiMzRiZjdj
OTNhYjcyZTNmZmI2Njc3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEyLTEyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFs
ZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlk
LWluLW9ycGhhbi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0xMiAgR3J6ZWdvcnogQ3phamtvd3Nr
aSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtHVEtdIHNwZWxs
aW5nLXVuaWZpZWQtZW11bGF0aW9uLmh0bWwgZmFpbHMgLSB3b3JkICJ6enoiIGNhbm5vdCBiZSBm
b3VuZCBieSBlbmNoYW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
Z2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIwZTIyMmM4MzA1MDRmODFjZGE2ZTE2ODJjMzU1NjRmODIxZmQxMjkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3Jw
aGFuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACitUZXN0cyB0byBlbnN1cmUgU2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCB3b3JrcyBldmVuIGlmIGEgU2hhZG93Um9vdCBpcyBvcnBoYW4u
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxl
bWVudEJ5SWQoImNoaWxkMSIpIGlzIHNoYWRvd0NoaWxkMQorUEFTUyBzaGFkb3dSb290LmdldEVs
ZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDIKK1BBU1Mgc2hhZG93Um9vdC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQzIikgaXMgbnVsbAorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDQiKSBpcyBudWxsCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGls
ZDEiKSBpcyBudWxsCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBu
dWxsCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKSBpcyBudWxsCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKSBpcyBudWxsCisKK0luc2VydCBlbGVt
ZW50cyBoYXZpbmcgdGhlIHNhbWUgaWQKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQyIikgaXMgc2hhZG93Q2hpbGQyCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxkMl8zCisKK01ha2UgdGhlIGhvc3QgaW4gZG9jdW1lbnQK
K1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikgaXMgc2hhZG93Q2hpbGQx
CitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxk
Ml8zCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIG51bGwKK1BB
U1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVsbAorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQyIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2hpbGQzIikgaXMgY2hpbGQzCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGls
ZDQiKSBpcyBjaGlsZDQKKworQWRkIGEgY2hpbGQgYW5kIG1ha2UgdGhlIGhvc3Qgbm90IGluIGRv
Y3VtZW50CitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNSIpIGlzIHNoYWRv
d0NoaWxkNQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRi
eWlkLWluLW9ycGhhbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1l
bnRieWlkLWluLW9ycGhhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMDRjZDFkMjVjNWYzZGM3NzJkYjAz
ZTExZGE1MzQzZDk1OGY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWwKQEAgLTAsMCArMSw4NCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0id3JhcHBlciI+PC9kaXY+Cis8cHJl
IGlkPSJjb25zb2xlIj48L3ByZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZURpdldpdGhJ
ZChpZCkKK3sKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgZGl2LmlkID0gaWQ7CisKKyAgICByZXR1cm4gZGl2OworfQorCitkZXNjcmlwdGlvbigiVGVz
dHMgdG8gZW5zdXJlIFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQgd29ya3MgZXZlbiBpZiBhIFNo
YWRvd1Jvb3QgaXMgb3JwaGFuLiIpOworCit2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOwordmFyIHNoYWRvd1Jvb3QgPSBob3N0LndlYmtpdENyZWF0ZVNoYWRvd1Jvb3Qo
KTsKKwordmFyIHNoYWRvd0NoaWxkMSA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQxJyk7Cit2YXIg
c2hhZG93Q2hpbGQyID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDInKTsKK3ZhciBob3N0Q2hpbGQx
ID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDMnKTsKK3ZhciBob3N0Q2hpbGQyID0gY3JlYXRlRGl2
V2l0aElkKCdjaGlsZDQnKTsKKworaG9zdC5hcHBlbmRDaGlsZChob3N0Q2hpbGQxKTsKK2hvc3Qu
YXBwZW5kQ2hpbGQoaG9zdENoaWxkMik7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRvd0No
aWxkMSk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRvd0NoaWxkMik7CisKK3Nob3VsZEJl
KCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdzaGFkb3dDaGlsZDEnKTsK
K3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdzaGFkb3dD
aGlsZDInKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKScs
ICdudWxsJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0Iikn
LCAnbnVsbCcpOworCitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIp
JywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikn
LCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKScs
ICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpJywg
J251bGwnKTsKKworZGVidWcoJycpOworZGVidWcoJ0luc2VydCBlbGVtZW50cyBoYXZpbmcgdGhl
IHNhbWUgaWQnKTsKKwordmFyIHNoYWRvd0NoaWxkMl8yID0gY3JlYXRlRGl2V2l0aElkKCdjaGls
ZDInKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93Q2hpbGQyXzIpOworCitzaG91bGRC
ZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyJyk7
CisKK3ZhciBzaGFkb3dDaGlsZDJfMyA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7CitzaGFk
b3dSb290Lmluc2VydEJlZm9yZShzaGFkb3dDaGlsZDJfMywgc2hhZG93Um9vdC5maXJzdENoaWxk
KTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ3No
YWRvd0NoaWxkMl8zJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdNYWtlIHRoZSBob3N0IGluIGRv
Y3VtZW50Jyk7Cit3cmFwcGVyLmFwcGVuZENoaWxkKGhvc3QpOworCitzaG91bGRCZSgnc2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIiknLCAnc2hhZG93Q2hpbGQxJyk7CitzaG91bGRC
ZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyXzMn
KTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKScsICdudWxs
Jyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IiknLCAnbnVs
bCcpOworCitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ251
bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIiknLCAnbnVs
bCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKScsICdjaGls
ZDMnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IiknLCAnY2hp
bGQ0Jyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdBZGQgYSBjaGlsZCBhbmQgbWFrZSB0aGUgaG9z
dCBub3QgaW4gZG9jdW1lbnQnKTsKK3ZhciBzaGFkb3dDaGlsZDUgPSBjcmVhdGVEaXZXaXRoSWQo
J2NoaWxkNScpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZDUpOword3JhcHBl
ci5yZW1vdmVDaGlsZChob3N0KTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5
SWQoImNoaWxkNSIpJywgJ3NoYWRvd0NoaWxkNScpOworCitkZWJ1ZygnJyk7Cit3cmFwcGVyLmlu
bmVySFRNTCA9ICIiOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179423</attachid>
            <date>2012-12-13 23:10:41 -0800</date>
            <delta_ts>2012-12-13 23:17:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87815-20121214160800.patch</filename>
            <type>text/plain</type>
            <size>12321</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWEzMjIxYmE0YTU1YWQ2
ZWIwNzg2YzBlYmVhYWM5ODliMmVkMGE2YS4uNThmYmZjMmQ1YjBjYzExYjg3YTdmNTZmM2M4NmM2
YjQxNGEwZDk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTEyLTEzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzgx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYWRv
d1Jvb3QuZ2V0RWxlbWVudEJ5SWQoKSBkaWRuJ3Qgd29yayBpZiBTaGFkb3dSb290IGlzIG91dHNp
ZGUgZG9jdW1lbnQuIFdlIG5lZWQgdG8gdXBkYXRlIGlkIHdoZW4gYW4gZWxlbWVudAorICAgICAg
ICBpcyBpbiBTaGFkb3dUcmVlIGV2ZW50IGlmIGl0IGlzIG5vdCBpbiBkb2N1bWVudC4KKworICAg
ICAgICBGb3IgcGVyZm9ybWFuY2UgcmVhc29uLCB3ZSBpbnRyb2R1Y2UgSXNJblNoYWRvd1RyZWUg
ZmxhZywgd2hpY2ggZW5hYmxlcyB1cyB0byBjaGVjayBpc0luVHJlZVNjb3BlKCkgZmFzdC4KKyAg
ICAgICAgVGhpcyBpcyBtYWludGFpbmVkIGluIEVsZW1lbnQ6Omluc2VydGVkSW50byBhbmQgcmVt
b3ZlZEZyb20uIEhlcmUsIHdlJ3JlIGFueGlvdXMgYWJvdXQgcGVyZm9ybWFuY2UgcmVncmVzc2lv
biwKKyAgICAgICAgaG93ZXZlciBvdXIgYmVuY2htYXJrIHJlc3VsdCBzaG93cyB0aGlzIGRvZXNu
J3QgcmVncmVzcyB0aGUgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgSSd2ZSBtZWFzdXJlZCBEcm9t
YWVvL2RvbS1tb2RpZnkuaHRtbCBhbmQgUGFyc2VyL2h0bWw1LWZ1bGwtcmVuZGVyLmh0bWwgMiB0
aW1lcy4KKworICAgICAgICBEcm9tYWVvL2RvbS1tb2RpZnkuaHRtbAorICAgICAgICAgICAgIDM1
LjIxLCAgIDM1LjI3IFtydW5zL3NdIC0tLT4gICAzNS43NiwgICAzNS41NiBbcnVucy9zXQorICAg
ICAgICBQYXJzZXIvaHRtbDUtZnVsbC1yZW5kZXIuaHRtbAorICAgICAgICAgICA0MzI4LjUxLCA0
MjU0Ljk0IFttc10gICAgIC0tLT4gNDI3Ny4xNCwgNDIyMi40MyBbbXNdCisKKyAgICAgICAgVGVz
dDogZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCisKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjppbnNlcnRl
ZEludG8pOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojp1cGRhdGVJZCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6aW5zZXJ0ZWRJbnRvKTogSWYgdGhlIHBhcmVudCBub2RlIGlzIGluIHNoYWRvdyB0
cmVlLCB0aGlzIG5vZGUgc2hvdWxkIGJlIGFsc28gaW4gdGhlIHNhbWUgc2hhZG93IHRyZWUuCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVkRnJvbSk6IFdoZW4gbm9kZSBpcyByZW1vdmVk
IGZyb20gU2hhZG93VHJlZSwgaXRzIHRyZWVTY29wZSgpIHNob3VsZCBub3QgYmUgU2hhZG93Um9v
dC4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjppc0luU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0lu
VHJlZVNjb3BlKToKKwogMjAxMi0xMi0xMyAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEhhbmRsaW5nIGF1dG9zY3JvbGwgaW4gRXZlbnRIYW5kbGVyIHNo
b3VsZCBiZSByZS1mYWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0NDk4ZDMyOWE1Yjk5
ZTg4ZmM5ZDE0N2I5NTE3ZDNiYjAyOTAwYmFmLi5lNDRhYjU0ZTdiZjZhOGI3ZmI2NDNjNWE4YzYx
YzAzYzg3OTMwMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDk4LDcgKzEwOTgsNyBA
QCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEVsZW1lbnQ6Omluc2VydGVkSW50
byhDb250YWluZXJOb2RlKiBpbnNlcnRpbwogICAgICAgICBzZXRDb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyh0cnVlKTsKICNlbmRpZgog
Ci0gICAgaWYgKCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQorICAgIGlmICghaW5zZXJ0
aW9uUG9pbnQtPmlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7
CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkVmFsdWUgPSBnZXRJZEF0dHJpYnV0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggODQzNTJjM2QyMTY0ZDc0YjUzZjI0ZjRiMzc3ZmEwYmU2M2Rh
ZjczYy4uNjA1OWM0OTU5ZTgzODc1ZmJlNWUxZjk0MWM5NDEyZTNhN2YzMWYxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC02NzQsNyArNjc0LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRl
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKIAog
aW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkKIHsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkKKyAg
ICBpZiAoIWlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG9sZElk
ID09IG5ld0lkKQpAQCAtNjg1LDcgKzY4NSw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0
ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3CiAK
IGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKFRyZWVTY29wZSogc2NvcGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCiB7Ci0gICAgQVNT
RVJUKGluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGlzSW5UcmVlU2NvcGUoKSk7CiAgICAgQVNT
RVJUKG9sZElkICE9IG5ld0lkKTsKIAogICAgIGlmICghb2xkSWQuaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IGFlYWE1ZTE2YzkxZjZjZDkwNGQ1NzFmOWE2YTJhMjQzMzRkZTc0ZWEuLjhk
MTI2NjFmMmY3MDNhNjFkY2I4MzcxYmEwZDA5MmIwY2Y0YzU5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTEyNzAsMTEgKzEyNzAsNiBAQCBDb250YWluZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3Vu
ZGFyeVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNT
aGFkb3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQogCi1ib29sIE5vZGU6OmlzSW5TaGFkb3dUcmVl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkgIT0gZG9jdW1lbnQoKTsKLX0KLQog
RWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQ29udGFp
bmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwpAQCAtMjA5Niw2ICsyMDkxLDgg
QEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBOb2RlOjppbnNlcnRlZEludG8o
Q29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG8KICAgICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQtPmlu
RG9jdW1lbnQoKSB8fCBpc0NvbnRhaW5lck5vZGUoKSk7CiAgICAgaWYgKGluc2VydGlvblBvaW50
LT5pbkRvY3VtZW50KCkpCiAgICAgICAgIHNldEZsYWcoSW5Eb2N1bWVudEZsYWcpOworICAgIGlm
IChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAg
ICBzZXRGbGFnKElzSW5TaGFkb3dUcmVlRmxhZyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7
CiB9CiAKQEAgLTIxMDQsNiArMjEwMSw4IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50LT5pbkRv
Y3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+
aW5Eb2N1bWVudCgpKQogICAgICAgICBjbGVhckZsYWcoSW5Eb2N1bWVudEZsYWcpOworICAgIGlm
IChpc0luU2hhZG93VHJlZSgpICYmICF0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dS
b290KCkpCisgICAgICAgIGNsZWFyRmxhZyhJc0luU2hhZG93VHJlZUZsYWcpOwogfQogCiB2b2lk
IE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IDUwNTM5YmI5ZDBmMzNmNmY3MzYxZWQ4MzNjMGJjZmFmNDYyYzZlNDMuLjYzZGZm
MTBjMGNhNDFiOWY3OGRiM2IxODg2YjdiYmZkZjhmZDAxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjY3
LDcgKzI2Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgMCwgYSBjaGlsZCBvZiBTaGFk
b3dSb290LCBvciBhIGxlZ2FjeSBzaGFkb3cgcm9vdC4KICAgICBOb2RlKiBub25Cb3VuZGFyeVNo
YWRvd1RyZWVSb290Tm9kZSgpOwotICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKSBjb25zdDsKKwog
ICAgIC8vIE5vZGUncyBwYXJlbnQsIHNoYWRvdyB0cmVlIGhvc3QuCiAgICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0OwogICAgIEVsZW1lbnQqIHBhcmVudE9ySG9zdEVs
ZW1lbnQoKSBjb25zdDsKQEAgLTQ2OCw2ICs0NjgsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VChtX2RvY3VtZW50IHx8ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7CiAgICAgICAgIHJldHVy
biBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CisgICAgYm9vbCBpc0luU2hhZG93VHJl
ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNJblNoYWRvd1RyZWVGbGFnKTsgfQorICAgIGJv
b2wgaXNJblRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoc3RhdGljX2Nhc3Q8Tm9k
ZUZsYWdzPihJbkRvY3VtZW50RmxhZyB8IElzSW5TaGFkb3dUcmVlRmxhZykpOyB9CiAKICAgICBi
b29sIGlzUmVhZE9ubHlOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBFTlRJVFlf
UkVGRVJFTkNFX05PREU7IH0KICAgICBib29sIGlzRG9jdW1lbnRUeXBlTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFOyB9CkBAIC03MDQsMTEgKzcw
NiwxMiBAQCBwcml2YXRlOgogICAgICAgICBIYXNFdmVudFRhcmdldERhdGFGbGFnID0gMSA8PCAy
MywKICAgICAgICAgVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0NGbGFnID0gMSA8PCAyNCwKICAg
ICAgICAgSXNJbnNlcnRpb25Qb2ludEZsYWcgPSAxIDw8IDI1LAorICAgICAgICBJc0luU2hhZG93
VHJlZUZsYWcgPSAxIDw8IDI2LAogCiAgICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNp
bmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07CiAKLSAgICAvLyA2IGJpdHMgcmVtYWluaW5n
CisgICAgLy8gNSBiaXRzIHJlbWFpbmluZwogCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBt
YXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZs
YWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVG
bGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9IApAQCAtNzIyLDcgKzcyNSw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3JlYXRlQ29udGFpbmVyID0gRGVmYXVsdE5vZGVGbGFn
cyB8IElzQ29udGFpbmVyRmxhZywgCiAgICAgICAgIENyZWF0ZUVsZW1lbnQgPSBDcmVhdGVDb250
YWluZXIgfCBJc0VsZW1lbnRGbGFnLCAKICAgICAgICAgQ3JlYXRlUHNldWRvRWxlbWVudCA9ICBD
cmVhdGVFbGVtZW50IHwgSW5Eb2N1bWVudEZsYWcsCi0gICAgICAgIENyZWF0ZVNoYWRvd1Jvb3Qg
PSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnLAorICAgICAgICBDcmVh
dGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZyB8
IElzSW5TaGFkb3dUcmVlRmxhZywKICAgICAgICAgQ3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IENy
ZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcsCiAgICAgICAgIENyZWF0ZVN0
eWxlZEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwgSXNTdHlsZWRFbGVtZW50RmxhZywgCiAgICAg
ICAgIENyZWF0ZUhUTUxFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzSFRNTEZsYWcs
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDU5ODJhN2QwNDdjZTZjMTliYzhkODcxMGRiODE5ZmRiZDRlYzY2NWIuLmU2MGE4
MTA4OGUyZDAxMTEyNzFmMjEwZWI3MDllZjlhNzcyMTE3ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMi0xMi0xMyAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW1NoYWRvdyBET01dIFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoKSBzaG91bGQg
d29yayBvdXRzaWRlIGRvY3VtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODc4MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVu
dGJ5aWQtaW4tb3JwaGFuLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTEzICBSaWNrIEJ5ZXJzICA8
cmJ5ZXJzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBMYXlvdXQgVGVzdCBmYXN0L2V2ZW50cy9t
b3VzZS1jdXJzb3ItaW1hZ2Utc2V0Lmh0bWwgaXMgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjBlMjIyYzgzMDUwNGY4MWNkYTZlMTY4MmMzNTU2NGY4
MjFmZDEyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9n
ZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1Rl
c3RzIHRvIGVuc3VyZSBTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkIHdvcmtzIGV2ZW4gaWYgYSBT
aGFkb3dSb290IGlzIG9ycGhhbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikgaXMgc2hhZG93Q2hpbGQxCitQ
QVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxkMgor
UEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKSBpcyBudWxsCitQQVNTIHNo
YWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkMiIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNo
aWxkMyIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpIGlz
IG51bGwKKworSW5zZXJ0IGVsZW1lbnRzIGhhdmluZyB0aGUgc2FtZSBpZAorUEFTUyBzaGFkb3dS
b290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDIKK1BBU1Mgc2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgc2hhZG93Q2hpbGQyXzMKKworTWFrZSB0
aGUgaG9zdCBpbiBkb2N1bWVudAorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGls
ZDEiKSBpcyBzaGFkb3dDaGlsZDEKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hp
bGQyIikgaXMgc2hhZG93Q2hpbGQyXzMKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQzIikgaXMgbnVsbAorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQi
KSBpcyBudWxsCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKSBpcyBudWxs
CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBudWxsCitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKSBpcyBjaGlsZDMKK1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpIGlzIGNoaWxkNAorCitBZGQgYSBjaGlsZCBhbmQgbWFr
ZSB0aGUgaG9zdCBub3QgaW4gZG9jdW1lbnQKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCgiY2hpbGQ1IikgaXMgc2hhZG93Q2hpbGQ1CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIw
NGNkMWQyNWM1ZjNkYzc3MmRiMDNlMTFkYTUzNDNkOTU4ZjdhYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRt
bApAQCAtMCwwICsxLDg0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJ3
cmFwcGVyIj48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8c2NyaXB0PgorZnVu
Y3Rpb24gY3JlYXRlRGl2V2l0aElkKGlkKQoreworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuaWQgPSBpZDsKKworICAgIHJldHVybiBkaXY7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0byBlbnN1cmUgU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCB3b3JrcyBldmVuIGlmIGEgU2hhZG93Um9vdCBpcyBvcnBoYW4uIik7CisKK3ZhciBob3N0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cit2YXIgc2hhZG93Um9vdCA9IGhvc3Qud2Vi
a2l0Q3JlYXRlU2hhZG93Um9vdCgpOworCit2YXIgc2hhZG93Q2hpbGQxID0gY3JlYXRlRGl2V2l0
aElkKCdjaGlsZDEnKTsKK3ZhciBzaGFkb3dDaGlsZDIgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxk
MicpOwordmFyIGhvc3RDaGlsZDEgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkMycpOwordmFyIGhv
c3RDaGlsZDIgPSBjcmVhdGVEaXZXaXRoSWQoJ2NoaWxkNCcpOworCitob3N0LmFwcGVuZENoaWxk
KGhvc3RDaGlsZDEpOworaG9zdC5hcHBlbmRDaGlsZChob3N0Q2hpbGQyKTsKK3NoYWRvd1Jvb3Qu
YXBwZW5kQ2hpbGQoc2hhZG93Q2hpbGQxKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93
Q2hpbGQyKTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIp
JywgJ3NoYWRvd0NoaWxkMScpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMicpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxl
bWVudEJ5SWQoImNoaWxkMyIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVs
ZW1lbnRCeUlkKCJjaGlsZDQiKScsICdudWxsJyk7CisKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQxIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjaGlsZDIiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNoaWxkMyIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2hpbGQ0IiknLCAnbnVsbCcpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnSW5zZXJ0
IGVsZW1lbnRzIGhhdmluZyB0aGUgc2FtZSBpZCcpOworCit2YXIgc2hhZG93Q2hpbGQyXzIgPSBj
cmVhdGVEaXZXaXRoSWQoJ2NoaWxkMicpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dD
aGlsZDJfMik7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIi
KScsICdzaGFkb3dDaGlsZDInKTsKKwordmFyIHNoYWRvd0NoaWxkMl8zID0gY3JlYXRlRGl2V2l0
aElkKCdjaGlsZDInKTsKK3NoYWRvd1Jvb3QuaW5zZXJ0QmVmb3JlKHNoYWRvd0NoaWxkMl8zLCBz
aGFkb3dSb290LmZpcnN0Q2hpbGQpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyXzMnKTsKKworZGVidWcoJycpOworZGVidWco
J01ha2UgdGhlIGhvc3QgaW4gZG9jdW1lbnQnKTsKK3dyYXBwZXIuYXBwZW5kQ2hpbGQoaG9zdCk7
CisKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdzaGFk
b3dDaGlsZDEnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIi
KScsICdzaGFkb3dDaGlsZDJfMycpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5
SWQoImNoaWxkMyIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDQiKScsICdudWxsJyk7CisKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQxIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDIiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNoaWxkMyIpJywgJ2NoaWxkMycpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDQiKScsICdjaGlsZDQnKTsKKworZGVidWcoJycpOworZGVidWcoJ0FkZCBhIGNo
aWxkIGFuZCBtYWtlIHRoZSBob3N0IG5vdCBpbiBkb2N1bWVudCcpOwordmFyIHNoYWRvd0NoaWxk
NSA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQ1Jyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKHNo
YWRvd0NoaWxkNSk7Cit3cmFwcGVyLnJlbW92ZUNoaWxkKGhvc3QpOworCitzaG91bGRCZSgnc2hh
ZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ1IiknLCAnc2hhZG93Q2hpbGQ1Jyk7CisKK2Rl
YnVnKCcnKTsKK3dyYXBwZXIuaW5uZXJIVE1MID0gIiI7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>179424</attachid>
            <date>2012-12-13 23:13:29 -0800</date>
            <delta_ts>2012-12-13 23:13:29 -0800</delta_ts>
            <desc>Performance Results (first 2 is without this patch, last 2 is with this patch)</desc>
            <filename>json.html</filename>
            <type>text/html</type>
            <size>24633</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3NoaW55YWsvbG9jYWwvd29yay0yL3Ny
Yy90aGlyZF9wYXJ0eS9XZWJLaXQnOwogICAgdmFyIHJlbW90ZVBhdGggPSAnaHR0cHM6Ly9zdm4u
d2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuayc7CiAgICB2YXIgbnVtYmVyT2ZGYWls
dXJlcyA9IDA7CiAgICB2YXIgc3RhcnRlZExvYWRpbmdQbHVnaW5zID0gZmFsc2U7CiAgICB2YXIg
bnVtYmVyT2ZMb2FkZWRQbHVnaW5zID0gMDsKCiAgICBmdW5jdGlvbiBsb2FkU2NyaXB0KHNyYywg
bG9hZGVkLCBmYWlsZWQpIHsKICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2NyaXB0Jyk7CiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTsKICAgICAgICBzY3Jp
cHQuc3JjID0gc3JjOwogICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkZWQ7CiAgICAgICAgaWYg
KGZhaWxlZCkKICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSBmYWlsZWQ7CiAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRQ
bHVnaW5zKHRydW5rUGF0aCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGx1Z2lucy5s
ZW5ndGg7IGkrKykKICAgICAgICAgICAgbG9hZFNjcmlwdCh0cnVua1BhdGggKyAnLycgKyBwbHVn
aW5zW2ldLCBsb2FkZWRQbHVnaW4sIGNyZWF0ZUZhaWxlZFRvTG9hZFBsdWdpbihwbHVnaW5zW2ld
KSk7CiAgICB9CgogICAgZnVuY3Rpb24gbG9hZGVkUGx1Z2luKCkgewogICAgICAgIG51bWJlck9m
TG9hZGVkUGx1Z2lucysrOwogICAgICAgIGlmIChudW1iZXJPZkxvYWRlZFBsdWdpbnMgPT0gcGx1
Z2lucy5sZW5ndGgpCiAgICAgICAgICAgIHNldFRpbWVvdXQoaW5pdCwgMCk7ICAgICAgICAgICAg
CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlRmFpbGVkVG9Mb2FkUGx1Z2luKHBsdWdpbikgewog
ICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGFsZXJ0KCJGYWlsZWQgdG8gbG9hZCAiICsgcGx1
Z2luKTsgfQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUxvYWRlZEpRdWVyeSh0cnVua1BhdGgp
IHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBsb2FkUGx1Z2lucyh0cnVua1BhdGgpOyB9
CiAgICB9CgogICAgbG9hZFNjcmlwdChsb2NhbFBhdGggKyAnLycgKyBqUXVlcnksCiAgICAgICAg
Y3JlYXRlTG9hZGVkSlF1ZXJ5KGxvY2FsUGF0aCksCiAgICAgICAgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICBsb2FkU2NyaXB0KHJlbW90ZVBhdGggKyAnLycgKyBqUXVlcnksCiAgICAgICAgICAg
ICAgICBjcmVhdGVMb2FkZWRKUXVlcnkocmVtb3RlUGF0aCksCiAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7IGFsZXJ0KCJGYWlsZWQgdG8gbG9hZCBqUXVlcnkuIik7IH0pOwogICAgICAgIH0p
Owp9KSgpOwoKZnVuY3Rpb24gVGVzdFJlc3VsdChhc3NvY2lhdGVkVGVzdCwgcmVzdWx0LCBhc3Nv
Y2lhdGVkUnVuKSB7CiAgICB0aGlzLnVuaXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXN1bHQu
dW5pdDsgfQogICAgdGhpcy50ZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRlZFRl
c3Q7IH0KICAgIHRoaXMudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzdWx0LnZhbHVl
cyA/IHJlc3VsdC52YWx1ZXMubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gYXNzb2NpYXRl
ZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogdmFsdWU7IH0pIDogdW5kZWZpbmVkOyB9CiAgICB0aGlz
LnVuc2NhbGVkTWVhbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc3VsdC5hdmc7IH0KICAgIHRo
aXMubWVhbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0
b3IoKSAqIHJlc3VsdC5hdmc7IH0KICAgIHRoaXMubWluID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
YXNzb2NpYXRlZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0Lm1pbjsgfQogICAgdGhpcy5t
YXggPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkg
KiByZXN1bHQubWF4OyB9CiAgICB0aGlzLnN0ZGV2ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNz
b2NpYXRlZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0LnN0ZGV2OyB9CiAgICB0aGlzLnN0
ZGV2UmF0aW8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXN1bHQuc3RkZXYgLyByZXN1bHQuYXZn
OyB9CiAgICB0aGlzLnBlcmNlbnREaWZmZXJlbmNlID0gZnVuY3Rpb24ob3RoZXIpIHsgcmV0dXJu
IChvdGhlci5tZWFuKCkgLSB0aGlzLm1lYW4oKSkgLyB0aGlzLm1lYW4oKTsgfQogICAgdGhpcy5p
c1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudCA9IGZ1bmN0aW9uIChvdGhlcikgewogICAgICAgIHZh
ciBkaWZmID0gTWF0aC5hYnMob3RoZXIubWVhbigpIC0gdGhpcy5tZWFuKCkpOwogICAgICAgIHJl
dHVybiBkaWZmID4gdGhpcy5zdGRldigpICYmIGRpZmYgPiBvdGhlci5zdGRldigpOwogICAgfQog
ICAgdGhpcy5ydW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkUnVuOyB9Cn0KCmZ1
bmN0aW9uIFRlc3RSdW4oZW50cnkpIHsKICAgIHRoaXMuZGVzY3JpcHRpb24gPSBmdW5jdGlvbiAo
KSB7IHJldHVybiBlbnRyeVsnZGVzY3JpcHRpb24nXTsgfQogICAgdGhpcy53ZWJraXRSZXZpc2lv
biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVudHJ5Wyd3ZWJraXQtcmV2aXNpb24nXTsgfQogICAg
dGhpcy5sYWJlbCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGFiZWwgPSAncicgKyB0aGlz
LndlYmtpdFJldmlzaW9uKCk7CiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRpb24oKSkKICAgICAg
ICAgICAgbGFiZWwgKz0gJyAmZGFzaDsgJyArIHRoaXMuZGVzY3JpcHRpb24oKTsKICAgICAgICBy
ZXR1cm4gbGFiZWw7CiAgICB9Cn0KCmZ1bmN0aW9uIFBlcmZUZXN0KG5hbWUpIHsKICAgIHZhciB0
ZXN0UmVzdWx0cyA9IFtdOwogICAgdmFyIGNhY2hlZFVuaXQgPSBudWxsOwogICAgdmFyIGNhY2hl
ZFNjYWxpbmdGYWN0b3IgPSBudWxsOwoKICAgIC8vIFdlIGNhbid0IGRvIHRoaXMgaW4gVGVzdFJl
c3VsdCBiZWNhdXNlIGFsbCByZXN1bHRzIGZvciBlYWNoIHRlc3QgbmVlZCB0byBzaGFyZSB0aGUg
c2FtZSB1bml0IGFuZCB0aGUgc2FtZSBzY2FsaW5nIGZhY3Rvci4KICAgIGZ1bmN0aW9uIGNvbXB1
dGVTY2FsaW5nRmFjdG9ySWZOZWVkZWQoKSB7CiAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4n
dCBiZSBhZGp1c3RpbmcgdW5pdHMgb24gZXZlcnkgdGVzdCByZXN1bHQuCiAgICAgICAgLy8gV2Ug
Y2FuIG9ubHkgZG8gdGhpcyBvbiB0aGUgZmlyc3QgdGVzdC4KICAgICAgICBpZiAoIXRlc3RSZXN1
bHRzLmxlbmd0aCB8fCBjYWNoZWRVbml0KQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIHZh
ciB1bml0ID0gdGVzdFJlc3VsdHNbMF0udW5pdCgpOyAvLyBGSVhNRTogV2Ugc2hvdWxkIHZlcmlm
eSB0aGF0IGFsbCByZXN1bHRzIGhhdmUgdGhlIHNhbWUgdW5pdC4KICAgICAgICB2YXIgbWVhbiA9
IHRlc3RSZXN1bHRzWzBdLnVuc2NhbGVkTWVhbigpOyAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sg
YXQgYWxsIHZhbHVlcy4KICAgICAgICB2YXIga2lsbyA9IHVuaXQgPT0gJ2J5dGVzJyA/IDEwMjQg
OiAxMDAwOwogICAgICAgIGlmIChtZWFuID4gMTAgKiBraWxvICoga2lsbyAmJiB1bml0ICE9ICdt
cycpIHsKICAgICAgICAgICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvIC8ga2lsbzsK
ICAgICAgICAgICAgY2FjaGVkVW5pdCA9ICdNICcgKyB1bml0OwogICAgICAgIH0gZWxzZSBpZiAo
bWVhbiA+IDEwICoga2lsbykgewogICAgICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMSAv
IGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSB1bml0ID09ICdtcycgPyAncycgOiAoJ0sg
JyArIHVuaXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0
b3IgPSAxOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gdW5pdDsKICAgICAgICB9CiAgICB9Cgog
ICAgdGhpcy5uYW1lID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmFtZTsgfQogICAgdGhpcy5pc01l
bW9yeVRlc3QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuYW1lLmluZGV4T2YoJzonKSA+PSAwOyB9
CiAgICB0aGlzLmFkZFJlc3VsdCA9IGZ1bmN0aW9uIChuZXdSZXN1bHQpIHsKICAgICAgICB0ZXN0
UmVzdWx0cy5wdXNoKG5ld1Jlc3VsdCk7CiAgICAgICAgY2FjaGVkVW5pdCA9IG51bGw7CiAgICAg
ICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CiAgICB9CiAgICB0aGlzLnJlc3VsdHMgPSBm
dW5jdGlvbiAoKSB7IHJldHVybiB0ZXN0UmVzdWx0czsgfQogICAgdGhpcy5zY2FsaW5nRmFjdG9y
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpOwog
ICAgICAgIHJldHVybiBjYWNoZWRTY2FsaW5nRmFjdG9yOwogICAgfQogICAgdGhpcy51bml0ID0g
ZnVuY3Rpb24gKCkgewogICAgICAgIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZOZWVkZWQoKTsKICAg
ICAgICByZXR1cm4gY2FjaGVkVW5pdDsKICAgIH0KICAgIHRoaXMuc21hbGxlcklzQmV0dGVyID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy51bml0KCkgPT0gJ21zJyB8fCB0aGlzLnVuaXQoKSA9
PSAnYnl0ZXMnOyB9Cn0KCnZhciBwbG90Q29sb3IgPSAncmdiKDIzMCw1MCw1MCknOwp2YXIgc3Vi
cG9pbnRzUGxvdE9wdGlvbnMgPSB7CiAgICBsaW5lczoge3Nob3c6dHJ1ZSwgbGluZVdpZHRoOiAw
fSwKICAgIGNvbG9yOiBwbG90Q29sb3IsCiAgICBwb2ludHM6IHtzaG93OiB0cnVlLCByYWRpdXM6
IDF9LAogICAgYmFyczoge3Nob3c6IGZhbHNlfX07Cgp2YXIgbWFpblBsb3RPcHRpb25zID0gewog
ICAgeGF4aXM6IHsKICAgICAgICBtaW46IC0wLjUsCiAgICAgICAgdGlja1NpemU6IDEsCiAgICB9
LAogICAgY3Jvc3NoYWlyOiB7IG1vZGU6ICd5JyB9LAogICAgc2VyaWVzOiB7IHNoYWRvd1NpemU6
IDAgfSwKICAgIGJhcnM6IHtzaG93OiB0cnVlLCBhbGlnbjogJ2NlbnRlcicsIGJhcldpZHRoOiAw
LjV9LAogICAgbGluZXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIHBvaW50czogeyBzaG93OiB0cnVl
IH0sCiAgICBncmlkOiB7CiAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgYm9yZGVyQ29s
b3I6ICcjY2NjJywKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJywKICAgICAgICBob3Zl
cmFibGU6IHRydWUsCiAgICAgICAgYXV0b0hpZ2hsaWdodDogZmFsc2UsCiAgICB9Cn07Cgp2YXIg
dGltZVBsb3RPcHRpb25zID0gewogICAgeWF4aXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIHhheGlz
OiB7IHNob3c6IGZhbHNlIH0sCiAgICBsaW5lczogeyBzaG93OiB0cnVlIH0sCiAgICBncmlkOiB7
IGJvcmRlcldpZHRoOiAxLCBib3JkZXJDb2xvcjogJyNjY2MnIH0sCiAgICBjb2xvcnM6IFsgcGxv
dENvbG9yIF0KfTsKCmZ1bmN0aW9uIGNyZWF0ZVBsb3QoY29udGFpbmVyLCB0ZXN0KSB7CiAgICB2
YXIgc2VjdGlvbiA9ICQoJzxzZWN0aW9uPjxkaXYgY2xhc3M9InBsb3QiPjwvZGl2PjxkaXYgY2xh
c3M9InRpbWUtcGxvdHMiPjwvZGl2PicKICAgICAgICArICc8c3BhbiBjbGFzcz0idG9vbHRpcCI+
PC9zcGFuPjwvc2VjdGlvbj4nKTsKICAgIHNlY3Rpb24uY2hpbGRyZW4oJy5wbG90JykuY3NzKHsn
d2lkdGgnOiAoMTAwICogdGVzdC5yZXN1bHRzKCkubGVuZ3RoICsgMjUpICsgJ3B4JywgJ2hlaWdo
dCc6ICczMDBweCd9KTsKICAgICQoY29udGFpbmVyKS5hcHBlbmQoc2VjdGlvbik7CgogICAgdmFy
IHBsb3RDb250YWluZXIgPSBzZWN0aW9uLmNoaWxkcmVuKCcucGxvdCcpOwogICAgdmFyIG1pbklz
WmVybyA9IHRydWU7CiAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVy
byk7CgogICAgYXR0YWNoVGltZVBsb3RzKHRlc3QsIHNlY3Rpb24uY2hpbGRyZW4oJy50aW1lLXBs
b3RzJykpOwoKICAgIHZhciB0b29sdGlwID0gc2VjdGlvbi5jaGlsZHJlbignLnRvb2x0aXAnKTsK
ICAgIHBsb3RDb250YWluZXIuYmluZCgncGxvdGhvdmVyJywgZnVuY3Rpb24gKGV2ZW50LCBwb3Np
dGlvbiwgaXRlbSkgewogICAgICAgIGlmIChpdGVtKSB7CiAgICAgICAgICAgIHZhciBwb3N0Zml4
ID0gaXRlbS5zZXJpZXMuaWQgPyAnICgnICsgaXRlbS5zZXJpZXMuaWQgKyAnKScgOiAnJzsKICAg
ICAgICAgICAgdG9vbHRpcC5odG1sKGl0ZW0uZGF0YXBvaW50WzFdLnRvUHJlY2lzaW9uKDQpICsg
cG9zdGZpeCk7CiAgICAgICAgICAgIHZhciBzZWN0aW9uT2Zmc2V0ID0gJChzZWN0aW9uKS5vZmZz
ZXQoKTsKICAgICAgICAgICAgdG9vbHRpcC5jc3Moe2xlZnQ6IGl0ZW0ucGFnZVggLSBzZWN0aW9u
T2Zmc2V0LmxlZnQgLSB0b29sdGlwLm91dGVyV2lkdGgoKSAvIDIsIHRvcDogaXRlbS5wYWdlWSAt
IHNlY3Rpb25PZmZzZXQudG9wICsgMTB9KTsKICAgICAgICAgICAgdG9vbHRpcC5mYWRlSW4oMjAw
KTsKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAg
IHBsb3RDb250YWluZXIubW91c2VvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIHRvb2x0aXAuaGlk
ZSgpOwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLmNsaWNrKGZ1bmN0aW9uIChldmVudCkgewog
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgbWluSXNaZXJvID0gIW1pbklz
WmVybzsKICAgICAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybyk7
CiAgICB9KTsKCiAgICByZXR1cm4gc2VjdGlvbjsKfQoKZnVuY3Rpb24gYXR0YWNoVGltZVBsb3Rz
KHRlc3QsIGNvbnRhaW5lcikgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKICAg
IHZhciBhdHRhY2hlZFBsb3QgPSBmYWxzZTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0
cy5sZW5ndGg7IGkrKykgewogICAgICAgIGNvbnRhaW5lci5hcHBlbmQoJzxkaXY+PC9kaXY+Jyk7
CiAgICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdHNbaV0udmFsdWVzKCk7CiAgICAgICAgaWYgKCF2
YWx1ZXMpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGF0dGFjaGVkUGxvdCA9IHRydWU7
CgogICAgICAgICQucGxvdChjb250YWluZXIuY2hpbGRyZW4oKS5sYXN0KCksIFt2YWx1ZXMubWFw
KGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHsgcmV0dXJuIFtpbmRleCwgdmFsdWVdOyB9KV0sCiAg
ICAgICAgICAgICQuZXh0ZW5kKHRydWUsIHt9LCB0aW1lUGxvdE9wdGlvbnMsIHt5YXhpczoge21p
bjogTWF0aC5taW4uYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDAuOSwgbWF4OiBNYXRoLm1heC5hcHBs
eShNYXRoLCB2YWx1ZXMpICogMS4xfSwKICAgICAgICAgICAgICAgIHhheGlzOiB7bWluOiAtMC41
LCBtYXg6IHZhbHVlcy5sZW5ndGggLSAwLjV9fSkpOwogICAgfQogICAgaWYgKCFhdHRhY2hlZFBs
b3QpCiAgICAgICAgY29udGFpbmVyLmNoaWxkcmVuKCkucmVtb3ZlKCk7Cn0KCmZ1bmN0aW9uIGF0
dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKSB7CiAgICB2YXIgcmVzdWx0
cyA9IHRlc3QucmVzdWx0cygpOwoKICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzLnJlZHVjZShmdW5j
dGlvbiAodmFsdWVzLCByZXN1bHQsIGluZGV4KSB7CiAgICAgICAgdmFyIG5ld1ZhbHVlcyA9IHJl
c3VsdC52YWx1ZXMoKTsKICAgICAgICByZXR1cm4gbmV3VmFsdWVzID8gdmFsdWVzLmNvbmNhdChu
ZXdWYWx1ZXMubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gW2luZGV4LCB2YWx1ZV07IH0p
KSA6IHZhbHVlczsKICAgIH0sIFtdKTsKCiAgICB2YXIgcGxvdERhdGEgPSBbXTsKICAgIGlmICh2
YWx1ZXMubGVuZ3RoKQogICAgICAgIHBsb3REYXRhID0gWyQuZXh0ZW5kKHRydWUsIHt9LCBzdWJw
b2ludHNQbG90T3B0aW9ucywge2RhdGE6IHZhbHVlc30pXTsKICAgIGVsc2UgewogICAgICAgIGZ1
bmN0aW9uIG1ha2VTdWJwb2ludHMoaWQsIGNhbGxiYWNrKSB7IHJldHVybiAkLmV4dGVuZCh0cnVl
LCB7fSwgc3VicG9pbnRzUGxvdE9wdGlvbnMsIHtpZDogaWQsIGRhdGE6IHJlc3VsdHMubWFwKGNh
bGxiYWNrKX0pOyB9CiAgICAgICAgcGxvdERhdGEgPSBbbWFrZVN1YnBvaW50cygnbWluJywgZnVu
Y3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1pbigpXTsgfSks
CiAgICAgICAgbWFrZVN1YnBvaW50cygnbWF4JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1heCgpXTsgfSksCiAgICAgICAgbWFrZVN1YnBvaW50cygn
LSYjOTYzOycsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3Vs
dC5tZWFuKCkgLSByZXN1bHQuc3RkZXYoKV07IH0pLAogICAgICAgIG1ha2VTdWJwb2ludHMoJysm
Izk2MzsnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQu
bWVhbigpICsgcmVzdWx0LnN0ZGV2KCldOyB9KV07CiAgICB9CgogICAgcGxvdERhdGEucHVzaCh7
aWQ6ICcmbXU7JywgZGF0YTogcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKV07IH0pLCBjb2xvcjogcGxvdENvbG9yfSk7Cgog
ICAgdmFyIGN1cnJlbnRQbG90T3B0aW9ucyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBtYWluUGxvdE9w
dGlvbnMsIHt5YXhpczogewogICAgICAgIG1pbjogbWluSXNaZXJvID8gMCA6IE1hdGgubWluLmFw
cGx5KE1hdGgsIHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBy
ZXN1bHQubWluKCk7IH0pKSAqIDAuOTgsCiAgICAgICAgbWF4OiBNYXRoLm1heC5hcHBseShNYXRo
LCByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1h
eCgpOyB9KSkgKiAobWluSXNaZXJvID8gMS4xIDogMS4wMSl9fSk7CgogICAgY3VycmVudFBsb3RP
cHRpb25zLnhheGlzLm1heCA9IHJlc3VsdHMubGVuZ3RoIC0gMC41OwogICAgY3VycmVudFBsb3RP
cHRpb25zLnhheGlzLnRpY2tzID0gcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgp
IHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0LnJ1bigpLmxhYmVsKCldOyB9KTsKCiAgICAkLnBsb3Qo
cGxvdENvbnRhaW5lciwgcGxvdERhdGEsIGN1cnJlbnRQbG90T3B0aW9ucyk7Cn0KCmZ1bmN0aW9u
IHRvRml4ZWRXaWR0aFByZWNpc2lvbih2YWx1ZSkgewogICAgdmFyIGRlY2ltYWwgPSB2YWx1ZS50
b0ZpeGVkKDIpOwogICAgcmV0dXJuIGRlY2ltYWw7Cn0KCmZ1bmN0aW9uIGZvcm1hdFBlcmNlbnRh
Z2UoZnJhY3Rpb24pIHsKICAgIHZhciBwZXJjZW50YWdlID0gZnJhY3Rpb24gKiAxMDA7CiAgICBy
ZXR1cm4gKGZyYWN0aW9uICogMTAwKS50b0ZpeGVkKDIpICsgJyUnOwp9CgpmdW5jdGlvbiBjcmVh
dGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCkg
ewogICAgJCgnI2NvbnRhaW5lcicpLmh0bWwoJzx0aGVhZD48dHI+PHRoPlRlc3Q8L3RoPjx0aD5V
bml0PC90aD4nICsgcnVucy5tYXAoZnVuY3Rpb24gKHJ1biwgaW5kZXgpIHsKICAgICAgICByZXR1
cm4gJzx0aCBjb2xzcGFuPSInICsgKGluZGV4ID09IHJlZmVyZW5jZUluZGV4ID8gMiA6IDMpICsg
JyIgY2xhc3M9Intzb3J0ZXI6IFwnY29tcGFyaXNvblwnfSI+JyArIHJ1bi5sYWJlbCgpICsgJzwv
dGg+JzsKICAgIH0pLnJlZHVjZShmdW5jdGlvbiAobWFya3VwLCBjZWxsKSB7IHJldHVybiBtYXJr
dXAgKyBjZWxsOyB9LCAnJykgKyAnPC90cj48L2hlYWQ+PHRib2R5PjwvdGJvZHk+Jyk7CgogICAg
dmFyIHRlc3ROYW1lcyA9IFtdOwogICAgZm9yICh0ZXN0TmFtZSBpbiB0ZXN0cykKICAgICAgICB0
ZXN0TmFtZXMucHVzaCh0ZXN0TmFtZSk7CgogICAgdGVzdE5hbWVzLnNvcnQoKS5tYXAoZnVuY3Rp
b24gKHRlc3ROYW1lKSB7CiAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0TmFtZV07CiAgICAg
ICAgaWYgKHRlc3QuaXNNZW1vcnlUZXN0KCkgIT0gc2hvdWxkSWdub3JlTWVtb3J5KQogICAgICAg
ICAgICBjcmVhdGVUYWJsZVJvdyhydW5zLCB0ZXN0LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsK
CiAgICAkKCcjY29udGFpbmVyJykudGFibGVzb3J0ZXIoe3dpZGdldHM6IFsnemVicmEnXX0pOwp9
CgpmdW5jdGlvbiBsaW5lYXJSZWdyZXNzaW9uKHBvaW50cykgewogICAgLy8gSW1wbGVtZW50IGh0
dHA6Ly93d3cuZWFzeWNhbGN1bGF0aW9uLmNvbS9zdGF0aXN0aWNzL2xlYXJuLWNvcnJlbGF0aW9u
LnBocC4KICAgIC8vIHggPSBtYWduaXR1ZGUKICAgIC8vIHkgPSBpdGVyYXRpb25zCiAgICB2YXIg
c3VtWCA9IDA7CiAgICB2YXIgc3VtWSA9IDA7CiAgICB2YXIgc3VtWFNxdWFyZWQgPSAwOwogICAg
dmFyIHN1bVlTcXVhcmVkID0gMDsKICAgIHZhciBzdW1YVGltZXNZID0gMDsKCiAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciB4ID0gaTsKICAg
ICAgICB2YXIgeSA9IHBvaW50c1tpXTsKICAgICAgICBzdW1YICs9IHg7CiAgICAgICAgc3VtWSAr
PSB5OwogICAgICAgIHN1bVhTcXVhcmVkICs9IHggKiB4OwogICAgICAgIHN1bVlTcXVhcmVkICs9
IHkgKiB5OwogICAgICAgIHN1bVhUaW1lc1kgKz0geCAqIHk7CiAgICB9CgogICAgdmFyIHIgPSAo
cG9pbnRzLmxlbmd0aCAqIHN1bVhUaW1lc1kgLSBzdW1YICogc3VtWSkgLwogICAgICAgIE1hdGgu
c3FydCgocG9pbnRzLmxlbmd0aCAqIHN1bVhTcXVhcmVkIC0gc3VtWCAqIHN1bVgpICoKICAgICAg
ICAgICAgICAgICAgKHBvaW50cy5sZW5ndGggKiBzdW1ZU3F1YXJlZCAtIHN1bVkgKiBzdW1ZKSk7
CgogICAgaWYgKGlzTmFOKHIpIHx8IHIgPT0gTWF0aC5JbmZpbml0eSkKICAgICAgICByID0gMDsK
CiAgICB2YXIgc2xvcGUgPSAocG9pbnRzLmxlbmd0aCAqIHN1bVhUaW1lc1kgLSBzdW1YICogc3Vt
WSkgLyAocG9pbnRzLmxlbmd0aCAqIHN1bVhTcXVhcmVkIC0gc3VtWCAqIHN1bVgpOwogICAgdmFy
IGludGVyY2VwdCA9IHN1bVkgLyBwb2ludHMubGVuZ3RoIC0gc2xvcGUgKiBzdW1YIC8gcG9pbnRz
Lmxlbmd0aDsKICAgIHJldHVybiB7c2xvcGU6IHNsb3BlLCBpbnRlcmNlcHQ6IGludGVyY2VwdCwg
clNxdWFyZWQ6IHIgKiByfTsKfQoKdmFyIHdhcm5pbmdTaWduID0gJzxzdmcgdmlld0JveD0iMCAw
IDEwMCAxMDAiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyB2ZXJ0aWNhbC1hbGln
bjogYm90dG9tOyIgdmVyc2lvbj0iMS4xIj4nCiAgICArICc8cG9seWdvbiBmaWxsPSJyZWQiIHBv
aW50cz0iNTAsMTAgOTAsODAgMTAsODAgNTAsMTAiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPicKICAgICsgJzxwb2x5Z29uIGZpbGw9Indo
aXRlIiBwb2ludHM9IjQ3LDMwIDQ4LDI5LCA1MCwgMjguNywgNTIsMjkgNTMsMzAgNTAsNjAiIHN0
cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+
JwogICAgKyAnPGNpcmNsZSBjeD0iNTAiIGN5PSI3MyIgcj0iNiIgZmlsbD0id2hpdGUiIC8+Jwog
ICAgKyAnPC9zdmc+JzsKCmZ1bmN0aW9uIGNyZWF0ZVRhYmxlUm93KHJ1bnMsIHRlc3QsIHJlZmVy
ZW5jZUluZGV4KSB7CiAgICB2YXIgdGFibGVSb3cgPSAkKCc8dHI+PHRkIGNsYXNzPSJ0ZXN0Ij4n
ICsgdGVzdC5uYW1lKCkgKyAnPC90ZD48dGQgY2xhc3M9InVuaXQiPicgKyB0ZXN0LnVuaXQoKSAr
ICc8L3RkPjwvdHI+Jyk7CgogICAgZnVuY3Rpb24gbWFya3VwRm9yUnVuKHJlc3VsdCwgcmVmZXJl
bmNlUmVzdWx0KSB7CiAgICAgICAgdmFyIGNvbXBhcmlzb25DZWxsID0gJyc7CiAgICAgICAgdmFy
IGhpZGRlblZhbHVlID0gJyc7CiAgICAgICAgdmFyIHNob3VsZENvbXBhcmUgPSByZXN1bHQgIT09
IHJlZmVyZW5jZVJlc3VsdDsKICAgICAgICBpZiAoc2hvdWxkQ29tcGFyZSAmJiByZWZlcmVuY2VS
ZXN1bHQpIHsKICAgICAgICAgICAgdmFyIHBlcmNlbnREaWZmZXJlbmNlID0gcmVmZXJlbmNlUmVz
dWx0LnBlcmNlbnREaWZmZXJlbmNlKHJlc3VsdCk7CiAgICAgICAgICAgIHZhciBiZXR0ZXIgPSB0
ZXN0LnNtYWxsZXJJc0JldHRlcigpID8gcGVyY2VudERpZmZlcmVuY2UgPCAwIDogcGVyY2VudERp
ZmZlcmVuY2UgPiAwOwogICAgICAgICAgICB2YXIgY29tcGFyaXNvbiA9ICcnOwogICAgICAgICAg
ICB2YXIgY2xhc3NOYW1lID0gJ2NvbXBhcmlzb24nOwogICAgICAgICAgICBpZiAocmVmZXJlbmNl
UmVzdWx0LmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50KHJlc3VsdCkpIHsKICAgICAgICAgICAg
ICAgIGNvbXBhcmlzb24gPSBmb3JtYXRQZXJjZW50YWdlKE1hdGguYWJzKHBlcmNlbnREaWZmZXJl
bmNlKSkgKyAoYmV0dGVyID8gJyBCZXR0ZXInIDogJyBXb3JzZSZuYnNwOycpOwogICAgICAgICAg
ICAgICAgY2xhc3NOYW1lICs9IGJldHRlciA/ICcgYmV0dGVyJyA6ICcgd29yc2UnOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGhpZGRlblZhbHVlID0gJzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBu
b25lIj58JyArIGNvbXBhcmlzb24gKyAnPC9zcGFuPic7CiAgICAgICAgICAgIGNvbXBhcmlzb25D
ZWxsID0gJzx0ZCBjbGFzcz0iJyArIGNsYXNzTmFtZSArICciPicgKyBjb21wYXJpc29uICsgJzwv
dGQ+JzsKICAgICAgICB9IGVsc2UgaWYgKHNob3VsZENvbXBhcmUpCiAgICAgICAgICAgIGNvbXBh
cmlzb25DZWxsID0gJzx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD4nOwoKICAgICAgICB2YXIg
dmFsdWVzID0gcmVzdWx0LnZhbHVlcygpOwogICAgICAgIHZhciB3YXJuaW5nID0gJyc7CiAgICAg
ICAgdmFyIHJlZ3Jlc3Npb25BbmFseXNpcyA9ICcnOwogICAgICAgIGlmICh2YWx1ZXMgJiYgdmFs
dWVzLmxlbmd0aCA+IDMpIHsKICAgICAgICAgICAgcmVncmVzc2lvblJlc3VsdCA9IGxpbmVhclJl
Z3Jlc3Npb24odmFsdWVzKTsKICAgICAgICAgICAgcmVncmVzc2lvbkFuYWx5c2lzID0gJ3Nsb3Bl
PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVncmVzc2lvblJlc3VsdC5zbG9wZSkKICAgICAg
ICAgICAgICAgICsgJywgUl4yPScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVncmVzc2lvblJl
c3VsdC5yU3F1YXJlZCk7CiAgICAgICAgICAgIGlmIChyZWdyZXNzaW9uUmVzdWx0LnJTcXVhcmVk
ID4gMC42ICYmIE1hdGguYWJzKHJlZ3Jlc3Npb25SZXN1bHQuc2xvcGUpID4gMC4wMSkgewogICAg
ICAgICAgICAgICAgd2FybmluZyA9ICcgPHNwYW4gY2xhc3M9InJlZ3Jlc3Npb24td2FybmluZyIg
dGl0bGU9IkRldGVjdGVkIGEgdGltZSBkZXBlbmRlbmN5IHdpdGggJyArIHJlZ3Jlc3Npb25BbmFs
eXNpcyArICciPicgKyB3YXJuaW5nU2lnbiArICcgPC9zcGFuPic7CiAgICAgICAgICAgIH0KICAg
ICAgICB9CgogICAgICAgIHZhciBzdGF0aXN0aWNzID0gJyZzaWdtYTs9JyArIHRvRml4ZWRXaWR0
aFByZWNpc2lvbihyZXN1bHQuc3RkZXYoKSkgKyAnLCBtaW49JyArIHRvRml4ZWRXaWR0aFByZWNp
c2lvbihyZXN1bHQubWluKCkpCiAgICAgICAgICAgICsgJywgbWF4PScgKyB0b0ZpeGVkV2lkdGhQ
cmVjaXNpb24ocmVzdWx0Lm1heCgpKSArICdcbicgKyByZWdyZXNzaW9uQW5hbHlzaXM7CgogICAg
ICAgIC8vIFRhYmxlc29ydGVyIGRvZXNuJ3Qga25vdyBhYm91dCB0aGUgc2Vjb25kIGNlbGwgc28g
cHV0IHRoZSBjb21wYXJpc29uIGluIHRoZSBpbnZpc2libGUgZWxlbWVudC4KICAgICAgICByZXR1
cm4gJzx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iJyArIHN0YXRpc3RpY3MgKyAnIj4nICsgdG9G
aXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tZWFuKCkpICsgaGlkZGVuVmFsdWUKICAgICAgICAg
ICAgKyAnPC90ZD48dGQgY2xhc3M9InN0ZGV2IiB0aXRsZT0iJyArIHN0YXRpc3RpY3MgKyAnIj4m
cGx1c21uOyAnCiAgICAgICAgICAgICsgZm9ybWF0UGVyY2VudGFnZShyZXN1bHQuc3RkZXZSYXRp
bygpKSArIHdhcm5pbmcgKyAnPC90ZD4nICsgY29tcGFyaXNvbkNlbGw7CiAgICB9CgogICAgZnVu
Y3Rpb24gbWFya3VwRm9yTWlzc2luZ1J1bihpc1JlZmVyZW5jZSkgewogICAgICAgIHJldHVybiAn
PHRkIGNvbHNwYW49IicgKyAoaXNSZWZlcmVuY2UgPyAyIDogMykgKyAnIiBjbGFzcz0ibWlzc2lu
ZyI+TWlzc2luZzwvdGQ+JzsKICAgIH0KCiAgICB2YXIgcnVuSW5kZXggPSAwOwogICAgdmFyIHJl
c3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKICAgIHZhciByZWZlcmVuY2VSZXN1bHQgPSB1bmRlZmlu
ZWQ7CiAgICB2YXIgcmVzdWx0SW5kZXhNYXAgPSB7fTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cmVzdWx0cy5sZW5ndGg7IGkrKykgewogICAgICAgIHdoaWxlIChydW5zW3J1bkluZGV4XSAhPT0g
cmVzdWx0c1tpXS5ydW4oKSkKICAgICAgICAgICAgcnVuSW5kZXgrKzsKICAgICAgICBpZiAocnVu
SW5kZXggPT0gcmVmZXJlbmNlSW5kZXgpCiAgICAgICAgICAgIHJlZmVyZW5jZVJlc3VsdCA9IHJl
c3VsdHNbaV07CiAgICAgICAgcmVzdWx0SW5kZXhNYXBbcnVuSW5kZXhdID0gaTsKICAgIH0KICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcnVucy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciByZXN1
bHRJbmRleCA9IHJlc3VsdEluZGV4TWFwW2ldOwogICAgICAgIGlmIChyZXN1bHRJbmRleCA9PSB1
bmRlZmluZWQpCiAgICAgICAgICAgIHRhYmxlUm93LmFwcGVuZChtYXJrdXBGb3JNaXNzaW5nUnVu
KGkgPT0gcmVmZXJlbmNlSW5kZXgpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHRhYmxlUm93
LmFwcGVuZChtYXJrdXBGb3JSdW4ocmVzdWx0c1tyZXN1bHRJbmRleF0sIHJlZmVyZW5jZVJlc3Vs
dCkpOwogICAgfQoKICAgICQoJyNjb250YWluZXInKS5jaGlsZHJlbigndGJvZHknKS5sYXN0KCku
YXBwZW5kKHRhYmxlUm93KTsKCiAgICB0YWJsZVJvdy5jbGljayhmdW5jdGlvbiAoZXZlbnQpIHsK
ICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9IHRhYmxlUm93WzBdICYmIGV2ZW50LnRhcmdldC5w
YXJlbnROb2RlICE9IHRhYmxlUm93WzBdKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgIHZhciBmaXJzdENlbGwgPSB0YWJsZVJvdy5j
aGlsZHJlbigndGQnKS5maXJzdCgpOwogICAgICAgIGlmIChmaXJzdENlbGwuY2hpbGRyZW4oJ3Nl
Y3Rpb24nKS5sZW5ndGgpIHsKICAgICAgICAgICAgZmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0aW9u
JykucmVtb3ZlKCk7CiAgICAgICAgICAgIHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmNzcyh7J3Bh
ZGRpbmctYm90dG9tJzogJyd9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgcGxv
dCA9IGNyZWF0ZVBsb3QoZmlyc3RDZWxsLCB0ZXN0KTsKICAgICAgICAgICAgcGxvdC5jc3Moeydw
b3NpdGlvbic6ICdhYnNvbHV0ZScsICd6LWluZGV4JzogMn0pOwogICAgICAgICAgICB2YXIgb2Zm
c2V0ID0gdGFibGVSb3cub2Zmc2V0KCk7CiAgICAgICAgICAgIG9mZnNldC5sZWZ0ICs9IDE7CiAg
ICAgICAgICAgIG9mZnNldC50b3AgKz0gdGFibGVSb3cub3V0ZXJIZWlnaHQoKTsKICAgICAgICAg
ICAgcGxvdC5vZmZzZXQob2Zmc2V0KTsKICAgICAgICAgICAgdGFibGVSb3cuY2hpbGRyZW4oJ3Rk
JykuY3NzKHsncGFkZGluZy1ib3R0b20nOiBwbG90Lm91dGVySGVpZ2h0KCkgKyA1fSk7CiAgICAg
ICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKfQoKZnVuY3Rpb24gaW5pdCgpIHsK
ICAgICQudGFibGVzb3J0ZXIuYWRkUGFyc2VyKHsKICAgICAgICBpZDogJ2NvbXBhcmlzb24nLAog
ICAgICAgIGlzOiBmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIHJldHVybiBzLmluZGV4T2YoJ3wn
KSA+PSAwOwogICAgICAgIH0sCiAgICAgICAgZm9ybWF0OiBmdW5jdGlvbihzKSB7CiAgICAgICAg
ICAgIHZhciBwYXJzZWQgPSBwYXJzZUZsb2F0KHMuc3Vic3RyaW5nKHMuaW5kZXhPZignfCcpICsg
MSkpOwogICAgICAgICAgICByZXR1cm4gaXNOYU4ocGFyc2VkKSA/IDAgOiBwYXJzZWQ7CiAgICAg
ICAgfSwKICAgICAgICB0eXBlOiAnbnVtZXJpYycsCiAgICB9KTsKCiAgICB2YXIgcnVucyA9IFtd
OwogICAgdmFyIHRlc3RzID0ge307CiAgICAkLmVhY2goSlNPTi5wYXJzZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnanNvbicpLnRleHRDb250ZW50KSwgZnVuY3Rpb24gKGluZGV4LCBlbnRyeSkg
ewogICAgICAgIHZhciBydW4gPSBuZXcgVGVzdFJ1bihlbnRyeSk7CiAgICAgICAgcnVucy5wdXNo
KHJ1bik7CiAgICAgICAgJC5lYWNoKGVudHJ5LnJlc3VsdHMsIGZ1bmN0aW9uICh0ZXN0LCByZXN1
bHQpIHsKICAgICAgICAgICAgaWYgKCF0ZXN0c1t0ZXN0XSkKICAgICAgICAgICAgICAgIHRlc3Rz
W3Rlc3RdID0gbmV3IFBlcmZUZXN0KHRlc3QpOwogICAgICAgICAgICB0ZXN0c1t0ZXN0XS5hZGRS
ZXN1bHQobmV3IFRlc3RSZXN1bHQodGVzdHNbdGVzdF0sIHJlc3VsdCwgcnVuKSk7CiAgICAgICAg
fSk7CiAgICB9KTsKCiAgICB2YXIgc2hvdWxkSWdub3JlTWVtb3J5PSB0cnVlOwogICAgdmFyIHJl
ZmVyZW5jZUluZGV4ID0gMDsKICAgIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25v
cmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KTsKCiAgICAkKCcjdGltZS1tZW1vcnknKS5iaW5kKCdj
aGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQsIGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgc2hvdWxk
SWdub3JlTWVtb3J5ID0gY2hlY2tlZEVsZW1lbnQudGV4dENvbnRlbnQgPT0gJ1RpbWUnOwogICAg
ICAgIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5j
ZUluZGV4KTsKICAgIH0pOwoKICAgIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4sIGluZGV4KSB7CiAg
ICAgICAgJCgnI3JlZmVyZW5jZScpLmFwcGVuZCgnPHNwYW4gdmFsdWU9IicgKyBpbmRleCArICci
JyArIChpbmRleCA9PSByZWZlcmVuY2VJbmRleCA/ICcgY2xhc3M9ImNoZWNrZWQiJyA6ICcnKSAr
ICc+JyArIHJ1bi5sYWJlbCgpICsgJzwvc3Bhbj4nKTsKICAgIH0pCgogICAgJCgnI3JlZmVyZW5j
ZScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChldmVudCwgY2hlY2tlZEVsZW1lbnQpIHsKICAg
ICAgICByZWZlcmVuY2VJbmRleCA9IHBhcnNlSW50KGNoZWNrZWRFbGVtZW50LmdldEF0dHJpYnV0
ZSgndmFsdWUnKSk7CiAgICAgICAgY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9y
ZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgJCgnLmNoZWNrYm94JykuZWFj
aChmdW5jdGlvbiAoaW5kZXgsIGNoZWNrYm94KSB7CiAgICAgICAgJChjaGVja2JveCkuY2hpbGRy
ZW4oJ3NwYW4nKS5jbGljayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgaWYgKCQodGhp
cykuaGFzQ2xhc3MoJ2NoZWNrZWQnKSkKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgJChjaGVja2JveCkuY2hpbGRyZW4oJ3NwYW4nKS5yZW1vdmVDbGFzcygnY2hlY2tlZCcpOwog
ICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdjaGVja2VkJyk7CiAgICAgICAgICAgICQoY2hl
Y2tib3gpLnRyaWdnZXIoJ2NoYW5nZScsICQodGhpcykpOwogICAgICAgIH0pOwogICAgfSk7Cn0K
Cjwvc2NyaXB0Pgo8c2NyaXB0IGlkPSJqc29uIiB0eXBlPSJhcHBsaWNhdGlvbi9qc29uIj5beyJ0
aW1lc3RhbXAiOiAxMzU1NDY3OTQwLCAid2Via2l0LXJldmlzaW9uIjogIjEzNzY4NCIsICJyZXN1
bHRzIjogeyJQYXJzZXIvaHRtbDUtZnVsbC1yZW5kZXI6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJt
YXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJQYXJzZXIv
aHRtbDUtZnVsbC1yZW5kZXI6SlNIZWFwIjogeyJtaW4iOiAyNTE5Mzg0LjAsICJtYXgiOiAyNTYw
OTYwLjAsICJtZWRpYW4iOiAyNTQ0MjAwLjAsICJ2YWx1ZXMiOiBbMjU2MDk2MC4wLCAyNTQ0MjAw
LjAsIDI1NTU0MjQuMCwgMjUxOTM4NC4wLCAyNTIzNzM2LjBdLCAic3RkZXYiOiAxODU4NS4zMDc0
MDEyNzgxMDcsICJhdmciOiAyNTQwNzQwLjgsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Rv
bS1tb2RpZnkiOiB7Im1pbiI6IDMxLjI3MTI3NDAzNjM4ODkyNCwgIm1heCI6IDM4LjQwNjAzODI2
MDA1MDgyLCAibWVkaWFuIjogMzYuNDQ0NzA2OTEwMTUxMjQsICJ2YWx1ZXMiOiBbMzEuMjcxMjc0
MDM2Mzg4OTI0LCAzMi4zNDEyNTYyMDIzNTUyNzUsIDM2LjQ0NDcwNjkxMDE1MTI0LCAzNy41ODU1
MzY4NDI4Nzk3MDUsIDM4LjQwNjAzODI2MDA1MDgyXSwgInN0ZGV2IjogMy4yMDY0NjE4MzE4NDY4
NTA1LCAiYXZnIjogMzUuMjA5NzYyNDUwMzY1MiwgInVuaXQiOiAicnVucy9zIn0sICJQYXJzZXIv
aHRtbDUtZnVsbC1yZW5kZXIiOiB7Im1pbiI6IDQyODUuOTM2OTk5OTQ5NjI3LCAibWF4IjogNDQ4
MS44OTAwMDAwNTM2ODEsICJtZWRpYW4iOiA0MjkwLjcwODAwMDA3MzIwOSwgInZhbHVlcyI6IFs0
NDgxLjg5MDAwMDA1MzY4MSwgNDI5MC43MDgwMDAwNzMyMDksIDQyOTQuNDY1OTk5OTMzODkxLCA0
Mjg1LjkzNjk5OTk0OTYyNywgNDI4OS41NjAwMDAwNjI5Ml0sICJzdGRldiI6IDg1Ljc5NDc3MzA5
MTk4NTIsICJhdmciOiA0MzI4LjUxMjIwMDAxNDY2NiwgInVuaXQiOiAibXMifX0sICJicmFuY2gi
OiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlzaW9uIjogIjE3MjgyOCJ9LCB7InRpbWVz
dGFtcCI6IDEzNTU0NjgwMTUsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNzI4MjgiLCAicmVzdWx0
cyI6IHsiUGFyc2VyL2h0bWw1LWZ1bGwtcmVuZGVyOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4
IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
XSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9k
b20tbW9kaWZ5IjogeyJtaW4iOiAzMS4yNTg1MDkzMTU2Mzc1MSwgIm1heCI6IDM4LjU1NTQ4ODI3
NTU5ODk0LCAibWVkaWFuIjogMzYuMzc4NTczOTMyMDg5MzEsICJ2YWx1ZXMiOiBbMzEuMjU4NTA5
MzE1NjM3NTEsIDMyLjQ1NDg3MDQ5NDA2ODYxNSwgMzYuMzc4NTczOTMyMDg5MzEsIDM3LjY4ODUz
ODA5NzA2ODI2LCAzOC41NTU0ODgyNzU1OTg5NF0sICJzdGRldiI6IDMuMjM2MTExNDEwMDY1NzU0
LCAiYXZnIjogMzUuMjY3MTk2MDIyODkyNTMsICJ1bml0IjogInJ1bnMvcyJ9LCAiUGFyc2VyL2h0
bWw1LWZ1bGwtcmVuZGVyIjogeyJtaW4iOiA0MjM0LjczNzAwMDA3ODg5NCwgIm1heCI6IDQyNzYu
Mzk1MDAwMDUxNzA3LCAibWVkaWFuIjogNDI2Mi4zMjA5OTk5ODc0MjMsICJ2YWx1ZXMiOiBbNDIz
NC43MzcwMDAwNzg4OTQsIDQyMzYuNDkzMDAwMDYyMTgzLCA0Mjc2LjM5NTAwMDA1MTcwNywgNDI2
NC43NzY5OTk5NDU3NTIsIDQyNjIuMzIwOTk5OTg3NDIzXSwgInN0ZGV2IjogMTguNDM5MTk1MDky
ODA5MTIyLCAiYXZnIjogNDI1NC45NDQ2MDAwMjUxOTIsICJ1bml0IjogIm1zIn0sICJQYXJzZXIv
aHRtbDUtZnVsbC1yZW5kZXI6SlNIZWFwIjogeyJtaW4iOiAyNTE5Mzg0LjAsICJtYXgiOiAyNTYw
OTYwLjAsICJtZWRpYW4iOiAyNTQ0MjAwLjAsICJ2YWx1ZXMiOiBbMjU2MDk2MC4wLCAyNTQ0MjAw
LjAsIDI1NTU0MjQuMCwgMjUxOTM4NC4wLCAyNTIzNzQ0LjBdLCAic3RkZXYiOiAxODU4My40Nzc3
MzY5NTc2MDQsICJhdmciOiAyNTQwNzQyLjQsICJ1bml0IjogImJ5dGVzIn19LCAiYnJhbmNoIjog
IndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3Njg0In0sIHsidGltZXN0YW1w
IjogMTM1NTQ2ODExNywgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzc2ODQiLCAicmVzdWx0cyI6IHsi
UGFyc2VyL2h0bWw1LWZ1bGwtcmVuZGVyOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4w
LCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0
ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiUGFyc2VyL2h0bWw1LWZ1
bGwtcmVuZGVyOkpTSGVhcCI6IHsibWluIjogMjUxOTA5Ni4wLCAibWF4IjogMjU2MDQ0MC4wLCAi
bWVkaWFuIjogMjU0MzY4MC4wLCAidmFsdWVzIjogWzI1NjA0NDAuMCwgMjU0MzY4MC4wLCAyNTU0
Njk2LjAsIDI1MTkwOTYuMCwgMjUyMjc4NC4wXSwgInN0ZGV2IjogMTg1NzguMDc0NDc1MDM2Mzk2
LCAiYXZnIjogMjU0MDEzOS4yLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kb20tbW9kaWZ5
IjogeyJtaW4iOiAzMS44NDU5MDM2NDM0NTM3NjcsICJtYXgiOiAzOC45OTg3MzczMzkxODcyNywg
Im1lZGlhbiI6IDM2Ljk0OTU0MzcyOTY0MjksICJ2YWx1ZXMiOiBbMzEuODQ1OTAzNjQzNDUzNzY3
LCAzMi45NTIxNjA4MDc4Mjk2MTQsIDM2Ljk0OTU0MzcyOTY0MjksIDM4LjA0NjkyODMzNDY0ODE4
NiwgMzguOTk4NzM3MzM5MTg3MjddLCAic3RkZXYiOiAzLjE3NTYzMjg5ODEwMTAxOTYsICJhdmci
OiAzNS43NTg2NTQ3NzA5NTIzNSwgInVuaXQiOiAicnVucy9zIn0sICJQYXJzZXIvaHRtbDUtZnVs
bC1yZW5kZXIiOiB7Im1pbiI6IDQyMzUuMjM4OTk5OTQzMjQ5LCAibWF4IjogNDMwNS4xNDgwMDAw
MTQwMTQ1LCAibWVkaWFuIjogNDI4OC4zNTI5OTk5NTI2MjIsICJ2YWx1ZXMiOiBbNDIzNS4yMzg5
OTk5NDMyNDksIDQyNTIuODMxOTk5OTEwOTk1LCA0MzA1LjE0ODAwMDAxNDAxNDUsIDQyODguMzUy
OTk5OTUyNjIyLCA0MzA0LjE0NjAwMDA2NzcwM10sICJzdGRldiI6IDMxLjU2NzY4OTUwMDc0OTg2
NCwgImF2ZyI6IDQyNzcuMTQzNTk5OTc3NzE3LCAidW5pdCI6ICJtcyJ9fSwgImJyYW5jaCI6ICJ3
ZWJraXQtdHJ1bmsiLCAiY2hyb21pdW0tcmV2aXNpb24iOiAiMTcyODI4In0sIHsidGltZXN0YW1w
IjogMTM1NTQ2ODIwNiwgImNocm9taXVtLXJldmlzaW9uIjogIjE3MjgyOCIsICJyZXN1bHRzIjog
eyJQYXJzZXIvaHRtbDUtZnVsbC1yZW5kZXI6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAw
LjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAi
c3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2RvbS1t
b2RpZnkiOiB7Im1pbiI6IDMxLjcxNDU3MjgyNTE3NzExNSwgIm1heCI6IDM4LjgwNjkzMTI0NDY3
MTcsICJtZWRpYW4iOiAzNi41OTgzNDkyMDkxNTI4OCwgInZhbHVlcyI6IFszMS43MTQ1NzI4MjUx
NzcxMTUsIDMyLjgwMTYzMzI2MjQyMjI5LCAzNi41OTgzNDkyMDkxNTI4OCwgMzcuODczOTE0ODM0
MDI1MzcsIDM4LjgwNjkzMTI0NDY3MTddLCAic3RkZXYiOiAzLjEzNzMwODgxNjIxNzY1OSwgImF2
ZyI6IDM1LjU1OTA4MDI3NTA4OTg3NiwgInVuaXQiOiAicnVucy9zIn0sICJQYXJzZXIvaHRtbDUt
ZnVsbC1yZW5kZXIiOiB7Im1pbiI6IDQyMTIuNjgzOTk5OTEwOTUxLCAibWF4IjogNDIyOS4yNzkw
MDAwNzkyNTksICJtZWRpYW4iOiA0MjI2LjE3MzAwMDA2MDk1MywgInZhbHVlcyI6IFs0MjI2LjE3
MzAwMDA2MDk1MywgNDIyOS4yNzkwMDAwNzkyNTksIDQyMTYuNTg3OTk5OTUyMDI2LCA0MjEyLjY4
Mzk5OTkxMDk1MSwgNDIyNy40NTAwMDAwMDU3NzRdLCAic3RkZXYiOiA3LjMzNTQwNDE5Mjk1NjE5
NywgImF2ZyI6IDQyMjIuNDM0ODAwMDAxNzkzLCAidW5pdCI6ICJtcyJ9LCAiUGFyc2VyL2h0bWw1
LWZ1bGwtcmVuZGVyOkpTSGVhcCI6IHsibWluIjogMjUxOTEwNC4wLCAibWF4IjogMjU2MDQ0OC4w
LCAibWVkaWFuIjogMjU0MzY4OC4wLCAidmFsdWVzIjogWzI1NjA0NDguMCwgMjU0MzY4OC4wLCAy
NTU0NzA0LjAsIDI1MTkxMDQuMCwgMjUyMjc5Mi4wXSwgInN0ZGV2IjogMTg1NzguMDc0NDc1MDM2
Mzk2LCAiYXZnIjogMjU0MDE0Ny4yLCAidW5pdCI6ICJieXRlcyJ9fSwgImJyYW5jaCI6ICJ3ZWJr
aXQtdHJ1bmsiLCAid2Via2l0LXJldmlzaW9uIjogIjEzNzY4NCJ9XTwvc2NyaXB0Pgo8L2JvZHk+
CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179425</attachid>
            <date>2012-12-13 23:17:50 -0800</date>
            <delta_ts>2012-12-13 23:35:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87815-20121214161510.patch</filename>
            <type>text/plain</type>
            <size>12437</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkyYzMxNjQ2N2NiMWNh
MGFhNzI3YmEzODk3NTljNTUxZGQwZjRiMC4uYzczMDA4YzBiODA5YTE5MWQzNDFlN2Q3OTFlNDNh
MmQ4Y2FmNDEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTEyLTEzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzgx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYWRv
d1Jvb3QuZ2V0RWxlbWVudEJ5SWQoKSBkaWRuJ3Qgd29yayBpZiBTaGFkb3dSb290IGlzIG91dHNp
ZGUgZG9jdW1lbnQuIFdlIG5lZWQgdG8gdXBkYXRlIGlkIHdoZW4gYW4gZWxlbWVudAorICAgICAg
ICBpcyBpbiBTaGFkb3dUcmVlIGV2ZW50IGlmIGl0IGlzIG5vdCBpbiBkb2N1bWVudC4KKworICAg
ICAgICBGb3IgcGVyZm9ybWFuY2UgcmVhc29uLCB3ZSBpbnRyb2R1Y2UgSXNJblNoYWRvd1RyZWUg
ZmxhZywgd2hpY2ggZW5hYmxlcyB1cyB0byBjaGVjayBpc0luVHJlZVNjb3BlKCkgZmFzdC4KKyAg
ICAgICAgVGhpcyBpcyBtYWludGFpbmVkIGluIEVsZW1lbnQ6Omluc2VydGVkSW50byBhbmQgcmVt
b3ZlZEZyb20uIEhlcmUsIHdlJ3JlIGFueGlvdXMgYWJvdXQgcGVyZm9ybWFuY2UgcmVncmVzc2lv
biwKKyAgICAgICAgaG93ZXZlciBvdXIgYmVuY2htYXJrIHJlc3VsdCBzaG93cyB0aGlzIGRvZXNu
J3QgcmVncmVzcyB0aGUgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgSSd2ZSBtZWFzdXJlZCBEcm9t
YWVvL2RvbS1tb2RpZnkuaHRtbCBhbmQgUGFyc2VyL2h0bWw1LWZ1bGwtcmVuZGVyLmh0bWwgMiB0
aW1lcy4KKworICAgICAgICBEcm9tYWVvL2RvbS1tb2RpZnkuaHRtbAorICAgICAgICAgICAgIDM1
LjIxLCAgIDM1LjI3IFtydW5zL3NdIC0tLT4gICAzNS43NiwgICAzNS41NiBbcnVucy9zXQorICAg
ICAgICBQYXJzZXIvaHRtbDUtZnVsbC1yZW5kZXIuaHRtbAorICAgICAgICAgICA0MzI4LjUxLCA0
MjU0Ljk0IFttc10gICAgIC0tLT4gNDI3Ny4xNCwgNDIyMi40MyBbbXNdCisKKyAgICAgICAgVGVz
dDogZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5odG1sCisKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjppbnNlcnRl
ZEludG8pOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojp1cGRhdGVJZCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6aW5zZXJ0ZWRJbnRvKTogSWYgdGhlIHBhcmVudCBub2RlIGlzIGluIHNoYWRvdyB0
cmVlLCB0aGlzIG5vZGUgc2hvdWxkIGJlIGFsc28gaW4gdGhlIHNhbWUgc2hhZG93IHRyZWUuCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVkRnJvbSk6IFdoZW4gbm9kZSBpcyByZW1vdmVk
IGZyb20gU2hhZG93VHJlZSwgaXRzIHRyZWVTY29wZSgpIHNob3VsZCBub3QgYmUgU2hhZG93Um9v
dC4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjppc0luU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0lu
VHJlZVNjb3BlKToKKwogMjAxMi0xMi0xMyAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQgaXMgc2xvdyBkdWUgdG8gQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTBiOWJlNjcz
YzEzNDU0NDRlOTljYWZhMDkwNzNhYThkOTViMDRhYS4uZGZhNjEzZTQyOWM0NjA3MDA0YjNjN2Ix
YTg5MGQzMDZmN2VlNDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTA5OCw3ICsxMDk4
LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBFbGVtZW50OjppbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW8KICAgICAgICAgc2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXModHJ1ZSk7CiAjZW5k
aWYKIAotICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWlu
c2VydGlvblBvaW50LT5pc0luVHJlZVNjb3BlKCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25E
b25lOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZ2V0SWRBdHRyaWJ1dGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCmluZGV4IDY2YWFkNmU5ZDA4MmI5MzdkZmZhNDVhYmU5ZDEzZDMx
ODFiMTlmYjUuLmIyODg5OTI5MTBjNzIzYTA2M2Q1NjkyNDIyZTYxMzI1YzNhZmQwZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtNjc5LDcgKzY3OSw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVw
ZGF0ZU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
CiAKIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xk
SWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCiB7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkp
CisgICAgaWYgKCFpc0luVHJlZVNjb3BlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChv
bGRJZCA9PSBuZXdJZCkKQEAgLTY5MCw3ICs2OTAsNyBAQCBpbmxpbmUgdm9pZCBFbGVtZW50Ojp1
cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
dwogCiBpbmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZChUcmVlU2NvcGUqIHNjb3BlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lkKQogewotICAg
IEFTU0VSVChpbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChpc0luVHJlZVNjb3BlKCkpOwogICAg
IEFTU0VSVChvbGRJZCAhPSBuZXdJZCk7CiAKICAgICBpZiAoIW9sZElkLmlzRW1wdHkoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCA4MmVjM2FmOTk3MjBiMTNkMzhlZWI0NjhkMWI3ZWY5YWFiZmM1MDRj
Li45ZDFjNDk2MmY5MjJiZDczYWZhOTc5MmNkMDc2MWY0YTc0Njk3NGY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC0xMjcwLDExICsxMjcwLDYgQEAgQ29udGFpbmVyTm9kZSogTm9kZTo6bm9uU2hhZG93
Qm91bmRhcnlQYXJlbnROb2RlKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50ICYmICFwYXJlbnQt
PmlzU2hhZG93Um9vdCgpID8gcGFyZW50IDogMDsKIH0KIAotYm9vbCBOb2RlOjppc0luU2hhZG93
VHJlZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRyZWVTY29wZSgpICE9IGRvY3VtZW50KCk7Ci19
Ci0KIEVsZW1lbnQqIE5vZGU6OnBhcmVudE9ySG9zdEVsZW1lbnQoKSBjb25zdAogewogICAgIENv
bnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKQEAgLTIxMDAsNiArMjA5
NSw4IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgTm9kZTo6aW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvCiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50
LT5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwogICAgIGlmIChpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpKQogICAgICAgICBzZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKKyAg
ICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNJblNoYWRvd1RyZWUoKSkKKyAg
ICAgICAgc2V0RmxhZyhJc0luU2hhZG93VHJlZUZsYWcpOwogICAgIHJldHVybiBJbnNlcnRpb25E
b25lOwogfQogCkBAIC0yMTA4LDYgKzIxMDUsOCBAQCB2b2lkIE5vZGU6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC0+
aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAoaW5zZXJ0aW9uUG9p
bnQtPmluRG9jdW1lbnQoKSkKICAgICAgICAgY2xlYXJGbGFnKEluRG9jdW1lbnRGbGFnKTsKKyAg
ICBpZiAoaXNJblNoYWRvd1RyZWUoKSAmJiAhdHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlzU2hh
ZG93Um9vdCgpKQorICAgICAgICBjbGVhckZsYWcoSXNJblNoYWRvd1RyZWVGbGFnKTsKIH0KIAog
dm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCA4M2RmMWRlNTZmZTllZDI4YTc4ZWRlNzNkYzJlYWQ5NWNiZmU0ZTI0Li42
ZGZiMTkxZTM1NTAyNzRjMTY4YmRiZWIyMjJjNDNmZjU1OGQ5NTU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTI3NSw3ICsyNzUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIDAsIGEgY2hpbGQgb2Yg
U2hhZG93Um9vdCwgb3IgYSBsZWdhY3kgc2hhZG93IHJvb3QuCiAgICAgTm9kZSogbm9uQm91bmRh
cnlTaGFkb3dUcmVlUm9vdE5vZGUoKTsKLSAgICBib29sIGlzSW5TaGFkb3dUcmVlKCkgY29uc3Q7
CisKICAgICAvLyBOb2RlJ3MgcGFyZW50LCBzaGFkb3cgdHJlZSBob3N0LgogICAgIENvbnRhaW5l
ck5vZGUqIHBhcmVudE9ySG9zdE5vZGUoKSBjb25zdDsKICAgICBFbGVtZW50KiBwYXJlbnRPckhv
c3RFbGVtZW50KCkgY29uc3Q7CkBAIC00NzYsNiArNDc2LDggQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQobV9kb2N1bWVudCB8fCAhZ2V0RmxhZyhJbkRvY3VtZW50RmxhZykpOwogICAgICAgICBy
ZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7CiAgICAgfQorICAgIGJvb2wgaXNJblNoYWRv
d1RyZWUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSW5TaGFkb3dUcmVlRmxhZyk7IH0KKyAg
ICBib29sIGlzSW5UcmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKHN0YXRpY19jYXN0
PE5vZGVGbGFncz4oSW5Eb2N1bWVudEZsYWcgfCBJc0luU2hhZG93VHJlZUZsYWcpKTsgfQogCiAg
ICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRU5U
SVRZX1JFRkVSRU5DRV9OT0RFOyB9CiAgICAgYm9vbCBpc0RvY3VtZW50VHlwZU5vZGUoKSBjb25z
dCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERTsgfQpAQCAtNzEyLDEx
ICs3MTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEg
PDwgMjMsCiAgICAgICAgIFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDRmxhZyA9IDEgPDwgMjQs
CiAgICAgICAgIE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcgPSAxIDw8IDI1LAorICAgICAgICBJ
c0luU2hhZG93VHJlZUZsYWcgPSAxIDw8IDI2LAogCiAgICAgICAgIERlZmF1bHROb2RlRmxhZ3Mg
PSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07CiAKLSAgICAvLyA2IGJpdHMg
cmVtYWluaW5nCisgICAgLy8gNSBiaXRzIHJlbWFpbmluZwogCiAgICAgYm9vbCBnZXRGbGFnKE5v
ZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2
b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9
IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9IApAQCAtNzMw
LDcgKzczMyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3JlYXRlQ29udGFpbmVyID0gRGVmYXVs
dE5vZGVGbGFncyB8IElzQ29udGFpbmVyRmxhZywgCiAgICAgICAgIENyZWF0ZUVsZW1lbnQgPSBD
cmVhdGVDb250YWluZXIgfCBJc0VsZW1lbnRGbGFnLCAKICAgICAgICAgQ3JlYXRlUHNldWRvRWxl
bWVudCA9ICBDcmVhdGVFbGVtZW50IHwgSW5Eb2N1bWVudEZsYWcgfCBOZWVkc1NoYWRvd1RyZWVX
YWxrZXJGbGFnLAotICAgICAgICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwg
SXNEb2N1bWVudEZyYWdtZW50RmxhZyB8IE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcsCisgICAg
ICAgIENyZWF0ZVNoYWRvd1Jvb3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21l
bnRGbGFnIHwgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyB8IElzSW5TaGFkb3dUcmVlRmxhZywK
ICAgICAgICAgQ3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9j
dW1lbnRGcmFnbWVudEZsYWcsCiAgICAgICAgIENyZWF0ZVN0eWxlZEVsZW1lbnQgPSBDcmVhdGVF
bGVtZW50IHwgSXNTdHlsZWRFbGVtZW50RmxhZywgCiAgICAgICAgIENyZWF0ZUhUTUxFbGVtZW50
ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzSFRNTEZsYWcsIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE4NzczNDMzNTI4
NGIyMWNkODBhMWY4OGRhZTVmOWExMTNjODAxY2MuLjI2NjM4ZGNhYzIzZTgxZTYxYzMzZWRkNDNi
Zjg2NzA4ZTNkYzlhYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMi0xMyAgU2hpbnlh
IEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoKSBzaG91bGQgd29yayBvdXRzaWRlIGRvY3VtZW50
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4MTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTEyLTEzICBLdW5paGlrbyBTYWthbW90byAgPGtzYWthbW90b0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgU2Vjb25kcy9NaW51dGVzIGZpZWxkIG9mIGRhdGUvdGltZSBp
bnB1dCBVSSBzaG91bGQgcmVzcGVjdCBzdGVwIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFu
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGUyMjJjODMwNTA0ZjgxY2RhNmUxNjgyYzM1NTY0
ZjgyMWZkMTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAor
VGVzdHMgdG8gZW5zdXJlIFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQgd29ya3MgZXZlbiBpZiBh
IFNoYWRvd1Jvb3QgaXMgb3JwaGFuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKSBpcyBzaGFkb3dDaGlsZDEK
K1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgc2hhZG93Q2hpbGQy
CitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIG51bGwKK1BBU1Mg
c2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVsbAorUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2hpbGQyIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQzIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0Iikg
aXMgbnVsbAorCitJbnNlcnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1lIGlkCitQQVNTIHNoYWRv
d1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxkMgorUEFTUyBzaGFk
b3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMworCitNYWtl
IHRoZSBob3N0IGluIGRvY3VtZW50CitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNo
aWxkMSIpIGlzIHNoYWRvd0NoaWxkMQorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJj
aGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMworUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlk
KCJjaGlsZDMiKSBpcyBudWxsCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxk
NCIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpIGlzIG51
bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIG51bGwKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIGNoaWxkMworUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgY2hpbGQ0CisKK0FkZCBhIGNoaWxkIGFuZCBt
YWtlIHRoZSBob3N0IG5vdCBpbiBkb2N1bWVudAorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDUiKSBpcyBzaGFkb3dDaGlsZDUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MjA0Y2QxZDI1YzVmM2RjNzcyZGIwM2UxMWRhNTM0M2Q5NThmN2FiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi5o
dG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9
IndyYXBwZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxzY3JpcHQ+Citm
dW5jdGlvbiBjcmVhdGVEaXZXaXRoSWQoaWQpCit7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pZCA9IGlkOworCisgICAgcmV0dXJuIGRpdjsK
K30KKworZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3VyZSBTaGFkb3dSb290LmdldEVsZW1lbnRC
eUlkIHdvcmtzIGV2ZW4gaWYgYSBTaGFkb3dSb290IGlzIG9ycGhhbi4iKTsKKwordmFyIGhvc3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3ZhciBzaGFkb3dSb290ID0gaG9zdC53
ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CisKK3ZhciBzaGFkb3dDaGlsZDEgPSBjcmVhdGVEaXZX
aXRoSWQoJ2NoaWxkMScpOwordmFyIHNoYWRvd0NoaWxkMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hp
bGQyJyk7Cit2YXIgaG9zdENoaWxkMSA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQzJyk7Cit2YXIg
aG9zdENoaWxkMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQ0Jyk7CisKK2hvc3QuYXBwZW5kQ2hp
bGQoaG9zdENoaWxkMSk7Citob3N0LmFwcGVuZENoaWxkKGhvc3RDaGlsZDIpOworc2hhZG93Um9v
dC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZDEpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzaGFk
b3dDaGlsZDIpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQx
IiknLCAnc2hhZG93Q2hpbGQxJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsKKworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjaGlsZDQiKScsICdudWxsJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdJbnNl
cnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1lIGlkJyk7CisKK3ZhciBzaGFkb3dDaGlsZDJfMiA9
IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRv
d0NoaWxkMl8yKTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxk
MiIpJywgJ3NoYWRvd0NoaWxkMicpOworCit2YXIgc2hhZG93Q2hpbGQyXzMgPSBjcmVhdGVEaXZX
aXRoSWQoJ2NoaWxkMicpOworc2hhZG93Um9vdC5pbnNlcnRCZWZvcmUoc2hhZG93Q2hpbGQyXzMs
IHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCk7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290LmdldEVsZW1l
bnRCeUlkKCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDJfMycpOworCitkZWJ1ZygnJyk7CitkZWJ1
ZygnTWFrZSB0aGUgaG9zdCBpbiBkb2N1bWVudCcpOword3JhcHBlci5hcHBlbmRDaGlsZChob3N0
KTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpJywgJ3No
YWRvd0NoaWxkMScpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxk
MiIpJywgJ3NoYWRvd0NoaWxkMl8zJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsKKworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjaGlsZDEiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkMiIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQzIiknLCAnY2hpbGQzJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNoaWxkNCIpJywgJ2NoaWxkNCcpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnQWRkIGEg
Y2hpbGQgYW5kIG1ha2UgdGhlIGhvc3Qgbm90IGluIGRvY3VtZW50Jyk7Cit2YXIgc2hhZG93Q2hp
bGQ1ID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDUnKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQo
c2hhZG93Q2hpbGQ1KTsKK3dyYXBwZXIucmVtb3ZlQ2hpbGQoaG9zdCk7CisKK3Nob3VsZEJlKCdz
aGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDUiKScsICdzaGFkb3dDaGlsZDUnKTsKKwor
ZGVidWcoJycpOword3JhcHBlci5pbm5lckhUTUwgPSAiIjsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179428</attachid>
            <date>2012-12-13 23:35:49 -0800</date>
            <delta_ts>2012-12-14 01:24:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-87815-20121214163309.patch</filename>
            <type>text/plain</type>
            <size>12500</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkyYzMxNjQ2N2NiMWNh
MGFhNzI3YmEzODk3NTljNTUxZGQwZjRiMC4uNzdjNTdkZDEwYTdkMWI1MWM1OTUwYjBkMmMzZTQx
MDY5ZWNiYzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTEzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgpIHNob3VsZCB3b3JrIG91dHNpZGUgZG9jdW1l
bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzgx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCisKKyAgICAgICAgU2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCgpIGRpZG4ndCB3b3JrIGlmIFNoYWRvd1Jvb3QgaXMgb3V0c2lk
ZSBkb2N1bWVudC4gV2UgbmVlZCB0byB1cGRhdGUgaWQgd2hlbiBhbiBlbGVtZW50CisgICAgICAg
IGlzIGluIFNoYWRvd1RyZWUgZXZlbnQgaWYgaXQgaXMgbm90IGluIGRvY3VtZW50LgorCisgICAg
ICAgIEZvciBwZXJmb3JtYW5jZSByZWFzb24sIHdlIGludHJvZHVjZSBJc0luU2hhZG93VHJlZSBm
bGFnLCB3aGljaCBlbmFibGVzIHVzIHRvIGNoZWNrIGlzSW5UcmVlU2NvcGUoKSBmYXN0LgorICAg
ICAgICBUaGlzIGlzIG1haW50YWluZWQgaW4gRWxlbWVudDo6aW5zZXJ0ZWRJbnRvIGFuZCByZW1v
dmVkRnJvbS4gSGVyZSwgd2UncmUgYW54aW91cyBhYm91dCBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
LAorICAgICAgICBob3dldmVyIG91ciBiZW5jaG1hcmsgcmVzdWx0IHNob3dzIHRoaXMgZG9lc24n
dCByZWdyZXNzIHRoZSBwZXJmb3JtYW5jZS4KKworICAgICAgICBJJ3ZlIG1lYXN1cmVkIERyb21h
ZW8vZG9tLW1vZGlmeS5odG1sIGFuZCBQYXJzZXIvaHRtbDUtZnVsbC1yZW5kZXIuaHRtbCAyIHRp
bWVzLgorCisgICAgICAgIERyb21hZW8vZG9tLW1vZGlmeS5odG1sCisgICAgICAgICAgICAgMzUu
MjEsICAgMzUuMjcgW3J1bnMvc10gLS0tPiAgIDM1Ljc2LCAgIDM1LjU2IFtydW5zL3NdCisgICAg
ICAgIFBhcnNlci9odG1sNS1mdWxsLXJlbmRlci5odG1sCisgICAgICAgICAgIDQzMjguNTEsIDQy
NTQuOTQgW21zXSAgICAgLS0tPiA0Mjc3LjE0LCA0MjIyLjQzIFttc10KKworICAgICAgICBUZXN0
OiBmYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFuLmh0bWwKKworICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydGVk
SW50byk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnVwZGF0ZUlkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjppbnNlcnRlZEludG8pOiBJZiB0aGUgcGFyZW50IG5vZGUgaXMgaW4gc2hhZG93IHRy
ZWUsIHRoaXMgbm9kZSBzaG91bGQgYmUgYWxzbyBpbiB0aGUgc2FtZSBzaGFkb3cgdHJlZS4KKyAg
ICAgICAgU2luY2UgdGhpcyBub2RlIGlzIGluc2VydGVkLCBwYXJlbnRPckhvc3ROb2RlKCkgd2ls
bCBub3QgYmUgbnVsbC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRGcm9tKTogV2hl
biBub2RlIGlzIHJlbW92ZWQgZnJvbSBTaGFkb3dUcmVlLCBpdHMgdHJlZVNjb3BlKCkgc2hvdWxk
IG5vdCBiZSBTaGFkb3dSb290LgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzSW5TaGFkb3dUcmVlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmlzSW5UcmVlU2NvcGUpOgorCiAyMDEyLTEyLTEzICBIYWppbWUgTW9ycml0
YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBOb2RlUmVuZGVyaW5nQ29udGV4dCBp
cyBzbG93IGR1ZSB0byBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCA5MGI5YmU2NzNjMTM0NTQ0NGU5OWNhZmEwOTA3M2FhOGQ5NWIwNGFhLi5kZmE2MTNl
NDI5YzQ2MDcwMDRiM2M3YjFhODkwZDMwNmY3ZWU0OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpbwogICAgICAgICBz
ZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRh
cmllcyh0cnVlKTsKICNlbmRpZgogCi0gICAgaWYgKCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVu
dCgpKQorICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAg
cmV0dXJuIEluc2VydGlvbkRvbmU7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkVmFsdWUg
PSBnZXRJZEF0dHJpYnV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjZhYWQ2ZTlkMDgyYjkz
N2RmZmE0NWFiZTlkMTNkMzE4MWIxOWZiNS4uYjI4ODk5MjkxMGM3MjNhMDYzZDU2OTI0MjJlNjEz
MjVjM2FmZDBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02NzksNyArNjc5LDcgQEAgaW5saW5l
IHZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYKIAogaW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRlSWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkKIHsKLSAgICBp
ZiAoIWluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG9sZElkID09IG5ld0lkKQpAQCAtNjkwLDcgKzY5MCw3IEBAIGlubGlu
ZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmV3CiAKIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKFRyZWVT
Y29wZSogc2NvcGUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3SWQpCiB7Ci0gICAgQVNTRVJUKGluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGlzSW5U
cmVlU2NvcGUoKSk7CiAgICAgQVNTRVJUKG9sZElkICE9IG5ld0lkKTsKIAogICAgIGlmICghb2xk
SWQuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDgyZWMzYWY5OTcyMGIxM2QzOGVlYjQ2
OGQxYjdlZjlhYWJmYzUwNGMuLjhmMDg2MzAxZDdhZGIyZDQ4NmVhZjk4NjIwYjFmMzA5YjE3Nzkw
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTEyNzAsMTEgKzEyNzAsNiBAQCBDb250YWluZXJOb2Rl
KiBOb2RlOjpub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiBw
YXJlbnQgJiYgIXBhcmVudC0+aXNTaGFkb3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQogCi1ib29s
IE5vZGU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCkg
IT0gZG9jdW1lbnQoKTsKLX0KLQogRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgp
IGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgp
OwpAQCAtMjEwMCw2ICsyMDk1LDggQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBOb2RlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG8KICAgICBBU1NF
UlQoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSB8fCBpc0NvbnRhaW5lck5vZGUoKSk7CiAg
ICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCiAgICAgICAgIHNldEZsYWcoSW5E
b2N1bWVudEZsYWcpOworICAgIGlmIChwYXJlbnRPckhvc3ROb2RlKCktPmlzSW5TaGFkb3dUcmVl
KCkpCisgICAgICAgIHNldEZsYWcoSXNJblNoYWRvd1RyZWVGbGFnKTsKICAgICByZXR1cm4gSW5z
ZXJ0aW9uRG9uZTsKIH0KIApAQCAtMjEwOCw2ICsyMTA1LDggQEAgdm9pZCBOb2RlOjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICBBU1NFUlQoaW5zZXJ0aW9u
UG9pbnQtPmluRG9jdW1lbnQoKSB8fCBpc0NvbnRhaW5lck5vZGUoKSk7CiAgICAgaWYgKGluc2Vy
dGlvblBvaW50LT5pbkRvY3VtZW50KCkpCiAgICAgICAgIGNsZWFyRmxhZyhJbkRvY3VtZW50Rmxh
Zyk7CisgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkgJiYgIXRyZWVTY29wZSgpLT5yb290Tm9kZSgp
LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgY2xlYXJGbGFnKElzSW5TaGFkb3dUcmVlRmxhZyk7
CiB9CiAKIHZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3Vt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggODNkZjFkZTU2ZmU5ZWQyOGE3OGVkZTczZGMyZWFkOTVjYmZl
NGUyNC4uNmRmYjE5MWUzNTUwMjc0YzE2OGJkYmViMjIyYzQzZmY1NThkOTU1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC0yNzUsNyArMjc1LDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyAwLCBhIGNo
aWxkIG9mIFNoYWRvd1Jvb3QsIG9yIGEgbGVnYWN5IHNoYWRvdyByb290LgogICAgIE5vZGUqIG5v
bkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCk7Ci0gICAgYm9vbCBpc0luU2hhZG93VHJlZSgp
IGNvbnN0OworCiAgICAgLy8gTm9kZSdzIHBhcmVudCwgc2hhZG93IHRyZWUgaG9zdC4KICAgICBD
b250YWluZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFy
ZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0OwpAQCAtNDc2LDYgKzQ3Niw4IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKICAg
ICAgICAgcmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVudEZsYWcpOwogICAgIH0KKyAgICBib29sIGlz
SW5TaGFkb3dUcmVlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0luU2hhZG93VHJlZUZsYWcp
OyB9CisgICAgYm9vbCBpc0luVHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhzdGF0
aWNfY2FzdDxOb2RlRmxhZ3M+KEluRG9jdW1lbnRGbGFnIHwgSXNJblNoYWRvd1RyZWVGbGFnKSk7
IH0KIAogICAgIGJvb2wgaXNSZWFkT25seU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgp
ID09IEVOVElUWV9SRUZFUkVOQ0VfTk9ERTsgfQogICAgIGJvb2wgaXNEb2N1bWVudFR5cGVOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREU7IH0KQEAg
LTcxMiwxMSArNzE0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIEhhc0V2ZW50VGFyZ2V0RGF0YUZs
YWcgPSAxIDw8IDIzLAogICAgICAgICBWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQ0ZsYWcgPSAx
IDw8IDI0LAogICAgICAgICBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnID0gMSA8PCAyNSwKKyAg
ICAgICAgSXNJblNoYWRvd1RyZWVGbGFnID0gMSA8PCAyNiwKIAogICAgICAgICBEZWZhdWx0Tm9k
ZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcKICAgICB9OwogCi0gICAgLy8g
NiBiaXRzIHJlbWFpbmluZworICAgIC8vIDUgYml0cyByZW1haW5pbmcKIAogICAgIGJvb2wgZ2V0
RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9ub2RlRmxhZ3MgJiBtYXNrOyB9
CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgbV9ub2Rl
RmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAoLShpbnQzMl90KWYgJiBtYXNrKTsgfSAK
QEAgLTczMCw3ICs3MzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENyZWF0ZUNvbnRhaW5lciA9
IERlZmF1bHROb2RlRmxhZ3MgfCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAgICBDcmVhdGVFbGVt
ZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNFbGVtZW50RmxhZywgCiAgICAgICAgIENyZWF0ZVBz
ZXVkb0VsZW1lbnQgPSAgQ3JlYXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFnIHwgTmVlZHNTaGFk
b3dUcmVlV2Fsa2VyRmxhZywKLSAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRh
aW5lciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcgfCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFn
LAorICAgICAgICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVu
dEZyYWdtZW50RmxhZyB8IE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcgfCBJc0luU2hhZG93VHJl
ZUZsYWcsCiAgICAgICAgIENyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBDcmVhdGVDb250YWluZXIg
fCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnLAogICAgICAgICBDcmVhdGVTdHlsZWRFbGVtZW50ID0g
Q3JlYXRlRWxlbWVudCB8IElzU3R5bGVkRWxlbWVudEZsYWcsIAogICAgICAgICBDcmVhdGVIVE1M
RWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc0hUTUxGbGFnLCAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhODc3
MzQzMzUyODRiMjFjZDgwYTFmODhkYWU1ZjlhMTEzYzgwMWNjLi4wYTNmYzVhMDdjOTZhODAxYzg3
ZDMyYjM2MzM0MTc0M2U2MWNiZGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTItMTMg
IFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFk
b3cgRE9NXSBTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCkgc2hvdWxkIHdvcmsgb3V0c2lkZSBk
b2N1bWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3ODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KKworICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4tb3JwaGFu
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTEzICBLdW5paGlrbyBTYWthbW90byAgPGtzYWthbW90
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2Vjb25kcy9NaW51dGVzIGZpZWxkIG9mIGRhdGUv
dGltZSBpbnB1dCBVSSBzaG91bGQgcmVzcGVjdCBzdGVwIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0ZWxlbWVudGJ5aWQtaW4t
b3JwaGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGUyMjJjODMwNTA0ZjgxY2RhNmUxNjgy
YzM1NTY0ZjgyMWZkMTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9ycGhhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
NSBAQAorVGVzdHMgdG8gZW5zdXJlIFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQgd29ya3MgZXZl
biBpZiBhIFNoYWRvd1Jvb3QgaXMgb3JwaGFuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKSBpcyBzaGFkb3dD
aGlsZDEKK1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgc2hhZG93
Q2hpbGQyCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIG51bGwK
K1BBU1Mgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgbnVsbAorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2hpbGQyIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2hpbGQzIikgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hp
bGQ0IikgaXMgbnVsbAorCitJbnNlcnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1lIGlkCitQQVNT
IHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIHNoYWRvd0NoaWxkMgorUEFT
UyBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMwor
CitNYWtlIHRoZSBob3N0IGluIGRvY3VtZW50CitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5
SWQoImNoaWxkMSIpIGlzIHNoYWRvd0NoaWxkMQorUEFTUyBzaGFkb3dSb290LmdldEVsZW1lbnRC
eUlkKCJjaGlsZDIiKSBpcyBzaGFkb3dDaGlsZDJfMworUEFTUyBzaGFkb3dSb290LmdldEVsZW1l
bnRCeUlkKCJjaGlsZDMiKSBpcyBudWxsCitQQVNTIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkNCIpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIp
IGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpIGlzIG51bGwK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpIGlzIGNoaWxkMworUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0IikgaXMgY2hpbGQ0CisKK0FkZCBhIGNoaWxk
IGFuZCBtYWtlIHRoZSBob3N0IG5vdCBpbiBkb2N1bWVudAorUEFTUyBzaGFkb3dSb290LmdldEVs
ZW1lbnRCeUlkKCJjaGlsZDUiKSBpcyBzaGFkb3dDaGlsZDUKKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXRlbGVtZW50YnlpZC1pbi1vcnBoYW4uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MjA0Y2QxZDI1YzVmM2RjNzcyZGIwM2UxMWRhNTM0M2Q5NThmN2FiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2dldGVsZW1lbnRieWlkLWluLW9y
cGhhbi5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxk
aXYgaWQ9IndyYXBwZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxzY3Jp
cHQ+CitmdW5jdGlvbiBjcmVhdGVEaXZXaXRoSWQoaWQpCit7CisgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pZCA9IGlkOworCisgICAgcmV0dXJu
IGRpdjsKK30KKworZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3VyZSBTaGFkb3dSb290LmdldEVs
ZW1lbnRCeUlkIHdvcmtzIGV2ZW4gaWYgYSBTaGFkb3dSb290IGlzIG9ycGhhbi4iKTsKKwordmFy
IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3ZhciBzaGFkb3dSb290ID0g
aG9zdC53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7CisKK3ZhciBzaGFkb3dDaGlsZDEgPSBjcmVh
dGVEaXZXaXRoSWQoJ2NoaWxkMScpOwordmFyIHNoYWRvd0NoaWxkMiA9IGNyZWF0ZURpdldpdGhJ
ZCgnY2hpbGQyJyk7Cit2YXIgaG9zdENoaWxkMSA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQzJyk7
Cit2YXIgaG9zdENoaWxkMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQ0Jyk7CisKK2hvc3QuYXBw
ZW5kQ2hpbGQoaG9zdENoaWxkMSk7Citob3N0LmFwcGVuZENoaWxkKGhvc3RDaGlsZDIpOworc2hh
ZG93Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZDEpOworc2hhZG93Um9vdC5hcHBlbmRDaGls
ZChzaGFkb3dDaGlsZDIpOworCitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQxIiknLCAnc2hhZG93Q2hpbGQxJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRFbGVt
ZW50QnlJZCgiY2hpbGQyIiknLCAnc2hhZG93Q2hpbGQyJyk7CitzaG91bGRCZSgnc2hhZG93Um9v
dC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jv
b3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsKKworc2hvdWxkQmUoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKScsICdudWxsJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVn
KCdJbnNlcnQgZWxlbWVudHMgaGF2aW5nIHRoZSBzYW1lIGlkJyk7CisKK3ZhciBzaGFkb3dDaGls
ZDJfMiA9IGNyZWF0ZURpdldpdGhJZCgnY2hpbGQyJyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxk
KHNoYWRvd0NoaWxkMl8yKTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMicpOworCit2YXIgc2hhZG93Q2hpbGQyXzMgPSBjcmVh
dGVEaXZXaXRoSWQoJ2NoaWxkMicpOworc2hhZG93Um9vdC5pbnNlcnRCZWZvcmUoc2hhZG93Q2hp
bGQyXzMsIHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCk7CisKK3Nob3VsZEJlKCdzaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDIiKScsICdzaGFkb3dDaGlsZDJfMycpOworCitkZWJ1ZygnJyk7
CitkZWJ1ZygnTWFrZSB0aGUgaG9zdCBpbiBkb2N1bWVudCcpOword3JhcHBlci5hcHBlbmRDaGls
ZChob3N0KTsKKworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIp
JywgJ3NoYWRvd0NoaWxkMScpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQo
ImNoaWxkMiIpJywgJ3NoYWRvd0NoaWxkMl8zJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQzIiknLCAnbnVsbCcpOworc2hvdWxkQmUoJ3NoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ251bGwnKTsKKworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaGlsZDEiKScsICdudWxsJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkMiIpJywgJ251bGwnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2hpbGQzIiknLCAnY2hpbGQzJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNoaWxkNCIpJywgJ2NoaWxkNCcpOworCitkZWJ1ZygnJyk7CitkZWJ1Zygn
QWRkIGEgY2hpbGQgYW5kIG1ha2UgdGhlIGhvc3Qgbm90IGluIGRvY3VtZW50Jyk7Cit2YXIgc2hh
ZG93Q2hpbGQ1ID0gY3JlYXRlRGl2V2l0aElkKCdjaGlsZDUnKTsKK3NoYWRvd1Jvb3QuYXBwZW5k
Q2hpbGQoc2hhZG93Q2hpbGQ1KTsKK3dyYXBwZXIucmVtb3ZlQ2hpbGQoaG9zdCk7CisKK3Nob3Vs
ZEJlKCdzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjaGlsZDUiKScsICdzaGFkb3dDaGlsZDUn
KTsKKworZGVidWcoJycpOword3JhcHBlci5pbm5lckhUTUwgPSAiIjsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>