<?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>42886</bug_id>
          
          <creation_ts>2010-07-23 03:16:05 -0700</creation_ts>
          <short_desc>Web Inspector: implement DOM breakpoints</short_desc>
          <delta_ts>2010-08-20 06:38:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>255284</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-07-23 03:16:05 -0700</bug_when>
    <thetext>Implement breaking on DOM mutations feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255290</commentid>
    <comment_count>1</comment_count>
      <attachid>62407</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-07-23 03:45:40 -0700</bug_when>
    <thetext>Created attachment 62407
Stop on subtree modifications implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255323</commentid>
    <comment_count>2</comment_count>
      <attachid>62416</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-07-23 05:01:03 -0700</bug_when>
    <thetext>Created attachment 62416
Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255349</commentid>
    <comment_count>3</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-07-23 06:33:33 -0700</bug_when>
    <thetext>neat.

So how does this work, visually?  Will the DOM node be highlighted in some way to indicate it has a breakpoint set on it?  It didn&apos;t look like, from the code, that the breakpoint gets added to the breakpoints list, but maybe I missed that.  Seems like it would be nice, so that you could remove the breakpoints from there.

It doesn&apos;t appear that attribute changes will cause a breakpoint to be hit.  I imagine that might be useful as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256447</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-07-27 01:58:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; neat.
&gt; 
&gt; So how does this work, visually?  Will the DOM node be highlighted in some way to indicate it has a breakpoint set on it?  It didn&apos;t look like, from the code, that the breakpoint gets added to the breakpoints list, but maybe I missed that.  Seems like it would be nice, so that you could remove the breakpoints from there.
&gt; 
&gt; It doesn&apos;t appear that attribute changes will cause a breakpoint to be hit.  I imagine that might be useful as well.

It&apos;s just a first bit of functionality, and UI part isn&apos;t there yet. Attribute changes will be covered by a separate breakpoint type (coming soon).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256715</commentid>
    <comment_count>5</comment_count>
      <attachid>62416</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-27 11:27:05 -0700</bug_when>
    <thetext>Comment on attachment 62416
Rebase.

Few nits below. Otherwise, looks very good!

WebCore/bindings/js/ScriptDebugServer.h:82
 +      void breakProgram() { }
Please file a bug against WebKit / JSC and put a FIXME referring the bug here.


WebCore/inspector/InspectorBackend.idl:109
 +          void setDOMBreakpoint(in long nodeId, in long type);
Please rebase, this file no longer exists.

WebCore/inspector/InspectorDOMAgent.cpp:1027
 +  #if ENABLE(JAVASCRIPT_DEBUGGER)
I think you need to optimize this:
1) do not enter this code when there are no dom breakpoints
2) when setting breakpoint on node, set it on all of its parents instead. that way you spend time on setting breakpoint, not on dom events

WebCore/inspector/InspectorDOMAgent.cpp:761
 +  void InspectorDOMAgent::setDOMBreakpoint(long nodeId, long type)
type should be enum, synchronized with corresponding js enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265512</commentid>
    <comment_count>6</comment_count>
      <attachid>64585</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-17 06:49:25 -0700</bug_when>
    <thetext>Created attachment 64585
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265514</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-17 06:55:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 62416 [details])
&gt; Few nits below. Otherwise, looks very good!
&gt; 
&gt; WebCore/bindings/js/ScriptDebugServer.h:82
&gt;  +      void breakProgram() { }
&gt; Please file a bug against WebKit / JSC and put a FIXME referring the bug here.
Done

&gt; WebCore/inspector/InspectorBackend.idl:109
&gt;  +          void setDOMBreakpoint(in long nodeId, in long type);
&gt; Please rebase, this file no longer exists.
Done

&gt; WebCore/inspector/InspectorDOMAgent.cpp:1027
&gt;  +  #if ENABLE(JAVASCRIPT_DEBUGGER)
&gt; I think you need to optimize this:
&gt; 1) do not enter this code when there are no dom breakpoints
&gt; 2) when setting breakpoint on node, set it on all of its parents instead. that way you spend time on setting breakpoint, not on dom events
Done

&gt; WebCore/inspector/InspectorDOMAgent.cpp:761
&gt;  +  void InspectorDOMAgent::setDOMBreakpoint(long nodeId, long type)
&gt; type should be enum, synchronized with corresponding js enum.
This method is called from generated code, so we can&apos;t have enum here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265699</commentid>
    <comment_count>8</comment_count>
      <attachid>64585</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-17 12:37:05 -0700</bug_when>
    <thetext>Comment on attachment 64585
Proposed patch.

WebCore/bindings/js/ScriptDebugServer.cpp:210
 +      // FIXME(43332): implement this.
You can mention webkit bugzilla here so that we could distinguish this from radar / chromium entries.

WebCore/inspector/InspectorDOMAgent.cpp:742
 +      Node* node = nodeForId(nodeId);
Move this check above? (This should not happen).


WebCore/inspector/front-end/ElementsTreeOutline.js:767
 +              contextMenu.appendItem(WebInspector.UIString(&quot;Stop on subtree modifications&quot;),
You should add these to the WebCore/English.lproj/localizedStrings.js

WebCore/inspector/front-end/BreakpointManager.js:93
 +      setDOMBreakpoint: function(nodeId, type)
Nit: I think these should be declared on DOMNode&apos;s prototype.

WebCore/inspector/InspectorDOMAgent.cpp:1075
 +      Vector&lt;Node*&gt; stack(1, innerFirstChild(node));
You have 4 places where you traverse the tree. Could it be extracted into a separate method? A part of r- is for this.

WebCore/inspector/InspectorDOMAgent.cpp:204
 +  enum CachedDOMBreakpointType {
I am not sure why you need this separation? r- unless this is explained.

WebCore/inspector/InspectorDOMAgent.cpp:736
 +  void InspectorDOMAgent::setDOMBreakpoint(long nodeId, long type)
So what happens when you add a breakpoint to the node, then add it to its parent and after that remove it from node?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266046</commentid>
    <comment_count>9</comment_count>
      <attachid>64688</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-18 05:09:12 -0700</bug_when>
    <thetext>Created attachment 64688
All comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266095</commentid>
    <comment_count>10</comment_count>
      <attachid>64707</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-18 07:27:51 -0700</bug_when>
    <thetext>Created attachment 64707
After offline discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266104</commentid>
    <comment_count>11</comment_count>
      <attachid>64707</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-18 07:48:37 -0700</bug_when>
    <thetext>Comment on attachment 64707
After offline discussion.

WebCore/inspector/InspectorDOMAgent.cpp:1039
 +  void InspectorDOMAgent::updateSubtreeBreakpoints(Node* root, long mask, bool value, bool wholeSubtree)
Nit:
wholeSubtree -&gt; recursive
value -&gt; set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266592</commentid>
    <comment_count>12</comment_count>
      <attachid>64818</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-19 01:14:22 -0700</bug_when>
    <thetext>Created attachment 64818
Fix nits and debug crash when closing inspector while paused on dom breakpoint.

Before pausing on DOM breakpoints save current instance to a static variable which will be cleared in destructor to indicate that InspectorDOMAgent was deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266667</commentid>
    <comment_count>13</comment_count>
      <attachid>64818</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-19 05:22:31 -0700</bug_when>
    <thetext>Comment on attachment 64818
Fix nits and debug crash when closing inspector while paused on dom breakpoint.

I don&apos;t think cq will land a binary git diff, so will need to land it by hand...

WebCore/inspector/InspectorDOMAgent.cpp:208
 +  InspectorDOMAgent* InspectorDOMAgent::s_instance = 0;
You should pick a better name for this field.

WebCore/inspector/InspectorDOMAgent.cpp:1046
 +          ScriptDebugServer::shared().breakProgram();
I think you should set s_instance (or ::s_domAgentOnBreakpoint) here and make this method return boolean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266686</commentid>
    <comment_count>14</comment_count>
      <attachid>64818</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-19 06:00:41 -0700</bug_when>
    <thetext>Comment on attachment 64818
Fix nits and debug crash when closing inspector while paused on dom breakpoint.

WebCore/bindings/v8/ScriptDebugServer.cpp:368
 +      ScriptState* currentCallFrameState = mainWorldScriptState(frame);
This should be ScriptState::forContext where context is the one that was current before call to the debugger. Otherwise, if it wasn&apos;t a javascript code that triggered the mutation the stack would be empty and you could use main world script state. 

WebCore/bindings/v8/ScriptDebugServer.h:135
 +      OwnHandle&lt;v8::Context&gt; m_pausedPageContext;
This one may be Local handle

WebCore/inspector/InspectorDOMAgent.cpp:744
 +      m_breakpoints.set(node, m_breakpoints.get(node) | rootBit &amp; ~derivedBit);
We discussed these bits with Pavel and it turns out that they don&apos;t need to be mutually exclusive. There should rather be two bits:
1. Indicates whether this node has a breakpoint set on it.
2. Whether we should pause on modifications of this node(currently it&apos;s deivedBit).
So I&apos;d suggest we rename them and don&apos;t reset derivedBit when setting breakpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266688</commentid>
    <comment_count>15</comment_count>
      <attachid>64818</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-19 06:08:20 -0700</bug_when>
    <thetext>Comment on attachment 64818
Fix nits and debug crash when closing inspector while paused on dom breakpoint.

WebCore/inspector/InspectorDOMAgent.cpp:764
 +          m_breakpoints.set(node, mask &amp; ~rootBit);
Map entry for the node should be removed when its values becomes 0.

WebCore/inspector/InspectorDOMAgent.cpp:1061
 +                  m_breakpoints.set(node, derivedMask);
This will override previous mask for given node. It should be  m_breakpoints.set(node,  m_breakpoints.get(node) | derivedMask);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266707</commentid>
    <comment_count>16</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-19 07:08:53 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 64818 [details])
&gt; WebCore/bindings/v8/ScriptDebugServer.cpp:368
&gt;  +      ScriptState* currentCallFrameState = mainWorldScriptState(frame);
&gt; This should be ScriptState::forContext where context is the one that was current before call to the debugger. Otherwise, if it wasn&apos;t a javascript code that triggered the mutation the stack would be empty and you could use main world script state. 
done

&gt; WebCore/bindings/v8/ScriptDebugServer.h:135
&gt;  +      OwnHandle&lt;v8::Context&gt; m_pausedPageContext;
&gt; This one may be Local handle
done

&gt; WebCore/inspector/InspectorDOMAgent.cpp:744
&gt;  +      m_breakpoints.set(node, m_breakpoints.get(node) | rootBit &amp; ~derivedBit);
&gt; We discussed these bits with Pavel and it turns out that they don&apos;t need to be mutually exclusive. There should rather be two bits:
&gt; 1. Indicates whether this node has a breakpoint set on it.
&gt; 2. Whether we should pause on modifications of this node(currently it&apos;s deivedBit).
&gt; So I&apos;d suggest we rename them and don&apos;t reset derivedBit when setting breakpoint.

Probably it&apos;s more logical to use second bit to indicate if we have a derived breakpoint (there is a breakpoint set on ancestor). This will simplify breakpoint deletion (no need to check parent).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266708</commentid>
    <comment_count>17</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-19 07:10:24 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 64818 [details])
&gt; WebCore/inspector/InspectorDOMAgent.cpp:764
&gt;  +          m_breakpoints.set(node, mask &amp; ~rootBit);
&gt; Map entry for the node should be removed when its values becomes 0.
done

&gt; WebCore/inspector/InspectorDOMAgent.cpp:1061
&gt;  +                  m_breakpoints.set(node, derivedMask);
&gt; This will override previous mask for given node. It should be  m_breakpoints.set(node,  m_breakpoints.get(node) | derivedMask);
This was done intentionally, because we use recursive mode only when adding subtrees, and new subtrees are always clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266714</commentid>
    <comment_count>18</comment_count>
      <attachid>64846</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-19 07:17:58 -0700</bug_when>
    <thetext>Created attachment 64846
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266715</commentid>
    <comment_count>19</comment_count>
      <attachid>64847</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-19 07:18:50 -0700</bug_when>
    <thetext>Created attachment 64847
What&apos;s changed from previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267183</commentid>
    <comment_count>20</comment_count>
      <attachid>64846</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-20 02:44:59 -0700</bug_when>
    <thetext>Comment on attachment 64846
Proposed patch.

WebCore/inspector/InspectorDOMAgent.cpp:1061
 +                  m_breakpoints.set(node, derivedMask);
I still don&apos;t like that we implicitly assume here that the node is one that has just been added and has no current flags. Let&apos;s make the code work for all nodes including those that already have non-0 mask.

WebCore/inspector/InspectorDOMAgent.cpp:1050
 +  void InspectorDOMAgent::updateSubtreeBreakpoints(Node* root, long mask, bool set, bool recursive)
Please remove recursive flag as discussed offline and make the function always recursive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267198</commentid>
    <comment_count>21</comment_count>
      <attachid>64846</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-20 04:25:25 -0700</bug_when>
    <thetext>Comment on attachment 64846
Proposed patch.

Looks like Yury meant r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267200</commentid>
    <comment_count>22</comment_count>
      <attachid>64944</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-20 04:34:09 -0700</bug_when>
    <thetext>Created attachment 64944
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267203</commentid>
    <comment_count>23</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-20 04:35:15 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 64846 [details])
&gt; WebCore/inspector/InspectorDOMAgent.cpp:1061
&gt;  +                  m_breakpoints.set(node, derivedMask);
&gt; I still don&apos;t like that we implicitly assume here that the node is one that has just been added and has no current flags. Let&apos;s make the code work for all nodes including those that already have non-0 mask.
&gt; 
&gt; WebCore/inspector/InspectorDOMAgent.cpp:1050
&gt;  +  void InspectorDOMAgent::updateSubtreeBreakpoints(Node* root, long mask, bool set, bool recursive)
&gt; Please remove recursive flag as discussed offline and make the function always recursive.

updateSubtreeBreakpoints rewritten as discussed offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267204</commentid>
    <comment_count>24</comment_count>
      <attachid>64945</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-20 04:44:15 -0700</bug_when>
    <thetext>Created attachment 64945
Binary diff for localizedStrings.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267212</commentid>
    <comment_count>25</comment_count>
      <attachid>64945</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-20 05:08:16 -0700</bug_when>
    <thetext>Comment on attachment 64945
Binary diff for localizedStrings.js

WebCore/inspector/InspectorDOMAgent.cpp:1066
 +      if (!node)
You don&apos;t seem to need this check.

WebCore/inspector/InspectorDOMAgent.cpp:1064
 +  void InspectorDOMAgent::updateSubtreeBreakpoints(Node* node, long mask, bool set)
I&apos;d rename mask to rootMask or something that would reflect the fact that it&apos;s not shifted.

WebCore/inspector/InspectorDOMAgent.h:218
 +          HashMap&lt;Node*, long&gt; m_breakpoints;
Why not have int as value type? We use only 32 bits in the code anyway.

WebCore/inspector/InspectorDOMAgent.cpp:1060
 +      return s_domAgentOnBreakpoint != 0;
Please reset s_domAgentOnBreakpoint to 0 before leaving this method.

WebCore/bindings/v8/ScriptDebugServer.cpp:243
 +      v8::Handle&lt;v8::Context&gt; context = v8::Context::GetCurrent();
Isn&apos;t it Debugger context?

Pleas address the comments, otherwise looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267227</commentid>
    <comment_count>26</comment_count>
      <attachid>64950</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-20 06:12:49 -0700</bug_when>
    <thetext>Created attachment 64950
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267229</commentid>
    <comment_count>27</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-20 06:29:11 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 64945 [details])
&gt; WebCore/inspector/InspectorDOMAgent.cpp:1066
&gt;  +      if (!node)
&gt; You don&apos;t seem to need this check.
done

&gt; WebCore/inspector/InspectorDOMAgent.cpp:1064
&gt;  +  void InspectorDOMAgent::updateSubtreeBreakpoints(Node* node, long mask, bool set)
&gt; I&apos;d rename mask to rootMask or something that would reflect the fact that it&apos;s not shifted.
done

&gt; WebCore/inspector/InspectorDOMAgent.h:218
&gt;  +          HashMap&lt;Node*, long&gt; m_breakpoints;
&gt; Why not have int as value type? We use only 32 bits in the code anyway.
For both int and long types size is not guaranteed
long -&gt; uint32_t

&gt; WebCore/inspector/InspectorDOMAgent.cpp:1060
&gt;  +      return s_domAgentOnBreakpoint != 0;
&gt; Please reset s_domAgentOnBreakpoint to 0 before leaving this method.
done

&gt; WebCore/bindings/v8/ScriptDebugServer.cpp:243
&gt;  +      v8::Handle&lt;v8::Context&gt; context = v8::Context::GetCurrent();
&gt; Isn&apos;t it Debugger context?
This method is called from javascript callbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267230</commentid>
    <comment_count>28</comment_count>
      <attachid>64951</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-20 06:29:45 -0700</bug_when>
    <thetext>Created attachment 64951
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267232</commentid>
    <comment_count>29</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-20 06:38:35 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/ScriptDebugServer.cpp
	M	WebCore/bindings/js/ScriptDebugServer.h
	M	WebCore/bindings/v8/ScriptDebugServer.cpp
	M	WebCore/bindings/v8/ScriptDebugServer.h
	M	WebCore/inspector/Inspector.idl
	M	WebCore/inspector/InspectorDOMAgent.cpp
	M	WebCore/inspector/InspectorDOMAgent.h
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/Settings.js
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/src/js/DevTools.js
Committed r65731</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62407</attachid>
            <date>2010-07-23 03:45:40 -0700</date>
            <delta_ts>2010-07-23 05:01:03 -0700</delta_ts>
            <desc>Stop on subtree modifications implementation.</desc>
            <filename>dom1.patch</filename>
            <type>text/plain</type>
            <size>19356</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzQ1NTNhNC4uMjJkZGYxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wNy0yMyAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgYnJlYWtpbmcg
b24gRE9NIG5vZGUgc3VidHJlZSBtdXRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgIEFkZCB0d28gZW50cmllcyB0
byBXZWIgSW5zcGVjdG9yIERPTSBlbGVtZW50IGNvbnRleHQgbWVudToKKyAgICAgICAgMS4gIlN0
b3Agb24gc3VidHJlZSBtb2RpZmljYXRpb25zIjogd2lsbCBicmVhayBvbiBhZGRpbmcvcmVtb3Zp
bmcgb2YgYW55IGVsZW1lbnQgd2hpY2ggaXMgYSBjaGlsZCBvZiB0aGUgRE9NIGVsZW1lbnQKKyAg
ICAgICAgMi4gIlJlbW92ZSBicmVha3BvaW50cyI6IHdpbGwgcmVtb3ZlIGFsbCBicmVha3BvaW50
cyBhc3NvY2lhdGVkIHdpdGggdGhlIERPTSBlbGVtZW50CisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVi
dWdFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpz
ZXRET01CcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnJl
bW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6dW5iaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpkaXNjYXJkQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnN1YnRyZWVNb2RpZmllZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLnNldERPTUJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5y
ZW1vdmVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFu
YWdlci5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVF
bGVtZW50LnByb3RvdHlwZS5fcG9wdWxhdGVUYWdDb250ZXh0TWVudSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczoKKyAgICAgICAgKC5XZWJJ
bnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkKToK
KyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnNl
dERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5k
U3R1Yi5wcm90b3R5cGUucmVtb3ZlRE9NQnJlYWtwb2ludCk6CisKIDIwMTAtMDctMjEgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIu
aCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmZDg5NzZi
Li5jYTM3MmI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC03
OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUo
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNlKCk7CisgICAgdm9pZCBi
cmVha1Byb2dyYW0oKSB7IH0KICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIHZvaWQg
c3RlcEludG9TdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDBhNDMyYjcuLmU1NjQz
ODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMDks
NiArMjA5LDI1IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFBhdXNlT25FeGNlcHRpb25z
U3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwYXVzZU9uCiAgICAgc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKIH0K
IAordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgY2FsbGJh
Y2tUZW1wbGF0ZSwgKCkpOworICAgIGlmIChjYWxsYmFja1RlbXBsYXRlLklzRW1wdHkoKSkgewor
ICAgICAgICBjYWxsYmFja1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpKTsKKyAgICAgICAgY2FsbGJh
Y2tUZW1wbGF0ZS0+U2V0Q2FsbEhhbmRsZXIoJlNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dy
YW1DYWxsYmFjayk7CisgICAgfQorCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgbV9w
YXVzZWRQYWdlQ29udGV4dC5zZXQoY29udGV4dCk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+IGJyZWFrUHJvZ3JhbUZ1bmN0aW9uID0gY2FsbGJhY2tUZW1wbGF0ZS0+R2V0RnVuY3Rpb24o
KTsKKyAgICB2ODo6RGVidWc6OkNhbGwoYnJlYWtQcm9ncmFtRnVuY3Rpb24pOworICAgIG1fcGF1
c2VkUGFnZUNvbnRleHQuY2xlYXIoKTsKK30KKwogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29u
dGludWVQcm9ncmFtKCkKIHsKICAgICBpZiAobV9wYXVzZWRQYWdlKQpAQCAtMjk0LDYgKzMxMyw0
MSBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjppc0RlYnVnZ2VyQWx3YXlzRW5hYmxlZCgpCiAg
ICAgcmV0dXJuIG1fZW5hYmxlZDsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNjcmlwdERl
YnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIEFTU0VSVCgyID09IGFyZ3MuTGVuZ3RoKCkpOworICAgIFNjcmlwdERlYnVnU2Vy
dmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzBdKSk7CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwordm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9u
U3RhdGUpCit7CisgICAgLy8gRG9uJ3QgYWxsb3cgbmVzdGVkIGJyZWFrcy4KKyAgICBpZiAobV9w
YXVzZWRQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFtZSogZnJhbWUgPSByZXRyaWV2
ZUZyYW1lKG1fcGF1c2VkUGFnZUNvbnRleHQuZ2V0KCkpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gbV9saXN0
ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fZXhlY3V0aW9uU3RhdGUuc2V0KGV4ZWN1dGlvblN0YXRlKTsKKyAg
ICBtX3BhdXNlZFBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50
Q2FsbEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSk7CisgICAgbGlzdGVu
ZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSk7CisKKyAgICAvLyBXYWl0IGZvciBj
b250aW51ZSBvciBzdGVwIGNvbW1hbmQuCisgICAgbV9jbGllbnRNZXNzYWdlTG9vcC0+cnVuKG1f
cGF1c2VkUGFnZSk7CisgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2UpOworCisgICAgLy8gVGhlIGxp
c3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbmVzdGVkIGxvb3AuCisgICAgaWYg
KFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1l
LT5wYWdlKCkpKQorICAgICAgICBsaXN0ZW5lci0+ZGlkQ29udGludWUoKTsKK30KKwogdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6djhEZWJ1Z0V2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkRlYnVnOjpF
dmVudERldGFpbHMmIGV2ZW50RGV0YWlscykKIHsKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hh
cmVkKCkuaGFuZGxlVjhEZWJ1Z0V2ZW50KGV2ZW50RGV0YWlscyk7CkBAIC0zMjksMjEgKzM4Myw5
IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6
RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cg
bmVzdGVkIGJyZWFrcy4KLSAgICAgICAgICAgICAgICBpZiAobV9wYXVzZWRQYWdlKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgbV9leGVjdXRpb25TdGF0ZS5z
ZXQoZXZlbnREZXRhaWxzLkdldEV4ZWN1dGlvblN0YXRlKCkpOwotICAgICAgICAgICAgICAgIG1f
cGF1c2VkUGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0gICAgICAgICAgICAgICAgU2NyaXB0U3RhdGUq
IGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKTsKLSAg
ICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUGF1c2UoY3VycmVudENhbGxGcmFtZVN0YXRlKTsK
LQotICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIGNvbnRpbnVlIG9yIHN0ZXAgY29tbWFuZC4K
LSAgICAgICAgICAgICAgICBtX2NsaWVudE1lc3NhZ2VMb29wLT5ydW4obV9wYXVzZWRQYWdlKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF1c2VkUGFnZSk7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBUaGUgbGlzdGVuZXIgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBuZXN0ZWQgbG9v
cC4KLSAgICAgICAgICAgICAgICBpZiAoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIgPSBt
X2xpc3RlbmVyc01hcC5nZXQoZnJhbWUtPnBhZ2UoKSkpCi0gICAgICAgICAgICAgICAgICAgIGxp
c3RlbmVyLT5kaWRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRl
eHQuc2V0KGV2ZW50Q29udGV4dCk7CisgICAgICAgICAgICAgICAgYnJlYWtQcm9ncmFtKGV2ZW50
RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZFBh
Z2VDb250ZXh0LmNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggYTU1Mzg4Zi4uYmQ5YmY5NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNzEsNiArNzEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNl
cHRpb25zU3RhdGUgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNlKCkg
eyB9CisgICAgdm9pZCBicmVha1Byb2dyYW0oKTsKICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgp
OwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVt
ZW50KCk7CkBAIC0xMDMsNiArMTA0LDkgQEAgcHJpdmF0ZToKICAgICBTY3JpcHREZWJ1Z1NlcnZl
cigpOwogICAgIH5TY3JpcHREZWJ1Z1NlcnZlcigpIHsgfQogCisgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBicmVha1Byb2dyYW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4ZWN1
dGlvblN0YXRlKTsKKwogICAgIHN0YXRpYyB2b2lkIHY4RGVidWdFdmVudENhbGxiYWNrKGNvbnN0
IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpOwogICAgIHZvaWQgaGFuZGxl
VjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMp
OwogCkBAIC0xMjAsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBPd25IYW5kbGU8djg6Ok9iamVj
dD4gbV9leGVjdXRpb25TdGF0ZTsKICAgICBPd25QdHI8Q2xpZW50TWVzc2FnZUxvb3A+IG1fY2xp
ZW50TWVzc2FnZUxvb3A7CiAgICAgUGFnZSogbV9wYXVzZWRQYWdlOworICAgIE93bkhhbmRsZTx2
ODo6Q29udGV4dD4gbV9wYXVzZWRQYWdlQ29udGV4dDsKICAgICBib29sIG1fZW5hYmxlZDsKIH07
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IDNjOTZkYjEuLjNmYzkzOWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbApAQCAtMTE2LDYgKzExNiw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAg
ICAgdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmluZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5j
aHJvbm91c2x5KTsKICAgICAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwogICAgICAgICB2b2lk
IHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChpbiBsb25nIGNhbGxJZCwgaW4gU3RyaW5nIHBhdGgs
IG91dCBsb25nIG5vZGVJZCk7CisgICAgICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChpbiBsb25n
IG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50
KGluIGxvbmcgbm9kZUlkKTsKIAogICAgICAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggOWY3MTMwNy4uM2Y1
YTIzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTQxMiw2ICs0
MTIsMTggQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQo
bG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgZG9tQWdlbnQtPnB1c2hO
b2RlQnlQYXRoVG9Gcm9udGVuZChjYWxsSWQsIHBhdGgpOwogfQogCit2b2lkIEluc3BlY3RvckJh
Y2tlbmQ6OnNldERPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAg
ICAgICAgZG9tQWdlbnQtPnNldERPTUJyZWFrcG9pbnQobm9kZUlkLCB0eXBlKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVET01CcmVha3BvaW50KGxvbmcgbm9kZUlkKQorewor
ICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JET01BZ2VudCgp
KQorICAgICAgICBkb21BZ2VudC0+cmVtb3ZlRE9NQnJlYWtwb2ludChub2RlSWQpOworfQorCiB2
b2lkIEluc3BlY3RvckJhY2tlbmQ6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKIHsKICAgICBpZiAo
bV9pbnNwZWN0b3JDb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCmlu
ZGV4IDc4ZDM0YjYuLjRkN2IxNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgK
QEAgLTEzMiw2ICsxMzIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKGNvbnN0
IFN0cmluZyYgcXVlcnksIGJvb2wgcnVuU3luY2hyb25vdXNseSk7CiAgICAgdm9pZCBzZWFyY2hD
YW5jZWxlZCgpOwogICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGxvbmcgY2FsbElk
LCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChsb25nIG5v
ZGVJZCwgbG9uZyB0eXBlKTsKKyAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2Rl
SWQpOwogCiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuaWRsCmluZGV4IDNjNDYwYTEuLjVkY2U2NDQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCkBAIC0xMDYsNiArMTA2LDggQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICB2b2lkIHBlcmZvcm1TZWFyY2goaW4gRE9NU3RyaW5nIHF1ZXJ5LCBpbiBi
b29sZWFuIHJ1blN5bmNocm9ub3VzbHkpOwogICAgICAgICB2b2lkIHNlYXJjaENhbmNlbGVkKCk7
CiAgICAgICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGluIGxvbmcgY2FsbElkLCBp
biBET01TdHJpbmcgcGF0aCk7CisgICAgICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChpbiBsb25n
IG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50
KGluIGxvbmcgbm9kZUlkKTsKIAogICAgICAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBlM2QxYmY1Li42
OGVhYWM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC02Myw2
ICs2Myw3IEBACiAjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRl
ICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5j
bHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0z
MjEsNiArMzIyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dW5iaW5kKE5vZGUqIG5vZGUs
IE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faWRUb05vZGUu
cmVtb3ZlKGlkKTsKICAgICBub2Rlc01hcC0+cmVtb3ZlKG5vZGUpOworICAgIG1fYnJlYWtwb2lu
dHMucmVtb3ZlKGlkKTsKICAgICBib29sIGNoaWxkcmVuUmVxdWVzdGVkID0gbV9jaGlsZHJlblJl
cXVlc3RlZC5jb250YWlucyhpZCk7CiAgICAgaWYgKGNoaWxkcmVuUmVxdWVzdGVkKSB7CiAgICAg
ICAgIC8vIFVuYmluZCBzdWJ0cmVlIGtub3duIHRvIGNsaWVudCByZWN1cnNpdmVseS4KQEAgLTM3
MSw2ICszNzMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQog
ICAgIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAgICAgbV9jaGlsZHJlblJlcXVlc3RlZC5jbGVh
cigpOwogICAgIG1faW5zcGVjdGVkTm9kZXMuY2xlYXIoKTsKKyAgICBtX2JyZWFrcG9pbnRzLmNs
ZWFyKCk7CiB9CiAKIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9ySWQobG9uZyBpZCkK
QEAgLTc1NSw2ICs3NTgsMTYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2VhcmNoQ2FuY2Vs
ZWQoKQogICAgIG1fc2VhcmNoUmVzdWx0cy5jbGVhcigpOwogfQogCit2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpCit7CisgICAg
bV9icmVha3BvaW50cy5zZXQobm9kZUlkLCB0eXBlKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCkKK3sKKyAgICBtX2JyZWFrcG9p
bnRzLnJlbW92ZShub2RlSWQpOworfQorCiBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3Vt
ZW50VVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QKIHsKICAgICBpZiAoIWRvY3Vt
ZW50IHx8IGRvY3VtZW50LT51cmwoKS5pc051bGwoKSkKQEAgLTk2Myw2ICs5NzYsOCBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgaWYg
KCFwYXJlbnRJZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgc3VidHJlZU1vZGlmaWVkKHBhcmVu
dCk7CisKICAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7
CiAgICAgICAgIC8vIE5vIGNoaWxkcmVuIGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9u
IGNoYW5nZXMgb2YgaGFzQ2hpbGRyZW4uCiAgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUNv
dW50VXBkYXRlZChwYXJlbnRJZCwgaW5uZXJDaGlsZE5vZGVDb3VudChwYXJlbnQpKTsKQEAgLTk4
Niw2ICsxMDAxLDggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShO
b2RlKiBub2RlKQogICAgIGlmICghcGFyZW50SWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIHN1
YnRyZWVNb2RpZmllZChwYXJlbnQpOworCiAgICAgaWYgKCFtX2NoaWxkcmVuUmVxdWVzdGVkLmNv
bnRhaW5zKHBhcmVudElkKSkgewogICAgICAgICAvLyBObyBjaGlsZHJlbiBhcmUgbWFwcGVkIHll
dCAtPiBvbmx5IG5vdGlmeSBvbiBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVuLgogICAgICAgICBpZiAo
aW5uZXJDaGlsZE5vZGVDb3VudChwYXJlbnQpID09IDEpCkBAIC0xMDA1LDYgKzEwMjIsMjIgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50
KQogICAgIG1fZnJvbnRlbmQtPmF0dHJpYnV0ZXNVcGRhdGVkKGlkLCBidWlsZEFycmF5Rm9yRWxl
bWVudEF0dHJpYnV0ZXMoZWxlbWVudCkpOwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpz
dWJ0cmVlTW9kaWZpZWQoTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBsb25nIGlkID0gbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLmdldChub2RlKTsKKyAgICAgICAgaWYgKCFpZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKG1fYnJlYWtwb2ludHMuY29udGFpbnMoaWQpKSB7CisgICAgICAgICAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbm9kZSA9IGlubmVyUGFyZW50Tm9kZShub2Rl
KTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVz
KGxvbmcgY2FsbElkLCBsb25nIG5vZGVJZCwgYm9vbCBhdXRob3JPbmx5KQogewogICAgIE5vZGUq
IG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5oCmluZGV4IDVkYjgzN2IuLjU4MDdiN2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaApAQCAtMTEyLDYgKzExMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBhZGRJbnNwZWN0ZWROb2RlKGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9pZCBwZXJmb3Jt
U2VhcmNoKGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgYm9vbCBydW5TeW5j
aHJvbm91c2x5KTsKICAgICAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgpOworICAgICAgICB2b2lk
IHNldERPTUJyZWFrcG9pbnQobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkKTsKKyAgICAgICAgdm9p
ZCByZW1vdmVET01CcmVha3BvaW50KGxvbmcgYnJlYWtwb2ludElkKTsKIAogICAgICAgICAvLyBN
ZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3IgQ1NTIHN0eWxlcyBpbnNwZWN0aW9u
LgogICAgICAgICB2b2lkIGdldFN0eWxlcyhsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQsIGJvb2wg
YXV0aG9yT25seSk7CkBAIC0xNTUsNiArMTU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwogCiAg
ICAgICAgIGJvb2wgcHVzaERvY3VtZW50VG9Gcm9udGVuZCgpOworICAgICAgICB2b2lkIHN1YnRy
ZWVNb2RpZmllZChOb2RlKiBub2RlKTsKIAogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMoRWxlbWVudCogZWxlbWVudCk7CiAg
ICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JDU1NSdWxlcyhE
b2N1bWVudCogb3duZXJEb2N1bWVudCwgQ1NTUnVsZUxpc3QqKTsKQEAgLTIwOSw2ICsyMTIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRpbWVyPEluc3BlY3RvckRPTUFnZW50PiBt
X21hdGNoSm9ic1RpbWVyOwogICAgICAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fc2VhcmNo
UmVzdWx0czsKICAgICAgICAgVmVjdG9yPGxvbmc+IG1faW5zcGVjdGVkTm9kZXM7CisgICAgICAg
IEhhc2hNYXA8bG9uZywgbG9uZz4gbV9icmVha3BvaW50czsKICAgICB9OwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRl
eCA3MDlhOWMyLi4zMTJhNjlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQnJlYWtwb2ludE1hbmFnZXIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0JyZWFrcG9pbnRNYW5hZ2VyLmpzCkBAIC0yNyw3ICsyNywxMCBAQAogV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX2JyZWFrcG9pbnRzID0g
e307Ci19CisgICAgdGhpcy5fZG9tQnJlYWtwb2ludHMgPSB7fTsKK307CisKK1dlYkluc3BlY3Rv
ci5CcmVha3BvaW50TWFuYWdlci5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDE7
CiAKIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgc2V0
T25lVGltZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lKQpAQCAtODgsMTAgKzkx
LDQxIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBicmVha3BvaW50czsKICAgICB9LAogCisgICAgc2V0RE9NQnJlYWtwb2ludDog
ZnVuY3Rpb24obm9kZUlkLCB0eXBlKQorICAgIHsKKyAgICAgICAgdmFyIG5ld1R5cGUgPSB0aGlz
Ll9kb21CcmVha3BvaW50c1tub2RlSWRdOworICAgICAgICBpZiAodHlwZW9mIG5ld1R5cGUgPT09
ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgbmV3VHlwZSA9IDA7CisgICAgICAgIG5ld1R5cGUg
fD0gdHlwZTsKKyAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludHNbbm9kZUlkXSA9IG5ld1R5cGU7
CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludChub2RlSWQsIG5ld1R5
cGUpOworICAgIH0sCisKKyAgICByZW1vdmVET01CcmVha3BvaW50OiBmdW5jdGlvbihub2RlSWQs
IHR5cGUpCisgICAgeworICAgICAgICB2YXIgb2xkVHlwZSA9IHRoaXMuX2RvbUJyZWFrcG9pbnRz
W25vZGVJZF07CisgICAgICAgIGlmICh0eXBlb2Ygb2xkVHlwZSA9PT0gInVuZGVmaW5lZCIpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIG5ld1R5cGUgPSBvbGRUeXBlOworICAg
ICAgICBpZiAodHlwZW9mIHR5cGUgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgbmV3VHlw
ZSA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld1R5cGUgJj0gfnR5cGU7CisKKyAg
ICAgICAgaWYgKG5ld1R5cGUpCisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldERPTUJy
ZWFrcG9pbnQobm9kZUlkLCBuZXdUeXBlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJyZWFrcG9pbnQobm9kZUlkKTsKKyAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9kb21CcmVha3BvaW50c1tub2RlSWRdOworICAgICAgICB9CisgICAgfSwK
KwogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50
cyA9IHt9OwogICAgICAgICBkZWxldGUgdGhpcy5fb25lVGltZUJyZWFrcG9pbnQ7CisgICAgICAg
IHRoaXMuX2RvbUJyZWFrcG9pbnRzID0ge307CiAgICAgfSwKIAogICAgIF9zZXRCcmVha3BvaW50
OiBmdW5jdGlvbihzb3VyY2VJRCwgc291cmNlVVJMLCBsaW5lLCBlbmFibGVkLCBjb25kaXRpb24p
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCmluZGV4IDcyNDdiYTAuLmRhMGU5MTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC03NjEsNiArNzYxLDEzIEBAIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVkaXQgYXMgSFRNTCIp
LCB0aGlzLl9lZGl0QXNIVE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBIVE1MIiksIHRoaXMuX2NvcHlI
VE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5yZW1vdmUuYmluZCh0aGlzKSk7Cisg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworCisgICAgICAgIC8vIEFkZCBk
ZWJidWdpbmctcmVsYXRlZCBhY3Rpb25zCisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIG9uIHN1YnRyZWUgbW9kaWZpY2F0aW9ucyIpLAor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLnNldERPTUJyZWFrcG9p
bnQuYmluZChXZWJJbnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIsIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuaWQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5ET01CcmVha3BvaW50VHlw
ZVN1YnRyZWVNb2RpZmllZCkpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIGJyZWFrcG9pbnRzIiksCisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludC5iaW5kKFdlYklu
c3BlY3Rvci5icmVha3BvaW50TWFuYWdlciwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCkpOwog
ICAgIH0sCiAKICAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRN
ZW51LCB0ZXh0Tm9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNw
ZWN0b3JCYWNrZW5kU3R1Yi5qcwppbmRleCA4NTdlMDI2Li5lNmEzMmEyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0y
ODksNiArMjg5LDE0IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5
cGUgPSB7CiAKICAgICBzZWFyY2hDYW5jZWxlZDogZnVuY3Rpb24oKQogICAgIHsKKyAgICB9LAor
CisgICAgc2V0RE9NQnJlYWtwb2ludDogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAg
cmVtb3ZlRE9NQnJlYWtwb2ludDogZnVuY3Rpb24oKQorICAgIHsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDI5NzAzNmIuLmNlMzgzNjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEwLTA3LTIzICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGFkZCBzZXRET01CcmVha3BvaW50IGFuZCByZW1vdmVET01CcmVha3BvaW50IGZ1bmN0
aW9ucyB0byBJbnNwZWN0b3JCYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgICogc3JjL2pzL0luc3BlY3RvckNvbnRy
b2xsZXJJbXBsLmpzOgorICAgICAgICAoZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwpOgor
CiAyMDEwLTA3LTIxICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9q
cy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcwppbmRleCA1ZWQ1MDZhLi4wZTVhODRhIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpz
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMK
QEAgLTgyLDYgKzgyLDggQEAgZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwgPSBmdW5jdGlv
bigpCiAgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0SW5q
ZWN0ZWRTY3JpcHRTb3VyY2UiKTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVy
RGVsZWdhdGVfKCJzZXRPdXRlckhUTUwiKTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250
cm9sbGVyRGVsZWdhdGVfKCJzZXRUZXh0Tm9kZVZhbHVlIik7CisgICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0RE9NQnJlYWtwb2ludCIpOworICAgIHRoaXMu
aW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZURPTUJyZWFrcG9pbnQi
KTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzdGFydFBy
b2ZpbGluZyIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8o
InN0YXJ0VGltZWxpbmVQcm9maWxlciIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRy
b2xsZXJEZWxlZ2F0ZV8oInN0b3BQcm9maWxpbmciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62416</attachid>
            <date>2010-07-23 05:01:03 -0700</date>
            <delta_ts>2010-08-17 06:49:25 -0700</delta_ts>
            <desc>Rebase.</desc>
            <filename>dom1.patch</filename>
            <type>text/plain</type>
            <size>19422</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGU3ODJmMC4uM2E0MDhmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wNy0yMyAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgYnJlYWtpbmcg
b24gRE9NIG5vZGUgc3VidHJlZSBtdXRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgIEFkZCB0d28gZW50cmllcyB0
byBXZWIgSW5zcGVjdG9yIERPTSBlbGVtZW50IGNvbnRleHQgbWVudToKKyAgICAgICAgMS4gIlN0
b3Agb24gc3VidHJlZSBtb2RpZmljYXRpb25zIjogd2lsbCBicmVhayBvbiBhZGRpbmcvcmVtb3Zp
bmcgb2YgYW55IGVsZW1lbnQgd2hpY2ggaXMgYSBjaGlsZCBvZiB0aGUgRE9NIGVsZW1lbnQKKyAg
ICAgICAgMi4gIlJlbW92ZSBicmVha3BvaW50cyI6IHdpbGwgcmVtb3ZlIGFsbCBicmVha3BvaW50
cyBhc3NvY2lhdGVkIHdpdGggdGhlIERPTSBlbGVtZW50CisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVi
dWdFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpz
ZXRET01CcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnJl
bW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6dW5iaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpkaXNjYXJkQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnN1YnRyZWVNb2RpZmllZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLnNldERPTUJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5y
ZW1vdmVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFu
YWdlci5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVF
bGVtZW50LnByb3RvdHlwZS5fcG9wdWxhdGVUYWdDb250ZXh0TWVudSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczoKKyAgICAgICAgKC5XZWJJ
bnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkKToK
KyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnNl
dERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5k
U3R1Yi5wcm90b3R5cGUucmVtb3ZlRE9NQnJlYWtwb2ludCk6CisKIDIwMTAtMDctMjMgIFNoaW5p
Y2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCBmZDg5NzZiLi5jYTM3MmI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRp
b25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNlKCk7Cisg
ICAgdm9pZCBicmVha1Byb2dyYW0oKSB7IH0KICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwog
ICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDBhNDMy
YjcuLmU1NjQzODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0yMDksNiArMjA5LDI1IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwYXVzZU9uCiAgICAgc2V0UGF1
c2VPbkV4Y2VwdGlvbnNGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBh
cmd2KTsKIH0KIAordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiwgY2FsbGJhY2tUZW1wbGF0ZSwgKCkpOworICAgIGlmIChjYWxsYmFja1RlbXBsYXRlLklzRW1w
dHkoKSkgeworICAgICAgICBjYWxsYmFja1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpKTsKKyAgICAg
ICAgY2FsbGJhY2tUZW1wbGF0ZS0+U2V0Q2FsbEhhbmRsZXIoJlNjcmlwdERlYnVnU2VydmVyOjpi
cmVha1Byb2dyYW1DYWxsYmFjayk7CisgICAgfQorCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgaWYgKGNvbnRleHQu
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7
CisgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5zZXQoY29udGV4dCk7CisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+IGJyZWFrUHJvZ3JhbUZ1bmN0aW9uID0gY2FsbGJhY2tUZW1wbGF0ZS0+R2V0
RnVuY3Rpb24oKTsKKyAgICB2ODo6RGVidWc6OkNhbGwoYnJlYWtQcm9ncmFtRnVuY3Rpb24pOwor
ICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuY2xlYXIoKTsKK30KKwogdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6Y29udGludWVQcm9ncmFtKCkKIHsKICAgICBpZiAobV9wYXVzZWRQYWdlKQpAQCAtMjk0
LDYgKzMxMyw0MSBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjppc0RlYnVnZ2VyQWx3YXlzRW5h
YmxlZCgpCiAgICAgcmV0dXJuIG1fZW5hYmxlZDsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQoreworICAgIEFTU0VSVCgyID09IGFyZ3MuTGVuZ3RoKCkpOworICAgIFNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSk7CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwordm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
ZXhlY3V0aW9uU3RhdGUpCit7CisgICAgLy8gRG9uJ3QgYWxsb3cgbmVzdGVkIGJyZWFrcy4KKyAg
ICBpZiAobV9wYXVzZWRQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFtZSogZnJhbWUg
PSByZXRyaWV2ZUZyYW1lKG1fcGF1c2VkUGFnZUNvbnRleHQuZ2V0KCkpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybjsKKworICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpOworICAgIGlmICghbGlzdGVuZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZXhlY3V0aW9uU3RhdGUuc2V0KGV4ZWN1dGlvblN0
YXRlKTsKKyAgICBtX3BhdXNlZFBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAgIFNjcmlwdFN0YXRl
KiBjdXJyZW50Q2FsbEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSk7Cisg
ICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSk7CisKKyAgICAvLyBX
YWl0IGZvciBjb250aW51ZSBvciBzdGVwIGNvbW1hbmQuCisgICAgbV9jbGllbnRNZXNzYWdlTG9v
cC0+cnVuKG1fcGF1c2VkUGFnZSk7CisgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2UpOworCisgICAg
Ly8gVGhlIGxpc3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbmVzdGVkIGxvb3Au
CisgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNNYXAu
Z2V0KGZyYW1lLT5wYWdlKCkpKQorICAgICAgICBsaXN0ZW5lci0+ZGlkQ29udGludWUoKTsKK30K
Kwogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6djhEZWJ1Z0V2ZW50Q2FsbGJhY2soY29uc3Qgdjg6
OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RGV0YWlscykKIHsKICAgICBTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2hhcmVkKCkuaGFuZGxlVjhEZWJ1Z0V2ZW50KGV2ZW50RGV0YWlscyk7CkBAIC0zMjks
MjEgKzM4Myw5IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChj
b25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLy8gRG9u
J3QgYWxsb3cgbmVzdGVkIGJyZWFrcy4KLSAgICAgICAgICAgICAgICBpZiAobV9wYXVzZWRQYWdl
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgbV9leGVjdXRp
b25TdGF0ZS5zZXQoZXZlbnREZXRhaWxzLkdldEV4ZWN1dGlvblN0YXRlKCkpOwotICAgICAgICAg
ICAgICAgIG1fcGF1c2VkUGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0gICAgICAgICAgICAgICAgU2Ny
aXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZy
YW1lKTsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUGF1c2UoY3VycmVudENhbGxGcmFt
ZVN0YXRlKTsKLQotICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIGNvbnRpbnVlIG9yIHN0ZXAg
Y29tbWFuZC4KLSAgICAgICAgICAgICAgICBtX2NsaWVudE1lc3NhZ2VMb29wLT5ydW4obV9wYXVz
ZWRQYWdlKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF1c2VkUGFnZSk7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBUaGUgbGlzdGVuZXIgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBu
ZXN0ZWQgbG9vcC4KLSAgICAgICAgICAgICAgICBpZiAoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlz
dGVuZXIgPSBtX2xpc3RlbmVyc01hcC5nZXQoZnJhbWUtPnBhZ2UoKSkpCi0gICAgICAgICAgICAg
ICAgICAgIGxpc3RlbmVyLT5kaWRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIG1fcGF1c2Vk
UGFnZUNvbnRleHQuc2V0KGV2ZW50Q29udGV4dCk7CisgICAgICAgICAgICAgICAgYnJlYWtQcm9n
cmFtKGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBt
X3BhdXNlZFBhZ2VDb250ZXh0LmNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggYTU1Mzg4Zi4u
YmQ5YmY5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNzEs
NiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBh
dXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAKICAgICB2b2lk
IHBhdXNlKCkgeyB9CisgICAgdm9pZCBicmVha1Byb2dyYW0oKTsKICAgICB2b2lkIGNvbnRpbnVl
UHJvZ3JhbSgpOwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBP
dmVyU3RhdGVtZW50KCk7CkBAIC0xMDMsNiArMTA0LDkgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRE
ZWJ1Z1NlcnZlcigpOwogICAgIH5TY3JpcHREZWJ1Z1NlcnZlcigpIHsgfQogCisgICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBicmVha1Byb2dyYW1DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGV4ZWN1dGlvblN0YXRlKTsKKwogICAgIHN0YXRpYyB2b2lkIHY4RGVidWdFdmVudENhbGxi
YWNrKGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpOwogICAgIHZv
aWQgaGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVu
dERldGFpbHMpOwogCkBAIC0xMjAsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBPd25IYW5kbGU8
djg6Ok9iamVjdD4gbV9leGVjdXRpb25TdGF0ZTsKICAgICBPd25QdHI8Q2xpZW50TWVzc2FnZUxv
b3A+IG1fY2xpZW50TWVzc2FnZUxvb3A7CiAgICAgUGFnZSogbV9wYXVzZWRQYWdlOworICAgIE93
bkhhbmRsZTx2ODo6Q29udGV4dD4gbV9wYXVzZWRQYWdlQ29udGV4dDsKICAgICBib29sIG1fZW5h
YmxlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IDE1NWJmY2QuLjExY2JjY2Ig
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMTE5LDYgKzExOSw4IEBAIG1vZHVsZSBjb3Jl
IHsKICAgICAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmluZyBxdWVyeSwgaW4gYm9vbGVh
biBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwogICAg
ICAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChpbiBsb25nIGNhbGxJZCwgaW4gU3Ry
aW5nIHBhdGgsIG91dCBsb25nIG5vZGVJZCk7CisgICAgICAgIHZvaWQgc2V0RE9NQnJlYWtwb2lu
dChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgdm9pZCByZW1vdmVET01C
cmVha3BvaW50KGluIGxvbmcgbm9kZUlkKTsKIAogICAgICAgICB2b2lkIGNsZWFyQ29uc29sZU1l
c3NhZ2VzKGluIGxvbmcgY2FsbElkKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmNwcAppbmRleCBmMjdiODEyLi40YjQ1NzZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmNwcApAQCAtNDEzLDYgKzQxMywxOCBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnB1
c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgICAgICBkb21BZ2VudC0+cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGNhbGxJZCwgcGF0aCk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c2V0RE9NQnJlYWtwb2ludChsb25nIG5vZGVJ
ZCwgbG9uZyB0eXBlKQoreworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBp
bnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICBkb21BZ2VudC0+c2V0RE9NQnJlYWtwb2ludChu
b2RlSWQsIHR5cGUpOworfQorCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnJlbW92ZURPTUJyZWFr
cG9pbnQobG9uZyBub2RlSWQpCit7CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT5yZW1vdmVET01CcmVh
a3BvaW50KG5vZGVJZCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Y2xlYXJDb25zb2xl
TWVzc2FnZXMobG9uZyBjYWxsSWQpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikg
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCmluZGV4IDE2ZDUzYzAuLjk3ZmI4ZWYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKQEAgLTEzMyw2ICsxMzMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wg
cnVuU3luY2hyb25vdXNseSk7CiAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwogICAgIHZvaWQg
cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKTsKKyAg
ICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQpOwogCiAgICAgdm9pZCBjbGVh
ckNvbnNvbGVNZXNzYWdlcyhsb25nIGNhbGxJZCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZC5pZGwKaW5kZXggNTk0MTM1OC4uYmYzYjNhYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5pZGwKQEAgLTEwNiw2ICsxMDYsOCBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIHZvaWQgcGVyZm9ybVNlYXJjaChpbiBET01TdHJpbmcgcXVlcnksIGluIGJvb2xlYW4gcnVu
U3luY2hyb25vdXNseSk7CiAgICAgICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsKICAgICAgICAg
dm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmlu
ZyBwYXRoKTsKKyAgICAgICAgdm9pZCBzZXRET01CcmVha3BvaW50KGluIGxvbmcgbm9kZUlkLCBp
biBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoaW4gbG9uZyBu
b2RlSWQpOwogCiAgICAgICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoaW4gbG9uZyBjYWxs
SWQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggM2ExNDgz
MC4uYTc4ZmIwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
NjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgor
I2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpA
QCAtMzIxLDYgKzMyMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZChOb2RlKiBu
b2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiAgICAgICAgIHJldHVybjsKICAgICBtX2lkVG9O
b2RlLnJlbW92ZShpZCk7CiAgICAgbm9kZXNNYXAtPnJlbW92ZShub2RlKTsKKyAgICBtX2JyZWFr
cG9pbnRzLnJlbW92ZShpZCk7CiAgICAgYm9vbCBjaGlsZHJlblJlcXVlc3RlZCA9IG1fY2hpbGRy
ZW5SZXF1ZXN0ZWQuY29udGFpbnMoaWQpOwogICAgIGlmIChjaGlsZHJlblJlcXVlc3RlZCkgewog
ICAgICAgICAvLyBVbmJpbmQgc3VidHJlZSBrbm93biB0byBjbGllbnQgcmVjdXJzaXZlbHkuCkBA
IC0zNzEsNiArMzczLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdz
KCkKICAgICByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQu
Y2xlYXIoKTsKICAgICBtX2luc3BlY3RlZE5vZGVzLmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50
cy5jbGVhcigpOwogfQogCiBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvcklkKGxvbmcg
aWQpCkBAIC03NTUsNiArNzU4LDE2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNlYXJjaENh
bmNlbGVkKCkKICAgICBtX3NlYXJjaFJlc3VsdHMuY2xlYXIoKTsKIH0KIAordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2V0RE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKQorewor
ICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGVJZCwgdHlwZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQpCit7CisgICAgbV9icmVh
a3BvaW50cy5yZW1vdmUobm9kZUlkKTsKK30KKwogU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojpk
b2N1bWVudFVSTFN0cmluZyhEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFk
b2N1bWVudCB8fCBkb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCkBAIC05NjMsNiArOTc2LDggQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQogICAg
IGlmICghcGFyZW50SWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIHN1YnRyZWVNb2RpZmllZChw
YXJlbnQpOworCiAgICAgaWYgKCFtX2NoaWxkcmVuUmVxdWVzdGVkLmNvbnRhaW5zKHBhcmVudElk
KSkgewogICAgICAgICAvLyBObyBjaGlsZHJlbiBhcmUgbWFwcGVkIHlldCAtPiBvbmx5IG5vdGlm
eSBvbiBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVuLgogICAgICAgICBtX2Zyb250ZW5kLT5jaGlsZE5v
ZGVDb3VudFVwZGF0ZWQocGFyZW50SWQsIGlubmVyQ2hpbGROb2RlQ291bnQocGFyZW50KSk7CkBA
IC05ODYsNiArMTAwMSw4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5v
ZGUoTm9kZSogbm9kZSkKICAgICBpZiAoIXBhcmVudElkKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBzdWJ0cmVlTW9kaWZpZWQocGFyZW50KTsKKwogICAgIGlmICghbV9jaGlsZHJlblJlcXVlc3Rl
ZC5jb250YWlucyhwYXJlbnRJZCkpIHsKICAgICAgICAgLy8gTm8gY2hpbGRyZW4gYXJlIG1hcHBl
ZCB5ZXQgLT4gb25seSBub3RpZnkgb24gY2hhbmdlcyBvZiBoYXNDaGlsZHJlbi4KICAgICAgICAg
aWYgKGlubmVyQ2hpbGROb2RlQ291bnQocGFyZW50KSA9PSAxKQpAQCAtMTAwNSw2ICsxMDIyLDIy
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCogZWxl
bWVudCkKICAgICBtX2Zyb250ZW5kLT5hdHRyaWJ1dGVzVXBkYXRlZChpZCwgYnVpbGRBcnJheUZv
ckVsZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c3VidHJlZU1vZGlmaWVkKE5vZGUqIG5vZGUpCit7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgbG9uZyBpZCA9IG1fZG9jdW1l
bnROb2RlVG9JZE1hcC5nZXQobm9kZSk7CisgICAgICAgIGlmICghaWQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChtX2JyZWFrcG9pbnRzLmNvbnRhaW5zKGlkKSkgeworICAgICAg
ICAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmJyZWFrUHJvZ3JhbSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG5vZGUgPSBpbm5lclBhcmVudE5vZGUo
bm9kZSk7CisgICAgfQorI2VuZGlmCit9CisKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0
eWxlcyhsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSkKIHsKICAgICBO
b2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaAppbmRleCAzOGI3MDM0Li4xYTRmNDRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKQEAgLTExMiw2ICsxMTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShsb25nIG5vZGVJZCk7CiAgICAgICAgIHZvaWQgcGVy
Zm9ybVNlYXJjaChjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGJvb2wgcnVu
U3luY2hyb25vdXNseSk7CiAgICAgICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsKKyAgICAgICAg
dm9pZCBzZXRET01CcmVha3BvaW50KGxvbmcgY2FsbElkLCBsb25nIG5vZGVJZCk7CisgICAgICAg
IHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChsb25nIGJyZWFrcG9pbnRJZCk7CiAKICAgICAgICAg
Ly8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIENTUyBzdHlsZXMgaW5zcGVj
dGlvbi4KICAgICAgICAgdm9pZCBnZXRTdHlsZXMobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkLCBi
b29sIGF1dGhvck9ubHkpOwpAQCAtMTU1LDYgKzE1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCB1bmJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsK
IAogICAgICAgICBib29sIHB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKTsKKyAgICAgICAgdm9pZCBz
dWJ0cmVlTW9kaWZpZWQoTm9kZSogbm9kZSk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlU3R5bGVzKEVsZW1lbnQqIGVsZW1lbnQp
OwogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yQ1NTUnVs
ZXMoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1J1bGVMaXN0Kik7CkBAIC0yMDksNiArMjEy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUaW1lcjxJbnNwZWN0b3JET01BZ2Vu
dD4gbV9tYXRjaEpvYnNUaW1lcjsKICAgICAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBtX3Nl
YXJjaFJlc3VsdHM7CiAgICAgICAgIFZlY3Rvcjxsb25nPiBtX2luc3BlY3RlZE5vZGVzOworICAg
ICAgICBIYXNoTWFwPGxvbmcsIGxvbmc+IG1fYnJlYWtwb2ludHM7CiAgICAgfTsKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFn
ZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMK
aW5kZXggNzA5YTljMi4uMzEyYTY5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwpAQCAtMjcsNyArMjcsMTAgQEAKIFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLl9icmVha3BvaW50
cyA9IHt9OwotfQorICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRzID0ge307Cit9OworCitXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQg
PSAxOwogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAg
IHNldE9uZVRpbWVCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VJRCwgbGluZSkKQEAgLTg4LDEw
ICs5MSw0MSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gYnJlYWtwb2ludHM7CiAgICAgfSwKIAorICAgIHNldERPTUJyZWFrcG9p
bnQ6IGZ1bmN0aW9uKG5vZGVJZCwgdHlwZSkKKyAgICB7CisgICAgICAgIHZhciBuZXdUeXBlID0g
dGhpcy5fZG9tQnJlYWtwb2ludHNbbm9kZUlkXTsKKyAgICAgICAgaWYgKHR5cGVvZiBuZXdUeXBl
ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIG5ld1R5cGUgPSAwOworICAgICAgICBuZXdU
eXBlIHw9IHR5cGU7CisgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRzW25vZGVJZF0gPSBuZXdU
eXBlOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldERPTUJyZWFrcG9pbnQobm9kZUlkLCBu
ZXdUeXBlKTsKKyAgICB9LAorCisgICAgcmVtb3ZlRE9NQnJlYWtwb2ludDogZnVuY3Rpb24obm9k
ZUlkLCB0eXBlKQorICAgIHsKKyAgICAgICAgdmFyIG9sZFR5cGUgPSB0aGlzLl9kb21CcmVha3Bv
aW50c1tub2RlSWRdOworICAgICAgICBpZiAodHlwZW9mIG9sZFR5cGUgPT09ICJ1bmRlZmluZWQi
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBuZXdUeXBlID0gb2xkVHlwZTsK
KyAgICAgICAgaWYgKHR5cGVvZiB0eXBlID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIG5l
d1R5cGUgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdUeXBlICY9IH50eXBlOwor
CisgICAgICAgIGlmIChuZXdUeXBlKQorICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRE
T01CcmVha3BvaW50KG5vZGVJZCwgbmV3VHlwZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01CcmVha3BvaW50KG5vZGVJZCk7CisgICAgICAg
ICAgICBkZWxldGUgdGhpcy5fZG9tQnJlYWtwb2ludHNbbm9kZUlkXTsKKyAgICAgICAgfQorICAg
IH0sCisKICAgICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtw
b2ludHMgPSB7fTsKICAgICAgICAgZGVsZXRlIHRoaXMuX29uZVRpbWVCcmVha3BvaW50OworICAg
ICAgICB0aGlzLl9kb21CcmVha3BvaW50cyA9IHt9OwogICAgIH0sCiAKICAgICBfc2V0QnJlYWtw
b2ludDogZnVuY3Rpb24oc291cmNlSUQsIHNvdXJjZVVSTCwgbGluZSwgZW5hYmxlZCwgY29uZGl0
aW9uKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJl
ZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcwppbmRleCA3MjQ3YmEwLi5kYTBlOTEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtNzYxLDYgKzc2MSwxMyBA
QCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFZGl0IGFzIEhU
TUwiKSwgdGhpcy5fZWRpdEFzSFRNTC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgYXMgSFRNTCIpLCB0aGlzLl9j
b3B5SFRNTC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBOb2RlIiksIHRoaXMucmVtb3ZlLmJpbmQodGhpcykp
OworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKworICAgICAgICAvLyBB
ZGQgZGViYnVnaW5nLXJlbGF0ZWQgYWN0aW9ucworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcCBvbiBzdWJ0cmVlIG1vZGlmaWNhdGlvbnMi
KSwKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5icmVha3BvaW50TWFuYWdlci5zZXRET01CcmVh
a3BvaW50LmJpbmQoV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLCB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0LmlkLCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRE9NQnJlYWtwb2lu
dFR5cGVTdWJ0cmVlTW9kaWZpZWQpKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBicmVha3BvaW50cyIpLAorICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZURPTUJyZWFrcG9pbnQuYmluZChX
ZWJJbnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQp
KTsKICAgICB9LAogCiAgICAgX3BvcHVsYXRlVGV4dENvbnRleHRNZW51OiBmdW5jdGlvbihjb250
ZXh0TWVudSwgdGV4dE5vZGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SW5zcGVjdG9yQmFja2VuZFN0dWIuanMKaW5kZXggODU3ZTAyNi4uZTZhMzJhMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcwpA
QCAtMjg5LDYgKzI4OSwxNCBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJv
dG90eXBlID0gewogCiAgICAgc2VhcmNoQ2FuY2VsZWQ6IGZ1bmN0aW9uKCkKICAgICB7CisgICAg
fSwKKworICAgIHNldERPTUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKwor
ICAgIHJlbW92ZURPTUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA5MmRiMzFmLi5lODFlYWY3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNy0yMyAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBhZGQgc2V0RE9NQnJlYWtwb2ludCBhbmQgcmVtb3ZlRE9NQnJlYWtwb2ludCBm
dW5jdGlvbnMgdG8gSW5zcGVjdG9yQmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4ODYKKworICAgICAgICAqIHNyYy9qcy9JbnNwZWN0b3JD
b250cm9sbGVySW1wbC5qczoKKyAgICAgICAgKGRldnRvb2xzLkluc3BlY3RvckJhY2tlbmRJbXBs
KToKKwogMjAxMC0wNy0yMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcwppbmRleCAzMGVkZDllLi42ZDI0
YmNkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xs
ZXJJbXBsLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxl
ckltcGwuanMKQEAgLTgyLDYgKzgyLDggQEAgZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRl
Xygic2V0SW5qZWN0ZWRTY3JpcHRTb3VyY2UiKTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JD
b250cm9sbGVyRGVsZWdhdGVfKCJzZXRPdXRlckhUTUwiKTsKICAgICB0aGlzLmluc3RhbGxJbnNw
ZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRUZXh0Tm9kZVZhbHVlIik7CisgICAgdGhpcy5p
bnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0RE9NQnJlYWtwb2ludCIpOwor
ICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZURPTUJy
ZWFrcG9pbnQiKTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVf
KCJzdGFydFByb2ZpbGluZyIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJE
ZWxlZ2F0ZV8oInN0YXJ0VGltZWxpbmVQcm9maWxlciIpOwogICAgIHRoaXMuaW5zdGFsbEluc3Bl
Y3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInN0b3BQcm9maWxpbmciKTsK
</data>
<flag name="review"
          id="50605"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64585</attachid>
            <date>2010-08-17 06:49:25 -0700</date>
            <delta_ts>2010-08-18 05:09:12 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>20889</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWY4YTkxYi4uY2FmMDJhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wOC0xNyAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgYnJlYWtpbmcg
b24gRE9NIG5vZGUgc3VidHJlZSBtdXRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgIEFkZCB0d28gZW50cmllcyB0
byBXZWIgSW5zcGVjdG9yIERPTSBlbGVtZW50IGNvbnRleHQgbWVudToKKyAgICAgICAgMS4gIlN0
b3Agb24gc3VidHJlZSBtb2RpZmljYXRpb25zIjogd2lsbCBicmVhayBvbiBhZGRpbmcvcmVtb3Zp
bmcgb2YgYW55IGVsZW1lbnQgd2hpY2ggaXMgYSBjaGlsZCBvZiB0aGUgRE9NIGVsZW1lbnQKKyAg
ICAgICAgMi4gIlJlbW92ZSBicmVha3BvaW50cyI6IHdpbGwgcmVtb3ZlIGFsbCBicmVha3BvaW50
cyBhc3NvY2lhdGVkIHdpdGggdGhlIERPTSBlbGVtZW50CisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3VidHJlZU1vZGlmaWVkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjphZGRTdWJ0cmVlVG9DYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlU3VidHJlZUZyb21D
YWNoZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludE1hbmFnZXIucHJvdG90eXBlLnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVET01CcmVha3BvaW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Bv
cHVsYXRlVGFnQ29udGV4dE1lbnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5z
cGVjdG9yQmFja2VuZFN0dWIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFj
a2VuZFN0dWIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisK
IDIwMTAtMDgtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggOGQ0N2I3OC4uMjJlOWIzMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTIwNSw2ICsyMDUsMTEgQEAgdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2UoKQogICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQg
PSB0cnVlOwogfQogCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW0oKQorewor
ICAgIC8vIEZJWE1FKDQzMzMyKTogaW1wbGVtZW50IHRoaXMuCit9CisKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmZDg5NzZiLi40MzJmZTlhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC03OSw2ICs3OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNlKCk7CisgICAgdm9pZCBicmVha1Byb2dyYW0o
KTsKICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1l
bnQoKTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDBjMjQ2NzguLmU0OGIyZjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMjgsNiArMjI4LDI1IEBAIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAgICAgICAgdjg6OkRlYnVnOjpEZWJ1Z0Jy
ZWFrKCk7CiB9CiAKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4sIGNhbGxiYWNrVGVtcGxhdGUsICgpKTsKKyAgICBpZiAoY2FsbGJhY2tUZW1wbGF0ZS5Jc0Vt
cHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2tUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAg
ICAgIGNhbGxiYWNrVGVtcGxhdGUtPlNldENhbGxIYW5kbGVyKCZTY3JpcHREZWJ1Z1NlcnZlcjo6
YnJlYWtQcm9ncmFtQ2FsbGJhY2spOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3Bl
OworICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuc2V0KGNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPiBicmVha1Byb2dyYW1GdW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdl
dEZ1bmN0aW9uKCk7CisgICAgdjg6OkRlYnVnOjpDYWxsKGJyZWFrUHJvZ3JhbUZ1bmN0aW9uKTsK
KyAgICBtX3BhdXNlZFBhZ2VDb250ZXh0LmNsZWFyKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKG1fcGF1c2VkUGFnZSkKQEAgLTMy
Myw2ICszNDIsNDEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuUGVuZGluZ1Rhc2tzKCkK
ICAgICB2ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7CiB9CiAKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBBU1NFUlQoMiA9PSBhcmdzLkxlbmd0aCgpKTsK
KyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGV4ZWN1dGlvblN0YXRlKQoreworICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBi
cmVha3MuCisgICAgaWYgKG1fcGF1c2VkUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJh
bWUqIGZyYW1lID0gcmV0cmlldmVGcmFtZShtX3BhdXNlZFBhZ2VDb250ZXh0LmdldCgpKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JpcHREZWJ1Z0xpc3RlbmVy
KiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKKyAgICBpZiAo
IWxpc3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChl
eGVjdXRpb25TdGF0ZSk7CisgICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBT
Y3JpcHRTdGF0ZSogY3VycmVudENhbGxGcmFtZVN0YXRlID0gbWFpbldvcmxkU2NyaXB0U3RhdGUo
ZnJhbWUpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOwor
CisgICAgLy8gV2FpdCBmb3IgY29udGludWUgb3Igc3RlcCBjb21tYW5kLgorICAgIG1fY2xpZW50
TWVzc2FnZUxvb3AtPnJ1bihtX3BhdXNlZFBhZ2UpOworICAgIEFTU0VSVCghbV9wYXVzZWRQYWdl
KTsKKworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5l
c3RlZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlz
dGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKSkKKyAgICAgICAgbGlzdGVuZXItPmRpZENvbnRp
bnVlKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnY4RGVidWdFdmVudENhbGxiYWNr
KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpCiB7CiAgICAgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmhhbmRsZVY4RGVidWdFdmVudChldmVudERldGFpbHMp
OwpAQCAtMzY1LDIxICs0MTksOSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERl
YnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVha3MuCi0gICAgICAgICAgICAgICAgaWYgKG1f
cGF1c2VkUGFnZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IG1fZXhlY3V0aW9uU3RhdGUuc2V0KGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsK
LSAgICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgICAgICAg
ICAgICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50Q2FsbEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3Jp
cHRTdGF0ZShmcmFtZSk7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJl
bnRDYWxsRnJhbWVTdGF0ZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciBjb250aW51
ZSBvciBzdGVwIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgbV9jbGllbnRNZXNzYWdlTG9vcC0+
cnVuKG1fcGF1c2VkUGFnZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2Up
OwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGxpc3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3Zl
ZCBpbiB0aGUgbmVzdGVkIGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKFNjcmlwdERlYnVnTGlz
dGVuZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQotICAg
ICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkQ29udGludWUoKTsKKyAgICAgICAgICAgICAg
ICBtX3BhdXNlZFBhZ2VDb250ZXh0LnNldChldmVudENvbnRleHQpOworICAgICAgICAgICAgICAg
IGJyZWFrUHJvZ3JhbShldmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSk7CisgICAgICAg
ICAgICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5jbGVhcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1
Z1NlcnZlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4
IGExZTBhNDcuLjM3YTIxMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RGVidWdTZXJ2ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3RhdGUpOwog
CiAgICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAgdm9pZCBj
b250aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAgICAgdm9p
ZCBzdGVwT3ZlclN0YXRlbWVudCgpOwpAQCAtMTExLDYgKzExMiw5IEBAIHByaXZhdGU6CiAgICAg
U2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KIAorICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncyk7CisgICAgdm9pZCBicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSk7CisKICAgICBzdGF0aWMgdm9pZCB2OERlYnVnRXZl
bnRDYWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRhaWxzKTsK
ICAgICB2b2lkIGhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWls
cyYgZXZlbnREZXRhaWxzKTsKIApAQCAtMTI4LDYgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgT3du
SGFuZGxlPHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAgT3duUHRyPENsaWVudE1l
c3NhZ2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOwogICAgIFBhZ2UqIG1fcGF1c2VkUGFnZTsK
KyAgICBPd25IYW5kbGU8djg6OkNvbnRleHQ+IG1fcGF1c2VkUGFnZUNvbnRleHQ7CiAgICAgYm9v
bCBtX2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAxYzY2YjU5Li45
MmZmMzdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE3Niw2ICsxNzYsOCBAQCBtb2R1
bGUgY29yZSB7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0
cmluZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAgW2hhbmRs
ZXI9RE9NXSB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9p
ZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIFN0cmluZyBwYXRo
LCBvdXQgbG9uZyBub2RlSWQpOworICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgc2V0RE9NQnJl
YWtwb2ludChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgW2hhbmRsZXI9
RE9NXSB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxvbmcgdHlw
ZSk7CiAKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBjbGVhckNvbnNvbGVNZXNz
YWdlcygpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGhpZ2hsaWdodERPTU5v
ZGUoaW4gbG9uZyBub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CmluZGV4IDYyNDMyOTkuLjQ2MDhjMWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVD
b25zdGFudHMuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNj
cmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1
ZGUgIlRleHQuaCIKQEAgLTE5Niw2ICsxOTcsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1h
dGNoUGxhaW5UZXh0Sm9iKCkgeyB9CiB9OwogCitlbnVtIERPTUJyZWFrcG9pbnRUeXBlIHsKKyAg
ICBET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDEKK307CisKK2VudW0gQ2FjaGVk
RE9NQnJlYWtwb2ludFR5cGUgeworICAgIENoaWxkID0gMSwKKyAgICBQYXJlbnQKK307CisKIH0K
IAogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3BlY3RvckNTU1N0b3Jl
KiBjc3NTdG9yZSwgUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpAQCAtMzIxLDYg
KzMzMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZChOb2RlKiBub2RlLCBOb2Rl
VG9JZE1hcCogbm9kZXNNYXApCiAgICAgICAgIHJldHVybjsKICAgICBtX2lkVG9Ob2RlLnJlbW92
ZShpZCk7CiAgICAgbm9kZXNNYXAtPnJlbW92ZShub2RlKTsKKyAgICBtX2JyZWFrcG9pbnRzLnJl
bW92ZShpZCk7CiAgICAgYm9vbCBjaGlsZHJlblJlcXVlc3RlZCA9IG1fY2hpbGRyZW5SZXF1ZXN0
ZWQuY29udGFpbnMoaWQpOwogICAgIGlmIChjaGlsZHJlblJlcXVlc3RlZCkgewogICAgICAgICAv
LyBVbmJpbmQgc3VidHJlZSBrbm93biB0byBjbGllbnQgcmVjdXJzaXZlbHkuCkBAIC0zNzEsNiAr
MzgyLDggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKCkKICAgICBy
ZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsK
ICAgICBtX2luc3BlY3RlZE5vZGVzLmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50cy5jbGVhcigp
OworICAgIG1fYnJlYWtwb2ludHNDYWNoZS5jbGVhcigpOwogfQogCiBOb2RlKiBJbnNwZWN0b3JE
T01BZ2VudDo6bm9kZUZvcklkKGxvbmcgaWQpCkBAIC03MjAsNiArNzMzLDcxIEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNlYXJjaENhbmNlbGVkKCkKICAgICBtX3NlYXJjaFJlc3VsdHMuY2xl
YXIoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0RE9NQnJlYWtwb2ludChsb25n
IG5vZGVJZCwgbG9uZyB0eXBlKQoreworICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGVJZCwgbV9i
cmVha3BvaW50cy5nZXQobm9kZUlkKSB8ICgxIDw8IHR5cGUpKTsKKyAgICBpZiAodHlwZSAhPSBE
T01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Tm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmICghbV9icmVha3BvaW50c0NhY2hlLnNldChub2RlLCBQYXJlbnQpLnNl
Y29uZCkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEFkZCBzdWJ0cmVlIHRvIGNhY2hlLgorICAg
IFZlY3RvcjxOb2RlKj4gc3RhY2soMSwgaW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKKyAgICBkbyB7
CisgICAgICAgIG5vZGUgPSBzdGFjay5sYXN0KCk7CisgICAgICAgIHN0YWNrLnJlbW92ZUxhc3Qo
KTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGxv
bmcgY2FjaGVkVHlwZSA9IG1fYnJlYWtwb2ludHNDYWNoZS5nZXQobm9kZSk7CisgICAgICAgIGlm
ICghY2FjaGVkVHlwZSkgeworICAgICAgICAgICAgbV9icmVha3BvaW50c0NhY2hlLnNldChub2Rl
LCBDaGlsZCk7CisgICAgICAgICAgICBzdGFjay5hcHBlbmQoaW5uZXJGaXJzdENoaWxkKG5vZGUp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENhY2hlZCBzdWJ0cmVlIHJvb3Qg
c2hvdWxkIGFsd2F5cyBoYXZlIFBhcmVudCB0eXBlLgorICAgICAgICAgICAgQVNTRVJUKGNhY2hl
ZFR5cGUgPT0gUGFyZW50KTsKKyAgICAgICAgfQorICAgICAgICBzdGFjay5hcHBlbmQoaW5uZXJO
ZXh0U2libGluZyhub2RlKSk7CisgICAgfSB3aGlsZSAoIXN0YWNrLmlzRW1wdHkoKSk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQs
IGxvbmcgdHlwZSkKK3sKKyAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlSWQsIG1fYnJlYWtwb2lu
dHMuZ2V0KG5vZGVJZCkgJiB+KDEgPDwgdHlwZSkpOworICAgIGlmICh0eXBlICE9IERPTUJyZWFr
cG9pbnRUeXBlU3VidHJlZU1vZGlmaWVkKQorICAgICAgICByZXR1cm47CisKKyAgICBOb2RlKiBu
b2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCFtX2JyZWFrcG9pbnRzQ2FjaGUudGFrZShub2RlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOworICAgIGlmIChw
YXJlbnQgJiYgbV9icmVha3BvaW50c0NhY2hlLmdldChwYXJlbnQpKSB7CisgICAgICAgIG1fYnJl
YWtwb2ludHNDYWNoZS5zZXQobm9kZSwgQ2hpbGQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gUmVtb3ZlIHN1YnRyZWUgZnJvbSBjYWNoZS4KKyAgICBWZWN0b3I8Tm9kZSo+IHN0
YWNrKDEsIGlubmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAgZG8geworICAgICAgICBub2RlID0g
c3RhY2subGFzdCgpOworICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmICgh
bm9kZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsb25nIGNhY2hlZFR5cGUgPSBt
X2JyZWFrcG9pbnRzQ2FjaGUuZ2V0KG5vZGUpOworICAgICAgICBBU1NFUlQoY2FjaGVkVHlwZSk7
CisgICAgICAgIGlmIChjYWNoZWRUeXBlID09IENoaWxkKSB7CisgICAgICAgICAgICBtX2JyZWFr
cG9pbnRzQ2FjaGUucmVtb3ZlKG5vZGUpOworICAgICAgICAgICAgc3RhY2suYXBwZW5kKGlubmVy
Rmlyc3RDaGlsZChub2RlKSk7CisgICAgICAgIH0KKyAgICAgICAgc3RhY2suYXBwZW5kKGlubmVy
TmV4dFNpYmxpbmcobm9kZSkpOworICAgIH0gd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkpOworfQor
CiBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50KiBk
b2N1bWVudCkgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8IGRvY3VtZW50LT51cmwoKS5p
c051bGwoKSkKQEAgLTkyMiw2ICsxMDAwLDExIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKIAogICAgIC8vIFdlIGNvdWxkIGJlIGF0dGFjaGlu
ZyBleGlzdGluZyBzdWJ0cmVlLiBGb3JnZXQgdGhlIGJpbmRpbmdzLgogICAgIHVuYmluZChub2Rl
LCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICBpZiAobV9icmVha3BvaW50c0NhY2hlLnNp
emUoKSkgeworICAgICAgICByZW1vdmVTdWJ0cmVlRnJvbUNhY2hlKG5vZGUpOworICAgICAgICBh
ZGRTdWJ0cmVlVG9DYWNoZShub2RlKTsKKyAgICAgICAgc3VidHJlZU1vZGlmaWVkKG5vZGUtPnBh
cmVudE5vZGUoKSk7CisgICAgfQogCiAgICAgTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9k
ZSgpOwogICAgIGxvbmcgcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVu
dCk7CkBAIC05NDcsNiArMTAzMCw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92
ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogcGFyZW50
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIGlmIChtX2JyZWFrcG9pbnRzQ2FjaGUuc2l6ZSgp
KQorICAgICAgICBzdWJ0cmVlTW9kaWZpZWQocGFyZW50KTsKKwogICAgIGxvbmcgcGFyZW50SWQg
PSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7CiAgICAgLy8gSWYgcGFyZW50IGlz
IG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCiAgICAgaWYgKCFwYXJlbnRJZCkK
QEAgLTk1OSw2ICsxMDQ1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9N
Tm9kZShOb2RlKiBub2RlKQogICAgIH0gZWxzZQogICAgICAgICBtX2Zyb250ZW5kLT5jaGlsZE5v
ZGVSZW1vdmVkKHBhcmVudElkLCBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KG5vZGUpKTsKICAg
ICB1bmJpbmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgcmVtb3ZlU3VidHJl
ZUZyb21DYWNoZShub2RlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5
RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQpAQCAtOTcxLDYgKzEwNTgsNDkgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQogICAgIG1f
ZnJvbnRlbmQtPmF0dHJpYnV0ZXNVcGRhdGVkKGlkLCBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJp
YnV0ZXMoZWxlbWVudCkpOwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzdWJ0cmVlTW9k
aWZpZWQoTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAg
ICBpZiAobV9icmVha3BvaW50c0NhY2hlLmdldChub2RlKSkKKyAgICAgICAgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNoYXJlZCgpLmJyZWFrUHJvZ3JhbSgpOworI2VuZGlmCit9CisKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmFkZFN1YnRyZWVUb0NhY2hlKE5vZGUqIG5vZGUpCit7CisgICAgTm9kZSog
cGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50IHx8ICFtX2JyZWFr
cG9pbnRzQ2FjaGUuZ2V0KHBhcmVudCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JyZWFrcG9p
bnRzQ2FjaGUuc2V0KG5vZGUsIENoaWxkKTsKKyAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEsIGlu
bmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAgZG8geworICAgICAgICBub2RlID0gc3RhY2subGFz
dCgpOworICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmICghbm9kZSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtX2JyZWFrcG9pbnRzQ2FjaGUuc2V0KG5vZGUs
IENoaWxkKTsKKyAgICAgICAgc3RhY2suYXBwZW5kKGlubmVyRmlyc3RDaGlsZChub2RlKSk7Cisg
ICAgICAgIHN0YWNrLmFwcGVuZChpbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKKyAgICB9IHdoaWxl
ICghc3RhY2suaXNFbXB0eSgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3Zl
U3VidHJlZUZyb21DYWNoZShOb2RlKiBub2RlKQoreworICAgIGlmICghbV9icmVha3BvaW50c0Nh
Y2hlLnRha2Uobm9kZSkpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8Tm9kZSo+IHN0YWNr
KDEsIGlubmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAgZG8geworICAgICAgICBub2RlID0gc3Rh
Y2subGFzdCgpOworICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmICghbm9k
ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQobV9icmVha3BvaW50c0Nh
Y2hlLmNvbnRhaW5zKG5vZGUpKTsKKyAgICAgICAgbV9icmVha3BvaW50c0NhY2hlLnJlbW92ZShu
b2RlKTsKKyAgICAgICAgc3RhY2suYXBwZW5kKGlubmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAg
ICAgIHN0YWNrLmFwcGVuZChpbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKKyAgICB9IHdoaWxlICgh
c3RhY2suaXNFbXB0eSgpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVz
KGxvbmcgbm9kZUlkLCBib29sIGF1dGhvck9ubHksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHN0
eWxlcykKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA1MzE3YTIyLi41ODYwMjZjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTExMiw2ICsxMTIsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShsb25nIG5vZGVJZCk7CiAg
ICAgICAgIHZvaWQgcGVyZm9ybVNlYXJjaChjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVk
UXVlcnksIGJvb2wgcnVuU3luY2hyb25vdXNseSk7CiAgICAgICAgIHZvaWQgc2VhcmNoQ2FuY2Vs
ZWQoKTsKKyAgICAgICAgdm9pZCBzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5
cGUpOworICAgICAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcg
dHlwZSk7CiAKICAgICAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9y
IENTUyBzdHlsZXMgaW5zcGVjdGlvbi4KICAgICAgICAgdm9pZCBnZXRTdHlsZXMobG9uZyBub2Rl
SWQsIGJvb2wgYXV0aG9yT25seSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogc3R5bGVzKTsKQEAg
LTE1NSw2ICsxNTcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdW5iaW5k
KE5vZGUqIG5vZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CiAKICAgICAgICAgYm9vbCBwdXNo
RG9jdW1lbnRUb0Zyb250ZW5kKCk7CisgICAgICAgIHZvaWQgc3VidHJlZU1vZGlmaWVkKE5vZGUq
IG5vZGUpOworICAgICAgICB2b2lkIGFkZFN1YnRyZWVUb0NhY2hlKE5vZGUqIG5vZGUpOworICAg
ICAgICB2b2lkIHJlbW92ZVN1YnRyZWVGcm9tQ2FjaGUoTm9kZSogbm9kZSk7CiAKICAgICAgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlU3R5bGVz
KEVsZW1lbnQqIGVsZW1lbnQpOwogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBi
dWlsZEFycmF5Rm9yQ1NTUnVsZXMoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1J1bGVMaXN0
Kik7CkBAIC0yMDksNiArMjE0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUaW1l
cjxJbnNwZWN0b3JET01BZ2VudD4gbV9tYXRjaEpvYnNUaW1lcjsKICAgICAgICAgSGFzaFNldDxS
ZWZQdHI8Tm9kZT4gPiBtX3NlYXJjaFJlc3VsdHM7CiAgICAgICAgIFZlY3Rvcjxsb25nPiBtX2lu
c3BlY3RlZE5vZGVzOworICAgICAgICBIYXNoTWFwPGxvbmcsIGxvbmc+IG1fYnJlYWtwb2ludHM7
CisgICAgICAgIEhhc2hNYXA8Tm9kZSosIGxvbmc+IG1fYnJlYWtwb2ludHNDYWNoZTsKICAgICB9
OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVh
a3BvaW50TWFuYWdlci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50
TWFuYWdlci5qcwppbmRleCAyMWZhNmE0Li43MDE3YjBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCkBAIC0yNyw3ICsyNyw5IEBACiBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5f
YnJlYWtwb2ludHMgPSB7fTsKLX0KK307CisKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDE7CiAKIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgc2V0T25lVGltZUJyZWFrcG9pbnQ6
IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lKQpAQCAtODgsNiArOTAsMTYgQEAgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGJyZWFrcG9p
bnRzOwogICAgIH0sCiAKKyAgICBzZXRET01CcmVha3BvaW50OiBmdW5jdGlvbihub2RlSWQsIHR5
cGUpCisgICAgeworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldERPTUJyZWFrcG9pbnQobm9k
ZUlkLCB0eXBlKTsKKyAgICB9LAorCisgICAgcmVtb3ZlRE9NQnJlYWtwb2ludDogZnVuY3Rpb24o
bm9kZUlkLCB0eXBlKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01C
cmVha3BvaW50KG5vZGVJZCwgdHlwZSk7CisgICAgfSwKKwogICAgIHJlc2V0OiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50cyA9IHt9OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCA0NTUyZmEw
Li5mMGY1YjFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcwpAQCAtNzYwLDYgKzc2MCwxNSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFZGl0IGFzIEhUTUwiKSwgdGhpcy5fZWRpdEFzSFRN
TC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNvcHkgYXMgSFRNTCIpLCB0aGlzLl9jb3B5SFRNTC5iaW5kKHRoaXMpKTsK
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRl
bGV0ZSBOb2RlIiksIHRoaXMucmVtb3ZlLmJpbmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRTZXBhcmF0b3IoKTsKKworICAgICAgICBpZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtw
b2ludHNFbmFibGVkKSB7CisgICAgICAgICAgICAvLyBBZGQgZGViYnVnaW5nLXJlbGF0ZWQgYWN0
aW9ucworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0b3Agb24gc3VidHJlZSBtb2RpZmljYXRpb25zIiksCisgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLnNldERPTUJyZWFrcG9pbnQuYmluZChXZWJJ
bnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQsIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2Rp
ZmllZCkpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJlbW92ZSBicmVha3BvaW50cyIpLAorICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5icmVha3BvaW50TWFuYWdlci5yZW1vdmVET01CcmVha3BvaW50LmJpbmQoV2ViSW5zcGVj
dG9yLmJyZWFrcG9pbnRNYW5hZ2VyLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkLCBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQp
KTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1lbnU6IGZ1
bmN0aW9uKGNvbnRleHRNZW51LCB0ZXh0Tm9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcwppbmRleCA4MjE2MzI2Li45YzczNzk2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2Vu
ZFN0dWIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tl
bmRTdHViLmpzCkBAIC0xMTMsNiArMTEzLDggQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tl
bmRTdHViID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0ZXBPdXRP
ZkZ1bmN0aW9uIik7CiAgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3RlcE92ZXJTdGF0ZW1l
bnQiKTsKICAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzZXRQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0RE9NQnJlYWtwb2ludCIpOwor
ICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInJlbW92ZURPTUJyZWFrcG9pbnQiKTsKIH0KIAog
V2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCBjODRiYTc5Li42OGU0MGM0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00Myw3ICs0Myw4IEBAIHZh
ciBQcmVmZXJlbmNlcyA9IHsKICAgICBkZWJ1Z2dlckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAg
IHByb2ZpbGVyQWx3YXlzRW5hYmxlZDogZmFsc2UsCiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0
cnVlLAotICAgIG9ubGluZURldGVjdGlvbkVuYWJsZWQ6IHRydWUKKyAgICBvbmxpbmVEZXRlY3Rp
b25FbmFibGVkOiB0cnVlLAorICAgIGRvbUJyZWFrcG9pbnRzRW5hYmxlZDogZmFsc2UKIH0KIAog
V2ViSW5zcGVjdG9yLnBvcHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyA9IGZ1bmN0aW9uKHNldHRp
bmdzU3RyaW5nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODA3MjI1ZC4uYmJmOWMwZiAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMTcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxv
dkBjaHJvbWl1bS5vcmc+CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGVuYWJsZSBET00gYnJlYWtwb2ludHMgZm9yIGNocm9taXVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4Ngor
CisgICAgICAgICogc3JjL2pzL0RldlRvb2xzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxv
YWRlZCk6CisKIDIwMTAtMDgtMTYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IGF0dGVtcHQgdG8gZml4IENocm9taXVtIFdpbmRvd3Mg
YnVpbGQuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRleCAwZmQ2NmM5Li5lM2UwMjA0
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKQEAgLTc0LDYgKzc0LDcgQEAgV2ViSW5z
cGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBQcmVmZXJlbmNlcy5wcm9maWxlckFsd2F5
c0VuYWJsZWQgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgPSB0
cnVlOwogICAgIFByZWZlcmVuY2VzLm9ubGluZURldGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKKyAg
ICBQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwogCiAgICAgb2xkTG9h
ZGVkLmNhbGwoV2ViSW5zcGVjdG9yKTsKIH0K
</data>
<flag name="review"
          id="53174"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64688</attachid>
            <date>2010-08-18 05:09:12 -0700</date>
            <delta_ts>2010-08-18 07:27:51 -0700</delta_ts>
            <desc>All comments addressed.</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>18576</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWY4YTkxYi4uNTZhMzdkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wOC0xNyAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgYnJlYWtpbmcg
b24gRE9NIG5vZGUgc3VidHJlZSBtdXRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgIEFkZCB0d28gZW50cmllcyB0
byBXZWIgSW5zcGVjdG9yIERPTSBlbGVtZW50IGNvbnRleHQgbWVudToKKyAgICAgICAgMS4gIlN0
b3Agb24gc3VidHJlZSBtb2RpZmljYXRpb25zIjogd2lsbCBicmVhayBvbiBhZGRpbmcvcmVtb3Zp
bmcgb2YgYW55IGVsZW1lbnQgd2hpY2ggaXMgYSBjaGlsZCBvZiB0aGUgRE9NIGVsZW1lbnQKKyAg
ICAgICAgMi4gIlJlbW92ZSBicmVha3BvaW50cyI6IHdpbGwgcmVtb3ZlIGFsbCBicmVha3BvaW50
cyBhc3NvY2lhdGVkIHdpdGggdGhlIERPTSBlbGVtZW50CisKKyAgICAgICAgKiBFbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFr
UHJvZ3JhbSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdWJ0cmVlTW9kaWZpZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVha3Bv
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVzKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29udGV4dE1l
bnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisKIDIwMTAtMDgtMTcgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMKaW5kZXggMDEwYzI4Yy4uYzcyOGMxNiAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYW5kIGIvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDhkNDdiNzguLmM3MDg0YzkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMDUsNiArMjA1LDExIEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1
ZTsKIH0KIAordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKK3sKKyAgICAv
LyBGSVhNRShXSzQzMzMyKTogaW1wbGVtZW50IHRoaXMuCit9CisKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmZDg5NzZiLi40MzJmZTlhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC03OSw2ICs3OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNlKCk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oKTsK
ICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQo
KTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDBjMjQ2NzguLmU0OGIyZjUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMjgsNiArMjI4LDI1IEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAgICAgICAgdjg6OkRlYnVnOjpEZWJ1Z0JyZWFr
KCk7CiB9CiAKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4s
IGNhbGxiYWNrVGVtcGxhdGUsICgpKTsKKyAgICBpZiAoY2FsbGJhY2tUZW1wbGF0ZS5Jc0VtcHR5
KCkpIHsKKyAgICAgICAgY2FsbGJhY2tUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAg
IGNhbGxiYWNrVGVtcGxhdGUtPlNldENhbGxIYW5kbGVyKCZTY3JpcHREZWJ1Z1NlcnZlcjo6YnJl
YWtQcm9ncmFtQ2FsbGJhY2spOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0Lklz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwor
ICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuc2V0KGNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBicmVha1Byb2dyYW1GdW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdldEZ1
bmN0aW9uKCk7CisgICAgdjg6OkRlYnVnOjpDYWxsKGJyZWFrUHJvZ3JhbUZ1bmN0aW9uKTsKKyAg
ICBtX3BhdXNlZFBhZ2VDb250ZXh0LmNsZWFyKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKG1fcGF1c2VkUGFnZSkKQEAgLTMyMyw2
ICszNDIsNDEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuUGVuZGluZ1Rhc2tzKCkKICAg
ICB2ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBBU1NFUlQoMiA9PSBhcmdzLkxlbmd0aCgpKTsKKyAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9
CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGV4ZWN1dGlvblN0YXRlKQoreworICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVh
a3MuCisgICAgaWYgKG1fcGF1c2VkUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUq
IGZyYW1lID0gcmV0cmlldmVGcmFtZShtX3BhdXNlZFBhZ2VDb250ZXh0LmdldCgpKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBs
aXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKKyAgICBpZiAoIWxp
c3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChleGVj
dXRpb25TdGF0ZSk7CisgICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBTY3Jp
cHRTdGF0ZSogY3VycmVudENhbGxGcmFtZVN0YXRlID0gbWFpbldvcmxkU2NyaXB0U3RhdGUoZnJh
bWUpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOworCisg
ICAgLy8gV2FpdCBmb3IgY29udGludWUgb3Igc3RlcCBjb21tYW5kLgorICAgIG1fY2xpZW50TWVz
c2FnZUxvb3AtPnJ1bihtX3BhdXNlZFBhZ2UpOworICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsK
KworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3Rl
ZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVu
ZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKSkKKyAgICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVl
KCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnY4RGVidWdFdmVudENhbGxiYWNrKGNv
bnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpCiB7CiAgICAgU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmhhbmRsZVY4RGVidWdFdmVudChldmVudERldGFpbHMpOwpA
QCAtMzY1LDIxICs0MTksOSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVn
RXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVha3MuCi0gICAgICAgICAgICAgICAgaWYgKG1fcGF1
c2VkUGFnZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIG1f
ZXhlY3V0aW9uU3RhdGUuc2V0KGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAg
ICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAg
ICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50Q2FsbEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3JpcHRT
dGF0ZShmcmFtZSk7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRD
YWxsRnJhbWVTdGF0ZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciBjb250aW51ZSBv
ciBzdGVwIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgbV9jbGllbnRNZXNzYWdlTG9vcC0+cnVu
KG1fcGF1c2VkUGFnZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2UpOwot
Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGxpc3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBp
biB0aGUgbmVzdGVkIGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVu
ZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQotICAgICAg
ICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICBt
X3BhdXNlZFBhZ2VDb250ZXh0LnNldChldmVudENvbnRleHQpOworICAgICAgICAgICAgICAgIGJy
ZWFrUHJvZ3JhbShldmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSk7CisgICAgICAgICAg
ICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5jbGVhcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGEx
ZTBhNDcuLjM3YTIxMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogCiAg
ICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAgdm9pZCBjb250
aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAgICAgdm9pZCBz
dGVwT3ZlclN0YXRlbWVudCgpOwpAQCAtMTExLDYgKzExMiw5IEBAIHByaXZhdGU6CiAgICAgU2Ny
aXB0RGVidWdTZXJ2ZXIoKTsKICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KIAorICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncyk7CisgICAgdm9pZCBicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBleGVjdXRpb25TdGF0ZSk7CisKICAgICBzdGF0aWMgdm9pZCB2OERlYnVnRXZlbnRD
YWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRhaWxzKTsKICAg
ICB2b2lkIGhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYg
ZXZlbnREZXRhaWxzKTsKIApAQCAtMTI4LDYgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgT3duSGFu
ZGxlPHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAgT3duUHRyPENsaWVudE1lc3Nh
Z2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOwogICAgIFBhZ2UqIG1fcGF1c2VkUGFnZTsKKyAg
ICBPd25IYW5kbGU8djg6OkNvbnRleHQ+IG1fcGF1c2VkUGFnZUNvbnRleHQ7CiAgICAgYm9vbCBt
X2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAxYzY2YjU5Li45MmZm
MzdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE3Niw2ICsxNzYsOCBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmlu
ZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAgW2hhbmRsZXI9
RE9NXSB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBw
dXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIFN0cmluZyBwYXRoLCBv
dXQgbG9uZyBub2RlSWQpOworICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgc2V0RE9NQnJlYWtw
b2ludChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgW2hhbmRsZXI9RE9N
XSB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxvbmcgdHlwZSk7
CiAKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdl
cygpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGhpZ2hsaWdodERPTU5vZGUo
aW4gbG9uZyBub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmlu
ZGV4IDYyNDMyOTkuLmFhOGE2MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JGcm9udGVu
ZC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25z
dGFudHMuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlw
dEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUg
IlRleHQuaCIKQEAgLTE5Niw2ICsxOTcsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1hdGNo
UGxhaW5UZXh0Sm9iKCkgeyB9CiB9OwogCitlbnVtIERPTUJyZWFrcG9pbnRUeXBlIHsKKyAgICBE
T01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDAsCisgICAgRE9NQnJlYWtwb2ludFR5
cGVTdWJ0cmVlTW9kaWZpZWREZXJpdmVkID0gMTYKK307CisKIH0KIAogSW5zcGVjdG9yRE9NQWdl
bnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3BlY3RvckNTU1N0b3JlKiBjc3NTdG9yZSwgUmVtb3Rl
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpAQCAtMzcxLDYgKzM3Nyw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncygpCiAgICAgcmVsZWFzZURhbmdsaW5nTm9k
ZXMoKTsKICAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLmNsZWFyKCk7CiAgICAgbV9pbnNwZWN0ZWRO
b2Rlcy5jbGVhcigpOworICAgIG1fYnJlYWtwb2ludHMuY2xlYXIoKTsKIH0KIAogTm9kZSogSW5z
cGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChsb25nIGlkKQpAQCAtNzIwLDYgKzcyNywzMCBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZWFyY2hDYW5jZWxlZCgpCiAgICAgbV9zZWFyY2hSZXN1
bHRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUJyZWFrcG9p
bnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKK3sKKyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklk
KG5vZGVJZCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JyZWFr
cG9pbnRzLnNldChub2RlLCBtX2JyZWFrcG9pbnRzLmdldChub2RlKSB8ICgxIDw8IHR5cGUpKTsK
KyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hp
bGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKGNoaWxkKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlRE9NQnJl
YWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKQoreworICAgIE5vZGUqIG5vZGUgPSBub2Rl
Rm9ySWQobm9kZUlkKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
YnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgfigxIDw8IHR5
cGUpKTsKKyAgICBpZiAoaW5uZXJQYXJlbnROb2RlKG5vZGUpKQorICAgICAgICB1cGRhdGVTdWJ0
cmVlQnJlYWtwb2ludHMobm9kZSk7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RD
aGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCisgICAg
ICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCk7Cit9CisKIFN0cmluZyBJbnNwZWN0
b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAog
ewogICAgIGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQpAQCAtOTIw
LDYgKzk1MSwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5v
ZGUqIG5vZGUpCiAgICAgaWYgKGlzV2hpdGVzcGFjZShub2RlKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIHN1YnRyZWVNb2RpZmll
ZChpbm5lclBhcmVudE5vZGUobm9kZSkpOworICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2lu
dHMobm9kZSk7CisgICAgfQorCiAgICAgLy8gV2UgY291bGQgYmUgYXR0YWNoaW5nIGV4aXN0aW5n
IHN1YnRyZWUuIEZvcmdldCB0aGUgYmluZGluZ3MuCiAgICAgdW5iaW5kKG5vZGUsICZtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXApOwogCkBAIC05NDYsNiArOTgyLDIxIEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICBpZiAoaXNXaGl0ZXNwYWNl
KG5vZGUpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9icmVha3BvaW50cy5zaXplKCkp
IHsKKyAgICAgICAgc3VidHJlZU1vZGlmaWVkKGlubmVyUGFyZW50Tm9kZShub2RlKSk7CisgICAg
ICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICBWZWN0b3I8Tm9kZSo+IHN0
YWNrKDEsIGlubmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBzdGFjay5sYXN0KCk7CisgICAgICAgICAgICBzdGFjay5yZW1vdmVMYXN0
KCk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICAgICAgICAgIHN0YWNr
LmFwcGVuZChpbm5lckZpcnN0Q2hpbGQobm9kZSkpOworICAgICAgICAgICAgc3RhY2suYXBwZW5k
KGlubmVyTmV4dFNpYmxpbmcobm9kZSkpOworICAgICAgICB9IHdoaWxlICghc3RhY2suaXNFbXB0
eSgpKTsKKyAgICB9CisKICAgICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAg
ICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKICAg
ICAvLyBJZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KQEAg
LTk3MSw2ICsxMDIyLDQyIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0
dHIoRWxlbWVudCogZWxlbWVudCkKICAgICBtX2Zyb250ZW5kLT5hdHRyaWJ1dGVzVXBkYXRlZChp
ZCwgYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6c3VidHJlZU1vZGlmaWVkKE5vZGUqIG5vZGUpCit7CisjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgbG9uZyBtYXNrID0gKDEgPDwgRE9NQnJlYWtw
b2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQpIHwgKDEgPDwgRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVl
TW9kaWZpZWREZXJpdmVkKTsKKyAgICBpZiAobV9icmVha3BvaW50cy5nZXQobm9kZSkgJiBtYXNr
KSB7CisgICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0oKTsK
KyAgICB9CisjZW5kaWYKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRlU3VidHJl
ZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3QpCit7CisgICAgY29uc3QgbG9uZyByb290Qml0ID0gMSA8
PCBET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZDsKKyAgICBjb25zdCBsb25nIGRlcml2
ZWRCaXQgPSAxIDw8IERPTUJyZWFrcG9pbnRUeXBlU3VidHJlZU1vZGlmaWVkRGVyaXZlZDsKKyAg
ICBjb25zdCBib29sIHBhcmVudEJyZWFrcG9pbnQgPSBtX2JyZWFrcG9pbnRzLmdldChpbm5lclBh
cmVudE5vZGUocm9vdCkpICYgKHJvb3RCaXQgfCBkZXJpdmVkQml0KTsKKyAgICBWZWN0b3I8Tm9k
ZSo+IHN0YWNrKDEsIHJvb3QpOworICAgIGRvIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IHN0YWNr
Lmxhc3QoKTsKKyAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICBpZiAoIW5vZGUp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbG9uZyBtYXNrID0gbV9icmVha3BvaW50
cy5nZXQobm9kZSk7CisgICAgICAgIGlmICghKG1hc2sgJiByb290Qml0KSkgeworICAgICAgICAg
ICAgbG9uZyBuZXdNYXNrID0gcGFyZW50QnJlYWtwb2ludCA/IG1hc2sgfCBkZXJpdmVkQml0IDog
bWFzayAmIH5kZXJpdmVkQml0OworICAgICAgICAgICAgaWYgKG5ld01hc2spCisgICAgICAgICAg
ICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwgbmV3TWFzayk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAgICAgICAg
ICBpZiAobmV3TWFzayAhPSBtYXNrKQorICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChpbm5l
ckZpcnN0Q2hpbGQobm9kZSkpOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlICE9IHJvb3Qp
CisgICAgICAgICAgICBzdGFjay5hcHBlbmQoaW5uZXJOZXh0U2libGluZyhub2RlKSk7CisgICAg
fSB3aGlsZSAoIXN0YWNrLmlzRW1wdHkoKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldFN0eWxlcyhsb25nIG5vZGVJZCwgYm9vbCBhdXRob3JPbmx5LCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiBzdHlsZXMpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggNTMxN2EyMi4uZjQ1Mjg0MyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMTIsNiArMTEyLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUobG9uZyBu
b2RlSWQpOwogICAgICAgICB2b2lkIHBlcmZvcm1TZWFyY2goY29uc3QgU3RyaW5nJiB3aGl0ZXNw
YWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1blN5bmNocm9ub3VzbHkpOwogICAgICAgICB2b2lkIHNl
YXJjaENhbmNlbGVkKCk7CisgICAgICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChsb25nIG5vZGVJ
ZCwgbG9uZyB0eXBlKTsKKyAgICAgICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50KGxvbmcgbm9k
ZUlkLCBsb25nIHR5cGUpOwogCiAgICAgICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZy
b250ZW5kIGZvciBDU1Mgc3R5bGVzIGluc3BlY3Rpb24uCiAgICAgICAgIHZvaWQgZ2V0U3R5bGVz
KGxvbmcgbm9kZUlkLCBib29sIGF1dGhvck9ubHksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHN0
eWxlcyk7CkBAIC0xNTUsNiArMTU3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwogCiAgICAgICAg
IGJvb2wgcHVzaERvY3VtZW50VG9Gcm9udGVuZCgpOworICAgICAgICB2b2lkIHN1YnRyZWVNb2Rp
ZmllZChOb2RlKiBub2RlKTsKKyAgICAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMo
Tm9kZSogcm9vdCk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxk
T2JqZWN0Rm9yQXR0cmlidXRlU3R5bGVzKEVsZW1lbnQqIGVsZW1lbnQpOwogICAgICAgICBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yQ1NTUnVsZXMoRG9jdW1lbnQqIG93
bmVyRG9jdW1lbnQsIENTU1J1bGVMaXN0Kik7CkBAIC0yMDksNiArMjEzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4gbV9tYXRjaEpvYnNU
aW1lcjsKICAgICAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBtX3NlYXJjaFJlc3VsdHM7CiAg
ICAgICAgIFZlY3Rvcjxsb25nPiBtX2luc3BlY3RlZE5vZGVzOworICAgICAgICBIYXNoTWFwPE5v
ZGUqLCBsb25nPiBtX2JyZWFrcG9pbnRzOwogICAgIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCA0NTUy
ZmEwLi5hZmQ1YTY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMzI2LDYgKzMyNiw4IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1RyZWVFbGVtZW50LkVkaXRUYWdCbGFja2xpc3QgPSBbCiAgICAgImh0bWwiLCAiaGVhZCIs
ICJib2R5IgogXS5rZXlTZXQoKTsKIAorV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
RE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQgPSAwOworCiBXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0
czogZnVuY3Rpb24oc2VhcmNoUXVlcnkpCiAgICAgewpAQCAtNzYwLDYgKzc2MiwxNSBAQCBXZWJJ
bnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFZGl0IGFzIEhUTUwiKSwg
dGhpcy5fZWRpdEFzSFRNTC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgYXMgSFRNTCIpLCB0aGlzLl9jb3B5SFRN
TC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRlbGV0ZSBOb2RlIiksIHRoaXMucmVtb3ZlLmJpbmQodGhpcykpOworCisg
ICAgICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpIHsKKyAgICAgICAg
ICAgIC8vIEFkZCBkZWJidWdpbmctcmVsYXRlZCBhY3Rpb25zCisgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIG9uIHN1YnRyZWUgbW9kaWZpY2F0aW9ucyIp
LAorICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludC5iaW5k
KEluc3BlY3RvckJhY2tlbmQsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQsIFdlYkluc3BlY3Rv
ci5FbGVtZW50c1RyZWVFbGVtZW50LkRPTUJyZWFrcG9pbnRUeXBlU3VidHJlZU1vZGlmaWVkKSk7
CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmVtb3ZlIEJyZWFrcG9pbnRzIiksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5yZW1vdmVET01CcmVha3BvaW50LmJpbmQoSW5zcGVjdG9yQmFja2VuZCwgdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5pZCwgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtw
b2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQpKTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICBfcG9w
dWxhdGVUZXh0Q29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCB0ZXh0Tm9kZSkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1
Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5q
cwppbmRleCA4MjE2MzI2Li45YzczNzk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0xMTMsNiArMTEzLDggQEAgV2Vi
SW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3Jl
Z2lzdGVyRGVsZWdhdGUoInN0ZXBPdXRPZkZ1bmN0aW9uIik7CiAgICAgdGhpcy5fcmVnaXN0ZXJE
ZWxlZ2F0ZSgic3RlcE92ZXJTdGF0ZW1lbnQiKTsKICAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRl
KCJzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0
ZSgic2V0RE9NQnJlYWtwb2ludCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInJlbW92
ZURPTUJyZWFrcG9pbnQiKTsKIH0KIAogV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHVi
LnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
ZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRl
eCBjODRiYTc5Li42OGU0MGM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
LmpzCkBAIC00Myw3ICs0Myw4IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAgICBkZWJ1Z2dlckFs
d2F5c0VuYWJsZWQ6IGZhbHNlLAogICAgIHByb2ZpbGVyQWx3YXlzRW5hYmxlZDogZmFsc2UsCiAg
ICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0cnVlLAotICAgIG9ubGluZURldGVjdGlvbkVuYWJsZWQ6
IHRydWUKKyAgICBvbmxpbmVEZXRlY3Rpb25FbmFibGVkOiB0cnVlLAorICAgIGRvbUJyZWFrcG9p
bnRzRW5hYmxlZDogZmFsc2UKIH0KIAogV2ViSW5zcGVjdG9yLnBvcHVsYXRlQXBwbGljYXRpb25T
ZXR0aW5ncyA9IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODA3MjI1
ZC4uYmJmOWMwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMTcgIFBh
dmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGVuYWJsZSBET00g
YnJlYWtwb2ludHMgZm9yIGNocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgICogc3JjL2pzL0RldlRvb2xzLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisKIDIwMTAtMDgtMTYgIEtpbnVrbyBZYXN1
ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IGF0dGVtcHQg
dG8gZml4IENocm9taXVtIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL2pzL0RldlRvb2xzLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5q
cwppbmRleCAwZmQ2NmM5Li5lM2UwMjA0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L2pzL0RldlRvb2xzLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMK
QEAgLTc0LDYgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBQ
cmVmZXJlbmNlcy5wcm9maWxlckFsd2F5c0VuYWJsZWQgPSB0cnVlOwogICAgIFByZWZlcmVuY2Vz
LmNhbkVkaXRTY3JpcHRTb3VyY2UgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLm9ubGluZURldGVj
dGlvbkVuYWJsZWQgPSBmYWxzZTsKKyAgICBQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJs
ZWQgPSB0cnVlOwogCiAgICAgb2xkTG9hZGVkLmNhbGwoV2ViSW5zcGVjdG9yKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64707</attachid>
            <date>2010-08-18 07:27:51 -0700</date>
            <delta_ts>2010-08-19 01:14:39 -0700</delta_ts>
            <desc>After offline discussion.</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>18936</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWY4YTkxYi4uNTZhMzdkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wOC0xNyAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgYnJlYWtpbmcg
b24gRE9NIG5vZGUgc3VidHJlZSBtdXRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgIEFkZCB0d28gZW50cmllcyB0
byBXZWIgSW5zcGVjdG9yIERPTSBlbGVtZW50IGNvbnRleHQgbWVudToKKyAgICAgICAgMS4gIlN0
b3Agb24gc3VidHJlZSBtb2RpZmljYXRpb25zIjogd2lsbCBicmVhayBvbiBhZGRpbmcvcmVtb3Zp
bmcgb2YgYW55IGVsZW1lbnQgd2hpY2ggaXMgYSBjaGlsZCBvZiB0aGUgRE9NIGVsZW1lbnQKKyAg
ICAgICAgMi4gIlJlbW92ZSBicmVha3BvaW50cyI6IHdpbGwgcmVtb3ZlIGFsbCBicmVha3BvaW50
cyBhc3NvY2lhdGVkIHdpdGggdGhlIERPTSBlbGVtZW50CisKKyAgICAgICAgKiBFbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFr
UHJvZ3JhbSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdWJ0cmVlTW9kaWZpZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVha3Bv
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVzKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29udGV4dE1l
bnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisKIDIwMTAtMDgtMTcgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMKaW5kZXggMDEwYzI4Yy4uYzcyOGMxNiAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYW5kIGIvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDhkNDdiNzguLmM3MDg0YzkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMDUsNiArMjA1LDExIEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1
ZTsKIH0KIAordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKK3sKKyAgICAv
LyBGSVhNRShXSzQzMzMyKTogaW1wbGVtZW50IHRoaXMuCit9CisKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmZDg5NzZiLi40MzJmZTlhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC03OSw2ICs3OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNlKCk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oKTsK
ICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQo
KTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDBjMjQ2NzguLmU0OGIyZjUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMjgsNiArMjI4LDI1IEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAgICAgICAgdjg6OkRlYnVnOjpEZWJ1Z0JyZWFr
KCk7CiB9CiAKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4s
IGNhbGxiYWNrVGVtcGxhdGUsICgpKTsKKyAgICBpZiAoY2FsbGJhY2tUZW1wbGF0ZS5Jc0VtcHR5
KCkpIHsKKyAgICAgICAgY2FsbGJhY2tUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAg
IGNhbGxiYWNrVGVtcGxhdGUtPlNldENhbGxIYW5kbGVyKCZTY3JpcHREZWJ1Z1NlcnZlcjo6YnJl
YWtQcm9ncmFtQ2FsbGJhY2spOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0Lklz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwor
ICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuc2V0KGNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBicmVha1Byb2dyYW1GdW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdldEZ1
bmN0aW9uKCk7CisgICAgdjg6OkRlYnVnOjpDYWxsKGJyZWFrUHJvZ3JhbUZ1bmN0aW9uKTsKKyAg
ICBtX3BhdXNlZFBhZ2VDb250ZXh0LmNsZWFyKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKG1fcGF1c2VkUGFnZSkKQEAgLTMyMyw2
ICszNDIsNDEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuUGVuZGluZ1Rhc2tzKCkKICAg
ICB2ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBBU1NFUlQoMiA9PSBhcmdzLkxlbmd0aCgpKTsKKyAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9
CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGV4ZWN1dGlvblN0YXRlKQoreworICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVh
a3MuCisgICAgaWYgKG1fcGF1c2VkUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUq
IGZyYW1lID0gcmV0cmlldmVGcmFtZShtX3BhdXNlZFBhZ2VDb250ZXh0LmdldCgpKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBs
aXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKKyAgICBpZiAoIWxp
c3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChleGVj
dXRpb25TdGF0ZSk7CisgICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBTY3Jp
cHRTdGF0ZSogY3VycmVudENhbGxGcmFtZVN0YXRlID0gbWFpbldvcmxkU2NyaXB0U3RhdGUoZnJh
bWUpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOworCisg
ICAgLy8gV2FpdCBmb3IgY29udGludWUgb3Igc3RlcCBjb21tYW5kLgorICAgIG1fY2xpZW50TWVz
c2FnZUxvb3AtPnJ1bihtX3BhdXNlZFBhZ2UpOworICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsK
KworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3Rl
ZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVu
ZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKSkKKyAgICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVl
KCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnY4RGVidWdFdmVudENhbGxiYWNrKGNv
bnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpCiB7CiAgICAgU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmhhbmRsZVY4RGVidWdFdmVudChldmVudERldGFpbHMpOwpA
QCAtMzY1LDIxICs0MTksOSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVn
RXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVha3MuCi0gICAgICAgICAgICAgICAgaWYgKG1fcGF1
c2VkUGFnZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIG1f
ZXhlY3V0aW9uU3RhdGUuc2V0KGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAg
ICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAg
ICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50Q2FsbEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3JpcHRT
dGF0ZShmcmFtZSk7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRD
YWxsRnJhbWVTdGF0ZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciBjb250aW51ZSBv
ciBzdGVwIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgbV9jbGllbnRNZXNzYWdlTG9vcC0+cnVu
KG1fcGF1c2VkUGFnZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2UpOwot
Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGxpc3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBp
biB0aGUgbmVzdGVkIGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVu
ZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQotICAgICAg
ICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICBt
X3BhdXNlZFBhZ2VDb250ZXh0LnNldChldmVudENvbnRleHQpOworICAgICAgICAgICAgICAgIGJy
ZWFrUHJvZ3JhbShldmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSk7CisgICAgICAgICAg
ICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5jbGVhcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGEx
ZTBhNDcuLjM3YTIxMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogCiAg
ICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAgdm9pZCBjb250
aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAgICAgdm9pZCBz
dGVwT3ZlclN0YXRlbWVudCgpOwpAQCAtMTExLDYgKzExMiw5IEBAIHByaXZhdGU6CiAgICAgU2Ny
aXB0RGVidWdTZXJ2ZXIoKTsKICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KIAorICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncyk7CisgICAgdm9pZCBicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBleGVjdXRpb25TdGF0ZSk7CisKICAgICBzdGF0aWMgdm9pZCB2OERlYnVnRXZlbnRD
YWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRhaWxzKTsKICAg
ICB2b2lkIGhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYg
ZXZlbnREZXRhaWxzKTsKIApAQCAtMTI4LDYgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgT3duSGFu
ZGxlPHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAgT3duUHRyPENsaWVudE1lc3Nh
Z2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOwogICAgIFBhZ2UqIG1fcGF1c2VkUGFnZTsKKyAg
ICBPd25IYW5kbGU8djg6OkNvbnRleHQ+IG1fcGF1c2VkUGFnZUNvbnRleHQ7CiAgICAgYm9vbCBt
X2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAxYzY2YjU5Li45MmZm
MzdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE3Niw2ICsxNzYsOCBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmlu
ZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAgW2hhbmRsZXI9
RE9NXSB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBw
dXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIFN0cmluZyBwYXRoLCBv
dXQgbG9uZyBub2RlSWQpOworICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgc2V0RE9NQnJlYWtw
b2ludChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgW2hhbmRsZXI9RE9N
XSB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxvbmcgdHlwZSk7
CiAKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdl
cygpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGhpZ2hsaWdodERPTU5vZGUo
aW4gbG9uZyBub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmlu
ZGV4IDYyNDMyOTkuLjg1Mjg2YzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JGcm9udGVu
ZC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25z
dGFudHMuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlw
dEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUg
IlRleHQuaCIKQEAgLTE5Niw2ICsxOTcsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1hdGNo
UGxhaW5UZXh0Sm9iKCkgeyB9CiB9OwogCitlbnVtIERPTUJyZWFrcG9pbnRUeXBlIHsKKyAgICBE
T01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDAKK307CisKK2NvbnN0IGxvbmcgZG9t
QnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKKwogfQogCiBJbnNwZWN0b3JET01BZ2Vu
dDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zcGVjdG9yQ1NTU3RvcmUqIGNzc1N0b3JlLCBSZW1vdGVJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCkBAIC0zNzEsNiArMzc4LDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKCkKICAgICByZWxlYXNlRGFuZ2xpbmdOb2Rl
cygpOwogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKICAgICBtX2luc3BlY3RlZE5v
ZGVzLmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50cy5jbGVhcigpOwogfQogCiBOb2RlKiBJbnNw
ZWN0b3JET01BZ2VudDo6bm9kZUZvcklkKGxvbmcgaWQpCkBAIC03MjAsNiArNzI4LDM5IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNlYXJjaENhbmNlbGVkKCkKICAgICBtX3NlYXJjaFJlc3Vs
dHMuY2xlYXIoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0RE9NQnJlYWtwb2lu
dChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKQoreworICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQo
bm9kZUlkKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGxv
bmcgcm9vdEJpdCA9IDEgPDwgdHlwZTsKKyAgICBjb25zdCBsb25nIGRlcml2ZWRCaXQgPSByb290
Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0OworICAgIG1fYnJlYWtwb2ludHMu
c2V0KG5vZGUsIG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpIHwgcm9vdEJpdCAmIH5kZXJpdmVkQml0
KTsKKyAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMobm9kZSwgcm9vdEJpdCwgdHJ1ZSwgZmFs
c2UpOworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KGxv
bmcgbm9kZUlkLCBsb25nIHR5cGUpCit7CisgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2Rl
SWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgbG9uZyBy
b290Qml0ID0gMSA8PCB0eXBlOworICAgIGNvbnN0IGxvbmcgZGVyaXZlZEJpdCA9IHJvb3RCaXQg
PDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7CisgICAgbG9uZyBtYXNrID0gbV9icmVh
a3BvaW50cy5nZXQobm9kZSk7CisgICAgaWYgKCEobWFzayAmIHJvb3RCaXQpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBOb2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9kZSk7CisgICAg
aWYgKHBhcmVudCAmJiAobV9icmVha3BvaW50cy5nZXQocGFyZW50KSAmIChyb290Qml0IHwgZGVy
aXZlZEJpdCkpKQorICAgICAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBtYXNrICYgfnJvb3RC
aXQgfCBkZXJpdmVkQml0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9icmVha3BvaW50cy5zZXQo
bm9kZSwgbWFzayAmIH5yb290Qml0KTsKKyAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRz
KG5vZGUsIHJvb3RCaXQsIGZhbHNlLCBmYWxzZSk7CisgICAgfQorfQorCiBTdHJpbmcgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QK
IHsKICAgICBpZiAoIWRvY3VtZW50IHx8IGRvY3VtZW50LT51cmwoKS5pc051bGwoKSkKQEAgLTky
MCw2ICs5NjEsMTQgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShO
b2RlKiBub2RlKQogICAgIGlmIChpc1doaXRlc3BhY2Uobm9kZSkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgeworICAgICAgICBOb2RlKiBwYXJlbnQg
PSBpbm5lclBhcmVudE5vZGUobm9kZSk7CisgICAgICAgIHN1YnRyZWVNb2RpZmllZChwYXJlbnQp
OworICAgICAgICBsb25nIG1hc2sgPSBtX2JyZWFrcG9pbnRzLmdldChwYXJlbnQpOworICAgICAg
ICBtYXNrID0gbWFzayB8IChtYXNrID4+IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSAm
ICgoMSA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCkgLSAxKTsKKyAgICAgICAgdXBk
YXRlU3VidHJlZUJyZWFrcG9pbnRzKG5vZGUsIG1hc2ssIHRydWUsIHRydWUpOworICAgIH0KKwog
ICAgIC8vIFdlIGNvdWxkIGJlIGF0dGFjaGluZyBleGlzdGluZyBzdWJ0cmVlLiBGb3JnZXQgdGhl
IGJpbmRpbmdzLgogICAgIHVuYmluZChub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKIApA
QCAtOTQ2LDYgKzk5NSwxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01O
b2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKGlzV2hpdGVzcGFjZShub2RlKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIHN1YnRyZWVN
b2RpZmllZChpbm5lclBhcmVudE5vZGUobm9kZSkpOworICAgICAgICBtX2JyZWFrcG9pbnRzLnJl
bW92ZShub2RlKTsKKyAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKG5vZGUsIDAsIGZh
bHNlLCB0cnVlKTsKKyAgICB9CisKICAgICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2Rl
KCk7CiAgICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50
KTsKICAgICAvLyBJZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVu
dC4KQEAgLTk3MSw2ICsxMDI2LDQ2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlm
eURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKICAgICBtX2Zyb250ZW5kLT5hdHRyaWJ1dGVzVXBk
YXRlZChpZCwgYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKIH0KIAor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3VidHJlZU1vZGlmaWVkKE5vZGUqIG5vZGUpCit7Cisj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgY29uc3QgbG9uZyByb290Qml0ID0g
MSA8PCBET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZDsKKyAgICBjb25zdCBsb25nIGRl
cml2ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0OworICAg
IGlmIChtX2JyZWFrcG9pbnRzLmdldChub2RlKSAmIChyb290Qml0IHwgZGVyaXZlZEJpdCkpCisg
ICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0oKTsKKyNlbmRp
ZgorfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMo
Tm9kZSogcm9vdCwgbG9uZyBtYXNrLCBib29sIHZhbHVlLCBib29sIHdob2xlU3VidHJlZSkKK3sK
KyAgICBjb25zdCBsb25nIGRlcml2ZWRNYXNrID0gbWFzayA8PCBkb21CcmVha3BvaW50RGVyaXZl
ZFR5cGVTaGlmdDsKKyAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEsIGlubmVyRmlyc3RDaGlsZChy
b290KSk7CisgICAgZG8geworICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFzdCgpOworICAg
ICAgICBzdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAod2hvbGVTdWJ0cmVlKSB7CisgICAgICAgICAgICBpZiAo
dmFsdWUpCisgICAgICAgICAgICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwgZGVyaXZlZE1h
c2spOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fYnJlYWtwb2ludHMucmVt
b3ZlKG5vZGUpOworICAgICAgICAgICAgc3RhY2suYXBwZW5kKGlubmVyRmlyc3RDaGlsZChub2Rl
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb25nIG9sZE1hc2sgPSBtX2JyZWFr
cG9pbnRzLmdldChub2RlKTsKKyAgICAgICAgICAgIGlmICghKG9sZE1hc2sgJiBtYXNrKSkgewor
ICAgICAgICAgICAgICAgIGxvbmcgbmV3TWFzayA9IHZhbHVlID8gb2xkTWFzayB8IGRlcml2ZWRN
YXNrIDogb2xkTWFzayAmIH5kZXJpdmVkTWFzazsKKyAgICAgICAgICAgICAgICBpZiAobmV3TWFz
aykKKyAgICAgICAgICAgICAgICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwgbmV3TWFzayk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX2JyZWFrcG9pbnRz
LnJlbW92ZShub2RlKTsKKyAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQoaW5uZXJGaXJzdENo
aWxkKG5vZGUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdGFjay5hcHBl
bmQoaW5uZXJOZXh0U2libGluZyhub2RlKSk7CisgICAgfSB3aGlsZSAoIXN0YWNrLmlzRW1wdHko
KSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyhsb25nIG5vZGVJZCwg
Ym9vbCBhdXRob3JPbmx5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBzdHlsZXMpCiB7CiAgICAg
Tm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmgKaW5kZXggNTMxN2EyMi4uNzk3NGYzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCkBAIC0xMTIsNiArMTEyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUobG9uZyBub2RlSWQpOwogICAgICAgICB2b2lkIHBl
cmZvcm1TZWFyY2goY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1
blN5bmNocm9ub3VzbHkpOwogICAgICAgICB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CisgICAgICAg
IHZvaWQgc2V0RE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKTsKKyAgICAgICAg
dm9pZCByZW1vdmVET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOwogCiAgICAg
ICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBDU1Mgc3R5bGVzIGlu
c3BlY3Rpb24uCiAgICAgICAgIHZvaWQgZ2V0U3R5bGVzKGxvbmcgbm9kZUlkLCBib29sIGF1dGhv
ck9ubHksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHN0eWxlcyk7CkBAIC0xNTUsNiArMTU3LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHVuYmluZChOb2RlKiBub2RlLCBO
b2RlVG9JZE1hcCogbm9kZXNNYXApOwogCiAgICAgICAgIGJvb2wgcHVzaERvY3VtZW50VG9Gcm9u
dGVuZCgpOworICAgICAgICB2b2lkIHN1YnRyZWVNb2RpZmllZChOb2RlKiBub2RlKTsKKyAgICAg
ICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSogcm9vdCwgbG9uZyBtYXNrLCBi
b29sIHZhbHVlLCBib29sIHdob2xlU3VidHJlZSk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlU3R5bGVzKEVsZW1lbnQqIGVsZW1l
bnQpOwogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yQ1NT
UnVsZXMoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1J1bGVMaXN0Kik7CkBAIC0yMDksNiAr
MjEzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUaW1lcjxJbnNwZWN0b3JET01B
Z2VudD4gbV9tYXRjaEpvYnNUaW1lcjsKICAgICAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBt
X3NlYXJjaFJlc3VsdHM7CiAgICAgICAgIFZlY3Rvcjxsb25nPiBtX2luc3BlY3RlZE5vZGVzOwor
ICAgICAgICBIYXNoTWFwPE5vZGUqLCBsb25nPiBtX2JyZWFrcG9pbnRzOwogICAgIH07CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJl
ZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcwppbmRleCA0NTUyZmEwLi5hZmQ1YTY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMzI2LDYgKzMyNiw4IEBA
IFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LkVkaXRUYWdCbGFja2xpc3QgPSBbCiAg
ICAgImh0bWwiLCAiaGVhZCIsICJib2R5IgogXS5rZXlTZXQoKTsKIAorV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQgPSAwOwor
CiBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgaGln
aGxpZ2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oc2VhcmNoUXVlcnkpCiAgICAgewpAQCAtNzYw
LDYgKzc2MiwxNSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJFZGl0IGFzIEhUTUwiKSwgdGhpcy5fZWRpdEFzSFRNTC5iaW5kKHRoaXMpKTsKICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgYXMgSFRN
TCIpLCB0aGlzLl9jb3B5SFRNTC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBOb2RlIiksIHRoaXMucmVtb3Zl
LmJpbmQodGhpcykpOworCisgICAgICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0Vu
YWJsZWQpIHsKKyAgICAgICAgICAgIC8vIEFkZCBkZWJidWdpbmctcmVsYXRlZCBhY3Rpb25zCisg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIG9uIHN1YnRy
ZWUgbW9kaWZpY2F0aW9ucyIpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0
RE9NQnJlYWtwb2ludC5iaW5kKEluc3BlY3RvckJhY2tlbmQsIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuaWQsIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LkRPTUJyZWFrcG9pbnRUeXBl
U3VidHJlZU1vZGlmaWVkKSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIEJyZWFrcG9pbnRzIiksCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01CcmVha3BvaW50LmJpbmQoSW5zcGVjdG9yQmFj
a2VuZCwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCwgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQpKTsKKyAgICAgICAgfQog
ICAgIH0sCiAKICAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRN
ZW51LCB0ZXh0Tm9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNw
ZWN0b3JCYWNrZW5kU3R1Yi5qcwppbmRleCA4MjE2MzI2Li45YzczNzk2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0x
MTMsNiArMTEzLDggQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViID0gZnVuY3Rp
b24oKQogICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0ZXBPdXRPZkZ1bmN0aW9uIik7CiAg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3RlcE92ZXJTdGF0ZW1lbnQiKTsKICAgICB0aGlz
Ll9yZWdpc3RlckRlbGVnYXRlKCJzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIik7CisgICAgdGhp
cy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0RE9NQnJlYWtwb2ludCIpOworICAgIHRoaXMuX3JlZ2lz
dGVyRGVsZWdhdGUoInJlbW92ZURPTUJyZWFrcG9pbnQiKTsKIH0KIAogV2ViSW5zcGVjdG9yLklu
c3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcwppbmRleCBjODRiYTc5Li42OGU0MGM0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00Myw3ICs0Myw4IEBAIHZhciBQcmVmZXJlbmNlcyA9
IHsKICAgICBkZWJ1Z2dlckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAgIHByb2ZpbGVyQWx3YXlz
RW5hYmxlZDogZmFsc2UsCiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0cnVlLAotICAgIG9ubGlu
ZURldGVjdGlvbkVuYWJsZWQ6IHRydWUKKyAgICBvbmxpbmVEZXRlY3Rpb25FbmFibGVkOiB0cnVl
LAorICAgIGRvbUJyZWFrcG9pbnRzRW5hYmxlZDogZmFsc2UKIH0KIAogV2ViSW5zcGVjdG9yLnBv
cHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyA9IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggODA3MjI1ZC4uYmJmOWMwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMDgtMTcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGVuYWJsZSBET00gYnJlYWtwb2ludHMgZm9yIGNocm9taXVtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgICogc3Jj
L2pzL0RldlRvb2xzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisKIDIwMTAt
MDgtMTYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQ7IGF0dGVtcHQgdG8gZml4IENocm9taXVtIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9qcy9EZXZUb29scy5qcwppbmRleCAwZmQ2NmM5Li5lM2UwMjA0IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvanMvRGV2VG9vbHMuanMKQEAgLTc0LDYgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9
IGZ1bmN0aW9uKCkKICAgICBQcmVmZXJlbmNlcy5wcm9maWxlckFsd2F5c0VuYWJsZWQgPSB0cnVl
OwogICAgIFByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgPSB0cnVlOwogICAgIFByZWZl
cmVuY2VzLm9ubGluZURldGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKKyAgICBQcmVmZXJlbmNlcy5k
b21CcmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwogCiAgICAgb2xkTG9hZGVkLmNhbGwoV2ViSW5z
cGVjdG9yKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64818</attachid>
            <date>2010-08-19 01:14:22 -0700</date>
            <delta_ts>2010-08-19 07:17:58 -0700</delta_ts>
            <desc>Fix nits and debug crash when closing inspector while paused on dom breakpoint.</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>19503</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWY4YTkxYi4uNTZhMzdkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wOC0xNyAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgYnJlYWtpbmcg
b24gRE9NIG5vZGUgc3VidHJlZSBtdXRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgIEFkZCB0d28gZW50cmllcyB0
byBXZWIgSW5zcGVjdG9yIERPTSBlbGVtZW50IGNvbnRleHQgbWVudToKKyAgICAgICAgMS4gIlN0
b3Agb24gc3VidHJlZSBtb2RpZmljYXRpb25zIjogd2lsbCBicmVhayBvbiBhZGRpbmcvcmVtb3Zp
bmcgb2YgYW55IGVsZW1lbnQgd2hpY2ggaXMgYSBjaGlsZCBvZiB0aGUgRE9NIGVsZW1lbnQKKyAg
ICAgICAgMi4gIlJlbW92ZSBicmVha3BvaW50cyI6IHdpbGwgcmVtb3ZlIGFsbCBicmVha3BvaW50
cyBhc3NvY2lhdGVkIHdpdGggdGhlIERPTSBlbGVtZW50CisKKyAgICAgICAgKiBFbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFr
UHJvZ3JhbSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdWJ0cmVlTW9kaWZpZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVha3Bv
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVzKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29udGV4dE1l
bnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisKIDIwMTAtMDgtMTcgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMKaW5kZXggMDEwYzI4Yy4uYzcyOGMxNiAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYW5kIGIvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDhkNDdiNzguLmM3MDg0YzkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMDUsNiArMjA1LDExIEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1
ZTsKIH0KIAordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKK3sKKyAgICAv
LyBGSVhNRShXSzQzMzMyKTogaW1wbGVtZW50IHRoaXMuCit9CisKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmZDg5NzZiLi40MzJmZTlhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC03OSw2ICs3OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNlKCk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oKTsK
ICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQo
KTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDBjMjQ2NzguLmU0OGIyZjUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMjgsNiArMjI4LDI1IEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAgICAgICAgdjg6OkRlYnVnOjpEZWJ1Z0JyZWFr
KCk7CiB9CiAKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4s
IGNhbGxiYWNrVGVtcGxhdGUsICgpKTsKKyAgICBpZiAoY2FsbGJhY2tUZW1wbGF0ZS5Jc0VtcHR5
KCkpIHsKKyAgICAgICAgY2FsbGJhY2tUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAg
IGNhbGxiYWNrVGVtcGxhdGUtPlNldENhbGxIYW5kbGVyKCZTY3JpcHREZWJ1Z1NlcnZlcjo6YnJl
YWtQcm9ncmFtQ2FsbGJhY2spOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0Lklz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwor
ICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuc2V0KGNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBicmVha1Byb2dyYW1GdW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdldEZ1
bmN0aW9uKCk7CisgICAgdjg6OkRlYnVnOjpDYWxsKGJyZWFrUHJvZ3JhbUZ1bmN0aW9uKTsKKyAg
ICBtX3BhdXNlZFBhZ2VDb250ZXh0LmNsZWFyKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKG1fcGF1c2VkUGFnZSkKQEAgLTMyMyw2
ICszNDIsNDEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuUGVuZGluZ1Rhc2tzKCkKICAg
ICB2ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBBU1NFUlQoMiA9PSBhcmdzLkxlbmd0aCgpKTsKKyAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9
CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGV4ZWN1dGlvblN0YXRlKQoreworICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVh
a3MuCisgICAgaWYgKG1fcGF1c2VkUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUq
IGZyYW1lID0gcmV0cmlldmVGcmFtZShtX3BhdXNlZFBhZ2VDb250ZXh0LmdldCgpKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBs
aXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKKyAgICBpZiAoIWxp
c3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChleGVj
dXRpb25TdGF0ZSk7CisgICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBTY3Jp
cHRTdGF0ZSogY3VycmVudENhbGxGcmFtZVN0YXRlID0gbWFpbldvcmxkU2NyaXB0U3RhdGUoZnJh
bWUpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOworCisg
ICAgLy8gV2FpdCBmb3IgY29udGludWUgb3Igc3RlcCBjb21tYW5kLgorICAgIG1fY2xpZW50TWVz
c2FnZUxvb3AtPnJ1bihtX3BhdXNlZFBhZ2UpOworICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsK
KworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3Rl
ZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVu
ZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKSkKKyAgICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVl
KCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnY4RGVidWdFdmVudENhbGxiYWNrKGNv
bnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpCiB7CiAgICAgU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmhhbmRsZVY4RGVidWdFdmVudChldmVudERldGFpbHMpOwpA
QCAtMzY1LDIxICs0MTksOSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVn
RXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVha3MuCi0gICAgICAgICAgICAgICAgaWYgKG1fcGF1
c2VkUGFnZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIG1f
ZXhlY3V0aW9uU3RhdGUuc2V0KGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAg
ICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAg
ICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50Q2FsbEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3JpcHRT
dGF0ZShmcmFtZSk7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRD
YWxsRnJhbWVTdGF0ZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciBjb250aW51ZSBv
ciBzdGVwIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgbV9jbGllbnRNZXNzYWdlTG9vcC0+cnVu
KG1fcGF1c2VkUGFnZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2UpOwot
Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGxpc3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBp
biB0aGUgbmVzdGVkIGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVu
ZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQotICAgICAg
ICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICBt
X3BhdXNlZFBhZ2VDb250ZXh0LnNldChldmVudENvbnRleHQpOworICAgICAgICAgICAgICAgIGJy
ZWFrUHJvZ3JhbShldmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSk7CisgICAgICAgICAg
ICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5jbGVhcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGEx
ZTBhNDcuLjM3YTIxMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogCiAg
ICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAgdm9pZCBjb250
aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAgICAgdm9pZCBz
dGVwT3ZlclN0YXRlbWVudCgpOwpAQCAtMTExLDYgKzExMiw5IEBAIHByaXZhdGU6CiAgICAgU2Ny
aXB0RGVidWdTZXJ2ZXIoKTsKICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KIAorICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncyk7CisgICAgdm9pZCBicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBleGVjdXRpb25TdGF0ZSk7CisKICAgICBzdGF0aWMgdm9pZCB2OERlYnVnRXZlbnRD
YWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRhaWxzKTsKICAg
ICB2b2lkIGhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYg
ZXZlbnREZXRhaWxzKTsKIApAQCAtMTI4LDYgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgT3duSGFu
ZGxlPHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAgT3duUHRyPENsaWVudE1lc3Nh
Z2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOwogICAgIFBhZ2UqIG1fcGF1c2VkUGFnZTsKKyAg
ICBPd25IYW5kbGU8djg6OkNvbnRleHQ+IG1fcGF1c2VkUGFnZUNvbnRleHQ7CiAgICAgYm9vbCBt
X2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAxYzY2YjU5Li45MmZm
MzdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE3Niw2ICsxNzYsOCBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmlu
ZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAgW2hhbmRsZXI9
RE9NXSB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBw
dXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIFN0cmluZyBwYXRoLCBv
dXQgbG9uZyBub2RlSWQpOworICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgc2V0RE9NQnJlYWtw
b2ludChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgW2hhbmRsZXI9RE9N
XSB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxvbmcgdHlwZSk7
CiAKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdl
cygpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGhpZ2hsaWdodERPTU5vZGUo
aW4gbG9uZyBub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmlu
ZGV4IDYyNDMyOTkuLjhjNzdmM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JGcm9udGVu
ZC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25z
dGFudHMuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlw
dEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUg
IlRleHQuaCIKQEAgLTE5Niw4ICsxOTcsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1hdGNo
UGxhaW5UZXh0Sm9iKCkgeyB9CiB9OwogCitlbnVtIERPTUJyZWFrcG9pbnRUeXBlIHsKKyAgICBE
T01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDAKK307CisKK2NvbnN0IGxvbmcgZG9t
QnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKKwogfQogCitJbnNwZWN0b3JET01BZ2Vu
dCogSW5zcGVjdG9yRE9NQWdlbnQ6OnNfaW5zdGFuY2UgPSAwOworCiBJbnNwZWN0b3JET01BZ2Vu
dDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zcGVjdG9yQ1NTU3RvcmUqIGNzc1N0b3JlLCBSZW1vdGVJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgOiBFdmVudExpc3RlbmVyKEluc3BlY3Rv
ckRPTUFnZW50VHlwZSkKICAgICAsIG1fY3NzU3RvcmUoY3NzU3RvcmUpCkBAIC0yMTAsNiArMjE5
LDkgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3BlY3RvckNTU1N0
b3JlKiBjc3NTdG9yZSwgUmVtb3RlSW5zcGVjdG8KIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVj
dG9yRE9NQWdlbnQoKQogewogICAgIHJlc2V0KCk7CisKKyAgICBpZiAodGhpcyA9PSBzX2luc3Rh
bmNlKQorICAgICAgICBzX2luc3RhbmNlID0gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6cmVzZXQoKQpAQCAtMzcxLDYgKzM4Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
c2NhcmRCaW5kaW5ncygpCiAgICAgcmVsZWFzZURhbmdsaW5nTm9kZXMoKTsKICAgICBtX2NoaWxk
cmVuUmVxdWVzdGVkLmNsZWFyKCk7CiAgICAgbV9pbnNwZWN0ZWROb2Rlcy5jbGVhcigpOworICAg
IG1fYnJlYWtwb2ludHMuY2xlYXIoKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5v
ZGVGb3JJZChsb25nIGlkKQpAQCAtNzIwLDYgKzczMywzOSBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZWFyY2hDYW5jZWxlZCgpCiAgICAgbV9zZWFyY2hSZXN1bHRzLmNsZWFyKCk7CiB9CiAK
K3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxv
bmcgdHlwZSkKK3sKKyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBsb25nIHJvb3RCaXQgPSAxIDw8
IHR5cGU7CisgICAgY29uc3QgbG9uZyBkZXJpdmVkQml0ID0gcm9vdEJpdCA8PCBkb21CcmVha3Bv
aW50RGVyaXZlZFR5cGVTaGlmdDsKKyAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBtX2JyZWFr
cG9pbnRzLmdldChub2RlKSB8IHJvb3RCaXQgJiB+ZGVyaXZlZEJpdCk7CisgICAgdXBkYXRlU3Vi
dHJlZUJyZWFrcG9pbnRzKG5vZGUsIHJvb3RCaXQsIHRydWUsIGZhbHNlKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0
eXBlKQoreworICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGxvbmcgcm9vdEJpdCA9IDEgPDwgdHlw
ZTsKKyAgICBjb25zdCBsb25nIGRlcml2ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9pbnRE
ZXJpdmVkVHlwZVNoaWZ0OworICAgIGxvbmcgbWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUp
OworICAgIGlmICghKG1hc2sgJiByb290Qml0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9k
ZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOworICAgIGlmIChwYXJlbnQgJiYgKG1f
YnJlYWtwb2ludHMuZ2V0KHBhcmVudCkgJiAocm9vdEJpdCB8IGRlcml2ZWRCaXQpKSkKKyAgICAg
ICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwgbWFzayAmIH5yb290Qml0IHwgZGVyaXZlZEJpdCk7
CisgICAgZWxzZSB7CisgICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1hc2sgJiB+cm9v
dEJpdCk7CisgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhub2RlLCByb290Qml0LCBm
YWxzZSwgZmFsc2UpOworICAgIH0KK30KKwogU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojpkb2N1
bWVudFVSTFN0cmluZyhEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1
bWVudCB8fCBkb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCkBAIC05MjAsNiArOTY2LDE3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKICAgICBp
ZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9icmVh
a3BvaW50cy5zaXplKCkpIHsKKyAgICAgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2Rl
KG5vZGUpOworICAgICAgICBzX2luc3RhbmNlID0gdGhpczsKKyAgICAgICAgc3VidHJlZU1vZGlm
aWVkKHBhcmVudCk7CisgICAgICAgIGlmICghc19pbnN0YW5jZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbG9uZyBtYXNrID0gbV9icmVha3BvaW50cy5nZXQocGFyZW50KTsKKyAgICAg
ICAgbWFzayA9IG1hc2sgfCAobWFzayA+PiBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCkg
JiAoKDEgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQpIC0gMSk7CisgICAgICAgIHVw
ZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhub2RlLCBtYXNrLCB0cnVlLCB0cnVlKTsKKyAgICB9CisK
ICAgICAvLyBXZSBjb3VsZCBiZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0IHRo
ZSBiaW5kaW5ncy4KICAgICB1bmJpbmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiAK
QEAgLTk0Niw2ICsxMDAzLDE1IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURP
TU5vZGUoTm9kZSogbm9kZSkKICAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBpZiAobV9icmVha3BvaW50cy5zaXplKCkpIHsKKyAgICAgICAgc19pbnN0
YW5jZSA9IHRoaXM7CisgICAgICAgIHN1YnRyZWVNb2RpZmllZChpbm5lclBhcmVudE5vZGUobm9k
ZSkpOworICAgICAgICBpZiAoIXNfaW5zdGFuY2UpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICB1cGRhdGVTdWJ0cmVlQnJl
YWtwb2ludHMobm9kZSwgMCwgZmFsc2UsIHRydWUpOworICAgIH0KKwogICAgIE5vZGUqIHBhcmVu
dCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBsb25nIHBhcmVudElkID0gbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLmdldChwYXJlbnQpOwogICAgIC8vIElmIHBhcmVudCBpcyBub3QgbWFwcGVkIHll
dCAtPiBpZ25vcmUgdGhlIGV2ZW50LgpAQCAtOTcxLDYgKzEwMzcsNDYgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQogICAgIG1fZnJv
bnRlbmQtPmF0dHJpYnV0ZXNVcGRhdGVkKGlkLCBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0
ZXMoZWxlbWVudCkpOwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzdWJ0cmVlTW9kaWZp
ZWQoTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBj
b25zdCBsb25nIHJvb3RCaXQgPSAxIDw8IERPTUJyZWFrcG9pbnRUeXBlU3VidHJlZU1vZGlmaWVk
OworICAgIGNvbnN0IGxvbmcgZGVyaXZlZEJpdCA9IHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERl
cml2ZWRUeXBlU2hpZnQ7CisgICAgaWYgKG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgKHJvb3RC
aXQgfCBkZXJpdmVkQml0KSkKKyAgICAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmJy
ZWFrUHJvZ3JhbSgpOworI2VuZGlmCit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVwZGF0
ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290LCBsb25nIG1hc2ssIGJvb2wgc2V0LCBib29s
IHJlY3Vyc2l2ZSkKK3sKKyAgICBjb25zdCBsb25nIGRlcml2ZWRNYXNrID0gbWFzayA8PCBkb21C
cmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKKyAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEsIGlu
bmVyRmlyc3RDaGlsZChyb290KSk7CisgICAgZG8geworICAgICAgICBOb2RlKiBub2RlID0gc3Rh
Y2subGFzdCgpOworICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmICghbm9k
ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocmVjdXJzaXZlKSB7CisgICAg
ICAgICAgICBpZiAoc2V0KQorICAgICAgICAgICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUs
IGRlcml2ZWRNYXNrKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2JyZWFr
cG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICAgICAgICAgIHN0YWNrLmFwcGVuZChpbm5lckZpcnN0
Q2hpbGQobm9kZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9uZyBvbGRNYXNr
ID0gbV9icmVha3BvaW50cy5nZXQobm9kZSk7CisgICAgICAgICAgICBpZiAoIShvbGRNYXNrICYg
bWFzaykpIHsKKyAgICAgICAgICAgICAgICBsb25nIG5ld01hc2sgPSBzZXQgPyBvbGRNYXNrIHwg
ZGVyaXZlZE1hc2sgOiBvbGRNYXNrICYgfmRlcml2ZWRNYXNrOworICAgICAgICAgICAgICAgIGlm
IChuZXdNYXNrKQorICAgICAgICAgICAgICAgICAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBu
ZXdNYXNrKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1fYnJl
YWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChpbm5l
ckZpcnN0Q2hpbGQobm9kZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHN0
YWNrLmFwcGVuZChpbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKKyAgICB9IHdoaWxlICghc3RhY2su
aXNFbXB0eSgpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVzKGxvbmcg
bm9kZUlkLCBib29sIGF1dGhvck9ubHksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHN0eWxlcykK
IHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAppbmRleCA1MzE3YTIyLi5lYzYwNzFjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTExMiw2ICsxMTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShsb25nIG5vZGVJZCk7CiAgICAgICAg
IHZvaWQgcGVyZm9ybVNlYXJjaChjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnks
IGJvb2wgcnVuU3luY2hyb25vdXNseSk7CiAgICAgICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsK
KyAgICAgICAgdm9pZCBzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOwor
ICAgICAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSk7
CiAKICAgICAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIENTUyBz
dHlsZXMgaW5zcGVjdGlvbi4KICAgICAgICAgdm9pZCBnZXRTdHlsZXMobG9uZyBub2RlSWQsIGJv
b2wgYXV0aG9yT25seSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogc3R5bGVzKTsKQEAgLTE1NSw2
ICsxNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdW5iaW5kKE5vZGUq
IG5vZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CiAKICAgICAgICAgYm9vbCBwdXNoRG9jdW1l
bnRUb0Zyb250ZW5kKCk7CisgICAgICAgIHZvaWQgc3VidHJlZU1vZGlmaWVkKE5vZGUqIG5vZGUp
OworICAgICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290LCBsb25n
IG1hc2ssIGJvb2wgdmFsdWUsIGJvb2wgcmVjdXJzaXZlKTsKIAogICAgICAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMoRWxlbWVudCog
ZWxlbWVudCk7CiAgICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlG
b3JDU1NSdWxlcyhEb2N1bWVudCogb3duZXJEb2N1bWVudCwgQ1NTUnVsZUxpc3QqKTsKQEAgLTIw
OSw2ICsyMTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRpbWVyPEluc3BlY3Rv
ckRPTUFnZW50PiBtX21hdGNoSm9ic1RpbWVyOwogICAgICAgICBIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+IG1fc2VhcmNoUmVzdWx0czsKICAgICAgICAgVmVjdG9yPGxvbmc+IG1faW5zcGVjdGVkTm9k
ZXM7CisgICAgICAgIEhhc2hNYXA8Tm9kZSosIGxvbmc+IG1fYnJlYWtwb2ludHM7CisKKyAgICAg
ICAgc3RhdGljIEluc3BlY3RvckRPTUFnZW50KiBzX2luc3RhbmNlOwogICAgIH07CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcwppbmRleCA0NTUyZmEwLi5hZmQ1YTY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMzI2LDYgKzMyNiw4IEBAIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LkVkaXRUYWdCbGFja2xpc3QgPSBbCiAgICAg
Imh0bWwiLCAiaGVhZCIsICJib2R5IgogXS5rZXlTZXQoKTsKIAorV2ViSW5zcGVjdG9yLkVsZW1l
bnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQgPSAwOworCiBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgaGlnaGxp
Z2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oc2VhcmNoUXVlcnkpCiAgICAgewpAQCAtNzYwLDYg
Kzc2MiwxNSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJF
ZGl0IGFzIEhUTUwiKSwgdGhpcy5fZWRpdEFzSFRNTC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgYXMgSFRNTCIp
LCB0aGlzLl9jb3B5SFRNTC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBOb2RlIiksIHRoaXMucmVtb3ZlLmJp
bmQodGhpcykpOworCisgICAgICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50c0VuYWJs
ZWQpIHsKKyAgICAgICAgICAgIC8vIEFkZCBkZWJidWdpbmctcmVsYXRlZCBhY3Rpb25zCisgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIG9uIHN1YnRyZWUg
bW9kaWZpY2F0aW9ucyIpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0RE9N
QnJlYWtwb2ludC5iaW5kKEluc3BlY3RvckJhY2tlbmQsIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
aWQsIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LkRPTUJyZWFrcG9pbnRUeXBlU3Vi
dHJlZU1vZGlmaWVkKSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIEJyZWFrcG9pbnRzIiksCisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01CcmVha3BvaW50LmJpbmQoSW5zcGVjdG9yQmFja2Vu
ZCwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCwgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQpKTsKKyAgICAgICAgfQogICAg
IH0sCiAKICAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51
LCB0ZXh0Tm9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNw
ZWN0b3JCYWNrZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0
b3JCYWNrZW5kU3R1Yi5qcwppbmRleCA4MjE2MzI2Li45YzczNzk2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0xMTMs
NiArMTEzLDggQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViID0gZnVuY3Rpb24o
KQogICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0ZXBPdXRPZkZ1bmN0aW9uIik7CiAgICAg
dGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3RlcE92ZXJTdGF0ZW1lbnQiKTsKICAgICB0aGlzLl9y
ZWdpc3RlckRlbGVnYXRlKCJzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIik7CisgICAgdGhpcy5f
cmVnaXN0ZXJEZWxlZ2F0ZSgic2V0RE9NQnJlYWtwb2ludCIpOworICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoInJlbW92ZURPTUJyZWFrcG9pbnQiKTsKIH0KIAogV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
ZXR0aW5ncy5qcwppbmRleCBjODRiYTc5Li42OGU0MGM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzLmpzCkBAIC00Myw3ICs0Myw4IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsK
ICAgICBkZWJ1Z2dlckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAgIHByb2ZpbGVyQWx3YXlzRW5h
YmxlZDogZmFsc2UsCiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0cnVlLAotICAgIG9ubGluZURl
dGVjdGlvbkVuYWJsZWQ6IHRydWUKKyAgICBvbmxpbmVEZXRlY3Rpb25FbmFibGVkOiB0cnVlLAor
ICAgIGRvbUJyZWFrcG9pbnRzRW5hYmxlZDogZmFsc2UKIH0KIAogV2ViSW5zcGVjdG9yLnBvcHVs
YXRlQXBwbGljYXRpb25TZXR0aW5ncyA9IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggODA3MjI1ZC4uYmJmOWMwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDgtMTcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+Cisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGVuYWJsZSBET00gYnJlYWtwb2ludHMgZm9yIGNocm9taXVtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgICogc3JjL2pz
L0RldlRvb2xzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisKIDIwMTAtMDgt
MTYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQ7IGF0dGVtcHQgdG8gZml4IENocm9taXVtIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9qcy9EZXZUb29scy5qcwppbmRleCAwZmQ2NmM5Li5lM2UwMjA0IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
anMvRGV2VG9vbHMuanMKQEAgLTc0LDYgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1
bmN0aW9uKCkKICAgICBQcmVmZXJlbmNlcy5wcm9maWxlckFsd2F5c0VuYWJsZWQgPSB0cnVlOwog
ICAgIFByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgPSB0cnVlOwogICAgIFByZWZlcmVu
Y2VzLm9ubGluZURldGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKKyAgICBQcmVmZXJlbmNlcy5kb21C
cmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwogCiAgICAgb2xkTG9hZGVkLmNhbGwoV2ViSW5zcGVj
dG9yKTsKIH0K
</data>
<flag name="review"
          id="53461"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64846</attachid>
            <date>2010-08-19 07:17:58 -0700</date>
            <delta_ts>2010-08-20 04:34:09 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>18844</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTkzNGZiZi4uNWU4NzllOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wOC0xOSAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50IGJyZWFraW5nIG9u
IERPTSBub2RlIHN1YnRyZWUgbXV0YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4ODYKKworICAgICAgICBBZGQgdHdvIGVudHJpZXMgdG8g
V2ViIEluc3BlY3RvciBET00gZWxlbWVudCBjb250ZXh0IG1lbnU6CisgICAgICAgIDEuICJTdG9w
IG9uIHN1YnRyZWUgbW9kaWZpY2F0aW9ucyI6IHdpbGwgYnJlYWsgb24gYWRkaW5nL3JlbW92aW5n
IG9mIGFueSBlbGVtZW50IHdoaWNoIGlzIGEgY2hpbGQgb2YgdGhlIERPTSBlbGVtZW50CisgICAg
ICAgIDIuICJSZW1vdmUgYnJlYWtwb2ludHMiOiB3aWxsIHJlbW92ZSBhbGwgYnJlYWtwb2ludHMg
YXNzb2NpYXRlZCB3aXRoIHRoZSBET00gZWxlbWVudAorCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwYXVzZU9uQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29u
dGV4dE1lbnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisK
IDIwMTAtMDgtMTkgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMDEwYzI4Yy4uYzcyOGMxNiAx
MDA2NDQKQmluYXJ5IGZpbGVzIGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMgYW5kIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgZGlm
ZmVyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGNkODBk
ZTQuLmVjYjdmYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0yMDUsNiArMjA1LDExIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAg
ICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKIH0KIAordm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6YnJlYWtQcm9ncmFtKCkKK3sKKyAgICAvLyBGSVhNRShXSzQzMzMyKTogaW1wbGVtZW50
IHRoaXMuCit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7
CiAgICAgaWYgKCFtX3BhdXNlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIu
aAppbmRleCBmZDg5NzZiLi40MzJmZTlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNl
KCk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oKTsKICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgp
OwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVt
ZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDBj
MjQ2NzguLjM2NWQ2OTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCkBAIC0yMjgsNiArMjI4LDI4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkK
ICAgICAgICAgdjg6OkRlYnVnOjpEZWJ1Z0JyZWFrKCk7CiB9CiAKK3ZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4sIGNhbGxiYWNrVGVtcGxhdGUsICgpKTsKKwor
ICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoY2FsbGJhY2tUZW1wbGF0ZS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2tUZW1w
bGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAgIGNhbGxiYWNrVGVtcGxhdGUtPlNldENhbGxI
YW5kbGVyKCZTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2spOworICAgIH0K
KworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0
Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYXVzZWRQYWdlQ29udGV4dCA9ICpjb250ZXh0OworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBicmVha1Byb2dyYW1GdW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdldEZ1
bmN0aW9uKCk7CisgICAgdjg6OkRlYnVnOjpDYWxsKGJyZWFrUHJvZ3JhbUZ1bmN0aW9uKTsKKyAg
ICBtX3BhdXNlZFBhZ2VDb250ZXh0LkNsZWFyKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKG1fcGF1c2VkUGFnZSkKQEAgLTMyMyw2
ICszNDUsNDEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuUGVuZGluZ1Rhc2tzKCkKICAg
ICB2ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBBU1NFUlQoMiA9PSBhcmdzLkxlbmd0aCgpKTsKKyAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9
CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGV4ZWN1dGlvblN0YXRlKQoreworICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVh
a3MuCisgICAgaWYgKG1fcGF1c2VkUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUq
IGZyYW1lID0gcmV0cmlldmVGcmFtZShtX3BhdXNlZFBhZ2VDb250ZXh0KTsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5l
ciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKKyAgICBpZiAoIWxpc3RlbmVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChleGVjdXRpb25T
dGF0ZSk7CisgICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBTY3JpcHRTdGF0
ZSogY3VycmVudENhbGxGcmFtZVN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQobV9wYXVz
ZWRQYWdlQ29udGV4dCk7CisgICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVT
dGF0ZSk7CisKKyAgICAvLyBXYWl0IGZvciBjb250aW51ZSBvciBzdGVwIGNvbW1hbmQuCisgICAg
bV9jbGllbnRNZXNzYWdlTG9vcC0+cnVuKG1fcGF1c2VkUGFnZSk7CisgICAgQVNTRVJUKCFtX3Bh
dXNlZFBhZ2UpOworCisgICAgLy8gVGhlIGxpc3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBp
biB0aGUgbmVzdGVkIGxvb3AuCisgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQorICAgICAgICBsaXN0ZW5lci0+
ZGlkQ29udGludWUoKTsKK30KKwogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6djhEZWJ1Z0V2ZW50
Q2FsbGJhY2soY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RGV0YWlscykKIHsK
ICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuaGFuZGxlVjhEZWJ1Z0V2ZW50KGV2ZW50
RGV0YWlscyk7CkBAIC0zNjUsMjEgKzQyMiw5IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Omhh
bmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgbmVzdGVkIGJyZWFrcy4KLSAgICAgICAgICAgICAg
ICBpZiAobV9wYXVzZWRQYWdlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgbV9leGVjdXRpb25TdGF0ZS5zZXQoZXZlbnREZXRhaWxzLkdldEV4ZWN1dGlvblN0
YXRlKCkpOwotICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0g
ICAgICAgICAgICAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IG1haW5X
b3JsZFNjcmlwdFN0YXRlKGZyYW1lKTsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUGF1
c2UoY3VycmVudENhbGxGcmFtZVN0YXRlKTsKLQotICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9y
IGNvbnRpbnVlIG9yIHN0ZXAgY29tbWFuZC4KLSAgICAgICAgICAgICAgICBtX2NsaWVudE1lc3Nh
Z2VMb29wLT5ydW4obV9wYXVzZWRQYWdlKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF1
c2VkUGFnZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGUgbGlzdGVuZXIgbWF5IGhhdmUgYmVl
biByZW1vdmVkIGluIHRoZSBuZXN0ZWQgbG9vcC4KLSAgICAgICAgICAgICAgICBpZiAoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIgPSBtX2xpc3RlbmVyc01hcC5nZXQoZnJhbWUtPnBhZ2Uo
KSkpCi0gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5kaWRDb250aW51ZSgpOworICAgICAg
ICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqZXZlbnRDb250ZXh0OworICAgICAgICAg
ICAgICAgIGJyZWFrUHJvZ3JhbShldmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSk7Cisg
ICAgICAgICAgICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5DbGVhcigpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5o
CmluZGV4IGExZTBhNDcuLjFlYWQ4NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3Rh
dGUpOwogCiAgICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAg
dm9pZCBjb250aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAg
ICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwpAQCAtMTExLDYgKzExMiw5IEBAIHByaXZhdGU6
CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0K
IAorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtQcm9ncmFtQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncyk7CisgICAgdm9pZCBicmVha1Byb2dyYW0odjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSk7CisKICAgICBzdGF0aWMgdm9pZCB2OERl
YnVnRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRh
aWxzKTsKICAgICB2b2lkIGhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50
RGV0YWlscyYgZXZlbnREZXRhaWxzKTsKIApAQCAtMTI4LDYgKzEzMiw3IEBAIHByaXZhdGU6CiAg
ICAgT3duSGFuZGxlPHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAgT3duUHRyPENs
aWVudE1lc3NhZ2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOwogICAgIFBhZ2UqIG1fcGF1c2Vk
UGFnZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1fcGF1c2VkUGFnZUNvbnRleHQ7CiAg
ICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAxYzY2
YjU5Li45MmZmMzdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE3Niw2ICsxNzYsOCBA
QCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBwZXJmb3JtU2VhcmNo
KGluIFN0cmluZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAg
W2hhbmRsZXI9RE9NXSB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CiAgICAgICAgIFtoYW5kbGVyPURP
TV0gdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIFN0cmlu
ZyBwYXRoLCBvdXQgbG9uZyBub2RlSWQpOworICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgc2V0
RE9NQnJlYWtwb2ludChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgW2hh
bmRsZXI9RE9NXSB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxv
bmcgdHlwZSk7CiAKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBjbGVhckNvbnNv
bGVNZXNzYWdlcygpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGhpZ2hsaWdo
dERPTU5vZGUoaW4gbG9uZyBub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IDYyNDMyOTkuLjZiNjBlMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbnNwZWN0
b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1
ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgog
I2luY2x1ZGUgIlRleHQuaCIKQEAgLTE5Niw4ICsxOTcsMTYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfk1hdGNoUGxhaW5UZXh0Sm9iKCkgeyB9CiB9OwogCitlbnVtIERPTUJyZWFrcG9pbnRUeXBl
IHsKKyAgICBET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDAKK307CisKK2NvbnN0
IGxvbmcgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKKwogfQogCitJbnNwZWN0
b3JET01BZ2VudCogSW5zcGVjdG9yRE9NQWdlbnQ6OnNfZG9tQWdlbnRPbkJyZWFrcG9pbnQgPSAw
OworCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zcGVjdG9yQ1NTU3Rv
cmUqIGNzc1N0b3JlLCBSZW1vdGVJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgOiBF
dmVudExpc3RlbmVyKEluc3BlY3RvckRPTUFnZW50VHlwZSkKICAgICAsIG1fY3NzU3RvcmUoY3Nz
U3RvcmUpCkBAIC0yMTAsNiArMjE5LDkgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRP
TUFnZW50KEluc3BlY3RvckNTU1N0b3JlKiBjc3NTdG9yZSwgUmVtb3RlSW5zcGVjdG8KIEluc3Bl
Y3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogewogICAgIHJlc2V0KCk7CisKKyAg
ICBpZiAodGhpcyA9PSBzX2RvbUFnZW50T25CcmVha3BvaW50KQorICAgICAgICBzX2RvbUFnZW50
T25CcmVha3BvaW50ID0gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQoKQpA
QCAtMzcxLDYgKzM4Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5n
cygpCiAgICAgcmVsZWFzZURhbmdsaW5nTm9kZXMoKTsKICAgICBtX2NoaWxkcmVuUmVxdWVzdGVk
LmNsZWFyKCk7CiAgICAgbV9pbnNwZWN0ZWROb2Rlcy5jbGVhcigpOworICAgIG1fYnJlYWtwb2lu
dHMuY2xlYXIoKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChsb25n
IGlkKQpAQCAtNzIwLDYgKzczMywzMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZWFyY2hD
YW5jZWxlZCgpCiAgICAgbV9zZWFyY2hSZXN1bHRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKK3sK
KyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgaWYgKCFub2RlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBsb25nIHJvb3RCaXQgPSAxIDw8IHR5cGU7CisgICAgbV9icmVh
a3BvaW50cy5zZXQobm9kZSwgbV9icmVha3BvaW50cy5nZXQobm9kZSkgfCByb290Qml0KTsKKyAg
ICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMobm9kZSwgcm9vdEJpdCwgdHJ1ZSwgZmFsc2UpOwor
fQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KGxvbmcgbm9k
ZUlkLCBsb25nIHR5cGUpCit7CisgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbG9uZyByb290Qml0ID0gMSA8
PCB0eXBlOworICAgIGxvbmcgbWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgfnJvb3RC
aXQ7CisgICAgaWYgKG1hc2spCisgICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1hc2sp
OworICAgIGVsc2UKKyAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAgaWYg
KCEobWFzayAmIChyb290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkpCisg
ICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhub2RlLCByb290Qml0LCBmYWxzZSwgZmFs
c2UpOworfQorCiBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKERv
Y3VtZW50KiBkb2N1bWVudCkgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8IGRvY3VtZW50
LT51cmwoKS5pc051bGwoKSkKQEAgLTkyMCw2ICs5NjAsMTcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQogICAgIGlmIChpc1doaXRlc3BhY2Uo
bm9kZSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkg
eworICAgICAgICBOb2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9kZSk7CisgICAgICAg
IGlmIChoYXNCcmVha3BvaW50KHBhcmVudCwgRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZp
ZWQpKSB7CisgICAgICAgICAgICBpZiAoIXBhdXNlT25CcmVha3BvaW50KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGxvbmcgbWFzayA9IG1fYnJlYWtwb2lu
dHMuZ2V0KHBhcmVudCk7CisgICAgICAgIG1hc2sgPSBtYXNrIHwgKG1hc2sgPj4gZG9tQnJlYWtw
b2ludERlcml2ZWRUeXBlU2hpZnQpICYgKCgxIDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNo
aWZ0KSAtIDEpOworICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMobm9kZSwgbWFzaywg
dHJ1ZSwgdHJ1ZSk7CisgICAgfQorCiAgICAgLy8gV2UgY291bGQgYmUgYXR0YWNoaW5nIGV4aXN0
aW5nIHN1YnRyZWUuIEZvcmdldCB0aGUgYmluZGluZ3MuCiAgICAgdW5iaW5kKG5vZGUsICZtX2Rv
Y3VtZW50Tm9kZVRvSWRNYXApOwogCkBAIC05NDYsNiArOTk3LDE1IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICBpZiAoaXNXaGl0ZXNw
YWNlKG5vZGUpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9icmVha3BvaW50cy5zaXpl
KCkpIHsKKyAgICAgICAgaWYgKGhhc0JyZWFrcG9pbnQoaW5uZXJQYXJlbnROb2RlKG5vZGUpLCBE
T01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCkpIHsKKyAgICAgICAgICAgIGlmICghcGF1
c2VPbkJyZWFrcG9pbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAgICAgIHVwZGF0ZVN1YnRyZWVC
cmVha3BvaW50cyhub2RlLCAwLCBmYWxzZSwgdHJ1ZSk7CisgICAgfQorCiAgICAgTm9kZSogcGFy
ZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIGxvbmcgcGFyZW50SWQgPSBtX2RvY3VtZW50
Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7CiAgICAgLy8gSWYgcGFyZW50IGlzIG5vdCBtYXBwZWQg
eWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCkBAIC05NzEsNiArMTAzMSw1MSBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgbV9m
cm9udGVuZC0+YXR0cmlidXRlc1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmli
dXRlcyhlbGVtZW50KSk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6Omhhc0JyZWFrcG9p
bnQoTm9kZSogbm9kZSwgbG9uZyB0eXBlKQoreworICAgIGNvbnN0IGxvbmcgcm9vdEJpdCA9IDEg
PDwgdHlwZTsKKyAgICBjb25zdCBsb25nIGRlcml2ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFr
cG9pbnREZXJpdmVkVHlwZVNoaWZ0OworICAgIHJldHVybiBtX2JyZWFrcG9pbnRzLmdldChub2Rl
KSAmIChyb290Qml0IHwgZGVyaXZlZEJpdCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6
OnBhdXNlT25CcmVha3BvaW50KCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
KyAgICBzX2RvbUFnZW50T25CcmVha3BvaW50ID0gdGhpczsKKyAgICBTY3JpcHREZWJ1Z1NlcnZl
cjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKCk7CisgICAgcmV0dXJuIHNfZG9tQWdlbnRPbkJyZWFr
cG9pbnQgIT0gMDsKKyNlbmRpZgorfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1cGRhdGVT
dWJ0cmVlQnJlYWtwb2ludHMoTm9kZSogcm9vdCwgbG9uZyBtYXNrLCBib29sIHNldCwgYm9vbCBy
ZWN1cnNpdmUpCit7CisgICAgY29uc3QgbG9uZyBkZXJpdmVkTWFzayA9IG1hc2sgPDwgZG9tQnJl
YWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7CisgICAgVmVjdG9yPE5vZGUqPiBzdGFjaygxLCBpbm5l
ckZpcnN0Q2hpbGQocm9vdCkpOworICAgIGRvIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IHN0YWNr
Lmxhc3QoKTsKKyAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICBpZiAoIW5vZGUp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHJlY3Vyc2l2ZSkgeworICAgICAg
ICAgICAgaWYgKHNldCkKKyAgICAgICAgICAgICAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBk
ZXJpdmVkTWFzayk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9icmVha3Bv
aW50cy5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICBzdGFjay5hcHBlbmQoaW5uZXJGaXJzdENo
aWxkKG5vZGUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvbmcgb2xkTWFzayA9
IG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpOworICAgICAgICAgICAgbG9uZyBuZXdNYXNrID0gc2V0
ID8gb2xkTWFzayB8IGRlcml2ZWRNYXNrIDogb2xkTWFzayAmIH5kZXJpdmVkTWFzazsKKyAgICAg
ICAgICAgIGlmIChuZXdNYXNrKQorICAgICAgICAgICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5v
ZGUsIG5ld01hc2spOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fYnJlYWtw
b2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICAgICAgaWYgKCEob2xkTWFzayAmIG1hc2spKQor
ICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChpbm5lckZpcnN0Q2hpbGQobm9kZSkpOworICAg
ICAgICB9CisgICAgICAgIHN0YWNrLmFwcGVuZChpbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKKyAg
ICB9IHdoaWxlICghc3RhY2suaXNFbXB0eSgpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6Z2V0U3R5bGVzKGxvbmcgbm9kZUlkLCBib29sIGF1dGhvck9ubHksIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHN0eWxlcykKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA1MzE3YTIyLi45NDdlN2Fm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTExMiw2ICsxMTIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShsb25n
IG5vZGVJZCk7CiAgICAgICAgIHZvaWQgcGVyZm9ybVNlYXJjaChjb25zdCBTdHJpbmcmIHdoaXRl
c3BhY2VUcmltbWVkUXVlcnksIGJvb2wgcnVuU3luY2hyb25vdXNseSk7CiAgICAgICAgIHZvaWQg
c2VhcmNoQ2FuY2VsZWQoKTsKKyAgICAgICAgdm9pZCBzZXRET01CcmVha3BvaW50KGxvbmcgbm9k
ZUlkLCBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBu
b2RlSWQsIGxvbmcgdHlwZSk7CiAKICAgICAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUg
ZnJvbnRlbmQgZm9yIENTUyBzdHlsZXMgaW5zcGVjdGlvbi4KICAgICAgICAgdm9pZCBnZXRTdHls
ZXMobG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
c3R5bGVzKTsKQEAgLTE1Niw2ICsxNTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIGJvb2wgcHVzaERvY3VtZW50VG9Gcm9udGVuZCgpOwogCisgICAgICAgIGJvb2wgaGFzQnJl
YWtwb2ludChOb2RlKiBub2RlLCBsb25nIHR5cGUpOworICAgICAgICBib29sIHBhdXNlT25CcmVh
a3BvaW50KCk7CisgICAgICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJv
b3QsIGxvbmcgbWFzaywgYm9vbCB2YWx1ZSwgYm9vbCByZWN1cnNpdmUpOworCiAgICAgICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZVN0eWxlcyhF
bGVtZW50KiBlbGVtZW50KTsKICAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYnVp
bGRBcnJheUZvckNTU1J1bGVzKERvY3VtZW50KiBvd25lckRvY3VtZW50LCBDU1NSdWxlTGlzdCop
OwogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yUHNldWRv
RWxlbWVudHMoRWxlbWVudCogZWxlbWVudCwgYm9vbCBhdXRob3JPbmx5KTsKQEAgLTIwOSw2ICsy
MTUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRpbWVyPEluc3BlY3RvckRPTUFn
ZW50PiBtX21hdGNoSm9ic1RpbWVyOwogICAgICAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1f
c2VhcmNoUmVzdWx0czsKICAgICAgICAgVmVjdG9yPGxvbmc+IG1faW5zcGVjdGVkTm9kZXM7Cisg
ICAgICAgIEhhc2hNYXA8Tm9kZSosIGxvbmc+IG1fYnJlYWtwb2ludHM7CisKKyAgICAgICAgc3Rh
dGljIEluc3BlY3RvckRPTUFnZW50KiBzX2RvbUFnZW50T25CcmVha3BvaW50OwogICAgIH07CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
VHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVl
T3V0bGluZS5qcwppbmRleCBjN2QzOWYxLi4yYWQwYmYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMzI2LDYgKzMyNiw4
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LkVkaXRUYWdCbGFja2xpc3QgPSBb
CiAgICAgImh0bWwiLCAiaGVhZCIsICJib2R5IgogXS5rZXlTZXQoKTsKIAorV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQgPSAw
OworCiBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
aGlnaGxpZ2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oc2VhcmNoUXVlcnkpCiAgICAgewpAQCAt
NzYxLDYgKzc2MywxNSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJFZGl0IGFzIEhUTUwiKSwgdGhpcy5fZWRpdEFzSFRNTC5iaW5kKHRoaXMpKTsKICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgYXMg
SFRNTCIpLCB0aGlzLl9jb3B5SFRNTC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBOb2RlIiksIHRoaXMucmVt
b3ZlLmJpbmQodGhpcykpOworCisgICAgICAgIGlmIChQcmVmZXJlbmNlcy5kb21CcmVha3BvaW50
c0VuYWJsZWQpIHsKKyAgICAgICAgICAgIC8vIEFkZCBkZWJidWdpbmctcmVsYXRlZCBhY3Rpb25z
CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIG9uIHN1
YnRyZWUgbW9kaWZpY2F0aW9ucyIpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQu
c2V0RE9NQnJlYWtwb2ludC5iaW5kKEluc3BlY3RvckJhY2tlbmQsIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuaWQsIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LkRPTUJyZWFrcG9pbnRU
eXBlU3VidHJlZU1vZGlmaWVkKSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIEJyZWFrcG9pbnRzIiksCisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01CcmVha3BvaW50LmJpbmQoSW5zcGVjdG9y
QmFja2VuZCwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCwgV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQpKTsKKyAgICAgICAg
fQogICAgIH0sCiAKICAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRl
eHRNZW51LCB0ZXh0Tm9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpp
bmRleCBjODRiYTc5Li42OGU0MGM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzCkBAIC00Myw3ICs0Myw4IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAgICBkZWJ1Z2dl
ckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAgIHByb2ZpbGVyQWx3YXlzRW5hYmxlZDogZmFsc2Us
CiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0cnVlLAotICAgIG9ubGluZURldGVjdGlvbkVuYWJs
ZWQ6IHRydWUKKyAgICBvbmxpbmVEZXRlY3Rpb25FbmFibGVkOiB0cnVlLAorICAgIGRvbUJyZWFr
cG9pbnRzRW5hYmxlZDogZmFsc2UKIH0KIAogV2ViSW5zcGVjdG9yLnBvcHVsYXRlQXBwbGljYXRp
b25TZXR0aW5ncyA9IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWI0
Yzc0Ni4uODNiNDkyNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMTkg
IFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGVuYWJsZSBE
T00gYnJlYWtwb2ludHMgZm9yIGNocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgICogc3JjL2pzL0RldlRvb2xzLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisKIDIwMTAtMDgtMTggIEppYW4gTGkg
IDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBsYXlvdXQgdGVzdCBjcmFzaGVz
IGluIGNocm9taXVtLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29s
cy5qcyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKaW5kZXggMGZkNjZjOS4u
ZTNlMDIwNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCkBAIC03NCw2ICs3NCw3IEBA
IFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgUHJlZmVyZW5jZXMucHJvZmls
ZXJBbHdheXNFbmFibGVkID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291
cmNlID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5vbmxpbmVEZXRlY3Rpb25FbmFibGVkID0gZmFs
c2U7CisgICAgUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKIAogICAg
IG9sZExvYWRlZC5jYWxsKFdlYkluc3BlY3Rvcik7CiB9Cg==
</data>
<flag name="review"
          id="53488"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64847</attachid>
            <date>2010-08-19 07:18:50 -0700</date>
            <delta_ts>2010-08-20 04:34:09 -0700</delta_ts>
            <desc>What&apos;s changed from previous patch.</desc>
            <filename>dom.changes.patch</filename>
            <type>text/plain</type>
            <size>8922</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZTQ4YjJmNS4u
MzY1ZDY5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAg
LTIzMSw2ICsyMzEsMTAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2UoKQogdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgY2FsbGJhY2tUZW1wbGF0
ZSwgKCkpOworCisgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGlmIChjYWxsYmFja1RlbXBsYXRlLklzRW1wdHkoKSkgewogICAgICAgICBj
YWxsYmFja1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpKTsKICAgICAgICAgY2FsbGJhY2tUZW1wbGF0
ZS0+U2V0Q2FsbEhhbmRsZXIoJlNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFj
ayk7CkBAIC0yNDAsMTEgKzI0NCwxMCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0oKQogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuc2V0KGNv
bnRleHQpOworICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqY29udGV4dDsKICAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvbj4gYnJlYWtQcm9ncmFtRnVuY3Rpb24gPSBjYWxsYmFja1RlbXBsYXRl
LT5HZXRGdW5jdGlvbigpOwogICAgIHY4OjpEZWJ1Zzo6Q2FsbChicmVha1Byb2dyYW1GdW5jdGlv
bik7Ci0gICAgbV9wYXVzZWRQYWdlQ29udGV4dC5jbGVhcigpOworICAgIG1fcGF1c2VkUGFnZUNv
bnRleHQuQ2xlYXIoKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29udGludWVQcm9n
cmFtKCkKQEAgLTM1NSw3ICszNTgsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSkKICAgICBpZiAobV9w
YXVzZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZSogZnJhbWUgPSByZXRyaWV2
ZUZyYW1lKG1fcGF1c2VkUGFnZUNvbnRleHQuZ2V0KCkpOworICAgIEZyYW1lKiBmcmFtZSA9IHJl
dHJpZXZlRnJhbWUobV9wYXVzZWRQYWdlQ29udGV4dCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zNjUsNyArMzY4LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUpCiAKICAg
ICBtX2V4ZWN1dGlvblN0YXRlLnNldChleGVjdXRpb25TdGF0ZSk7CiAgICAgbV9wYXVzZWRQYWdl
ID0gZnJhbWUtPnBhZ2UoKTsKLSAgICBTY3JpcHRTdGF0ZSogY3VycmVudENhbGxGcmFtZVN0YXRl
ID0gbWFpbldvcmxkU2NyaXB0U3RhdGUoZnJhbWUpOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50
Q2FsbEZyYW1lU3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dChtX3BhdXNlZFBhZ2VDb250
ZXh0KTsKICAgICBsaXN0ZW5lci0+ZGlkUGF1c2UoY3VycmVudENhbGxGcmFtZVN0YXRlKTsKIAog
ICAgIC8vIFdhaXQgZm9yIGNvbnRpbnVlIG9yIHN0ZXAgY29tbWFuZC4KQEAgLTQxOSw5ICs0MjIs
OSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6
OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNv
bnRleHQuc2V0KGV2ZW50Q29udGV4dCk7CisgICAgICAgICAgICAgICAgbV9wYXVzZWRQYWdlQ29u
dGV4dCA9ICpldmVudENvbnRleHQ7CiAgICAgICAgICAgICAgICAgYnJlYWtQcm9ncmFtKGV2ZW50
RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAgICAgICAgICAgICAgICBtX3BhdXNlZFBh
Z2VDb250ZXh0LmNsZWFyKCk7CisgICAgICAgICAgICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5D
bGVhcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDM3YTIxMDEuLjFlYWQ4NmIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2YXRl
OgogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2V4ZWN1dGlvblN0YXRlOwogICAgIE93blB0
cjxDbGllbnRNZXNzYWdlTG9vcD4gbV9jbGllbnRNZXNzYWdlTG9vcDsKICAgICBQYWdlKiBtX3Bh
dXNlZFBhZ2U7Ci0gICAgT3duSGFuZGxlPHY4OjpDb250ZXh0PiBtX3BhdXNlZFBhZ2VDb250ZXh0
OworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9wYXVzZWRQYWdlQ29udGV4dDsKICAgICBi
b29sIG1fZW5hYmxlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cAppbmRleCA4Yzc3ZjNhLi42YjYwZTA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgY29uc3QgbG9uZyBkb21CcmVha3BvaW50RGVy
aXZlZFR5cGVTaGlmdCA9IDE2OwogCiB9CiAKLUluc3BlY3RvckRPTUFnZW50KiBJbnNwZWN0b3JE
T01BZ2VudDo6c19pbnN0YW5jZSA9IDA7CitJbnNwZWN0b3JET01BZ2VudCogSW5zcGVjdG9yRE9N
QWdlbnQ6OnNfZG9tQWdlbnRPbkJyZWFrcG9pbnQgPSAwOwogCiBJbnNwZWN0b3JET01BZ2VudDo6
SW5zcGVjdG9yRE9NQWdlbnQoSW5zcGVjdG9yQ1NTU3RvcmUqIGNzc1N0b3JlLCBSZW1vdGVJbnNw
ZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgOiBFdmVudExpc3RlbmVyKEluc3BlY3RvckRP
TUFnZW50VHlwZSkKQEAgLTIyMCw4ICsyMjAsOCBAQCBJbnNwZWN0b3JET01BZ2VudDo6fkluc3Bl
Y3RvckRPTUFnZW50KCkKIHsKICAgICByZXNldCgpOwogCi0gICAgaWYgKHRoaXMgPT0gc19pbnN0
YW5jZSkKLSAgICAgICAgc19pbnN0YW5jZSA9IDA7CisgICAgaWYgKHRoaXMgPT0gc19kb21BZ2Vu
dE9uQnJlYWtwb2ludCkKKyAgICAgICAgc19kb21BZ2VudE9uQnJlYWtwb2ludCA9IDA7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc2V0KCkKQEAgLTczOSw5ICs3MzksOCBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5
cGUpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBsb25nIHJv
b3RCaXQgPSAxIDw8IHR5cGU7Ci0gICAgY29uc3QgbG9uZyBkZXJpdmVkQml0ID0gcm9vdEJpdCA8
PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKLSAgICBtX2JyZWFrcG9pbnRzLnNldChu
b2RlLCBtX2JyZWFrcG9pbnRzLmdldChub2RlKSB8IHJvb3RCaXQgJiB+ZGVyaXZlZEJpdCk7Cisg
ICAgbG9uZyByb290Qml0ID0gMSA8PCB0eXBlOworICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUs
IG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpIHwgcm9vdEJpdCk7CiAgICAgdXBkYXRlU3VidHJlZUJy
ZWFrcG9pbnRzKG5vZGUsIHJvb3RCaXQsIHRydWUsIGZhbHNlKTsKIH0KIApAQCAtNzUxLDE5ICs3
NTAsMTQgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChsb25n
IG5vZGVJZCwgbG9uZyB0eXBlKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29uc3QgbG9uZyByb290Qml0ID0gMSA8PCB0eXBlOwotICAgIGNvbnN0IGxvbmcgZGVyaXZl
ZEJpdCA9IHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7Ci0gICAgbG9u
ZyBtYXNrID0gbV9icmVha3BvaW50cy5nZXQobm9kZSk7Ci0gICAgaWYgKCEobWFzayAmIHJvb3RC
aXQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOb2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5v
ZGUobm9kZSk7Ci0gICAgaWYgKHBhcmVudCAmJiAobV9icmVha3BvaW50cy5nZXQocGFyZW50KSAm
IChyb290Qml0IHwgZGVyaXZlZEJpdCkpKQotICAgICAgICBtX2JyZWFrcG9pbnRzLnNldChub2Rl
LCBtYXNrICYgfnJvb3RCaXQgfCBkZXJpdmVkQml0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgbV9i
cmVha3BvaW50cy5zZXQobm9kZSwgbWFzayAmIH5yb290Qml0KTsKKyAgICBsb25nIHJvb3RCaXQg
PSAxIDw8IHR5cGU7CisgICAgbG9uZyBtYXNrID0gbV9icmVha3BvaW50cy5nZXQobm9kZSkgJiB+
cm9vdEJpdDsKKyAgICBpZiAobWFzaykKKyAgICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwg
bWFzayk7CisgICAgZWxzZQorICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAg
ICBpZiAoIShtYXNrICYgKHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQp
KSkKICAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKG5vZGUsIHJvb3RCaXQsIGZhbHNl
LCBmYWxzZSk7Ci0gICAgfQogfQogCiBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50
VVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QKQEAgLTk2OCwxMCArOTYyLDEwIEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKIAog
ICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgewogICAgICAgICBOb2RlKiBwYXJlbnQgPSBp
bm5lclBhcmVudE5vZGUobm9kZSk7Ci0gICAgICAgIHNfaW5zdGFuY2UgPSB0aGlzOwotICAgICAg
ICBzdWJ0cmVlTW9kaWZpZWQocGFyZW50KTsKLSAgICAgICAgaWYgKCFzX2luc3RhbmNlKQotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaGFzQnJlYWtwb2ludChwYXJlbnQsIERPTUJy
ZWFrcG9pbnRUeXBlU3VidHJlZU1vZGlmaWVkKSkgeworICAgICAgICAgICAgaWYgKCFwYXVzZU9u
QnJlYWtwb2ludCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAg
ICBsb25nIG1hc2sgPSBtX2JyZWFrcG9pbnRzLmdldChwYXJlbnQpOwogICAgICAgICBtYXNrID0g
bWFzayB8IChtYXNrID4+IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSAmICgoMSA8PCBk
b21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCkgLSAxKTsKICAgICAgICAgdXBkYXRlU3VidHJl
ZUJyZWFrcG9pbnRzKG5vZGUsIG1hc2ssIHRydWUsIHRydWUpOwpAQCAtMTAwNCwxMCArOTk4LDEw
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7Ci0gICAg
ICAgIHNfaW5zdGFuY2UgPSB0aGlzOwotICAgICAgICBzdWJ0cmVlTW9kaWZpZWQoaW5uZXJQYXJl
bnROb2RlKG5vZGUpKTsKLSAgICAgICAgaWYgKCFzX2luc3RhbmNlKQotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoaGFzQnJlYWtwb2ludChpbm5lclBhcmVudE5vZGUobm9kZSksIERP
TUJyZWFrcG9pbnRUeXBlU3VidHJlZU1vZGlmaWVkKSkgeworICAgICAgICAgICAgaWYgKCFwYXVz
ZU9uQnJlYWtwb2ludCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAg
ICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKICAgICAgICAgdXBkYXRlU3VidHJlZUJy
ZWFrcG9pbnRzKG5vZGUsIDAsIGZhbHNlLCB0cnVlKTsKICAgICB9CkBAIC0xMDM3LDEzICsxMDMx
LDE5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCog
ZWxlbWVudCkKICAgICBtX2Zyb250ZW5kLT5hdHRyaWJ1dGVzVXBkYXRlZChpZCwgYnVpbGRBcnJh
eUZvckVsZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6c3VidHJlZU1vZGlmaWVkKE5vZGUqIG5vZGUpCitib29sIEluc3BlY3RvckRPTUFnZW50
OjpoYXNCcmVha3BvaW50KE5vZGUqIG5vZGUsIGxvbmcgdHlwZSkKIHsKLSNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSAgICBjb25zdCBsb25nIHJvb3RCaXQgPSAxIDw8IERPTUJyZWFr
cG9pbnRUeXBlU3VidHJlZU1vZGlmaWVkOworICAgIGNvbnN0IGxvbmcgcm9vdEJpdCA9IDEgPDwg
dHlwZTsKICAgICBjb25zdCBsb25nIGRlcml2ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9p
bnREZXJpdmVkVHlwZVNoaWZ0OwotICAgIGlmIChtX2JyZWFrcG9pbnRzLmdldChub2RlKSAmIChy
b290Qml0IHwgZGVyaXZlZEJpdCkpCi0gICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS5icmVha1Byb2dyYW0oKTsKKyAgICByZXR1cm4gbV9icmVha3BvaW50cy5nZXQobm9kZSkgJiAo
cm9vdEJpdCB8IGRlcml2ZWRCaXQpOworfQorCitib29sIEluc3BlY3RvckRPTUFnZW50OjpwYXVz
ZU9uQnJlYWtwb2ludCgpCit7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAg
c19kb21BZ2VudE9uQnJlYWtwb2ludCA9IHRoaXM7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNo
YXJlZCgpLmJyZWFrUHJvZ3JhbSgpOworICAgIHJldHVybiBzX2RvbUFnZW50T25CcmVha3BvaW50
ICE9IDA7CiAjZW5kaWYKIH0KIApAQCAtMTA2NCwxNCArMTA2NCwxMyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSogcm9vdCwgbG9uZyBtYXNr
LCBib29sIHNldAogICAgICAgICAgICAgc3RhY2suYXBwZW5kKGlubmVyRmlyc3RDaGlsZChub2Rl
KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsb25nIG9sZE1hc2sgPSBtX2JyZWFr
cG9pbnRzLmdldChub2RlKTsKLSAgICAgICAgICAgIGlmICghKG9sZE1hc2sgJiBtYXNrKSkgewot
ICAgICAgICAgICAgICAgIGxvbmcgbmV3TWFzayA9IHNldCA/IG9sZE1hc2sgfCBkZXJpdmVkTWFz
ayA6IG9sZE1hc2sgJiB+ZGVyaXZlZE1hc2s7Ci0gICAgICAgICAgICAgICAgaWYgKG5ld01hc2sp
Ci0gICAgICAgICAgICAgICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG5ld01hc2spOwot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9icmVha3BvaW50cy5y
ZW1vdmUobm9kZSk7CisgICAgICAgICAgICBsb25nIG5ld01hc2sgPSBzZXQgPyBvbGRNYXNrIHwg
ZGVyaXZlZE1hc2sgOiBvbGRNYXNrICYgfmRlcml2ZWRNYXNrOworICAgICAgICAgICAgaWYgKG5l
d01hc2spCisgICAgICAgICAgICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwgbmV3TWFzayk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUo
bm9kZSk7CisgICAgICAgICAgICBpZiAoIShvbGRNYXNrICYgbWFzaykpCiAgICAgICAgICAgICAg
ICAgc3RhY2suYXBwZW5kKGlubmVyRmlyc3RDaGlsZChub2RlKSk7Ci0gICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgc3RhY2suYXBwZW5kKGlubmVyTmV4dFNpYmxpbmcobm9kZSkpOwog
ICAgIH0gd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmgKaW5kZXggZWM2MDcxYy4uOTQ3ZTdhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCkBAIC0xNTcsNyArMTU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwogCiAg
ICAgICAgIGJvb2wgcHVzaERvY3VtZW50VG9Gcm9udGVuZCgpOwotICAgICAgICB2b2lkIHN1YnRy
ZWVNb2RpZmllZChOb2RlKiBub2RlKTsKKworICAgICAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9k
ZSogbm9kZSwgbG9uZyB0eXBlKTsKKyAgICAgICAgYm9vbCBwYXVzZU9uQnJlYWtwb2ludCgpOwog
ICAgICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290LCBsb25nIG1h
c2ssIGJvb2wgdmFsdWUsIGJvb2wgcmVjdXJzaXZlKTsKIAogICAgICAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMoRWxlbWVudCogZWxl
bWVudCk7CkBAIC0yMTUsNyArMjE3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBW
ZWN0b3I8bG9uZz4gbV9pbnNwZWN0ZWROb2RlczsKICAgICAgICAgSGFzaE1hcDxOb2RlKiwgbG9u
Zz4gbV9icmVha3BvaW50czsKIAotICAgICAgICBzdGF0aWMgSW5zcGVjdG9yRE9NQWdlbnQqIHNf
aW5zdGFuY2U7CisgICAgICAgIHN0YXRpYyBJbnNwZWN0b3JET01BZ2VudCogc19kb21BZ2VudE9u
QnJlYWtwb2ludDsKICAgICB9OwogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64944</attachid>
            <date>2010-08-20 04:34:09 -0700</date>
            <delta_ts>2010-08-20 04:44:15 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>18968</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzFkOGJkYy4uZmJjODVlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wOC0xOSAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50IGJyZWFraW5nIG9u
IERPTSBub2RlIHN1YnRyZWUgbXV0YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4ODYKKworICAgICAgICBBZGQgdHdvIGVudHJpZXMgdG8g
V2ViIEluc3BlY3RvciBET00gZWxlbWVudCBjb250ZXh0IG1lbnU6CisgICAgICAgIDEuICJTdG9w
IG9uIHN1YnRyZWUgbW9kaWZpY2F0aW9ucyI6IHdpbGwgYnJlYWsgb24gYWRkaW5nL3JlbW92aW5n
IG9mIGFueSBlbGVtZW50IHdoaWNoIGlzIGEgY2hpbGQgb2YgdGhlIERPTSBlbGVtZW50CisgICAg
ICAgIDIuICJSZW1vdmUgYnJlYWtwb2ludHMiOiB3aWxsIHJlbW92ZSBhbGwgYnJlYWtwb2ludHMg
YXNzb2NpYXRlZCB3aXRoIHRoZSBET00gZWxlbWVudAorCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwYXVzZU9uQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29u
dGV4dE1lbnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisK
IDIwMTAtMDgtMjAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMDEwYzI4Yy4uYzcyOGMxNiAx
MDA2NDQKQmluYXJ5IGZpbGVzIGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMgYW5kIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgZGlm
ZmVyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGNkODBk
ZTQuLmVjYjdmYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0yMDUsNiArMjA1LDExIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkKICAg
ICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKIH0KIAordm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6YnJlYWtQcm9ncmFtKCkKK3sKKyAgICAvLyBGSVhNRShXSzQzMzMyKTogaW1wbGVtZW50
IHRoaXMuCit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7
CiAgICAgaWYgKCFtX3BhdXNlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIu
aAppbmRleCBmZDg5NzZiLi40MzJmZTlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAKICAgICB2b2lkIHBhdXNl
KCk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oKTsKICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgp
OwogICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnQoKTsKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVt
ZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDBj
MjQ2NzguLjM2NWQ2OTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCkBAIC0yMjgsNiArMjI4LDI4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlKCkK
ICAgICAgICAgdjg6OkRlYnVnOjpEZWJ1Z0JyZWFrKCk7CiB9CiAKK3ZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4sIGNhbGxiYWNrVGVtcGxhdGUsICgpKTsKKwor
ICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoY2FsbGJhY2tUZW1wbGF0ZS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2tUZW1w
bGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAgIGNhbGxiYWNrVGVtcGxhdGUtPlNldENhbGxI
YW5kbGVyKCZTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2spOworICAgIH0K
KworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0
Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYXVzZWRQYWdlQ29udGV4dCA9ICpjb250ZXh0OworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBicmVha1Byb2dyYW1GdW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdldEZ1
bmN0aW9uKCk7CisgICAgdjg6OkRlYnVnOjpDYWxsKGJyZWFrUHJvZ3JhbUZ1bmN0aW9uKTsKKyAg
ICBtX3BhdXNlZFBhZ2VDb250ZXh0LkNsZWFyKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKG1fcGF1c2VkUGFnZSkKQEAgLTMyMyw2
ICszNDUsNDEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuUGVuZGluZ1Rhc2tzKCkKICAg
ICB2ODo6RGVidWc6OlByb2Nlc3NEZWJ1Z01lc3NhZ2VzKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBBU1NFUlQoMiA9PSBhcmdzLkxlbmd0aCgpKTsKKyAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9
CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGV4ZWN1dGlvblN0YXRlKQoreworICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVh
a3MuCisgICAgaWYgKG1fcGF1c2VkUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUq
IGZyYW1lID0gcmV0cmlldmVGcmFtZShtX3BhdXNlZFBhZ2VDb250ZXh0KTsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5l
ciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKKyAgICBpZiAoIWxpc3RlbmVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChleGVjdXRpb25T
dGF0ZSk7CisgICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBTY3JpcHRTdGF0
ZSogY3VycmVudENhbGxGcmFtZVN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQobV9wYXVz
ZWRQYWdlQ29udGV4dCk7CisgICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVT
dGF0ZSk7CisKKyAgICAvLyBXYWl0IGZvciBjb250aW51ZSBvciBzdGVwIGNvbW1hbmQuCisgICAg
bV9jbGllbnRNZXNzYWdlTG9vcC0+cnVuKG1fcGF1c2VkUGFnZSk7CisgICAgQVNTRVJUKCFtX3Bh
dXNlZFBhZ2UpOworCisgICAgLy8gVGhlIGxpc3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBp
biB0aGUgbmVzdGVkIGxvb3AuCisgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQorICAgICAgICBsaXN0ZW5lci0+
ZGlkQ29udGludWUoKTsKK30KKwogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6djhEZWJ1Z0V2ZW50
Q2FsbGJhY2soY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RGV0YWlscykKIHsK
ICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuaGFuZGxlVjhEZWJ1Z0V2ZW50KGV2ZW50
RGV0YWlscyk7CkBAIC0zNjUsMjEgKzQyMiw5IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Omhh
bmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgbmVzdGVkIGJyZWFrcy4KLSAgICAgICAgICAgICAg
ICBpZiAobV9wYXVzZWRQYWdlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgbV9leGVjdXRpb25TdGF0ZS5zZXQoZXZlbnREZXRhaWxzLkdldEV4ZWN1dGlvblN0
YXRlKCkpOwotICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0g
ICAgICAgICAgICAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IG1haW5X
b3JsZFNjcmlwdFN0YXRlKGZyYW1lKTsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUGF1
c2UoY3VycmVudENhbGxGcmFtZVN0YXRlKTsKLQotICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9y
IGNvbnRpbnVlIG9yIHN0ZXAgY29tbWFuZC4KLSAgICAgICAgICAgICAgICBtX2NsaWVudE1lc3Nh
Z2VMb29wLT5ydW4obV9wYXVzZWRQYWdlKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF1
c2VkUGFnZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGUgbGlzdGVuZXIgbWF5IGhhdmUgYmVl
biByZW1vdmVkIGluIHRoZSBuZXN0ZWQgbG9vcC4KLSAgICAgICAgICAgICAgICBpZiAoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIgPSBtX2xpc3RlbmVyc01hcC5nZXQoZnJhbWUtPnBhZ2Uo
KSkpCi0gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5kaWRDb250aW51ZSgpOworICAgICAg
ICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqZXZlbnRDb250ZXh0OworICAgICAgICAg
ICAgICAgIGJyZWFrUHJvZ3JhbShldmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSk7Cisg
ICAgICAgICAgICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5DbGVhcigpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5o
CmluZGV4IGExZTBhNDcuLjFlYWQ4NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3Rh
dGUpOwogCiAgICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAg
dm9pZCBjb250aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAg
ICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwpAQCAtMTExLDYgKzExMiw5IEBAIHByaXZhdGU6
CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0K
IAorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtQcm9ncmFtQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncyk7CisgICAgdm9pZCBicmVha1Byb2dyYW0odjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSk7CisKICAgICBzdGF0aWMgdm9pZCB2OERl
YnVnRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRh
aWxzKTsKICAgICB2b2lkIGhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50
RGV0YWlscyYgZXZlbnREZXRhaWxzKTsKIApAQCAtMTI4LDYgKzEzMiw3IEBAIHByaXZhdGU6CiAg
ICAgT3duSGFuZGxlPHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAgT3duUHRyPENs
aWVudE1lc3NhZ2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOwogICAgIFBhZ2UqIG1fcGF1c2Vk
UGFnZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1fcGF1c2VkUGFnZUNvbnRleHQ7CiAg
ICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAxYzY2
YjU5Li45MmZmMzdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE3Niw2ICsxNzYsOCBA
QCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBwZXJmb3JtU2VhcmNo
KGluIFN0cmluZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAg
W2hhbmRsZXI9RE9NXSB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CiAgICAgICAgIFtoYW5kbGVyPURP
TV0gdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIFN0cmlu
ZyBwYXRoLCBvdXQgbG9uZyBub2RlSWQpOworICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgc2V0
RE9NQnJlYWtwb2ludChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKKyAgICAgICAgW2hh
bmRsZXI9RE9NXSB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxv
bmcgdHlwZSk7CiAKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBjbGVhckNvbnNv
bGVNZXNzYWdlcygpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGhpZ2hsaWdo
dERPTU5vZGUoaW4gbG9uZyBub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IDYyNDMyOTkuLmNhZjM3YjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbnNwZWN0
b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1
ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgog
I2luY2x1ZGUgIlRleHQuaCIKQEAgLTE5Niw4ICsxOTcsMTYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfk1hdGNoUGxhaW5UZXh0Sm9iKCkgeyB9CiB9OwogCitlbnVtIERPTUJyZWFrcG9pbnRUeXBl
IHsKKyAgICBET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDAKK307CisKK2NvbnN0
IGxvbmcgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKKwogfQogCitJbnNwZWN0
b3JET01BZ2VudCogSW5zcGVjdG9yRE9NQWdlbnQ6OnNfZG9tQWdlbnRPbkJyZWFrcG9pbnQgPSAw
OworCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zcGVjdG9yQ1NTU3Rv
cmUqIGNzc1N0b3JlLCBSZW1vdGVJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgOiBF
dmVudExpc3RlbmVyKEluc3BlY3RvckRPTUFnZW50VHlwZSkKICAgICAsIG1fY3NzU3RvcmUoY3Nz
U3RvcmUpCkBAIC0yMTAsNiArMjE5LDkgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRP
TUFnZW50KEluc3BlY3RvckNTU1N0b3JlKiBjc3NTdG9yZSwgUmVtb3RlSW5zcGVjdG8KIEluc3Bl
Y3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogewogICAgIHJlc2V0KCk7CisKKyAg
ICBpZiAodGhpcyA9PSBzX2RvbUFnZW50T25CcmVha3BvaW50KQorICAgICAgICBzX2RvbUFnZW50
T25CcmVha3BvaW50ID0gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQoKQpA
QCAtMzcxLDYgKzM4Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5n
cygpCiAgICAgcmVsZWFzZURhbmdsaW5nTm9kZXMoKTsKICAgICBtX2NoaWxkcmVuUmVxdWVzdGVk
LmNsZWFyKCk7CiAgICAgbV9pbnNwZWN0ZWROb2Rlcy5jbGVhcigpOworICAgIG1fYnJlYWtwb2lu
dHMuY2xlYXIoKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChsb25n
IGlkKQpAQCAtNzIwLDYgKzczMywzNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZWFyY2hD
YW5jZWxlZCgpCiAgICAgbV9zZWFyY2hSZXN1bHRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKK3sK
KyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgaWYgKCFub2RlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBsb25nIHJvb3RCaXQgPSAxIDw8IHR5cGU7CisgICAgbV9icmVh
a3BvaW50cy5zZXQobm9kZSwgbV9icmVha3BvaW50cy5nZXQobm9kZSkgfCByb290Qml0KTsKKyAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hpbGQg
PSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKGNoaWxkLCByb290Qml0LCB0cnVlKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cmVtb3ZlRE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKQoreworICAgIE5vZGUq
IG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGxvbmcgcm9vdEJpdCA9IDEgPDwgdHlwZTsKKyAgICBsb25nIG1hc2sgPSBtX2Jy
ZWFrcG9pbnRzLmdldChub2RlKSAmIH5yb290Qml0OworICAgIGlmIChtYXNrKQorICAgICAgICBt
X2JyZWFrcG9pbnRzLnNldChub2RlLCBtYXNrKTsKKyAgICBlbHNlCisgICAgICAgIG1fYnJlYWtw
b2ludHMucmVtb3ZlKG5vZGUpOworICAgIGlmIChtYXNrICYgKHJvb3RCaXQgPDwgZG9tQnJlYWtw
b2ludERlcml2ZWRUeXBlU2hpZnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKE5vZGUq
IGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBpbm5lck5leHRT
aWJsaW5nKGNoaWxkKSkKKyAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKGNoaWxkLCBy
b290Qml0LCBmYWxzZSk7Cit9CisKIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRV
UkxTdHJpbmcoRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQg
fHwgZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQpAQCAtOTIwLDYgKzk2NCwxNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKGlz
V2hpdGVzcGFjZShub2RlKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fYnJlYWtwb2lu
dHMuc2l6ZSgpKSB7CisgICAgICAgIE5vZGUqIHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShub2Rl
KTsKKyAgICAgICAgaWYgKGhhc0JyZWFrcG9pbnQocGFyZW50LCBET01CcmVha3BvaW50VHlwZVN1
YnRyZWVNb2RpZmllZCkpIHsKKyAgICAgICAgICAgIGlmICghcGF1c2VPbkJyZWFrcG9pbnQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbG9uZyBtYXNrID0g
bV9icmVha3BvaW50cy5nZXQocGFyZW50KTsKKyAgICAgICAgbWFzayA9IG1hc2sgfCAobWFzayA+
PiBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCkgJiAoKDEgPDwgZG9tQnJlYWtwb2ludERl
cml2ZWRUeXBlU2hpZnQpIC0gMSk7CisgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhu
b2RlLCBtYXNrLCB0cnVlKTsKKyAgICB9CisKICAgICAvLyBXZSBjb3VsZCBiZSBhdHRhY2hpbmcg
ZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0IHRoZSBiaW5kaW5ncy4KICAgICB1bmJpbmQobm9kZSwg
Jm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiAKQEAgLTk0Niw2ICsxMDAxLDI1IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICBpZiAoaXNX
aGl0ZXNwYWNlKG5vZGUpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9icmVha3BvaW50
cy5zaXplKCkpIHsKKyAgICAgICAgaWYgKGhhc0JyZWFrcG9pbnQoaW5uZXJQYXJlbnROb2RlKG5v
ZGUpLCBET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCkpIHsKKyAgICAgICAgICAgIGlm
ICghcGF1c2VPbkJyZWFrcG9pbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgLy8gUmVtb3ZlIHN1YnRyZWUgYnJlYWtwb2ludHMuCisgICAgICAgIG1fYnJl
YWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEsIGlu
bmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBzdGFjay5sYXN0KCk7CisgICAgICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7CisgICAg
ICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICAgICAgICAgIHN0YWNrLmFwcGVuZChp
bm5lckZpcnN0Q2hpbGQobm9kZSkpOworICAgICAgICAgICAgc3RhY2suYXBwZW5kKGlubmVyTmV4
dFNpYmxpbmcobm9kZSkpOworICAgICAgICB9IHdoaWxlICghc3RhY2suaXNFbXB0eSgpKTsKKyAg
ICB9CisKICAgICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgbG9uZyBw
YXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKICAgICAvLyBJZiBw
YXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KQEAgLTk3MSw2ICsx
MDQ1LDQzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIoRWxlbWVu
dCogZWxlbWVudCkKICAgICBtX2Zyb250ZW5kLT5hdHRyaWJ1dGVzVXBkYXRlZChpZCwgYnVpbGRB
cnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JE
T01BZ2VudDo6aGFzQnJlYWtwb2ludChOb2RlKiBub2RlLCBsb25nIHR5cGUpCit7CisgICAgY29u
c3QgbG9uZyByb290Qml0ID0gMSA8PCB0eXBlOworICAgIGNvbnN0IGxvbmcgZGVyaXZlZEJpdCA9
IHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7CisgICAgcmV0dXJuIG1f
YnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgKHJvb3RCaXQgfCBkZXJpdmVkQml0KTsKK30KKworYm9v
bCBJbnNwZWN0b3JET01BZ2VudDo6cGF1c2VPbkJyZWFrcG9pbnQoKQoreworI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIHNfZG9tQWdlbnRPbkJyZWFrcG9pbnQgPSB0aGlzOwor
ICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0oKTsKKyAgICByZXR1
cm4gc19kb21BZ2VudE9uQnJlYWtwb2ludCAhPSAwOworI2VuZGlmCit9CisKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiBub2RlLCBsb25nIG1h
c2ssIGJvb2wgc2V0KQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bG9uZyBvbGRNYXNrID0gbV9icmVha3BvaW50cy5nZXQobm9kZSk7CisgICAgbG9uZyBkZXJpdmVk
TWFzayA9IG1hc2sgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7CisgICAgbG9uZyBu
ZXdNYXNrID0gc2V0ID8gb2xkTWFzayB8IGRlcml2ZWRNYXNrIDogb2xkTWFzayAmIH5kZXJpdmVk
TWFzazsKKyAgICBpZiAobmV3TWFzaykKKyAgICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwg
bmV3TWFzayk7CisgICAgZWxzZQorICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsK
KworICAgIGxvbmcgbmV3Um9vdE1hc2sgPSBtYXNrICYgfm5ld01hc2s7CisgICAgaWYgKCFuZXdS
b290TWFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVy
Rmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkp
CisgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgbmV3Um9vdE1hc2ssIHNl
dCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyhsb25nIG5vZGVJZCwg
Ym9vbCBhdXRob3JPbmx5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBzdHlsZXMpCiB7CiAgICAg
Tm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmgKaW5kZXggNTMxN2EyMi4uNGRiZTc5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCkBAIC0xMTIsNiArMTEyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUobG9uZyBub2RlSWQpOwogICAgICAgICB2b2lkIHBl
cmZvcm1TZWFyY2goY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1
blN5bmNocm9ub3VzbHkpOwogICAgICAgICB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CisgICAgICAg
IHZvaWQgc2V0RE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKTsKKyAgICAgICAg
dm9pZCByZW1vdmVET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOwogCiAgICAg
ICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBDU1Mgc3R5bGVzIGlu
c3BlY3Rpb24uCiAgICAgICAgIHZvaWQgZ2V0U3R5bGVzKGxvbmcgbm9kZUlkLCBib29sIGF1dGhv
ck9ubHksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHN0eWxlcyk7CkBAIC0xNTYsNiArMTU4LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIHB1c2hEb2N1bWVudFRvRnJv
bnRlbmQoKTsKIAorICAgICAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9kZSogbm9kZSwgbG9uZyB0
eXBlKTsKKyAgICAgICAgYm9vbCBwYXVzZU9uQnJlYWtwb2ludCgpOworICAgICAgICB2b2lkIHVw
ZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290LCBsb25nIG1hc2ssIGJvb2wgdmFsdWUp
OworCiAgICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckF0
dHJpYnV0ZVN0eWxlcyhFbGVtZW50KiBlbGVtZW50KTsKICAgICAgICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYnVpbGRBcnJheUZvckNTU1J1bGVzKERvY3VtZW50KiBvd25lckRvY3VtZW50
LCBDU1NSdWxlTGlzdCopOwogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWls
ZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoRWxlbWVudCogZWxlbWVudCwgYm9vbCBhdXRob3JPbmx5
KTsKQEAgLTIwOSw2ICsyMTUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRpbWVy
PEluc3BlY3RvckRPTUFnZW50PiBtX21hdGNoSm9ic1RpbWVyOwogICAgICAgICBIYXNoU2V0PFJl
ZlB0cjxOb2RlPiA+IG1fc2VhcmNoUmVzdWx0czsKICAgICAgICAgVmVjdG9yPGxvbmc+IG1faW5z
cGVjdGVkTm9kZXM7CisgICAgICAgIEhhc2hNYXA8Tm9kZSosIGxvbmc+IG1fYnJlYWtwb2ludHM7
CisKKyAgICAgICAgc3RhdGljIEluc3BlY3RvckRPTUFnZW50KiBzX2RvbUFnZW50T25CcmVha3Bv
aW50OwogICAgIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCBjN2QzOWYxLi4yYWQwYmYyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpA
QCAtMzI2LDYgKzMyNiw4IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LkVkaXRU
YWdCbGFja2xpc3QgPSBbCiAgICAgImh0bWwiLCAiaGVhZCIsICJib2R5IgogXS5rZXlTZXQoKTsK
IAorV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0
cmVlTW9kaWZpZWQgPSAwOworCiBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oc2VhcmNoUXVl
cnkpCiAgICAgewpAQCAtNzYxLDYgKzc2MywxNSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJFZGl0IGFzIEhUTUwiKSwgdGhpcy5fZWRpdEFzSFRNTC5iaW5k
KHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvcHkgYXMgSFRNTCIpLCB0aGlzLl9jb3B5SFRNTC5iaW5kKHRoaXMpKTsKICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBO
b2RlIiksIHRoaXMucmVtb3ZlLmJpbmQodGhpcykpOworCisgICAgICAgIGlmIChQcmVmZXJlbmNl
cy5kb21CcmVha3BvaW50c0VuYWJsZWQpIHsKKyAgICAgICAgICAgIC8vIEFkZCBkZWJidWdpbmct
cmVsYXRlZCBhY3Rpb25zCisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3Io
KTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdG9wIG9uIHN1YnRyZWUgbW9kaWZpY2F0aW9ucyIpLAorICAgICAgICAgICAgICAgIElu
c3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludC5iaW5kKEluc3BlY3RvckJhY2tlbmQsIHRo
aXMucmVwcmVzZW50ZWRPYmplY3QuaWQsIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50
LkRPTUJyZWFrcG9pbnRUeXBlU3VidHJlZU1vZGlmaWVkKSk7CisgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIEJyZWFrcG9pbnRz
IiksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01CcmVha3BvaW50
LmJpbmQoSW5zcGVjdG9yQmFja2VuZCwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCwgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZp
ZWQpKTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1lbnU6
IGZ1bmN0aW9uKGNvbnRleHRNZW51LCB0ZXh0Tm9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcwppbmRleCBjODRiYTc5Li42OGU0MGM0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00Myw3ICs0Myw4IEBAIHZhciBQcmVmZXJlbmNlcyA9
IHsKICAgICBkZWJ1Z2dlckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAgIHByb2ZpbGVyQWx3YXlz
RW5hYmxlZDogZmFsc2UsCiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0cnVlLAotICAgIG9ubGlu
ZURldGVjdGlvbkVuYWJsZWQ6IHRydWUKKyAgICBvbmxpbmVEZXRlY3Rpb25FbmFibGVkOiB0cnVl
LAorICAgIGRvbUJyZWFrcG9pbnRzRW5hYmxlZDogZmFsc2UKIH0KIAogV2ViSW5zcGVjdG9yLnBv
cHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyA9IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggZjQ4NmQ0OS4uNmM1OGU4YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMDgtMTkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGVuYWJsZSBET00gYnJlYWtwb2ludHMgZm9yIGNocm9taXVtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NgorCisgICAgICAgICogc3Jj
L2pzL0RldlRvb2xzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisKIDIwMTAt
MDgtMTkgIFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
anMvRGV2VG9vbHMuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCmluZGV4
IDBmZDY2YzkuLmUzZTAyMDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2
VG9vbHMuanMKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNzQs
NiArNzQsNyBAQCBXZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIFByZWZlcmVu
Y2VzLnByb2ZpbGVyQWx3YXlzRW5hYmxlZCA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMuY2FuRWRp
dFNjcmlwdFNvdXJjZSA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMub25saW5lRGV0ZWN0aW9uRW5h
YmxlZCA9IGZhbHNlOworICAgIFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxlZCA9IHRy
dWU7CiAKICAgICBvbGRMb2FkZWQuY2FsbChXZWJJbnNwZWN0b3IpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64945</attachid>
            <date>2010-08-20 04:44:15 -0700</date>
            <delta_ts>2010-08-20 06:12:49 -0700</delta_ts>
            <desc>Binary diff for localizedStrings.js</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>19123</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzFkOGJkYy4uZmJjODVlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wOC0xOSAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50IGJyZWFraW5nIG9u
IERPTSBub2RlIHN1YnRyZWUgbXV0YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4ODYKKworICAgICAgICBBZGQgdHdvIGVudHJpZXMgdG8g
V2ViIEluc3BlY3RvciBET00gZWxlbWVudCBjb250ZXh0IG1lbnU6CisgICAgICAgIDEuICJTdG9w
IG9uIHN1YnRyZWUgbW9kaWZpY2F0aW9ucyI6IHdpbGwgYnJlYWsgb24gYWRkaW5nL3JlbW92aW5n
IG9mIGFueSBlbGVtZW50IHdoaWNoIGlzIGEgY2hpbGQgb2YgdGhlIERPTSBlbGVtZW50CisgICAg
ICAgIDIuICJSZW1vdmUgYnJlYWtwb2ludHMiOiB3aWxsIHJlbW92ZSBhbGwgYnJlYWtwb2ludHMg
YXNzb2NpYXRlZCB3aXRoIHRoZSBET00gZWxlbWVudAorCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwYXVzZU9uQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29u
dGV4dE1lbnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisK
IDIwMTAtMDgtMjAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMDEwYzI4Y2Y5ZWU2ZWJjNGQ2
ZWVjM2FjYTVmMGY3ZmY3ZjZhZjMzNi4uYzcyOGMxNmI4YTA3M2E4NzE5NGY3YTBhYzg2ZDA5NDUy
NjZhNWYwZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxNzEKemNtWD9jbig0ej9yVlds
NmxhSHMxT3dMeHxvQlRYb1g+eHRJJmc3bHhlNDhDSktGSE1QR3ZxTlNGY2RTQ0c5KXBTCnpGY2RN
UTAtKnYhRTwtKjszUFVEQzhXMU5sQm0ha0pmZypXOGJ4STdlS3pVbXJSJD5TU2lzdiZGME5KRlFW
JEh6QwpSa2koRWFJajJ5MHZ1NWpqMXBzNl9EIyFvOwoKZGVsdGEgMTkKYmNtZXh4bWcmVDRyVlds
Nm9BK21Za2w3c0JIZUNTI1g7Y1pfCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAppbmRleCBjZDgwZGU0Li5lY2I3ZmE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmNwcApAQCAtMjA1LDYgKzIwNSwxMSBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpwYXVzZSgpCiAgICAgbV9wYXVzZU9uTmV4dFN0YXRlbWVudCA9IHRydWU7CiB9CiAK
K3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7CisgICAgLy8gRklYTUUo
V0s0MzMzMik6IGltcGxlbWVudCB0aGlzLgorfQorCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpj
b250aW51ZVByb2dyYW0oKQogewogICAgIGlmICghbV9wYXVzZWQpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZmQ4OTc2Yi4uNDMyZmU5YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUp
OwogCiAgICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAgdm9p
ZCBjb250aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAgICAg
dm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcAppbmRleCAwYzI0Njc4Li4zNjVkNjkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMjI4LDYgKzIyOCwyOCBAQCB2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpwYXVzZSgpCiAgICAgICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVhaygpOwogfQog
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW0oKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBjYWxsYmFj
a1RlbXBsYXRlLCAoKSk7CisKKyAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhbGxiYWNrVGVtcGxhdGUuSXNFbXB0eSgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOworICAgICAgICBjYWxsYmFj
a1RlbXBsYXRlLT5TZXRDYWxsSGFuZGxlcigmU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKTsKKyAgICB9CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKKyAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqY29udGV4dDsK
KyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gYnJlYWtQcm9ncmFtRnVuY3Rpb24gPSBjYWxs
YmFja1RlbXBsYXRlLT5HZXRGdW5jdGlvbigpOworICAgIHY4OjpEZWJ1Zzo6Q2FsbChicmVha1By
b2dyYW1GdW5jdGlvbik7CisgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5DbGVhcigpOworfQorCiB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjb250aW51ZVByb2dyYW0oKQogewogICAgIGlmIChtX3Bh
dXNlZFBhZ2UpCkBAIC0zMjMsNiArMzQ1LDQxIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1
blBlbmRpbmdUYXNrcygpCiAgICAgdjg6OkRlYnVnOjpQcm9jZXNzRGVidWdNZXNzYWdlcygpOwog
fQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgQVNTRVJUKDIgPT0g
YXJncy5MZW5ndGgoKSk7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmJyZWFrUHJv
Z3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKKyAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dy
YW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSkKK3sKKyAgICAvLyBEb24n
dCBhbGxvdyBuZXN0ZWQgYnJlYWtzLgorICAgIGlmIChtX3BhdXNlZFBhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHJldHJpZXZlRnJhbWUobV9wYXVzZWRQYWdlQ29u
dGV4dCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2NyaXB0RGVi
dWdMaXN0ZW5lciogbGlzdGVuZXIgPSBtX2xpc3RlbmVyc01hcC5nZXQoZnJhbWUtPnBhZ2UoKSk7
CisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9leGVjdXRpb25T
dGF0ZS5zZXQoZXhlY3V0aW9uU3RhdGUpOworICAgIG1fcGF1c2VkUGFnZSA9IGZyYW1lLT5wYWdl
KCk7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IFNjcmlwdFN0YXRl
Ojpmb3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOworICAgIGxpc3RlbmVyLT5kaWRQYXVz
ZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOworCisgICAgLy8gV2FpdCBmb3IgY29udGludWUgb3Ig
c3RlcCBjb21tYW5kLgorICAgIG1fY2xpZW50TWVzc2FnZUxvb3AtPnJ1bihtX3BhdXNlZFBhZ2Up
OworICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsKKworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkg
aGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3RlZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1
Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKSkK
KyAgICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVlKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnY4RGVidWdFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxz
JiBldmVudERldGFpbHMpCiB7CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmhhbmRs
ZVY4RGVidWdFdmVudChldmVudERldGFpbHMpOwpAQCAtMzY1LDIxICs0MjIsOSBAQCB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVu
dERldGFpbHMmIGV2ZW50RAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVh
a3MuCi0gICAgICAgICAgICAgICAgaWYgKG1fcGF1c2VkUGFnZSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uU3RhdGUuc2V0KGV2ZW50RGV0
YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAgICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2Ug
PSBmcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAgICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50Q2Fs
bEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSk7Ci0gICAgICAgICAgICAg
ICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBXYWl0IGZvciBjb250aW51ZSBvciBzdGVwIGNvbW1hbmQuCi0gICAgICAgICAg
ICAgICAgbV9jbGllbnRNZXNzYWdlTG9vcC0+cnVuKG1fcGF1c2VkUGFnZSk7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2UpOwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGxp
c3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbmVzdGVkIGxvb3AuCi0gICAgICAg
ICAgICAgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNN
YXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlk
Q29udGludWUoKTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2VDb250ZXh0ID0gKmV2ZW50
Q29udGV4dDsKKyAgICAgICAgICAgICAgICBicmVha1Byb2dyYW0oZXZlbnREZXRhaWxzLkdldEV4
ZWN1dGlvblN0YXRlKCkpOworICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xl
YXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBhMWUwYTQ3Li4xZWFkODZiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBw
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIAogICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2b2lkIGJy
ZWFrUHJvZ3JhbSgpOwogICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7CiAgICAgdm9pZCBzdGVw
SW50b1N0YXRlbWVudCgpOwogICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKQEAgLTExMSw2
ICsxMTIsOSBAQCBwcml2YXRlOgogICAgIFNjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgflNjcmlw
dERlYnVnU2VydmVyKCkgeyB9CiAKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGJy
ZWFrUHJvZ3JhbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpOworICAgIHZvaWQg
YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUpOworCiAg
ICAgc3RhdGljIHZvaWQgdjhEZWJ1Z0V2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkRlYnVnOjpFdmVu
dERldGFpbHMmIGV2ZW50RGV0YWlscyk7CiAgICAgdm9pZCBoYW5kbGVWOERlYnVnRXZlbnQoY29u
c3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RGV0YWlscyk7CiAKQEAgLTEyOCw2ICsx
MzIsNyBAQCBwcml2YXRlOgogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2V4ZWN1dGlvblN0
YXRlOwogICAgIE93blB0cjxDbGllbnRNZXNzYWdlTG9vcD4gbV9jbGllbnRNZXNzYWdlTG9vcDsK
ICAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtX3Bh
dXNlZFBhZ2VDb250ZXh0OwogICAgIGJvb2wgbV9lbmFibGVkOwogfTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5pZGwKaW5kZXggMWM2NmI1OS4uOTJmZjM3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
CkBAIC0xNzYsNiArMTc2LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbaGFuZGxlcj1ET01d
IHZvaWQgcGVyZm9ybVNlYXJjaChpbiBTdHJpbmcgcXVlcnksIGluIGJvb2xlYW4gcnVuU3luY2hy
b25vdXNseSk7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwog
ICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGluIGxv
bmcgY2FsbElkLCBpbiBTdHJpbmcgcGF0aCwgb3V0IGxvbmcgbm9kZUlkKTsKKyAgICAgICAgW2hh
bmRsZXI9RE9NXSB2b2lkIHNldERPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxvbmcg
dHlwZSk7CisgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCByZW1vdmVET01CcmVha3BvaW50KGlu
IGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwogCiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xs
ZXJdIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKICAgICAgICAgW2hhbmRsZXI9Q29udHJv
bGxlcl0gdm9pZCBoaWdobGlnaHRET01Ob2RlKGluIGxvbmcgbm9kZUlkKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MjQzMjk5Li4zMjU1OWFhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5j
bHVkZSAiUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiU2NyaXB0RGVi
dWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
U3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xOTYsOCArMTk3LDE2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NYXRjaFBsYWluVGV4dEpvYigpIHsgfQogfTsKIAorZW51
bSBET01CcmVha3BvaW50VHlwZSB7CisgICAgRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZp
ZWQgPSAwCit9OworCitjb25zdCBsb25nIGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0ID0g
MTY7CisKIH0KIAorSW5zcGVjdG9yRE9NQWdlbnQqIEluc3BlY3RvckRPTUFnZW50OjpzX2RvbUFn
ZW50T25CcmVha3BvaW50ID0gMDsKKwogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFn
ZW50KEluc3BlY3RvckNTU1N0b3JlKiBjc3NTdG9yZSwgUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQogICAgIDogRXZlbnRMaXN0ZW5lcihJbnNwZWN0b3JET01BZ2VudFR5cGUpCiAg
ICAgLCBtX2Nzc1N0b3JlKGNzc1N0b3JlKQpAQCAtMjEwLDYgKzIxOSw5IEBAIEluc3BlY3RvckRP
TUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnNwZWN0b3JDU1NTdG9yZSogY3NzU3RvcmUsIFJl
bW90ZUluc3BlY3RvCiBJbnNwZWN0b3JET01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIHsK
ICAgICByZXNldCgpOworCisgICAgaWYgKHRoaXMgPT0gc19kb21BZ2VudE9uQnJlYWtwb2ludCkK
KyAgICAgICAgc19kb21BZ2VudE9uQnJlYWtwb2ludCA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnJlc2V0KCkKQEAgLTM3MSw2ICszODMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaXNjYXJkQmluZGluZ3MoKQogICAgIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAgICAg
bV9jaGlsZHJlblJlcXVlc3RlZC5jbGVhcigpOwogICAgIG1faW5zcGVjdGVkTm9kZXMuY2xlYXIo
KTsKKyAgICBtX2JyZWFrcG9pbnRzLmNsZWFyKCk7CiB9CiAKIE5vZGUqIEluc3BlY3RvckRPTUFn
ZW50Ojpub2RlRm9ySWQobG9uZyBpZCkKQEAgLTcyMCw2ICs3MzMsMzcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2VhcmNoQ2FuY2VsZWQoKQogICAgIG1fc2VhcmNoUmVzdWx0cy5jbGVhcigp
OwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KGxvbmcgbm9k
ZUlkLCBsb25nIHR5cGUpCit7CisgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbG9uZyByb290Qml0ID0gMSA8
PCB0eXBlOworICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fYnJlYWtwb2ludHMuZ2V0KG5v
ZGUpIHwgcm9vdEJpdCk7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChu
b2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCisgICAgICAgIHVw
ZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgdHJ1ZSk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcg
dHlwZSkKK3sKKyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBsb25nIHJvb3RCaXQgPSAxIDw8IHR5cGU7Cisg
ICAgbG9uZyBtYXNrID0gbV9icmVha3BvaW50cy5nZXQobm9kZSkgJiB+cm9vdEJpdDsKKyAgICBp
ZiAobWFzaykKKyAgICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwgbWFzayk7CisgICAgZWxz
ZQorICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICBpZiAobWFzayAmIChy
b290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7
IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCisgICAgICAgIHVwZGF0ZVN1YnRyZWVC
cmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgZmFsc2UpOworfQorCiBTdHJpbmcgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QKIHsK
ICAgICBpZiAoIWRvY3VtZW50IHx8IGRvY3VtZW50LT51cmwoKS5pc051bGwoKSkKQEAgLTkyMCw2
ICs5NjQsMTcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2Rl
KiBub2RlKQogICAgIGlmIChpc1doaXRlc3BhY2Uobm9kZSkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgeworICAgICAgICBOb2RlKiBwYXJlbnQgPSBp
bm5lclBhcmVudE5vZGUobm9kZSk7CisgICAgICAgIGlmIChoYXNCcmVha3BvaW50KHBhcmVudCwg
RE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQpKSB7CisgICAgICAgICAgICBpZiAoIXBh
dXNlT25CcmVha3BvaW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGxvbmcgbWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KHBhcmVudCk7CisgICAgICAgIG1h
c2sgPSBtYXNrIHwgKG1hc2sgPj4gZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQpICYgKCgx
IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSAtIDEpOworICAgICAgICB1cGRhdGVT
dWJ0cmVlQnJlYWtwb2ludHMobm9kZSwgbWFzaywgdHJ1ZSk7CisgICAgfQorCiAgICAgLy8gV2Ug
Y291bGQgYmUgYXR0YWNoaW5nIGV4aXN0aW5nIHN1YnRyZWUuIEZvcmdldCB0aGUgYmluZGluZ3Mu
CiAgICAgdW5iaW5kKG5vZGUsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogCkBAIC05NDYsNiAr
MTAwMSwyNSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUq
IG5vZGUpCiAgICAgaWYgKGlzV2hpdGVzcGFjZShub2RlKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIGlmIChoYXNCcmVha3BvaW50
KGlubmVyUGFyZW50Tm9kZShub2RlKSwgRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQp
KSB7CisgICAgICAgICAgICBpZiAoIXBhdXNlT25CcmVha3BvaW50KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFJlbW92ZSBzdWJ0cmVlIGJyZWFrcG9p
bnRzLgorICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICAgICAgVmVjdG9y
PE5vZGUqPiBzdGFjaygxLCBpbm5lckZpcnN0Q2hpbGQobm9kZSkpOworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFzdCgpOworICAgICAgICAgICAgc3RhY2su
cmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAgICAg
ICAgICBzdGFjay5hcHBlbmQoaW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKKyAgICAgICAgICAgIHN0
YWNrLmFwcGVuZChpbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKKyAgICAgICAgfSB3aGlsZSAoIXN0
YWNrLmlzRW1wdHkoKSk7CisgICAgfQorCiAgICAgTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50
Tm9kZSgpOwogICAgIGxvbmcgcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBh
cmVudCk7CiAgICAgLy8gSWYgcGFyZW50IGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUg
ZXZlbnQuCkBAIC05NzEsNiArMTA0NSw0MCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRN
b2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgbV9mcm9udGVuZC0+YXR0cmlidXRl
c1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7CiB9
CiAKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6Omhhc0JyZWFrcG9pbnQoTm9kZSogbm9kZSwgbG9u
ZyB0eXBlKQoreworICAgIGNvbnN0IGxvbmcgcm9vdEJpdCA9IDEgPDwgdHlwZTsKKyAgICBjb25z
dCBsb25nIGRlcml2ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNo
aWZ0OworICAgIHJldHVybiBtX2JyZWFrcG9pbnRzLmdldChub2RlKSAmIChyb290Qml0IHwgZGVy
aXZlZEJpdCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6OnBhdXNlT25CcmVha3BvaW50
KCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBzX2RvbUFnZW50T25C
cmVha3BvaW50ID0gdGhpczsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQ
cm9ncmFtKCk7CisgICAgcmV0dXJuIHNfZG9tQWdlbnRPbkJyZWFrcG9pbnQgIT0gMDsKKyNlbmRp
ZgorfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMo
Tm9kZSogbm9kZSwgbG9uZyBtYXNrLCBib29sIHNldCkKK3sKKyAgICBsb25nIG9sZE1hc2sgPSBt
X2JyZWFrcG9pbnRzLmdldChub2RlKTsKKyAgICBsb25nIGRlcml2ZWRNYXNrID0gbWFzayA8PCBk
b21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKKyAgICBsb25nIG5ld01hc2sgPSBzZXQgPyBv
bGRNYXNrIHwgZGVyaXZlZE1hc2sgOiBvbGRNYXNrICYgfmRlcml2ZWRNYXNrOworICAgIGlmIChu
ZXdNYXNrKQorICAgICAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBuZXdNYXNrKTsKKyAgICBl
bHNlCisgICAgICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworCisgICAgbG9uZyBuZXdS
b290TWFzayA9IG1hc2sgJiB+bmV3TWFzazsKKyAgICBpZiAoIW5ld1Jvb3RNYXNrKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUp
OyBjaGlsZDsgY2hpbGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgdXBkYXRl
U3VidHJlZUJyZWFrcG9pbnRzKGNoaWxkLCBuZXdSb290TWFzaywgc2V0KTsKK30KKwogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVzKGxvbmcgbm9kZUlkLCBib29sIGF1dGhvck9ubHks
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHN0eWxlcykKIHsKICAgICBOb2RlKiBub2RlID0gbm9k
ZUZvcklkKG5vZGVJZCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA1
MzE3YTIyLi40ZGJlNzkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAg
LTExMiw2ICsxMTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYWRkSW5z
cGVjdGVkTm9kZShsb25nIG5vZGVJZCk7CiAgICAgICAgIHZvaWQgcGVyZm9ybVNlYXJjaChjb25z
dCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGJvb2wgcnVuU3luY2hyb25vdXNseSk7
CiAgICAgICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsKKyAgICAgICAgdm9pZCBzZXRET01CcmVh
a3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHJlbW92ZURPTUJy
ZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSk7CiAKICAgICAgICAgLy8gTWV0aG9kcyBj
YWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIENTUyBzdHlsZXMgaW5zcGVjdGlvbi4KICAgICAg
ICAgdm9pZCBnZXRTdHlsZXMobG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogc3R5bGVzKTsKQEAgLTE1Niw2ICsxNTgsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIGJvb2wgcHVzaERvY3VtZW50VG9Gcm9udGVuZCgpOwogCisgICAg
ICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiBub2RlLCBsb25nIHR5cGUpOworICAgICAgICBi
b29sIHBhdXNlT25CcmVha3BvaW50KCk7CisgICAgICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKE5vZGUqIHJvb3QsIGxvbmcgbWFzaywgYm9vbCB2YWx1ZSk7CisKICAgICAgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlU3R5bGVzKEVs
ZW1lbnQqIGVsZW1lbnQpOwogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWls
ZEFycmF5Rm9yQ1NTUnVsZXMoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1J1bGVMaXN0Kik7
CiAgICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9F
bGVtZW50cyhFbGVtZW50KiBlbGVtZW50LCBib29sIGF1dGhvck9ubHkpOwpAQCAtMjA5LDYgKzIx
NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGltZXI8SW5zcGVjdG9yRE9NQWdl
bnQ+IG1fbWF0Y2hKb2JzVGltZXI7CiAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9z
ZWFyY2hSZXN1bHRzOwogICAgICAgICBWZWN0b3I8bG9uZz4gbV9pbnNwZWN0ZWROb2RlczsKKyAg
ICAgICAgSGFzaE1hcDxOb2RlKiwgbG9uZz4gbV9icmVha3BvaW50czsKKworICAgICAgICBzdGF0
aWMgSW5zcGVjdG9yRE9NQWdlbnQqIHNfZG9tQWdlbnRPbkJyZWFrcG9pbnQ7CiAgICAgfTsKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVP
dXRsaW5lLmpzCmluZGV4IGM3ZDM5ZjEuLjJhZDBiZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC0zMjYsNiArMzI2LDgg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRWRpdFRhZ0JsYWNrbGlzdCA9IFsK
ICAgICAiaHRtbCIsICJoZWFkIiwgImJvZHkiCiBdLmtleVNldCgpOwogCitXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDA7
CisKIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBo
aWdobGlnaHRTZWFyY2hSZXN1bHRzOiBmdW5jdGlvbihzZWFyY2hRdWVyeSkKICAgICB7CkBAIC03
NjEsNiArNzYzLDE1IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkVkaXQgYXMgSFRNTCIpLCB0aGlzLl9lZGl0QXNIVE1MLmJpbmQodGhpcykpOwogICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBI
VE1MIiksIHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5yZW1v
dmUuYmluZCh0aGlzKSk7CisKKyAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRz
RW5hYmxlZCkgeworICAgICAgICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMK
KyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3Agb24gc3Vi
dHJlZSBtb2RpZmljYXRpb25zIiksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
ZXRET01CcmVha3BvaW50LmJpbmQoSW5zcGVjdG9yQmFja2VuZCwgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5pZCwgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5
cGVTdWJ0cmVlTW9kaWZpZWQpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtwb2ludHMiKSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJyZWFrcG9pbnQuYmluZChJbnNwZWN0b3JC
YWNrZW5kLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkLCBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCkpOworICAgICAgICB9
CiAgICAgfSwKIAogICAgIF9wb3B1bGF0ZVRleHRDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4
dE1lbnUsIHRleHROb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmlu
ZGV4IGM4NGJhNzkuLjY4ZTQwYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5ncy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKQEAgLTQzLDcgKzQzLDggQEAgdmFyIFByZWZlcmVuY2VzID0gewogICAgIGRlYnVnZ2Vy
QWx3YXlzRW5hYmxlZDogZmFsc2UsCiAgICAgcHJvZmlsZXJBbHdheXNFbmFibGVkOiBmYWxzZSwK
ICAgICBhdWRpdHNQYW5lbEVuYWJsZWQ6IHRydWUsCi0gICAgb25saW5lRGV0ZWN0aW9uRW5hYmxl
ZDogdHJ1ZQorICAgIG9ubGluZURldGVjdGlvbkVuYWJsZWQ6IHRydWUsCisgICAgZG9tQnJlYWtw
b2ludHNFbmFibGVkOiBmYWxzZQogfQogCiBXZWJJbnNwZWN0b3IucG9wdWxhdGVBcHBsaWNhdGlv
blNldHRpbmdzID0gZnVuY3Rpb24oc2V0dGluZ3NTdHJpbmcpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmNDg2
ZDQ5Li42YzU4ZThhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wOC0xOSAg
UGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZW5hYmxlIERP
TSBicmVha3BvaW50cyBmb3IgY2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyODg2CisKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKwogMjAxMC0wOC0xOSAgVmluY2VudCBT
Y2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKaW5kZXggMGZkNjZjOS4uZTNlMDIw
NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCkBAIC03NCw2ICs3NCw3IEBAIFdlYklu
c3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdh
eXNFbmFibGVkID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlID0g
dHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5vbmxpbmVEZXRlY3Rpb25FbmFibGVkID0gZmFsc2U7Cisg
ICAgUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKIAogICAgIG9sZExv
YWRlZC5jYWxsKFdlYkluc3BlY3Rvcik7CiB9Cg==
</data>
<flag name="review"
          id="53621"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64950</attachid>
            <date>2010-08-20 06:12:49 -0700</date>
            <delta_ts>2010-08-20 06:29:59 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>19123</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzFkOGJkYy4uZmJjODVlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wOC0xOSAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50IGJyZWFraW5nIG9u
IERPTSBub2RlIHN1YnRyZWUgbXV0YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4ODYKKworICAgICAgICBBZGQgdHdvIGVudHJpZXMgdG8g
V2ViIEluc3BlY3RvciBET00gZWxlbWVudCBjb250ZXh0IG1lbnU6CisgICAgICAgIDEuICJTdG9w
IG9uIHN1YnRyZWUgbW9kaWZpY2F0aW9ucyI6IHdpbGwgYnJlYWsgb24gYWRkaW5nL3JlbW92aW5n
IG9mIGFueSBlbGVtZW50IHdoaWNoIGlzIGEgY2hpbGQgb2YgdGhlIERPTSBlbGVtZW50CisgICAg
ICAgIDIuICJSZW1vdmUgYnJlYWtwb2ludHMiOiB3aWxsIHJlbW92ZSBhbGwgYnJlYWtwb2ludHMg
YXNzb2NpYXRlZCB3aXRoIHRoZSBET00gZWxlbWVudAorCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwYXVzZU9uQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29u
dGV4dE1lbnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisK
IDIwMTAtMDgtMjAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMDEwYzI4Y2Y5ZWU2ZWJjNGQ2
ZWVjM2FjYTVmMGY3ZmY3ZjZhZjMzNi4uYzcyOGMxNmI4YTA3M2E4NzE5NGY3YTBhYzg2ZDA5NDUy
NjZhNWYwZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxNzEKemNtWD9jbig0ej9yVlds
NmxhSHMxT3dMeHxvQlRYb1g+eHRJJmc3bHhlNDhDSktGSE1QR3ZxTlNGY2RTQ0c5KXBTCnpGY2RN
UTAtKnYhRTwtKjszUFVEQzhXMU5sQm0ha0pmZypXOGJ4STdlS3pVbXJSJD5TU2lzdiZGME5KRlFW
JEh6QwpSa2koRWFJajJ5MHZ1NWpqMXBzNl9EIyFvOwoKZGVsdGEgMTkKYmNtZXh4bWcmVDRyVlds
Nm9BK21Za2w3c0JIZUNTI1g7Y1pfCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAppbmRleCBjZDgwZGU0Li5lY2I3ZmE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmNwcApAQCAtMjA1LDYgKzIwNSwxMSBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpwYXVzZSgpCiAgICAgbV9wYXVzZU9uTmV4dFN0YXRlbWVudCA9IHRydWU7CiB9CiAK
K3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7CisgICAgLy8gRklYTUUo
V0s0MzMzMik6IGltcGxlbWVudCB0aGlzLgorfQorCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpj
b250aW51ZVByb2dyYW0oKQogewogICAgIGlmICghbV9wYXVzZWQpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZmQ4OTc2Yi4uNDMyZmU5YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUp
OwogCiAgICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAgdm9p
ZCBjb250aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAgICAg
dm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcAppbmRleCAwYzI0Njc4Li4zNjVkNjkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMjI4LDYgKzIyOCwyOCBAQCB2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpwYXVzZSgpCiAgICAgICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVhaygpOwogfQog
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW0oKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBjYWxsYmFj
a1RlbXBsYXRlLCAoKSk7CisKKyAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhbGxiYWNrVGVtcGxhdGUuSXNFbXB0eSgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOworICAgICAgICBjYWxsYmFj
a1RlbXBsYXRlLT5TZXRDYWxsSGFuZGxlcigmU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKTsKKyAgICB9CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKKyAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqY29udGV4dDsK
KyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gYnJlYWtQcm9ncmFtRnVuY3Rpb24gPSBjYWxs
YmFja1RlbXBsYXRlLT5HZXRGdW5jdGlvbigpOworICAgIHY4OjpEZWJ1Zzo6Q2FsbChicmVha1By
b2dyYW1GdW5jdGlvbik7CisgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5DbGVhcigpOworfQorCiB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjb250aW51ZVByb2dyYW0oKQogewogICAgIGlmIChtX3Bh
dXNlZFBhZ2UpCkBAIC0zMjMsNiArMzQ1LDQxIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1
blBlbmRpbmdUYXNrcygpCiAgICAgdjg6OkRlYnVnOjpQcm9jZXNzRGVidWdNZXNzYWdlcygpOwog
fQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgQVNTRVJUKDIgPT0g
YXJncy5MZW5ndGgoKSk7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmJyZWFrUHJv
Z3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKKyAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dy
YW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSkKK3sKKyAgICAvLyBEb24n
dCBhbGxvdyBuZXN0ZWQgYnJlYWtzLgorICAgIGlmIChtX3BhdXNlZFBhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHJldHJpZXZlRnJhbWUobV9wYXVzZWRQYWdlQ29u
dGV4dCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2NyaXB0RGVi
dWdMaXN0ZW5lciogbGlzdGVuZXIgPSBtX2xpc3RlbmVyc01hcC5nZXQoZnJhbWUtPnBhZ2UoKSk7
CisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9leGVjdXRpb25T
dGF0ZS5zZXQoZXhlY3V0aW9uU3RhdGUpOworICAgIG1fcGF1c2VkUGFnZSA9IGZyYW1lLT5wYWdl
KCk7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IFNjcmlwdFN0YXRl
Ojpmb3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOworICAgIGxpc3RlbmVyLT5kaWRQYXVz
ZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOworCisgICAgLy8gV2FpdCBmb3IgY29udGludWUgb3Ig
c3RlcCBjb21tYW5kLgorICAgIG1fY2xpZW50TWVzc2FnZUxvb3AtPnJ1bihtX3BhdXNlZFBhZ2Up
OworICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsKKworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkg
aGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3RlZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1
Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKSkK
KyAgICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVlKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnY4RGVidWdFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxz
JiBldmVudERldGFpbHMpCiB7CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmhhbmRs
ZVY4RGVidWdFdmVudChldmVudERldGFpbHMpOwpAQCAtMzY1LDIxICs0MjIsOSBAQCB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVu
dERldGFpbHMmIGV2ZW50RAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVh
a3MuCi0gICAgICAgICAgICAgICAgaWYgKG1fcGF1c2VkUGFnZSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uU3RhdGUuc2V0KGV2ZW50RGV0
YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAgICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2Ug
PSBmcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAgICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50Q2Fs
bEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSk7Ci0gICAgICAgICAgICAg
ICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBXYWl0IGZvciBjb250aW51ZSBvciBzdGVwIGNvbW1hbmQuCi0gICAgICAgICAg
ICAgICAgbV9jbGllbnRNZXNzYWdlTG9vcC0+cnVuKG1fcGF1c2VkUGFnZSk7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2UpOwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGxp
c3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbmVzdGVkIGxvb3AuCi0gICAgICAg
ICAgICAgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNN
YXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlk
Q29udGludWUoKTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2VDb250ZXh0ID0gKmV2ZW50
Q29udGV4dDsKKyAgICAgICAgICAgICAgICBicmVha1Byb2dyYW0oZXZlbnREZXRhaWxzLkdldEV4
ZWN1dGlvblN0YXRlKCkpOworICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xl
YXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBhMWUwYTQ3Li4xZWFkODZiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBw
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIAogICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2b2lkIGJy
ZWFrUHJvZ3JhbSgpOwogICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7CiAgICAgdm9pZCBzdGVw
SW50b1N0YXRlbWVudCgpOwogICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKQEAgLTExMSw2
ICsxMTIsOSBAQCBwcml2YXRlOgogICAgIFNjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgflNjcmlw
dERlYnVnU2VydmVyKCkgeyB9CiAKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGJy
ZWFrUHJvZ3JhbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpOworICAgIHZvaWQg
YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUpOworCiAg
ICAgc3RhdGljIHZvaWQgdjhEZWJ1Z0V2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkRlYnVnOjpFdmVu
dERldGFpbHMmIGV2ZW50RGV0YWlscyk7CiAgICAgdm9pZCBoYW5kbGVWOERlYnVnRXZlbnQoY29u
c3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RGV0YWlscyk7CiAKQEAgLTEyOCw2ICsx
MzIsNyBAQCBwcml2YXRlOgogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2V4ZWN1dGlvblN0
YXRlOwogICAgIE93blB0cjxDbGllbnRNZXNzYWdlTG9vcD4gbV9jbGllbnRNZXNzYWdlTG9vcDsK
ICAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtX3Bh
dXNlZFBhZ2VDb250ZXh0OwogICAgIGJvb2wgbV9lbmFibGVkOwogfTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5pZGwKaW5kZXggMWM2NmI1OS4uOTJmZjM3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
CkBAIC0xNzYsNiArMTc2LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbaGFuZGxlcj1ET01d
IHZvaWQgcGVyZm9ybVNlYXJjaChpbiBTdHJpbmcgcXVlcnksIGluIGJvb2xlYW4gcnVuU3luY2hy
b25vdXNseSk7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwog
ICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGluIGxv
bmcgY2FsbElkLCBpbiBTdHJpbmcgcGF0aCwgb3V0IGxvbmcgbm9kZUlkKTsKKyAgICAgICAgW2hh
bmRsZXI9RE9NXSB2b2lkIHNldERPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxvbmcg
dHlwZSk7CisgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCByZW1vdmVET01CcmVha3BvaW50KGlu
IGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwogCiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xs
ZXJdIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKICAgICAgICAgW2hhbmRsZXI9Q29udHJv
bGxlcl0gdm9pZCBoaWdobGlnaHRET01Ob2RlKGluIGxvbmcgbm9kZUlkKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MjQzMjk5Li4zMjU1OWFhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5j
bHVkZSAiUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiU2NyaXB0RGVi
dWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
U3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xOTYsOCArMTk3LDE2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NYXRjaFBsYWluVGV4dEpvYigpIHsgfQogfTsKIAorZW51
bSBET01CcmVha3BvaW50VHlwZSB7CisgICAgRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZp
ZWQgPSAwCit9OworCitjb25zdCBsb25nIGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0ID0g
MTY7CisKIH0KIAorSW5zcGVjdG9yRE9NQWdlbnQqIEluc3BlY3RvckRPTUFnZW50OjpzX2RvbUFn
ZW50T25CcmVha3BvaW50ID0gMDsKKwogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFn
ZW50KEluc3BlY3RvckNTU1N0b3JlKiBjc3NTdG9yZSwgUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQogICAgIDogRXZlbnRMaXN0ZW5lcihJbnNwZWN0b3JET01BZ2VudFR5cGUpCiAg
ICAgLCBtX2Nzc1N0b3JlKGNzc1N0b3JlKQpAQCAtMjEwLDYgKzIxOSw5IEBAIEluc3BlY3RvckRP
TUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnNwZWN0b3JDU1NTdG9yZSogY3NzU3RvcmUsIFJl
bW90ZUluc3BlY3RvCiBJbnNwZWN0b3JET01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIHsK
ICAgICByZXNldCgpOworCisgICAgaWYgKHRoaXMgPT0gc19kb21BZ2VudE9uQnJlYWtwb2ludCkK
KyAgICAgICAgc19kb21BZ2VudE9uQnJlYWtwb2ludCA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnJlc2V0KCkKQEAgLTM3MSw2ICszODMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaXNjYXJkQmluZGluZ3MoKQogICAgIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAgICAg
bV9jaGlsZHJlblJlcXVlc3RlZC5jbGVhcigpOwogICAgIG1faW5zcGVjdGVkTm9kZXMuY2xlYXIo
KTsKKyAgICBtX2JyZWFrcG9pbnRzLmNsZWFyKCk7CiB9CiAKIE5vZGUqIEluc3BlY3RvckRPTUFn
ZW50Ojpub2RlRm9ySWQobG9uZyBpZCkKQEAgLTcyMCw2ICs3MzMsMzcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2VhcmNoQ2FuY2VsZWQoKQogICAgIG1fc2VhcmNoUmVzdWx0cy5jbGVhcigp
OwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KGxvbmcgbm9k
ZUlkLCBsb25nIHR5cGUpCit7CisgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbG9uZyByb290Qml0ID0gMSA8
PCB0eXBlOworICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fYnJlYWtwb2ludHMuZ2V0KG5v
ZGUpIHwgcm9vdEJpdCk7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChu
b2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCisgICAgICAgIHVw
ZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgdHJ1ZSk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcg
dHlwZSkKK3sKKyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBsb25nIHJvb3RCaXQgPSAxIDw8IHR5cGU7Cisg
ICAgbG9uZyBtYXNrID0gbV9icmVha3BvaW50cy5nZXQobm9kZSkgJiB+cm9vdEJpdDsKKyAgICBp
ZiAobWFzaykKKyAgICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwgbWFzayk7CisgICAgZWxz
ZQorICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICBpZiAobWFzayAmIChy
b290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7
IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCisgICAgICAgIHVwZGF0ZVN1YnRyZWVC
cmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgZmFsc2UpOworfQorCiBTdHJpbmcgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QKIHsK
ICAgICBpZiAoIWRvY3VtZW50IHx8IGRvY3VtZW50LT51cmwoKS5pc051bGwoKSkKQEAgLTkyMCw2
ICs5NjQsMTcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2Rl
KiBub2RlKQogICAgIGlmIChpc1doaXRlc3BhY2Uobm9kZSkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgeworICAgICAgICBOb2RlKiBwYXJlbnQgPSBp
bm5lclBhcmVudE5vZGUobm9kZSk7CisgICAgICAgIGlmIChoYXNCcmVha3BvaW50KHBhcmVudCwg
RE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQpKSB7CisgICAgICAgICAgICBpZiAoIXBh
dXNlT25CcmVha3BvaW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGxvbmcgbWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KHBhcmVudCk7CisgICAgICAgIG1h
c2sgPSBtYXNrIHwgKG1hc2sgPj4gZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQpICYgKCgx
IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSAtIDEpOworICAgICAgICB1cGRhdGVT
dWJ0cmVlQnJlYWtwb2ludHMobm9kZSwgbWFzaywgdHJ1ZSk7CisgICAgfQorCiAgICAgLy8gV2Ug
Y291bGQgYmUgYXR0YWNoaW5nIGV4aXN0aW5nIHN1YnRyZWUuIEZvcmdldCB0aGUgYmluZGluZ3Mu
CiAgICAgdW5iaW5kKG5vZGUsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogCkBAIC05NDYsNiAr
MTAwMSwyNSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUq
IG5vZGUpCiAgICAgaWYgKGlzV2hpdGVzcGFjZShub2RlKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIGlmIChoYXNCcmVha3BvaW50
KGlubmVyUGFyZW50Tm9kZShub2RlKSwgRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQp
KSB7CisgICAgICAgICAgICBpZiAoIXBhdXNlT25CcmVha3BvaW50KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFJlbW92ZSBzdWJ0cmVlIGJyZWFrcG9p
bnRzLgorICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICAgICAgVmVjdG9y
PE5vZGUqPiBzdGFjaygxLCBpbm5lckZpcnN0Q2hpbGQobm9kZSkpOworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFzdCgpOworICAgICAgICAgICAgc3RhY2su
cmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAgICAg
ICAgICBzdGFjay5hcHBlbmQoaW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKKyAgICAgICAgICAgIHN0
YWNrLmFwcGVuZChpbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKKyAgICAgICAgfSB3aGlsZSAoIXN0
YWNrLmlzRW1wdHkoKSk7CisgICAgfQorCiAgICAgTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50
Tm9kZSgpOwogICAgIGxvbmcgcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBh
cmVudCk7CiAgICAgLy8gSWYgcGFyZW50IGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUg
ZXZlbnQuCkBAIC05NzEsNiArMTA0NSw0MCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRN
b2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgbV9mcm9udGVuZC0+YXR0cmlidXRl
c1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7CiB9
CiAKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6Omhhc0JyZWFrcG9pbnQoTm9kZSogbm9kZSwgbG9u
ZyB0eXBlKQoreworICAgIGNvbnN0IGxvbmcgcm9vdEJpdCA9IDEgPDwgdHlwZTsKKyAgICBjb25z
dCBsb25nIGRlcml2ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNo
aWZ0OworICAgIHJldHVybiBtX2JyZWFrcG9pbnRzLmdldChub2RlKSAmIChyb290Qml0IHwgZGVy
aXZlZEJpdCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6OnBhdXNlT25CcmVha3BvaW50
KCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBzX2RvbUFnZW50T25C
cmVha3BvaW50ID0gdGhpczsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYnJlYWtQ
cm9ncmFtKCk7CisgICAgcmV0dXJuIHNfZG9tQWdlbnRPbkJyZWFrcG9pbnQgIT0gMDsKKyNlbmRp
ZgorfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMo
Tm9kZSogbm9kZSwgbG9uZyBtYXNrLCBib29sIHNldCkKK3sKKyAgICBsb25nIG9sZE1hc2sgPSBt
X2JyZWFrcG9pbnRzLmdldChub2RlKTsKKyAgICBsb25nIGRlcml2ZWRNYXNrID0gbWFzayA8PCBk
b21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKKyAgICBsb25nIG5ld01hc2sgPSBzZXQgPyBv
bGRNYXNrIHwgZGVyaXZlZE1hc2sgOiBvbGRNYXNrICYgfmRlcml2ZWRNYXNrOworICAgIGlmIChu
ZXdNYXNrKQorICAgICAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBuZXdNYXNrKTsKKyAgICBl
bHNlCisgICAgICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworCisgICAgbG9uZyBuZXdS
b290TWFzayA9IG1hc2sgJiB+bmV3TWFzazsKKyAgICBpZiAoIW5ld1Jvb3RNYXNrKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUp
OyBjaGlsZDsgY2hpbGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgdXBkYXRl
U3VidHJlZUJyZWFrcG9pbnRzKGNoaWxkLCBuZXdSb290TWFzaywgc2V0KTsKK30KKwogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVzKGxvbmcgbm9kZUlkLCBib29sIGF1dGhvck9ubHks
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHN0eWxlcykKIHsKICAgICBOb2RlKiBub2RlID0gbm9k
ZUZvcklkKG5vZGVJZCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA1
MzE3YTIyLi40ZGJlNzkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAg
LTExMiw2ICsxMTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYWRkSW5z
cGVjdGVkTm9kZShsb25nIG5vZGVJZCk7CiAgICAgICAgIHZvaWQgcGVyZm9ybVNlYXJjaChjb25z
dCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGJvb2wgcnVuU3luY2hyb25vdXNseSk7
CiAgICAgICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsKKyAgICAgICAgdm9pZCBzZXRET01CcmVh
a3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHJlbW92ZURPTUJy
ZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSk7CiAKICAgICAgICAgLy8gTWV0aG9kcyBj
YWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIENTUyBzdHlsZXMgaW5zcGVjdGlvbi4KICAgICAg
ICAgdm9pZCBnZXRTdHlsZXMobG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogc3R5bGVzKTsKQEAgLTE1Niw2ICsxNTgsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIGJvb2wgcHVzaERvY3VtZW50VG9Gcm9udGVuZCgpOwogCisgICAg
ICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiBub2RlLCBsb25nIHR5cGUpOworICAgICAgICBi
b29sIHBhdXNlT25CcmVha3BvaW50KCk7CisgICAgICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKE5vZGUqIHJvb3QsIGxvbmcgbWFzaywgYm9vbCB2YWx1ZSk7CisKICAgICAgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlU3R5bGVzKEVs
ZW1lbnQqIGVsZW1lbnQpOwogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWls
ZEFycmF5Rm9yQ1NTUnVsZXMoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1J1bGVMaXN0Kik7
CiAgICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9F
bGVtZW50cyhFbGVtZW50KiBlbGVtZW50LCBib29sIGF1dGhvck9ubHkpOwpAQCAtMjA5LDYgKzIx
NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGltZXI8SW5zcGVjdG9yRE9NQWdl
bnQ+IG1fbWF0Y2hKb2JzVGltZXI7CiAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9z
ZWFyY2hSZXN1bHRzOwogICAgICAgICBWZWN0b3I8bG9uZz4gbV9pbnNwZWN0ZWROb2RlczsKKyAg
ICAgICAgSGFzaE1hcDxOb2RlKiwgbG9uZz4gbV9icmVha3BvaW50czsKKworICAgICAgICBzdGF0
aWMgSW5zcGVjdG9yRE9NQWdlbnQqIHNfZG9tQWdlbnRPbkJyZWFrcG9pbnQ7CiAgICAgfTsKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVP
dXRsaW5lLmpzCmluZGV4IGM3ZDM5ZjEuLjJhZDBiZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC0zMjYsNiArMzI2LDgg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRWRpdFRhZ0JsYWNrbGlzdCA9IFsK
ICAgICAiaHRtbCIsICJoZWFkIiwgImJvZHkiCiBdLmtleVNldCgpOwogCitXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDA7
CisKIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBo
aWdobGlnaHRTZWFyY2hSZXN1bHRzOiBmdW5jdGlvbihzZWFyY2hRdWVyeSkKICAgICB7CkBAIC03
NjEsNiArNzYzLDE1IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkVkaXQgYXMgSFRNTCIpLCB0aGlzLl9lZGl0QXNIVE1MLmJpbmQodGhpcykpOwogICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBI
VE1MIiksIHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5yZW1v
dmUuYmluZCh0aGlzKSk7CisKKyAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRz
RW5hYmxlZCkgeworICAgICAgICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMK
KyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3Agb24gc3Vi
dHJlZSBtb2RpZmljYXRpb25zIiksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
ZXRET01CcmVha3BvaW50LmJpbmQoSW5zcGVjdG9yQmFja2VuZCwgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5pZCwgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5
cGVTdWJ0cmVlTW9kaWZpZWQpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtwb2ludHMiKSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJyZWFrcG9pbnQuYmluZChJbnNwZWN0b3JC
YWNrZW5kLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkLCBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCkpOworICAgICAgICB9
CiAgICAgfSwKIAogICAgIF9wb3B1bGF0ZVRleHRDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4
dE1lbnUsIHRleHROb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmlu
ZGV4IGM4NGJhNzkuLjY4ZTQwYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5ncy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKQEAgLTQzLDcgKzQzLDggQEAgdmFyIFByZWZlcmVuY2VzID0gewogICAgIGRlYnVnZ2Vy
QWx3YXlzRW5hYmxlZDogZmFsc2UsCiAgICAgcHJvZmlsZXJBbHdheXNFbmFibGVkOiBmYWxzZSwK
ICAgICBhdWRpdHNQYW5lbEVuYWJsZWQ6IHRydWUsCi0gICAgb25saW5lRGV0ZWN0aW9uRW5hYmxl
ZDogdHJ1ZQorICAgIG9ubGluZURldGVjdGlvbkVuYWJsZWQ6IHRydWUsCisgICAgZG9tQnJlYWtw
b2ludHNFbmFibGVkOiBmYWxzZQogfQogCiBXZWJJbnNwZWN0b3IucG9wdWxhdGVBcHBsaWNhdGlv
blNldHRpbmdzID0gZnVuY3Rpb24oc2V0dGluZ3NTdHJpbmcpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmNDg2
ZDQ5Li42YzU4ZThhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wOC0xOSAg
UGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZW5hYmxlIERP
TSBicmVha3BvaW50cyBmb3IgY2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyODg2CisKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKwogMjAxMC0wOC0xOSAgVmluY2VudCBT
Y2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKaW5kZXggMGZkNjZjOS4uZTNlMDIw
NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCkBAIC03NCw2ICs3NCw3IEBAIFdlYklu
c3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdh
eXNFbmFibGVkID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlID0g
dHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5vbmxpbmVEZXRlY3Rpb25FbmFibGVkID0gZmFsc2U7Cisg
ICAgUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKIAogICAgIG9sZExv
YWRlZC5jYWxsKFdlYkluc3BlY3Rvcik7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64951</attachid>
            <date>2010-08-20 06:29:45 -0700</date>
            <delta_ts>2010-08-20 06:31:52 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>dom.patch</filename>
            <type>text/plain</type>
            <size>19237</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzFkOGJkYy4uZmJjODVlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wOC0xOSAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50IGJyZWFraW5nIG9u
IERPTSBub2RlIHN1YnRyZWUgbXV0YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4ODYKKworICAgICAgICBBZGQgdHdvIGVudHJpZXMgdG8g
V2ViIEluc3BlY3RvciBET00gZWxlbWVudCBjb250ZXh0IG1lbnU6CisgICAgICAgIDEuICJTdG9w
IG9uIHN1YnRyZWUgbW9kaWZpY2F0aW9ucyI6IHdpbGwgYnJlYWsgb24gYWRkaW5nL3JlbW92aW5n
IG9mIGFueSBlbGVtZW50IHdoaWNoIGlzIGEgY2hpbGQgb2YgdGhlIERPTSBlbGVtZW50CisgICAg
ICAgIDIuICJSZW1vdmUgYnJlYWtwb2ludHMiOiB3aWxsIHJlbW92ZSBhbGwgYnJlYWtwb2ludHMg
YXNzb2NpYXRlZCB3aXRoIHRoZSBET00gZWxlbWVudAorCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwYXVzZU9uQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29u
dGV4dE1lbnUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisK
IDIwMTAtMDgtMjAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMDEwYzI4Y2Y5ZWU2ZWJjNGQ2
ZWVjM2FjYTVmMGY3ZmY3ZjZhZjMzNi4uYzcyOGMxNmI4YTA3M2E4NzE5NGY3YTBhYzg2ZDA5NDUy
NjZhNWYwZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxNzEKemNtWD9jbig0ej9yVlds
NmxhSHMxT3dMeHxvQlRYb1g+eHRJJmc3bHhlNDhDSktGSE1QR3ZxTlNGY2RTQ0c5KXBTCnpGY2RN
UTAtKnYhRTwtKjszUFVEQzhXMU5sQm0ha0pmZypXOGJ4STdlS3pVbXJSJD5TU2lzdiZGME5KRlFW
JEh6QwpSa2koRWFJajJ5MHZ1NWpqMXBzNl9EIyFvOwoKZGVsdGEgMTkKYmNtZXh4bWcmVDRyVlds
Nm9BK21Za2w3c0JIZUNTI1g7Y1pfCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAppbmRleCBjZDgwZGU0Li5lY2I3ZmE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmNwcApAQCAtMjA1LDYgKzIwNSwxMSBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpwYXVzZSgpCiAgICAgbV9wYXVzZU9uTmV4dFN0YXRlbWVudCA9IHRydWU7CiB9CiAK
K3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSgpCit7CisgICAgLy8gRklYTUUo
V0s0MzMzMik6IGltcGxlbWVudCB0aGlzLgorfQorCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpj
b250aW51ZVByb2dyYW0oKQogewogICAgIGlmICghbV9wYXVzZWQpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZmQ4OTc2Yi4uNDMyZmU5YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUp
OwogCiAgICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAgdm9p
ZCBjb250aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CiAgICAg
dm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcAppbmRleCAwYzI0Njc4Li4zNjVkNjkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMjI4LDYgKzIyOCwyOCBAQCB2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpwYXVzZSgpCiAgICAgICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVhaygpOwogfQog
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW0oKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBjYWxsYmFj
a1RlbXBsYXRlLCAoKSk7CisKKyAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhbGxiYWNrVGVtcGxhdGUuSXNFbXB0eSgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOworICAgICAgICBjYWxsYmFj
a1RlbXBsYXRlLT5TZXRDYWxsSGFuZGxlcigmU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKTsKKyAgICB9CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKKyAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqY29udGV4dDsK
KyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gYnJlYWtQcm9ncmFtRnVuY3Rpb24gPSBjYWxs
YmFja1RlbXBsYXRlLT5HZXRGdW5jdGlvbigpOworICAgIHY4OjpEZWJ1Zzo6Q2FsbChicmVha1By
b2dyYW1GdW5jdGlvbik7CisgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5DbGVhcigpOworfQorCiB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjb250aW51ZVByb2dyYW0oKQogewogICAgIGlmIChtX3Bh
dXNlZFBhZ2UpCkBAIC0zMjMsNiArMzQ1LDQxIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1
blBlbmRpbmdUYXNrcygpCiAgICAgdjg6OkRlYnVnOjpQcm9jZXNzRGVidWdNZXNzYWdlcygpOwog
fQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgQVNTRVJUKDIgPT0g
YXJncy5MZW5ndGgoKSk7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmJyZWFrUHJv
Z3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKKyAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dy
YW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSkKK3sKKyAgICAvLyBEb24n
dCBhbGxvdyBuZXN0ZWQgYnJlYWtzLgorICAgIGlmIChtX3BhdXNlZFBhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHJldHJpZXZlRnJhbWUobV9wYXVzZWRQYWdlQ29u
dGV4dCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2NyaXB0RGVi
dWdMaXN0ZW5lciogbGlzdGVuZXIgPSBtX2xpc3RlbmVyc01hcC5nZXQoZnJhbWUtPnBhZ2UoKSk7
CisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9leGVjdXRpb25T
dGF0ZS5zZXQoZXhlY3V0aW9uU3RhdGUpOworICAgIG1fcGF1c2VkUGFnZSA9IGZyYW1lLT5wYWdl
KCk7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IFNjcmlwdFN0YXRl
Ojpmb3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOworICAgIGxpc3RlbmVyLT5kaWRQYXVz
ZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOworCisgICAgLy8gV2FpdCBmb3IgY29udGludWUgb3Ig
c3RlcCBjb21tYW5kLgorICAgIG1fY2xpZW50TWVzc2FnZUxvb3AtPnJ1bihtX3BhdXNlZFBhZ2Up
OworICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsKKworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkg
aGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3RlZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1
Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKSkK
KyAgICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVlKCk7Cit9CisKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnY4RGVidWdFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxz
JiBldmVudERldGFpbHMpCiB7CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmhhbmRs
ZVY4RGVidWdFdmVudChldmVudERldGFpbHMpOwpAQCAtMzY1LDIxICs0MjIsOSBAQCB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVu
dERldGFpbHMmIGV2ZW50RAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVh
a3MuCi0gICAgICAgICAgICAgICAgaWYgKG1fcGF1c2VkUGFnZSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uU3RhdGUuc2V0KGV2ZW50RGV0
YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAgICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2Ug
PSBmcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAgICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50Q2Fs
bEZyYW1lU3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSk7Ci0gICAgICAgICAgICAg
ICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBXYWl0IGZvciBjb250aW51ZSBvciBzdGVwIGNvbW1hbmQuCi0gICAgICAgICAg
ICAgICAgbV9jbGllbnRNZXNzYWdlTG9vcC0+cnVuKG1fcGF1c2VkUGFnZSk7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3BhdXNlZFBhZ2UpOwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGxp
c3RlbmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbmVzdGVkIGxvb3AuCi0gICAgICAg
ICAgICAgICAgaWYgKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5lcnNN
YXAuZ2V0KGZyYW1lLT5wYWdlKCkpKQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlk
Q29udGludWUoKTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZFBhZ2VDb250ZXh0ID0gKmV2ZW50
Q29udGV4dDsKKyAgICAgICAgICAgICAgICBicmVha1Byb2dyYW0oZXZlbnREZXRhaWxzLkdldEV4
ZWN1dGlvblN0YXRlKCkpOworICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xl
YXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBhMWUwYTQ3Li4xZWFkODZiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBw
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIAogICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2b2lkIGJy
ZWFrUHJvZ3JhbSgpOwogICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7CiAgICAgdm9pZCBzdGVw
SW50b1N0YXRlbWVudCgpOwogICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKQEAgLTExMSw2
ICsxMTIsOSBAQCBwcml2YXRlOgogICAgIFNjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgflNjcmlw
dERlYnVnU2VydmVyKCkgeyB9CiAKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGJy
ZWFrUHJvZ3JhbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpOworICAgIHZvaWQg
YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUpOworCiAg
ICAgc3RhdGljIHZvaWQgdjhEZWJ1Z0V2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkRlYnVnOjpFdmVu
dERldGFpbHMmIGV2ZW50RGV0YWlscyk7CiAgICAgdm9pZCBoYW5kbGVWOERlYnVnRXZlbnQoY29u
c3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RGV0YWlscyk7CiAKQEAgLTEyOCw2ICsx
MzIsNyBAQCBwcml2YXRlOgogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2V4ZWN1dGlvblN0
YXRlOwogICAgIE93blB0cjxDbGllbnRNZXNzYWdlTG9vcD4gbV9jbGllbnRNZXNzYWdlTG9vcDsK
ICAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtX3Bh
dXNlZFBhZ2VDb250ZXh0OwogICAgIGJvb2wgbV9lbmFibGVkOwogfTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5pZGwKaW5kZXggMWM2NmI1OS4uOTJmZjM3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
CkBAIC0xNzYsNiArMTc2LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbaGFuZGxlcj1ET01d
IHZvaWQgcGVyZm9ybVNlYXJjaChpbiBTdHJpbmcgcXVlcnksIGluIGJvb2xlYW4gcnVuU3luY2hy
b25vdXNseSk7CiAgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwog
ICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGluIGxv
bmcgY2FsbElkLCBpbiBTdHJpbmcgcGF0aCwgb3V0IGxvbmcgbm9kZUlkKTsKKyAgICAgICAgW2hh
bmRsZXI9RE9NXSB2b2lkIHNldERPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxvbmcg
dHlwZSk7CisgICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCByZW1vdmVET01CcmVha3BvaW50KGlu
IGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwogCiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xs
ZXJdIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKICAgICAgICAgW2hhbmRsZXI9Q29udHJv
bGxlcl0gdm9pZCBoaWdobGlnaHRET01Ob2RlKGluIGxvbmcgbm9kZUlkKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MjQzMjk5Li45ZGU2MjBkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5j
bHVkZSAiUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiU2NyaXB0RGVi
dWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
U3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xOTYsOCArMTk3LDE2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NYXRjaFBsYWluVGV4dEpvYigpIHsgfQogfTsKIAorZW51
bSBET01CcmVha3BvaW50VHlwZSB7CisgICAgRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZp
ZWQgPSAwCit9OworCitjb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAx
NjsKKwogfQogCitJbnNwZWN0b3JET01BZ2VudCogSW5zcGVjdG9yRE9NQWdlbnQ6OnNfZG9tQWdl
bnRPbkJyZWFrcG9pbnQgPSAwOworCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdl
bnQoSW5zcGVjdG9yQ1NTU3RvcmUqIGNzc1N0b3JlLCBSZW1vdGVJbnNwZWN0b3JGcm9udGVuZCog
ZnJvbnRlbmQpCiAgICAgOiBFdmVudExpc3RlbmVyKEluc3BlY3RvckRPTUFnZW50VHlwZSkKICAg
ICAsIG1fY3NzU3RvcmUoY3NzU3RvcmUpCkBAIC0yMTAsNiArMjE5LDkgQEAgSW5zcGVjdG9yRE9N
QWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3BlY3RvckNTU1N0b3JlKiBjc3NTdG9yZSwgUmVt
b3RlSW5zcGVjdG8KIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogewog
ICAgIHJlc2V0KCk7CisKKyAgICBpZiAodGhpcyA9PSBzX2RvbUFnZW50T25CcmVha3BvaW50KQor
ICAgICAgICBzX2RvbUFnZW50T25CcmVha3BvaW50ID0gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cmVzZXQoKQpAQCAtMzcxLDYgKzM4Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmRpc2NhcmRCaW5kaW5ncygpCiAgICAgcmVsZWFzZURhbmdsaW5nTm9kZXMoKTsKICAgICBt
X2NoaWxkcmVuUmVxdWVzdGVkLmNsZWFyKCk7CiAgICAgbV9pbnNwZWN0ZWROb2Rlcy5jbGVhcigp
OworICAgIG1fYnJlYWtwb2ludHMuY2xlYXIoKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdl
bnQ6Om5vZGVGb3JJZChsb25nIGlkKQpAQCAtNzIwLDYgKzczMywzNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZWFyY2hDYW5jZWxlZCgpCiAgICAgbV9zZWFyY2hSZXN1bHRzLmNsZWFyKCk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQobG9uZyBub2Rl
SWQsIGxvbmcgdHlwZSkKK3sKKyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50MzJfdCByb290Qml0ID0g
MSA8PCB0eXBlOworICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fYnJlYWtwb2ludHMuZ2V0
KG5vZGUpIHwgcm9vdEJpdCk7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGls
ZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCisgICAgICAg
IHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxv
bmcgdHlwZSkKK3sKKyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50MzJfdCByb290Qml0ID0gMSA8PCB0
eXBlOworICAgIHVpbnQzMl90IG1hc2sgPSBtX2JyZWFrcG9pbnRzLmdldChub2RlKSAmIH5yb290
Qml0OworICAgIGlmIChtYXNrKQorICAgICAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBtYXNr
KTsKKyAgICBlbHNlCisgICAgICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgIGlm
IChtYXNrICYgKHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5v
ZGUpOyBjaGlsZDsgY2hpbGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgdXBk
YXRlU3VidHJlZUJyZWFrcG9pbnRzKGNoaWxkLCByb290Qml0LCBmYWxzZSk7Cit9CisKIFN0cmlu
ZyBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqIGRvY3VtZW50
KSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgp
KQpAQCAtOTIwLDYgKzk2NCwxNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRE
T01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKGlzV2hpdGVzcGFjZShub2RlKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIE5vZGUq
IHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShub2RlKTsKKyAgICAgICAgaWYgKGhhc0JyZWFrcG9p
bnQocGFyZW50LCBET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCkpIHsKKyAgICAgICAg
ICAgIGlmICghcGF1c2VPbkJyZWFrcG9pbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgdWludDMyX3QgbWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KHBhcmVu
dCk7CisgICAgICAgIG1hc2sgPSBtYXNrIHwgKG1hc2sgPj4gZG9tQnJlYWtwb2ludERlcml2ZWRU
eXBlU2hpZnQpICYgKCgxIDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSAtIDEpOwor
ICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMobm9kZSwgbWFzaywgdHJ1ZSk7CisgICAg
fQorCiAgICAgLy8gV2UgY291bGQgYmUgYXR0YWNoaW5nIGV4aXN0aW5nIHN1YnRyZWUuIEZvcmdl
dCB0aGUgYmluZGluZ3MuCiAgICAgdW5iaW5kKG5vZGUsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXAp
OwogCkBAIC05NDYsNiArMTAwMSwyNSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1v
dmVET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKGlzV2hpdGVzcGFjZShub2RlKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIGlm
IChoYXNCcmVha3BvaW50KGlubmVyUGFyZW50Tm9kZShub2RlKSwgRE9NQnJlYWtwb2ludFR5cGVT
dWJ0cmVlTW9kaWZpZWQpKSB7CisgICAgICAgICAgICBpZiAoIXBhdXNlT25CcmVha3BvaW50KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFJlbW92ZSBz
dWJ0cmVlIGJyZWFrcG9pbnRzLgorICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsK
KyAgICAgICAgVmVjdG9yPE5vZGUqPiBzdGFjaygxLCBpbm5lckZpcnN0Q2hpbGQobm9kZSkpOwor
ICAgICAgICBkbyB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFzdCgpOworICAg
ICAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUo
bm9kZSk7CisgICAgICAgICAgICBzdGFjay5hcHBlbmQoaW5uZXJGaXJzdENoaWxkKG5vZGUpKTsK
KyAgICAgICAgICAgIHN0YWNrLmFwcGVuZChpbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKKyAgICAg
ICAgfSB3aGlsZSAoIXN0YWNrLmlzRW1wdHkoKSk7CisgICAgfQorCiAgICAgTm9kZSogcGFyZW50
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIGxvbmcgcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9k
ZVRvSWRNYXAuZ2V0KHBhcmVudCk7CiAgICAgLy8gSWYgcGFyZW50IGlzIG5vdCBtYXBwZWQgeWV0
IC0+IGlnbm9yZSB0aGUgZXZlbnQuCkBAIC05NzEsNiArMTA0NSw0MiBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgbV9mcm9u
dGVuZC0+YXR0cmlidXRlc1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRl
cyhlbGVtZW50KSk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6Omhhc0JyZWFrcG9pbnQo
Tm9kZSogbm9kZSwgbG9uZyB0eXBlKQoreworICAgIHVpbnQzMl90IHJvb3RCaXQgPSAxIDw8IHR5
cGU7CisgICAgdWludDMyX3QgZGVyaXZlZEJpdCA9IHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERl
cml2ZWRUeXBlU2hpZnQ7CisgICAgcmV0dXJuIG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgKHJv
b3RCaXQgfCBkZXJpdmVkQml0KTsKK30KKworYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6cGF1c2VP
bkJyZWFrcG9pbnQoKQoreworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIHNf
ZG9tQWdlbnRPbkJyZWFrcG9pbnQgPSB0aGlzOworICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5icmVha1Byb2dyYW0oKTsKKyAgICBib29sIGRlbGV0ZWQgPSAhc19kb21BZ2VudE9uQnJl
YWtwb2ludDsKKyAgICBzX2RvbUFnZW50T25CcmVha3BvaW50ID0gMDsKKyAgICByZXR1cm4gIWRl
bGV0ZWQ7CisjZW5kaWYKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRlU3VidHJl
ZUJyZWFrcG9pbnRzKE5vZGUqIG5vZGUsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHNldCkKK3sK
KyAgICB1aW50MzJfdCBvbGRNYXNrID0gbV9icmVha3BvaW50cy5nZXQobm9kZSk7CisgICAgdWlu
dDMyX3QgZGVyaXZlZE1hc2sgPSByb290TWFzayA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVT
aGlmdDsKKyAgICB1aW50MzJfdCBuZXdNYXNrID0gc2V0ID8gb2xkTWFzayB8IGRlcml2ZWRNYXNr
IDogb2xkTWFzayAmIH5kZXJpdmVkTWFzazsKKyAgICBpZiAobmV3TWFzaykKKyAgICAgICAgbV9i
cmVha3BvaW50cy5zZXQobm9kZSwgbmV3TWFzayk7CisgICAgZWxzZQorICAgICAgICBtX2JyZWFr
cG9pbnRzLnJlbW92ZShub2RlKTsKKworICAgIHVpbnQzMl90IG5ld1Jvb3RNYXNrID0gcm9vdE1h
c2sgJiB+bmV3TWFzazsKKyAgICBpZiAoIW5ld1Jvb3RNYXNrKQorICAgICAgICByZXR1cm47CisK
KyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hp
bGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKGNoaWxkLCBuZXdSb290TWFzaywgc2V0KTsKK30KKwogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6Z2V0U3R5bGVzKGxvbmcgbm9kZUlkLCBib29sIGF1dGhvck9ubHksIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHN0eWxlcykKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJ
ZCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA1MzE3YTIyLi5mZDg0
NTJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTExMiw2ICsxMTIs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShs
b25nIG5vZGVJZCk7CiAgICAgICAgIHZvaWQgcGVyZm9ybVNlYXJjaChjb25zdCBTdHJpbmcmIHdo
aXRlc3BhY2VUcmltbWVkUXVlcnksIGJvb2wgcnVuU3luY2hyb25vdXNseSk7CiAgICAgICAgIHZv
aWQgc2VhcmNoQ2FuY2VsZWQoKTsKKyAgICAgICAgdm9pZCBzZXRET01CcmVha3BvaW50KGxvbmcg
bm9kZUlkLCBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQobG9u
ZyBub2RlSWQsIGxvbmcgdHlwZSk7CiAKICAgICAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0
aGUgZnJvbnRlbmQgZm9yIENTUyBzdHlsZXMgaW5zcGVjdGlvbi4KICAgICAgICAgdm9pZCBnZXRT
dHlsZXMobG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSwgUmVmUHRyPEluc3BlY3RvclZhbHVl
Piogc3R5bGVzKTsKQEAgLTE1Niw2ICsxNTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIGJvb2wgcHVzaERvY3VtZW50VG9Gcm9udGVuZCgpOwogCisgICAgICAgIGJvb2wgaGFz
QnJlYWtwb2ludChOb2RlKiBub2RlLCBsb25nIHR5cGUpOworICAgICAgICBib29sIHBhdXNlT25C
cmVha3BvaW50KCk7CisgICAgICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUq
IHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKKwogICAgICAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMoRWxlbWVu
dCogZWxlbWVudCk7CiAgICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJy
YXlGb3JDU1NSdWxlcyhEb2N1bWVudCogb3duZXJEb2N1bWVudCwgQ1NTUnVsZUxpc3QqKTsKICAg
ICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1l
bnRzKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgYXV0aG9yT25seSk7CkBAIC0yMDksNiArMjE1LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4g
bV9tYXRjaEpvYnNUaW1lcjsKICAgICAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBtX3NlYXJj
aFJlc3VsdHM7CiAgICAgICAgIFZlY3Rvcjxsb25nPiBtX2luc3BlY3RlZE5vZGVzOworICAgICAg
ICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9icmVha3BvaW50czsKKworICAgICAgICBzdGF0
aWMgSW5zcGVjdG9yRE9NQWdlbnQqIHNfZG9tQWdlbnRPbkJyZWFrcG9pbnQ7CiAgICAgfTsKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVP
dXRsaW5lLmpzCmluZGV4IGM3ZDM5ZjEuLjJhZDBiZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC0zMjYsNiArMzI2LDgg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRWRpdFRhZ0JsYWNrbGlzdCA9IFsK
ICAgICAiaHRtbCIsICJoZWFkIiwgImJvZHkiCiBdLmtleVNldCgpOwogCitXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCA9IDA7
CisKIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBo
aWdobGlnaHRTZWFyY2hSZXN1bHRzOiBmdW5jdGlvbihzZWFyY2hRdWVyeSkKICAgICB7CkBAIC03
NjEsNiArNzYzLDE1IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkVkaXQgYXMgSFRNTCIpLCB0aGlzLl9lZGl0QXNIVE1MLmJpbmQodGhpcykpOwogICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBI
VE1MIiksIHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5yZW1v
dmUuYmluZCh0aGlzKSk7CisKKyAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRz
RW5hYmxlZCkgeworICAgICAgICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMK
KyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3Agb24gc3Vi
dHJlZSBtb2RpZmljYXRpb25zIiksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
ZXRET01CcmVha3BvaW50LmJpbmQoSW5zcGVjdG9yQmFja2VuZCwgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5pZCwgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5
cGVTdWJ0cmVlTW9kaWZpZWQpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtwb2ludHMiKSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJyZWFrcG9pbnQuYmluZChJbnNwZWN0b3JC
YWNrZW5kLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkLCBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCkpOworICAgICAgICB9
CiAgICAgfSwKIAogICAgIF9wb3B1bGF0ZVRleHRDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4
dE1lbnUsIHRleHROb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmlu
ZGV4IGM4NGJhNzkuLjY4ZTQwYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5ncy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKQEAgLTQzLDcgKzQzLDggQEAgdmFyIFByZWZlcmVuY2VzID0gewogICAgIGRlYnVnZ2Vy
QWx3YXlzRW5hYmxlZDogZmFsc2UsCiAgICAgcHJvZmlsZXJBbHdheXNFbmFibGVkOiBmYWxzZSwK
ICAgICBhdWRpdHNQYW5lbEVuYWJsZWQ6IHRydWUsCi0gICAgb25saW5lRGV0ZWN0aW9uRW5hYmxl
ZDogdHJ1ZQorICAgIG9ubGluZURldGVjdGlvbkVuYWJsZWQ6IHRydWUsCisgICAgZG9tQnJlYWtw
b2ludHNFbmFibGVkOiBmYWxzZQogfQogCiBXZWJJbnNwZWN0b3IucG9wdWxhdGVBcHBsaWNhdGlv
blNldHRpbmdzID0gZnVuY3Rpb24oc2V0dGluZ3NTdHJpbmcpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmNDg2
ZDQ5Li42YzU4ZThhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wOC0xOSAg
UGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZW5hYmxlIERP
TSBicmVha3BvaW50cyBmb3IgY2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyODg2CisKKyAgICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKwogMjAxMC0wOC0xOSAgVmluY2VudCBT
Y2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKaW5kZXggMGZkNjZjOS4uZTNlMDIw
NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCkBAIC03NCw2ICs3NCw3IEBAIFdlYklu
c3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdh
eXNFbmFibGVkID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlID0g
dHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5vbmxpbmVEZXRlY3Rpb25FbmFibGVkID0gZmFsc2U7Cisg
ICAgUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKIAogICAgIG9sZExv
YWRlZC5jYWxsKFdlYkluc3BlY3Rvcik7CiB9Cg==
</data>
<flag name="review"
          id="53628"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>