<?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>89147</bug_id>
          
          <creation_ts>2012-06-14 18:27:14 -0700</creation_ts>
          <short_desc>Web Inspector: Support &apos;Restart frame&apos; in protocol and backend</short_desc>
          <delta_ts>2012-06-19 07:04:17 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89357</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aandrey</cc>
    
    <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>649709</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-14 18:27:14 -0700</bug_when>
    <thetext>&apos;Restart frame&apos; is a debugger action that starts selected function (stack frame) from the beginning and drops completely all stack frames above it.
Add its support to remote debugging protocol and implement it in Inspector backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649750</commentid>
    <comment_count>1</comment_count>
      <attachid>147708</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-14 19:04:12 -0700</bug_when>
    <thetext>Created attachment 147708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649756</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 19:09:20 -0700</bug_when>
    <thetext>Attachment 147708 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScript.cpp:98:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649760</commentid>
    <comment_count>3</comment_count>
      <attachid>147708</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-14 19:17:32 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

Attachment 147708 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12952769</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649780</commentid>
    <comment_count>4</comment_count>
      <attachid>147708</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-14 19:33:37 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

Attachment 147708 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12950882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649785</commentid>
    <comment_count>5</comment_count>
      <attachid>147708</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-14 19:40:06 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

Attachment 147708 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12957533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649786</commentid>
    <comment_count>6</comment_count>
      <attachid>147708</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-14 19:43:18 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

Attachment 147708 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12953757</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649792</commentid>
    <comment_count>7</comment_count>
      <attachid>147708</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-14 19:50:19 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

Attachment 147708 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12966219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649795</commentid>
    <comment_count>8</comment_count>
      <attachid>147708</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-14 19:52:02 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

Attachment 147708 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12960435</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649811</commentid>
    <comment_count>9</comment_count>
      <attachid>147708</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-14 20:35:08 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

Attachment 147708 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12954596</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650251</commentid>
    <comment_count>10</comment_count>
      <attachid>147708</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-15 09:30:17 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

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

&gt; Source/WebCore/bindings/v8/DebuggerScript.js:261
&gt; +    function restart() {

Please move { to the next line.

&gt; Source/WebCore/bindings/v8/ScriptFunctionCall.cpp:136
&gt; +        V8RecursionScope innerScope(getScriptExecutionContext());

why did this change?

&gt; Source/WebCore/inspector/JavaScriptCallFrame.idl:42
&gt; +        [Custom] InspectorObject restart();

No need for Custom here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650259</commentid>
    <comment_count>11</comment_count>
      <attachid>147708</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-15 09:38:15 -0700</bug_when>
    <thetext>Comment on attachment 147708
Patch

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

&gt; Source/WebCore/bindings/v8/custom/V8JavaScriptCallFrameCustom.cpp:49
&gt; +v8::Handle&lt;v8::Value&gt; V8JavaScriptCallFrame::restartCallback(const v8::Arguments&amp; args)

You don&apos;t need this.

&gt; Source/WebCore/inspector/Inspector.json:2439
&gt; +                &quot;name&quot;: &quot;restartFrame&quot;,

&quot;hidden&quot;: true

&gt; Source/WebCore/inspector/Inspector.json:2444
&gt; +                    { &quot;name&quot;: &quot;callFrames&quot;, &quot;type&quot;: &quot;array&quot;, &quot;optional&quot;: true, &quot;items&quot;: { &quot;$ref&quot;: &quot;CallFrame&quot;}, &quot;description&quot;: &quot;New stack trace.&quot; },

Should not be optional.

&gt; Source/WebCore/inspector/Inspector.json:2445
&gt; +                    { &quot;name&quot;: &quot;result&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;VM-specific description of the changes applied.&quot;, &quot;hidden&quot;: true }

Should not be optional. Nuke the &quot;changes applied part&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650888</commentid>
    <comment_count>12</comment_count>
      <attachid>147994</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-16 16:54:59 -0700</bug_when>
    <thetext>Created attachment 147994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650889</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 16:58:07 -0700</bug_when>
    <thetext>Attachment 147994 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScript.cpp:98:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650890</commentid>
    <comment_count>14</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-16 17:00:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 147708 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147708&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DebuggerScript.js:261
&gt; &gt; +    function restart() {
&gt; 
&gt; Please move { to the next line.
Done

&gt; &gt; Source/WebCore/bindings/v8/ScriptFunctionCall.cpp:136
&gt; &gt; +        V8RecursionScope innerScope(getScriptExecutionContext());
&gt; why did this change?

Rename variable that shadows another variable with the same name in this function.

&gt; &gt; Source/WebCore/inspector/JavaScriptCallFrame.idl:42
&gt; &gt; +        [Custom] InspectorObject restart();
&gt; No need for Custom here.

Custom is kept, binding scripts otherwise won&apos;t let return V8 Value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650895</commentid>
    <comment_count>15</comment_count>
      <attachid>147994</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-16 17:19:01 -0700</bug_when>
    <thetext>Comment on attachment 147994
Patch

Attachment 147994 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12974067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650901</commentid>
    <comment_count>16</comment_count>
      <attachid>147994</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 17:26:43 -0700</bug_when>
    <thetext>Comment on attachment 147994
Patch

Attachment 147994 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12965821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650909</commentid>
    <comment_count>17</comment_count>
      <attachid>147996</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-16 17:51:09 -0700</bug_when>
    <thetext>Created attachment 147996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650911</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 17:54:07 -0700</bug_when>
    <thetext>Attachment 147996 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScript.cpp:98:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650926</commentid>
    <comment_count>19</comment_count>
      <attachid>147996</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 18:20:22 -0700</bug_when>
    <thetext>Comment on attachment 147996
Patch

Attachment 147996 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12970325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650927</commentid>
    <comment_count>20</comment_count>
      <attachid>147996</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-16 18:29:29 -0700</bug_when>
    <thetext>Comment on attachment 147996
Patch

Attachment 147996 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12959999</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651132</commentid>
    <comment_count>21</comment_count>
      <attachid>148040</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-17 20:05:58 -0700</bug_when>
    <thetext>Created attachment 148040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651133</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-17 20:08:38 -0700</bug_when>
    <thetext>Attachment 148040 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScript.cpp:98:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651223</commentid>
    <comment_count>23</comment_count>
      <attachid>148040</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-18 00:22:27 -0700</bug_when>
    <thetext>Comment on attachment 148040
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:260
&gt; +    // Call stack may have changed after if the edited function was on the stack.

after -&gt; after script editing, I think making currentCallFrame() public would also be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651325</commentid>
    <comment_count>24</comment_count>
      <attachid>148085</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-18 05:05:34 -0700</bug_when>
    <thetext>Created attachment 148085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651326</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-18 05:07:21 -0700</bug_when>
    <thetext>Attachment 148085 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScript.cpp:98:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651361</commentid>
    <comment_count>26</comment_count>
      <attachid>148085</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-18 06:54:59 -0700</bug_when>
    <thetext>Comment on attachment 148085
Patch

Clearing flags on attachment: 148085

Committed r120592: &lt;http://trac.webkit.org/changeset/120592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651362</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-18 06:55:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651469</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-18 10:00:40 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 89357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651514</commentid>
    <comment_count>29</comment_count>
      <attachid>148123</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-18 10:28:21 -0700</bug_when>
    <thetext>Created attachment 148123
Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651519</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-18 10:30:26 -0700</bug_when>
    <thetext>Attachment 148123 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScript.cpp:98:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651815</commentid>
    <comment_count>31</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-18 15:39:41 -0700</bug_when>
    <thetext>FYI

&gt; Source/WebCore/inspector/compile-front-end.py
0 error(s), 0 warning(s), 77.6% typed
Compiling InjectedScriptSource.js...
Source/WebCore/inspector/InjectedScriptSourceTmp.js:381: WARNING - Property restart never defined on callFrame
        var result = callFrame.restart();
                     ^

0 error(s), 1 warning(s), 66.0% typed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652210</commentid>
    <comment_count>32</comment_count>
      <attachid>148123</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-19 01:31:23 -0700</bug_when>
    <thetext>Comment on attachment 148123
Fix win build

Please fix the closure compiler warning prior to landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652344</commentid>
    <comment_count>33</comment_count>
      <attachid>148317</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-06-19 05:43:06 -0700</bug_when>
    <thetext>Created attachment 148317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652346</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 05:44:50 -0700</bug_when>
    <thetext>Attachment 148317 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScript.cpp:98:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652403</commentid>
    <comment_count>35</comment_count>
      <attachid>148317</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 07:04:08 -0700</bug_when>
    <thetext>Comment on attachment 148317
Patch

Clearing flags on attachment: 148317

Committed r120709: &lt;http://trac.webkit.org/changeset/120709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652404</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 07:04:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147708</attachid>
            <date>2012-06-14 19:04:12 -0700</date>
            <delta_ts>2012-06-16 16:54:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89147-20120615060410.patch</filename>
            <type>text/plain</type>
            <size>16159</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgzOTY0YzY3ZDRlY2Yy
NjQxZGY0NDMzNmQ2MmQ1Mjc0ZjQ4NTdmMy4uYWMxNTdlNzRjNTNhYjE0MzAzMGQzMTdiMWQ0YjQ2
Nzc2NWQ5ZjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA2LTE0ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0ICdSZXN0YXJ0IGZyYW1lJyBpbiBwcm90b2NvbCBhbmQgYmFja2VuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkxNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3IuanNvbiBn
b3QgbmV3IGNvbW1hbmQgaW4gRGVidWdnZXIgZG9tYWluLgorICAgICAgICBBIGNhbGwgcGF0aCBm
cm9tIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgdG8gVjggRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZy
YW1lIGNhbGwKKyAgICAgICAgaXMgYnVpbHQuCisgICAgICAgIEpTQyBzdHViIGltcGxlbWVudGF0
aW9uIFRPRE8KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6Cisg
ICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVidWdn
ZXJTY3JpcHQuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6
OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSmF2
YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAoSmF2YVNjcmlwdENhbGxGcmFtZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhKYXZh
U2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0OjpyZXN0YXJ0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgIChJbmplY3RlZFNjcmlw
dCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAgICAg
ICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3RhcnRGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbDoKKwogMjAx
Mi0wNi0xMiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbExheWVyIHNob3VsZCB1cGRh
dGUgc2Nyb2xsIGxheWVyIGlkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmgKaW5kZXggZjlkZmFiMzIwOWJkNTVhMDhhNGMwZmJiNzgzYWIyMjQ4NThh
YjhlNS4uYTE5NzRmYmNhZGYyOTNmOTM3ZmEwMjM2Zjc4ZWNkOTcxMDE3Y2YxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC04Myw2ICs4
Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuU2V0U2NyaXB0U291cmNlKCk7CiAgICAgYm9v
bCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBu
ZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBuZXdD
YWxsRnJhbWVzLCBTY3JpcHRPYmplY3QqIHJlc3VsdCk7CisgICAgdm9pZCB1cGRhdGVDYWxsU3Rh
Y2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNlc1JlY29tcGlsYXRp
b24oKSB7IHJldHVybiB0cnVlOyB9CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gcmVtb3ZlIHRoaXMu
IFJlZmVyIHRvIGJ1ZzogODg3NTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9EZWJ1Z2dlclNjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVn
Z2VyU2NyaXB0LmpzCmluZGV4IDc3NGY2NDYwNjA0ZDdmYWM3Zjc1MjlmNWIwM2U2OWFjMTkwOTVi
MzIuLjAzNWMyMmRlYzVhZjQ3MzU0M2M0ZWQ3N2Y0NTBiYjlhZmU3YjM1ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCkBAIC0yNTgsNiArMjU4LDEw
IEBAIERlYnVnZ2VyU2NyaXB0Ll9mcmFtZU1pcnJvclRvSlNDYWxsRnJhbWUgPSBmdW5jdGlvbihm
cmFtZU1pcnJvciwgY2FsbGVyRnJhbWUpCiAgICAgICAgIHJldHVybiBmcmFtZU1pcnJvci5ldmFs
dWF0ZShleHByZXNzaW9uLCBmYWxzZSkudmFsdWUoKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBy
ZXN0YXJ0KCkgeworICAgICAgICByZXR1cm4gRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZyYW1lKGZy
YW1lTWlycm9yKTsKKyAgICB9CisKICAgICByZXR1cm4gewogICAgICAgICAic291cmNlSUQiOiBz
b3VyY2VJRCwKICAgICAgICAgImxpbmUiOiBsb2NhdGlvbiA/IGxvY2F0aW9uLmxpbmUgOiAwLApA
QCAtMjY3LDcgKzI3MSw4IEBAIERlYnVnZ2VyU2NyaXB0Ll9mcmFtZU1pcnJvclRvSlNDYWxsRnJh
bWUgPSBmdW5jdGlvbihmcmFtZU1pcnJvciwgY2FsbGVyRnJhbWUpCiAgICAgICAgICJzY29wZUNo
YWluIjogc2NvcGVDaGFpbiwKICAgICAgICAgInNjb3BlVHlwZSI6IHNjb3BlVHlwZSwKICAgICAg
ICAgImV2YWx1YXRlIjogZXZhbHVhdGUsCi0gICAgICAgICJjYWxsZXIiOiBjYWxsZXJGcmFtZQor
ICAgICAgICAiY2FsbGVyIjogY2FsbGVyRnJhbWUsCisgICAgICAgICJyZXN0YXJ0IjogcmVzdGFy
dAogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAKaW5kZXggNWJiNDM2ZjRlYmZhYmEwYTUxMzhiNjQ3OWQ2MjgyMWRl
MWFlYWEzOC4uMjFkZTkzMmQ0ODdhMjQ3YTA4NjFjNTM2YTA3NTU4OTg2NGYwYjQ4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAK
QEAgLTEyNSw2ICsxMjUsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEphdmFTY3JpcHRDYWxs
RnJhbWU6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKICAgICByZXR1cm4gZXZh
bEZ1bmN0aW9uLT5DYWxsKG1fY2FsbEZyYW1lLmdldCgpLCAxLCBhcmd2KTsKIH0KIAordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQoKQoreworICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiByZXN0YXJ0RnVuY3Rpb24gPSB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj46OkNhc3QobV9jYWxsRnJhbWUuZ2V0KCktPkdldCh2OFN0cmluZygicmVzdGFydCIp
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgfTsKKyAgICByZXR1cm4g
cmVzdGFydEZ1bmN0aW9uLT5DYWxsKG1fY2FsbEZyYW1lLmdldCgpLCAwLCBhcmd2KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmgKaW5kZXggOTcxNmM5MGZmNWFmZjk0Y2FlNzJhM2UwZTRkZmY1YmQxNTI4NTc5Ni4uMDIx
NjE2ZTU2OTY0OTI0ZGZmODczNWUxZDljMjI5NGE1MDQzZTBhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaApAQCAtNjAsNiArNjAsNyBA
QCBwdWJsaWM6CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRoaXNPYmplY3QoKSBjb25zdDsK
ICAgICAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdGFydCgpOwogICAgIAog
cHJpdmF0ZToKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGRlYnVnZ2VyQ29udGV4dCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsRnJhbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4
IDg2NWQ0N2YyMTk3OTUwZGY3YTZjZjVmMzE0YTM1Yzg0MTYwYWZmMjcuLjA4YWIxNWI2MWU5YjJj
N2NmZWI0YzgxNDQ5Y2Y2OTQ1N2VkMDRkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTI1NCw2ICsyNTQsMTUgQEAgYm9vbCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQs
IGNvbnN0IFN0cmluZyYgbmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorCit2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjp1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSkKK3sKKyAg
ICAvLyBDYWxsIHN0YWNrIG1heSBoYXZlIGNoYW5nZWQgYWZ0ZXIgaWYgdGhlIGVkaXRlZCBmdW5j
dGlvbiB3YXMgb24gdGhlIHN0YWNrLgorICAgIGlmIChpc1BhdXNlZCgpKQorICAgICAgICAqY2Fs
bEZyYW1lID0gY3VycmVudENhbGxGcmFtZSgpOworfQorCisKIFNjcmlwdFZhbHVlIFNjcmlwdERl
YnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCA3ZTgwZTdmODc3YmVhZmI2NmQ4YjI1ZjFlOTM1ZWUxNzU0MjdiMThlLi40MmUwNzU5OTllOTgw
ZGM5ZDc3MjQ5NWRjYjZhZTdkMDc1OTRiMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKICAgICBib29sIHNldFNjcmlwdFNvdXJjZShj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wgcHJl
dmlldywgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIFNjcmlwdE9i
amVjdCogcmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2Fs
bEZyYW1lKTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCBzdXBwb3J0c05hdGl2ZUJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKaW5kZXggMDZmNTVhOTkzYWY5YTZkZjQzY2E0NGNiM2MwNTUyNTc1OWIxNDYxYS4uNDlmZTc1
MTY1NzQ4N2JlMmVjNjZkNjRmOGI3ODE4N2Y4OGQ2OGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0xMzMsNyArMTMzLDcg
QEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlv
biwgYm9vbCByZXBvcnRFeGNlcHRpb25zKQogCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVz
dWx0OwogICAgIHsKLSAgICAgICAgVjhSZWN1cnNpb25TY29wZSBzY29wZShnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlIGlubmVyU2NvcGUoZ2V0
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNh
bGwodGhpc09iamVjdCwgbV9hcmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKICAgICB9CiAg
ICAgaWYgKCFzY29wZS5zdWNjZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAKaW5kZXggMjEwZWYxMDI5NTg2NWU2NmIyZTBmOGUxNmE0OGQ5NzQyZWNlZDU4My4uNzZiNWVl
ZTMxOWQ2OWQxYjUxMWU5YmYyZWI0NDNhMWFhNTU5ODVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHAKQEAgLTQ2LDYgKzQ2LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
CiAgICAgcmV0dXJuIGltcGwtPmV2YWx1YXRlKGV4cHJlc3Npb24pOwogfQogCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIlY4SmF2YVNjcmlwdENhbGxG
cmFtZS5yZXN0YXJ0Q2FsbGJhY2soKSIpOworICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGltcGwg
PSBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIHJl
dHVybiBpbXBsLT5yZXN0YXJ0KCk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFT
Y3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RB
VFMoIlY4SmF2YVNjcmlwdENhbGxGcmFtZS5zY29wZUNoYWluQWNjZXNzb3JHZXR0ZXIoKSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggMmYwZTYx
Nzg0NDI2NzYwMDMyZWRiN2E4ZjUyMDBiY2YwOGE0ZDljNy4uZDEyNDA3YTAxN2M0ZTM4NGExYWNl
MTA2NmZkY2Y4YzhiNmI3ZmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCkBAIC05NSw2ICs5NSwyMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0Vgog
ICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3du
KTsKIH0KIAordm9pZCBJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYg
Y2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCit7CisgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJyZXN0YXJ0
RnJhbWUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKKyAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CisgICAgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVl
KTsKKyAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEluc3BlY3RvclZh
bHVlOjpUeXBlT2JqZWN0KSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJv
ciI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKnJlc3VsdCA9IHJlc3VsdFZhbHVlLT5h
c09iamVjdCgpOworfQorCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0
cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRGdW5jdGlvbkRldGFpbHMiKTsKQEAg
LTMwMCw2ICszMTQsNyBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0
VmFsdWUoTm9kZSogbm9kZSkKICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNT
Y3JpcHRWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCksIG5vZGUpOwog
fQogCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDhjNjcz
NmQ5Mzg4MDY1OWM5NTdkNDhkZGY3Y2I4ODY2MWFjNjUwMjAuLmY4MTQ1MTY3NjNjYjc1ZTMwZmNl
MmI2ZmFhNzE0Zjk2YjY1MmMxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oCkBAIC04MSw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKTsKKyAgICB2b2lkIHJlc3RhcnRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFNj
cmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3Bl
cnRpZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlBy
b3BlcnR5RGVzY3JpcHRvcj4gPiogcmVzdWx0KTsKICAgICBOb2RlKiBub2RlRm9yT2JqZWN0SWQo
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggMzFjODBiZDIxMDY0Mjg3MWU4MWI5YzIzOTgz
YzhiYTM0ZjZjM2RiYy4uZjhlNTAzODQ5MjZhZDZmOGY3Mjk0MmY2ODQwOWY5OTYzOGExMzUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5q
cwpAQCAtMzcxLDYgKzM3MSwxNCBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZUFuZFdyYXAoY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxs
RnJhbWUsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCB0cnVlLCBpbmplY3RDb21tYW5kTGluZUFQ
SSwgcmV0dXJuQnlWYWx1ZSk7CiAgICAgfSwKIAorICAgIHJlc3RhcnRGcmFtZTogZnVuY3Rpb24o
dG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCkKKyAgICB7CisgICAgICAgIHZhciBjYWxsRnJhbWUg
PSB0aGlzLl9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKTsKKyAgICAg
ICAgaWYgKCFjYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIGNh
bGwgZnJhbWUgd2l0aCBnaXZlbiBpZCI7CisgICAgICAgIHJldHVybiBjYWxsRnJhbWUucmVzdGFy
dCgpOworICAgIH0sCisKICAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKHRvcENhbGxGcmFt
ZSwgY2FsbEZyYW1lSWQpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkQ2FsbEZyYW1lSWQgPSBl
dmFsKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgppbmRleCBhNDA3NTI1OWFmZjliODdlYjIzYmZmMjg3MTk0OTI3ZTUyMWRkZTky
Li45NjU0OWUzOWRkMDcwZGU3OWZiMjI0ZmVlYWUxNjBhYjk2NzdiNDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yNDM2LDYgKzI0MzYsMTcgQEAKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRWRpdHMgSmF2YVNjcmlwdCBzb3VyY2UgbGl2ZS4i
CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
InJlc3RhcnRGcmFtZSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1lSWQiLCAiJHJlZiI6ICJDYWxsRnJhbWVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJDYWxsIGZyYW1lIGlkZW50aWZpZXIgdG8gZXZhbHVhdGUgb24u
IiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVzIiwgInR5cGUiOiAiYXJyYXki
LCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSJ9LCAiZGVz
Y3JpcHRpb24iOiAiTmV3IHN0YWNrIHRyYWNlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVk0tc3BlY2lmaWMgZGVzY3JpcHRpb24gb2YgdGhlIGNoYW5nZXMgYXBwbGll
ZC4iLCAiaGlkZGVuIjogdHJ1ZSB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiUmVzdGFydHMgcGFydGljdWxhciBjYWxsIGZyYW1lIGZyb20gdGhl
IGJlZ2lubmluZy4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICJuYW1lIjogImdldFNjcmlwdFNvdXJjZSIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyaXB0SWQiLCAiJHJlZiI6
ICJTY3JpcHRJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgc2NyaXB0IHRvIGdldCBzb3Vy
Y2UgZm9yLiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IGRhYmRhYWE0YmQwZTgzN2I4OTgyY2IyYzJkNTA5MGM5MmE5
NTAxYzcuLmM0MWZjNmQ2ZjIwOWMyMWUzMzBhNzMyN2EyNjQ3ZWIwMDg1OTdjMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTM3Niw2ICszNzYsMTggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3Jp
cHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICBpZiAob2Jq
ZWN0KQogICAgICAgICByZXN1bHQgPSBvYmplY3Q7CiB9Cit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnJlc3RhcnRGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgY2FsbEZyYW1lSWQsIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxG
cmFtZT4gPiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCkK
K3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkKTsKKyAgICBpZiAo
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJ
bnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aW5qZWN0ZWRTY3JpcHQucmVzdGFydEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3Rh
Y2ssIGNhbGxGcmFtZUlkLCAmcmVzdWx0KTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnVwZGF0
ZUNhbGxTdGFjaygmbV9jdXJyZW50Q2FsbFN0YWNrKTsKKyAgICBuZXdDYWxsRnJhbWVzID0gY3Vy
cmVudENhbGxGcmFtZXMoKTsKK30KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRT
Y3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBT
dHJpbmcqIHNjcmlwdFNvdXJjZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDlmNDE1YTVmMGVmODY0NTBiM2EzNTllNWEw
M2ZmYmExMGE2MzY1N2YuLjUyYzUyNGY2YjEzZjE2NmRmN2IyMjExYWVlODYxNzgwMGQ3Nzg2ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNo
SW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3Ry
aW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlYXJjaE1hdGNoPiA+Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFNvdXJj
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3
Q29udGVudCwgY29uc3QgYm9vbCogcHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4gPiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3RhcnRGcmFt
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxG
cmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBT
dHJpbmcqIHNjcmlwdFNvdXJjZSk7CiAgICAgdmlydHVhbCB2b2lkIGdldEZ1bmN0aW9uRGV0YWls
cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpOwogICAgIHZvaWQgc2NoZWR1bGVQYXVz
ZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RW51
bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCmluZGV4IDQ3
Y2E1ZDE4MWNhYTY0NWMwYmMzNDNmYjAwODJiZGI3ZDNhMWY1YTMuLmEwMjFmNzJmMWZjYTk0MDZk
ZDA1Yzg1NDEzNTY5NzE5N2U1YzgxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwKQEAgLTM5LDYgKzM5LDcgQEAgbW9kdWxlIGluc3Bl
Y3RvciB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENBVENIX1NDT1BFID0gNDsKIAog
ICAgICAgICBbQ3VzdG9tXSB2b2lkIGV2YWx1YXRlKGluIERPTVN0cmluZyBzY3JpcHQpOworICAg
ICAgICBbQ3VzdG9tXSBJbnNwZWN0b3JPYmplY3QgcmVzdGFydCgpOwogCiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBKYXZhU2NyaXB0Q2FsbEZyYW1lIGNhbGxlcjsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgc291cmNlSUQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147994</attachid>
            <date>2012-06-16 16:54:59 -0700</date>
            <delta_ts>2012-06-16 17:50:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89147-20120617035458.patch</filename>
            <type>text/plain</type>
            <size>17558</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNiNTU3NWQ2MDllZTEw
YTI1MWJhMTYzMTdhZWY1NTkxZDRkZmVkZC4uZTExNTZhZGEyZGZiMjI4YjY1NmVhMDU3NWM3MTdi
OWM2NzE0NzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA2LTE2ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0ICdSZXN0YXJ0IGZyYW1lJyBpbiBwcm90b2NvbCBhbmQgYmFja2VuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkxNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3IuanNvbiBn
b3QgbmV3IGNvbW1hbmQgaW4gRGVidWdnZXIgZG9tYWluLgorICAgICAgICBBIGNhbGwgcGF0aCBm
cm9tIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgdG8gVjggRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZy
YW1lIEFQSQorICAgICAgICBpcyBidWlsdC4KKyAgICAgICAgSlNDIGltcGxlbWVudGF0aW9uIGlz
IGEgc3R1YiB3aXRoIGZpeCBtZSAoNDAzMDApLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAoSmF2YVNjcmlwdENh
bGxGcmFtZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
dXBkYXRlQ2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0RlYnVnZ2VyU2NyaXB0LmpzOgorICAgICAgICAoLik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpyZXN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRDYWxsRnJhbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNh
bGxTdGFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0YXJ0RnJhbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGw6
CisKIDIwMTItMDYtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTZXR0aW5nczo6ZGV2aWNlUGl4ZWxSYXRpbyBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBpcyBj
b25mdXNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IGEzMjU0NjcwMTEzZjQ4ZGI0OTM1ZTE3
YjQ2Zjg0NmJlMWRkNGE1ZDIuLjY2MWJkZjdkYjJiZDNmNzRhZTZjNDAyYzgzYjYxYzhlMjMyN2M3
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENh
bGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgSlNWYWx1ZSBKU0ph
dmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydChFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgLy8gRklYTUUoNDAzMDApOiBpbXBsZW1lbnQgdGhpcy4KKyAg
ICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0ZhbHNlKTsKK30KKwogSlNWYWx1ZSBKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QKIHsKICAgICByZXR1
cm4gaW1wbCgpLT50aGlzT2JqZWN0KCkgPyBKU1ZhbHVlKGltcGwoKS0+dGhpc09iamVjdCgpKSA6
IGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCmluZGV4IGQ4YjEwNzBkZmRmNmQ5YzhiMmJiODJmOGQ1Y2FmMWE1OGFhOGRkYzAu
LjAwMTBhNmQ3NDJlYmQ1YTc1NGI5NTRmMDg2OTZhZmIxODRjNjA1OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTIwNiw2ICsy
MDYsMTMgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIFN0cmkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
Kwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKiBj
YWxsRnJhbWUpCit7CisgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgcmVzdGFydCBmcmFt
ZSBmZWF0dXJlIHRoYXQgaXMgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAvLyBGSVhNRSg0MDMw
MCk6IGltcGxlbWVudCB0aGlzLgorfQorCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRj
aERpZFBhdXNlKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIEFTU0VSVCht
X3BhdXNlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2
ZXIuaAppbmRleCBmOWRmYWIzMjA5YmQ1NWEwOGE0YzBmYmI3ODNhYjIyNDg1OGFiOGU1Li5hMTk3
NGZiY2FkZjI5M2Y5MzdmYTAyMzZmNzhlY2Q5NzEwMTdjZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKICAgICBib29sIHNldFNjcmlw
dFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQs
IGJvb2wgcHJldmlldywgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMs
IFNjcmlwdE9iamVjdCogcmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhTY3JpcHRW
YWx1ZSogY2FsbEZyYW1lKTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigpIHsgcmV0
dXJuIHRydWU7IH0KICAgICAvLyBGSVhNRTogTmVlZCB0byByZW1vdmUgdGhpcy4gUmVmZXIgdG8g
YnVnOiA4ODc1OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVn
Z2VyU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQu
anMKaW5kZXggNzc0ZjY0NjA2MDRkN2ZhYzdmNzUyOWY1YjAzZTY5YWMxOTA5NWIzMi4uOTE0YjZm
MjYyNDc0ZTY4MjFjNzk2YzM2MGM3MTFjMGM2OWNiNjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKQEAgLTI1NCwxMCArMjU0LDE2IEBAIERlYnVn
Z2VyU2NyaXB0Ll9mcmFtZU1pcnJvclRvSlNDYWxsRnJhbWUgPSBmdW5jdGlvbihmcmFtZU1pcnJv
ciwgY2FsbGVyRnJhbWUpCiAgICAgICAgIHNjb3BlQ2hhaW4ucHVzaChEZWJ1Z2dlclNjcmlwdC5f
YnVpbGRTY29wZU9iamVjdChzY29wZU1pcnJvcikpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGV2
YWx1YXRlKGV4cHJlc3Npb24pIHsKKyAgICBmdW5jdGlvbiBldmFsdWF0ZShleHByZXNzaW9uKQor
ICAgIHsKICAgICAgICAgcmV0dXJuIGZyYW1lTWlycm9yLmV2YWx1YXRlKGV4cHJlc3Npb24sIGZh
bHNlKS52YWx1ZSgpOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIHJlc3RhcnQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERlYnVnLkxpdmVFZGl0LlJlc3RhcnRGcmFtZShmcmFtZU1pcnJvcik7Cisg
ICAgfQorCiAgICAgcmV0dXJuIHsKICAgICAgICAgInNvdXJjZUlEIjogc291cmNlSUQsCiAgICAg
ICAgICJsaW5lIjogbG9jYXRpb24gPyBsb2NhdGlvbi5saW5lIDogMCwKQEAgLTI2Nyw3ICsyNzMs
OCBAQCBEZWJ1Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24o
ZnJhbWVNaXJyb3IsIGNhbGxlckZyYW1lKQogICAgICAgICAic2NvcGVDaGFpbiI6IHNjb3BlQ2hh
aW4sCiAgICAgICAgICJzY29wZVR5cGUiOiBzY29wZVR5cGUsCiAgICAgICAgICJldmFsdWF0ZSI6
IGV2YWx1YXRlLAotICAgICAgICAiY2FsbGVyIjogY2FsbGVyRnJhbWUKKyAgICAgICAgImNhbGxl
ciI6IGNhbGxlckZyYW1lLAorICAgICAgICAicmVzdGFydCI6IHJlc3RhcnQKICAgICB9OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwCmluZGV4IDViYjQzNmY0ZWJmYWJhMGE1MTM4YjY0NzlkNjI4MjFkZTFhZWFhMzguLjIxZGU5
MzJkNDg3YTI0N2EwODYxYzUzNmEwNzU1ODk4NjRmMGI0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0xMjUsNiArMTI1
LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0
ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCiAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi0+Q2Fs
bChtX2NhbGxGcmFtZS5nZXQoKSwgMSwgYXJndik7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0KCkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gcmVzdGFydEZ1bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0
KG1fY2FsbEZyYW1lLmdldCgpLT5HZXQodjhTdHJpbmcoInJlc3RhcnQiKSkpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IH07CisgICAgcmV0dXJuIHJlc3RhcnRGdW5jdGlv
bi0+Q2FsbChtX2NhbGxGcmFtZS5nZXQoKSwgMCwgYXJndik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDg2
NWQ0N2YyMTk3OTUwZGY3YTZjZjVmMzE0YTM1Yzg0MTYwYWZmMjcuLjA4YWIxNWI2MWU5YjJjN2Nm
ZWI0YzgxNDQ5Y2Y2OTQ1N2VkMDRkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTI1NCw2ICsyNTQsMTUgQEAgYm9vbCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNv
bnN0IFN0cmluZyYgbmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorCit2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjp1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSkKK3sKKyAgICAv
LyBDYWxsIHN0YWNrIG1heSBoYXZlIGNoYW5nZWQgYWZ0ZXIgaWYgdGhlIGVkaXRlZCBmdW5jdGlv
biB3YXMgb24gdGhlIHN0YWNrLgorICAgIGlmIChpc1BhdXNlZCgpKQorICAgICAgICAqY2FsbEZy
YW1lID0gY3VycmVudENhbGxGcmFtZSgpOworfQorCisKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVn
U2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCA3
ZTgwZTdmODc3YmVhZmI2NmQ4YjI1ZjFlOTM1ZWUxNzU0MjdiMThlLi40MmUwNzU5OTllOTgwZGM5
ZDc3MjQ5NWRjYjZhZTdkMDc1OTRiMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKICAgICBib29sIHNldFNjcmlwdFNvdXJjZShjb25z
dCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wgcHJldmll
dywgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIFNjcmlwdE9iamVj
dCogcmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2FsbEZy
YW1lKTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBzdXBwb3J0c05hdGl2ZUJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdHJ1ZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAK
aW5kZXggMDZmNTVhOTkzYWY5YTZkZjQzY2E0NGNiM2MwNTUyNTc1OWIxNDYxYS4uNDlmZTc1MTY1
NzQ4N2JlMmVjNjZkNjRmOGI3ODE4N2Y4OGQ2OGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAg
U2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbiwg
Ym9vbCByZXBvcnRFeGNlcHRpb25zKQogCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0
OwogICAgIHsKLSAgICAgICAgVjhSZWN1cnNpb25TY29wZSBzY29wZShnZXRTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlIGlubmVyU2NvcGUoZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwo
dGhpc09iamVjdCwgbV9hcmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKICAgICB9CiAgICAg
aWYgKCFzY29wZS5zdWNjZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAK
aW5kZXggMjEwZWYxMDI5NTg2NWU2NmIyZTBmOGUxNmE0OGQ5NzQyZWNlZDU4My4uNzZiNWVlZTMx
OWQ2OWQxYjUxMWU5YmYyZWI0NDNhMWFhNTU5ODVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFt
ZUN1c3RvbS5jcHAKQEAgLTQ2LDYgKzQ2LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEph
dmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAg
ICAgcmV0dXJuIGltcGwtPmV2YWx1YXRlKGV4cHJlc3Npb24pOwogfQogCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIlY4SmF2YVNjcmlwdENhbGxGcmFt
ZS5yZXN0YXJ0Q2FsbGJhY2soKSIpOworICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGltcGwgPSBW
OEphdmFTY3JpcHRDYWxsRnJhbWU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIHJldHVy
biBpbXBsLT5yZXN0YXJ0KCk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3Jp
cHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMo
IlY4SmF2YVNjcmlwdENhbGxGcmFtZS5zY29wZUNoYWluQWNjZXNzb3JHZXR0ZXIoKSIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggMmYwZTYxNzg0
NDI2NzYwMDMyZWRiN2E4ZjUyMDBiY2YwOGE0ZDljNy4uNDE0YzIyZjg5ZjNiYzQyMWFjMDE4ZWY0
Mzg4ODJiOTgyYzNlMWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuY3BwCkBAIC05NSw2ICs5NSwyNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0
ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VgogICAg
IG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsK
IH0KIAordm9pZCBJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2Fs
bEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCit7CisgICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJyZXN0YXJ0RnJh
bWUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKKyAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CisgICAgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsK
KyAgICBpZiAocmVzdWx0VmFsdWUpIHsKKyAgICAgICAgaWYgKHJlc3VsdFZhbHVlLT50eXBlKCkg
PT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKKyAgICAgICAgICAgIHJlc3VsdFZhbHVl
LT5hc1N0cmluZyhlcnJvclN0cmluZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHJlc3VsdFZhbHVlLT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVP
YmplY3QpIHsKKyAgICAgICAgICAgICpyZXN1bHQgPSByZXN1bHRWYWx1ZS0+YXNPYmplY3QoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAqZXJyb3JTdHJpbmcg
PSAiSW50ZXJuYWwgZXJyb3IiOworfQorCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlv
bkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9u
SWQsIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7CiAgICAgU2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRGdW5jdGlvbkRldGFp
bHMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggOGM2
NzM2ZDkzODgwNjU5Yzk1N2Q0OGRkZjdjYjg4NjYxYWM2NTAyMC4uZjgxNDUxNjc2M2NiNzVlMzBm
Y2UyYjZmYWE3MTRmOTZiNjUyYzFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pOworICAgIHZvaWQgcmVzdGFydEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3Qg
U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0UHJv
cGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJv
cGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UHJvcGVydHlEZXNjcmlwdG9yPiA+KiByZXN1bHQpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJ
ZChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCAzMWM4MGJkMjEwNjQyODcxZTgxYjljMjM5
ODNjOGJhMzRmNmMzZGJjLi5hZTRjOTc4Y2YzZjJlNGU3OTE2ZDMxZDgzMDUwYWFmMzZmNDJhY2Nj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzCkBAIC0zNzEsNiArMzcxLDE3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChjYWxsRnJhbWUuZXZhbHVhdGUsIGNh
bGxGcmFtZSwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHRydWUsIGluamVjdENvbW1hbmRMaW5l
QVBJLCByZXR1cm5CeVZhbHVlKTsKICAgICB9LAogCisgICAgcmVzdGFydEZyYW1lOiBmdW5jdGlv
bih0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxGcmFt
ZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpOworICAg
ICAgICBpZiAoIWNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGZpbmQg
Y2FsbCBmcmFtZSB3aXRoIGdpdmVuIGlkIjsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGNhbGxGcmFt
ZS5yZXN0YXJ0KCk7CisgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKQorICAgICAgICAgICAg
cmVzdWx0ID0gIlJlc3RhcnQgZnJhbWUgaXMgbm90IHN1cHBvcnRlZCI7IAorICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0sCisKICAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKHRvcENh
bGxGcmFtZSwgY2FsbEZyYW1lSWQpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkQ2FsbEZyYW1l
SWQgPSBldmFsKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCBjZjE5OGMwZmNiMGEyNGJhNTkyNWYyOGRkNGQ3Y2JhOGI2
ZDE2ZDMyLi41OGViYThkY2JkNmE1ODhiMjAwOTliOTdiMGZiZDVkYTk3ODA2NWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yNDY1LDYgKzI0NjUsMTggQEAK
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRWRpdHMgSmF2YVNjcmlwdCBzb3VyY2Ug
bGl2ZS4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJu
YW1lIjogInJlc3RhcnRGcmFtZSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1lSWQiLCAiJHJlZiI6ICJDYWxs
RnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJDYWxsIGZyYW1lIGlkZW50aWZpZXIgdG8gZXZhbHVh
dGUgb24uIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVzIiwgInR5cGUiOiAi
YXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSJ9LCAiZGVzY3JpcHRpb24iOiAi
TmV3IHN0YWNrIHRyYWNlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1
bHQiLCAidHlwZSI6ICJvYmplY3QiLCAiZGVzY3JpcHRpb24iOiAiVk0tc3BlY2lmaWMgZGVzY3Jp
cHRpb24uIiwgImhpZGRlbiI6IHRydWUgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJl
c3RhcnRzIHBhcnRpY3VsYXIgY2FsbCBmcmFtZSBmcm9tIHRoZSBiZWdpbm5pbmcuIgorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRTY3Jp
cHRTb3VyY2UiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNjcmlwdElkIiwgIiRyZWYiOiAiU2NyaXB0SWQiLCAiZGVzY3Jp
cHRpb24iOiAiSWQgb2YgdGhlIHNjcmlwdCB0byBnZXQgc291cmNlIGZvci4iIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCBmYTM5MzdiYWVkMTFhMzhhZTY2NDk5NWEyNTI1YzUxOTA1NmJmMzVkLi4yMmQ1NjFkNzg1Mzhm
NDhjNTNlNmVkZDZkYWFkNWNjMTA0YmNkOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNzgsNiArMzc4LDE4IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgaWYgKG9iamVjdCkKICAgICAgICAgcmVzdWx0
ID0gb2JqZWN0OwogfQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0YXJ0RnJhbWUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQ
dHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxGcmFt
ZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1lIGhhcyBn
b25lIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluamVjdGVkU2NyaXB0LnJlc3Rh
cnRGcmFtZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwgJnJl
c3VsdCk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS51cGRhdGVDYWxsU3RhY2soJm1fY3VycmVu
dENhbGxTdGFjayk7CisgICAgbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRDYWxsRnJhbWVzKCk7Cit9
CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2Up
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaAppbmRleCA5ZjQxNWE1ZjBlZjg2NDUwYjNhMzU5ZTVhMDNmZmJhMTBhNjM2NTdmLi41MmM1
MjRmNmIxM2YxNjZkZjdiMjIxMWFlZTg2MTc4MDBkNzc4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTg5LDYgKzg5LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJv
b2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4g
PiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wq
IHByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBy
ZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCByZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2Up
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0
aW9uRGV0YWlscz4mKTsKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5z
cGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbAppbmRleCA0N2NhNWQxODFjYWE2NDVjMGJjMzQz
ZmIwMDgyYmRiN2QzYTFmNWEzLi5kMzczZDVkODIxZDVmNjQ2ZmIzYjg5ZmY1M2RjMzUyOTAzYzcy
NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxG
cmFtZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJh
bWUuaWRsCkBAIC0zOSw2ICszOSw3IEBAIG1vZHVsZSBpbnNwZWN0b3IgewogICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBDQVRDSF9TQ09QRSA9IDQ7CiAKICAgICAgICAgW0N1c3RvbV0gdm9p
ZCBldmFsdWF0ZShpbiBET01TdHJpbmcgc2NyaXB0KTsKKyAgICAgICAgW0N1c3RvbV0gRE9NT2Jq
ZWN0IHJlc3RhcnQoKTsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSmF2YVNjcmlwdENh
bGxGcmFtZSBjYWxsZXI7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNvdXJjZUlE
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147996</attachid>
            <date>2012-06-16 17:51:09 -0700</date>
            <delta_ts>2012-06-17 20:05:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89147-20120617045108.patch</filename>
            <type>text/plain</type>
            <size>16706</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNiNTU3NWQ2MDllZTEw
YTI1MWJhMTYzMTdhZWY1NTkxZDRkZmVkZC4uZTExNTZhZGEyZGZiMjI4YjY1NmVhMDU3NWM3MTdi
OWM2NzE0NzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA2LTE2ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0ICdSZXN0YXJ0IGZyYW1lJyBpbiBwcm90b2NvbCBhbmQgYmFja2VuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkxNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3IuanNvbiBn
b3QgbmV3IGNvbW1hbmQgaW4gRGVidWdnZXIgZG9tYWluLgorICAgICAgICBBIGNhbGwgcGF0aCBm
cm9tIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgdG8gVjggRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZy
YW1lIEFQSQorICAgICAgICBpcyBidWlsdC4KKyAgICAgICAgSlNDIGltcGxlbWVudGF0aW9uIGlz
IGEgc3R1YiB3aXRoIGZpeCBtZSAoNDAzMDApLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAoSmF2YVNjcmlwdENh
bGxGcmFtZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
dXBkYXRlQ2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0RlYnVnZ2VyU2NyaXB0LmpzOgorICAgICAgICAoLik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpyZXN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRDYWxsRnJhbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNh
bGxTdGFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0YXJ0RnJhbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGw6
CisKIDIwMTItMDYtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTZXR0aW5nczo6ZGV2aWNlUGl4ZWxSYXRpbyBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBpcyBj
b25mdXNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IGEzMjU0NjcwMTEzZjQ4ZGI0OTM1ZTE3
YjQ2Zjg0NmJlMWRkNGE1ZDIuLjQwZDNhM2ZiOGFkNDRiMDM2NTdkODEwNDdkMWQyZDNhNzA4YzIw
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENh
bGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgSlNWYWx1ZSBKU0ph
dmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydChFeGVj
U3RhdGUqKQoreworICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVtZW50IHRoaXMuCisgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Cit9CisKIEpTVmFsdWUgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lOjp0aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlt
cGwoKS0+dGhpc09iamVjdCgpID8gSlNWYWx1ZShpbXBsKCktPnRoaXNPYmplY3QoKSkgOiBqc051
bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBkOGIxMDcwZGZkZjZkOWM4YjJiYjgyZjhkNWNhZjFhNThhYThkZGMwLi4wMDEw
YTZkNzQyZWJkNWE3NTRiOTU0ZjA4Njk2YWZiMTg0YzYwNThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMDYsNiArMjA2LDEz
IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisKK3Zv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2FsbEZy
YW1lKQoreworICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIHJlc3RhcnQgZnJhbWUgZmVh
dHVyZSB0aGF0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgLy8gRklYTUUoNDAzMDApOiBp
bXBsZW1lbnQgdGhpcy4KK30KKwogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQ
YXVzZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBBU1NFUlQobV9wYXVz
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgK
aW5kZXggZjlkZmFiMzIwOWJkNTVhMDhhNGMwZmJiNzgzYWIyMjQ4NThhYjhlNS4uYTE5NzRmYmNh
ZGYyOTNmOTM3ZmEwMjM2Zjc4ZWNkOTcxMDE3Y2YxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY2FuU2V0U2NyaXB0U291cmNlKCk7CiAgICAgYm9vbCBzZXRTY3JpcHRTb3Vy
Y2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29s
IHByZXZpZXcsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBTY3Jp
cHRPYmplY3QqIHJlc3VsdCk7CisgICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUq
IGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNlc1JlY29tcGlsYXRpb24oKSB7IHJldHVybiB0
cnVlOyB9CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gcmVtb3ZlIHRoaXMuIFJlZmVyIHRvIGJ1Zzog
ODg3NTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNj
cmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCmlu
ZGV4IDc3NGY2NDYwNjA0ZDdmYWM3Zjc1MjlmNWIwM2U2OWFjMTkwOTViMzIuLjkxNGI2ZjI2MjQ3
NGU2ODIxYzc5NmMzNjBjNzExYzBjNjljYjYyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCkBAIC0yNTQsMTAgKzI1NCwxNiBAQCBEZWJ1Z2dlclNj
cmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJhbWVNaXJyb3IsIGNh
bGxlckZyYW1lKQogICAgICAgICBzY29wZUNoYWluLnB1c2goRGVidWdnZXJTY3JpcHQuX2J1aWxk
U2NvcGVPYmplY3Qoc2NvcGVNaXJyb3IpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBldmFsdWF0
ZShleHByZXNzaW9uKSB7CisgICAgZnVuY3Rpb24gZXZhbHVhdGUoZXhwcmVzc2lvbikKKyAgICB7
CiAgICAgICAgIHJldHVybiBmcmFtZU1pcnJvci5ldmFsdWF0ZShleHByZXNzaW9uLCBmYWxzZSku
dmFsdWUoKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiByZXN0YXJ0KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBEZWJ1Zy5MaXZlRWRpdC5SZXN0YXJ0RnJhbWUoZnJhbWVNaXJyb3IpOworICAgIH0K
KwogICAgIHJldHVybiB7CiAgICAgICAgICJzb3VyY2VJRCI6IHNvdXJjZUlELAogICAgICAgICAi
bGluZSI6IGxvY2F0aW9uID8gbG9jYXRpb24ubGluZSA6IDAsCkBAIC0yNjcsNyArMjczLDggQEAg
RGVidWdnZXJTY3JpcHQuX2ZyYW1lTWlycm9yVG9KU0NhbGxGcmFtZSA9IGZ1bmN0aW9uKGZyYW1l
TWlycm9yLCBjYWxsZXJGcmFtZSkKICAgICAgICAgInNjb3BlQ2hhaW4iOiBzY29wZUNoYWluLAog
ICAgICAgICAic2NvcGVUeXBlIjogc2NvcGVUeXBlLAogICAgICAgICAiZXZhbHVhdGUiOiBldmFs
dWF0ZSwKLSAgICAgICAgImNhbGxlciI6IGNhbGxlckZyYW1lCisgICAgICAgICJjYWxsZXIiOiBj
YWxsZXJGcmFtZSwKKyAgICAgICAgInJlc3RhcnQiOiByZXN0YXJ0CiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4
IDg2NWQ0N2YyMTk3OTUwZGY3YTZjZjVmMzE0YTM1Yzg0MTYwYWZmMjcuLjA4YWIxNWI2MWU5YjJj
N2NmZWI0YzgxNDQ5Y2Y2OTQ1N2VkMDRkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTI1NCw2ICsyNTQsMTUgQEAgYm9vbCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQs
IGNvbnN0IFN0cmluZyYgbmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorCit2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjp1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSkKK3sKKyAg
ICAvLyBDYWxsIHN0YWNrIG1heSBoYXZlIGNoYW5nZWQgYWZ0ZXIgaWYgdGhlIGVkaXRlZCBmdW5j
dGlvbiB3YXMgb24gdGhlIHN0YWNrLgorICAgIGlmIChpc1BhdXNlZCgpKQorICAgICAgICAqY2Fs
bEZyYW1lID0gY3VycmVudENhbGxGcmFtZSgpOworfQorCisKIFNjcmlwdFZhbHVlIFNjcmlwdERl
YnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCA3ZTgwZTdmODc3YmVhZmI2NmQ4YjI1ZjFlOTM1ZWUxNzU0MjdiMThlLi40MmUwNzU5OTllOTgw
ZGM5ZDc3MjQ5NWRjYjZhZTdkMDc1OTRiMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKICAgICBib29sIHNldFNjcmlwdFNvdXJjZShj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wgcHJl
dmlldywgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIFNjcmlwdE9i
amVjdCogcmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2Fs
bEZyYW1lKTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCBzdXBwb3J0c05hdGl2ZUJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKaW5kZXggMDZmNTVhOTkzYWY5YTZkZjQzY2E0NGNiM2MwNTUyNTc1OWIxNDYxYS4uNDlmZTc1
MTY1NzQ4N2JlMmVjNjZkNjRmOGI3ODE4N2Y4OGQ2OGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0xMzMsNyArMTMzLDcg
QEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlv
biwgYm9vbCByZXBvcnRFeGNlcHRpb25zKQogCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVz
dWx0OwogICAgIHsKLSAgICAgICAgVjhSZWN1cnNpb25TY29wZSBzY29wZShnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlIGlubmVyU2NvcGUoZ2V0
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNh
bGwodGhpc09iamVjdCwgbV9hcmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKICAgICB9CiAg
ICAgaWYgKCFzY29wZS5zdWNjZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAKaW5kZXggMjEwZWYxMDI5NTg2NWU2NmIyZTBmOGUxNmE0OGQ5NzQyZWNlZDU4My4uNzZiNWVl
ZTMxOWQ2OWQxYjUxMWU5YmYyZWI0NDNhMWFhNTU5ODVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHAKQEAgLTQ2LDYgKzQ2LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
CiAgICAgcmV0dXJuIGltcGwtPmV2YWx1YXRlKGV4cHJlc3Npb24pOwogfQogCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIlY4SmF2YVNjcmlwdENhbGxG
cmFtZS5yZXN0YXJ0Q2FsbGJhY2soKSIpOworICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGltcGwg
PSBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIHJl
dHVybiBpbXBsLT5yZXN0YXJ0KCk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFT
Y3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RB
VFMoIlY4SmF2YVNjcmlwdENhbGxGcmFtZS5zY29wZUNoYWluQWNjZXNzb3JHZXR0ZXIoKSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggMmYwZTYx
Nzg0NDI2NzYwMDMyZWRiN2E4ZjUyMDBiY2YwOGE0ZDljNy4uNDE0YzIyZjg5ZjNiYzQyMWFjMDE4
ZWY0Mzg4ODJiOTgyYzNlMWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCkBAIC05NSw2ICs5NSwyNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0Vgog
ICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3du
KTsKIH0KIAordm9pZCBJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYg
Y2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCit7CisgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJyZXN0YXJ0
RnJhbWUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKKyAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CisgICAgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVl
KTsKKyAgICBpZiAocmVzdWx0VmFsdWUpIHsKKyAgICAgICAgaWYgKHJlc3VsdFZhbHVlLT50eXBl
KCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKKyAgICAgICAgICAgIHJlc3VsdFZh
bHVlLT5hc1N0cmluZyhlcnJvclN0cmluZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHJlc3VsdFZhbHVlLT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5
cGVPYmplY3QpIHsKKyAgICAgICAgICAgICpyZXN1bHQgPSByZXN1bHRWYWx1ZS0+YXNPYmplY3Qo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAqZXJyb3JTdHJp
bmcgPSAiSW50ZXJuYWwgZXJyb3IiOworfQorCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5j
dGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uSWQsIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7CiAgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRGdW5jdGlvbkRl
dGFpbHMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXgg
OGM2NzM2ZDkzODgwNjU5Yzk1N2Q0OGRkZjdjYjg4NjYxYWM2NTAyMC4uZjgxNDUxNjc2M2NiNzVl
MzBmY2UyYjZmYWE3MTRmOTZiNjUyYzFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pOworICAgIHZvaWQgcmVzdGFydEZyYW1lKEVycm9yU3RyaW5nKiwgY29u
c3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0
UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3du
UHJvcGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UHJvcGVydHlEZXNjcmlwdG9yPiA+KiByZXN1bHQpOwogICAgIE5vZGUqIG5vZGVGb3JPYmpl
Y3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCAzMWM4MGJkMjEwNjQyODcxZTgxYjlj
MjM5ODNjOGJhMzRmNmMzZGJjLi5hZTRjOTc4Y2YzZjJlNGU3OTE2ZDMxZDgzMDUwYWFmMzZmNDJh
Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzCkBAIC0zNzEsNiArMzcxLDE3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChjYWxsRnJhbWUuZXZhbHVhdGUs
IGNhbGxGcmFtZSwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHRydWUsIGluamVjdENvbW1hbmRM
aW5lQVBJLCByZXR1cm5CeVZhbHVlKTsKICAgICB9LAogCisgICAgcmVzdGFydEZyYW1lOiBmdW5j
dGlvbih0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxG
cmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpOwor
ICAgICAgICBpZiAoIWNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGZp
bmQgY2FsbCBmcmFtZSB3aXRoIGdpdmVuIGlkIjsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGNhbGxG
cmFtZS5yZXN0YXJ0KCk7CisgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKQorICAgICAgICAg
ICAgcmVzdWx0ID0gIlJlc3RhcnQgZnJhbWUgaXMgbm90IHN1cHBvcnRlZCI7IAorICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0sCisKICAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKHRv
cENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkQ2FsbEZy
YW1lSWQgPSBldmFsKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBjZjE5OGMwZmNiMGEyNGJhNTkyNWYyOGRkNGQ3Y2Jh
OGI2ZDE2ZDMyLi41OGViYThkY2JkNmE1ODhiMjAwOTliOTdiMGZiZDVkYTk3ODA2NWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yNDY1LDYgKzI0NjUsMTgg
QEAKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRWRpdHMgSmF2YVNjcmlwdCBzb3Vy
Y2UgbGl2ZS4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogInJlc3RhcnRGcmFtZSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1lSWQiLCAiJHJlZiI6ICJD
YWxsRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJDYWxsIGZyYW1lIGlkZW50aWZpZXIgdG8gZXZh
bHVhdGUgb24uIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJu
cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVzIiwgInR5cGUi
OiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSJ9LCAiZGVzY3JpcHRpb24i
OiAiTmV3IHN0YWNrIHRyYWNlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXN1bHQiLCAidHlwZSI6ICJvYmplY3QiLCAiZGVzY3JpcHRpb24iOiAiVk0tc3BlY2lmaWMgZGVz
Y3JpcHRpb24uIiwgImhpZGRlbiI6IHRydWUgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlJlc3RhcnRzIHBhcnRpY3VsYXIgY2FsbCBmcmFtZSBmcm9tIHRoZSBiZWdpbm5pbmcuIgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRT
Y3JpcHRTb3VyY2UiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdElkIiwgIiRyZWYiOiAiU2NyaXB0SWQiLCAiZGVz
Y3JpcHRpb24iOiAiSWQgb2YgdGhlIHNjcmlwdCB0byBnZXQgc291cmNlIGZvci4iIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCBmYTM5MzdiYWVkMTFhMzhhZTY2NDk5NWEyNTI1YzUxOTA1NmJmMzVkLi4yMmQ1NjFkNzg1
MzhmNDhjNTNlNmVkZDZkYWFkNWNjMTA0YmNkOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNzgsNiArMzc4LDE4
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgaWYgKG9iamVjdCkKICAgICAgICAgcmVz
dWx0ID0gb2JqZWN0OwogfQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0YXJ0RnJh
bWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBS
ZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxG
cmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRT
Y3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1lIGhh
cyBnb25lIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluamVjdGVkU2NyaXB0LnJl
c3RhcnRGcmFtZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwg
JnJlc3VsdCk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS51cGRhdGVDYWxsU3RhY2soJm1fY3Vy
cmVudENhbGxTdGFjayk7CisgICAgbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRDYWxsRnJhbWVzKCk7
Cit9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9y
U3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3Vy
Y2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaAppbmRleCA5ZjQxNWE1ZjBlZjg2NDUwYjNhMzU5ZTVhMDNmZmJhMTBhNjM2NTdmLi41
MmM1MjRmNmIxM2YxNjZkZjdiMjIxMWFlZTg2MTc4MDBkNzc4NmVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTg5LDYgKzg5
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0
IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRj
aD4gPiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJv
b2wqIHByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCByZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291cmNl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3Vy
Y2UpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1
bmN0aW9uRGV0YWlscz4mKTsKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQo
SW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbAppbmRleCA0N2NhNWQxODFjYWE2NDVjMGJj
MzQzZmIwMDgyYmRiN2QzYTFmNWEzLi5kMzczZDVkODIxZDVmNjQ2ZmIzYjg5ZmY1M2RjMzUyOTAz
YzcyNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENh
bGxGcmFtZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxs
RnJhbWUuaWRsCkBAIC0zOSw2ICszOSw3IEBAIG1vZHVsZSBpbnNwZWN0b3IgewogICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBDQVRDSF9TQ09QRSA9IDQ7CiAKICAgICAgICAgW0N1c3RvbV0g
dm9pZCBldmFsdWF0ZShpbiBET01TdHJpbmcgc2NyaXB0KTsKKyAgICAgICAgW0N1c3RvbV0gRE9N
T2JqZWN0IHJlc3RhcnQoKTsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSmF2YVNjcmlw
dENhbGxGcmFtZSBjYWxsZXI7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNvdXJj
ZUlEOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148040</attachid>
            <date>2012-06-17 20:05:58 -0700</date>
            <delta_ts>2012-06-18 05:05:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89147-20120618070557.patch</filename>
            <type>text/plain</type>
            <size>18159</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNiNTU3NWQ2MDllZTEw
YTI1MWJhMTYzMTdhZWY1NTkxZDRkZmVkZC4uZTExNTZhZGEyZGZiMjI4YjY1NmVhMDU3NWM3MTdi
OWM2NzE0NzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA2LTE2ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0ICdSZXN0YXJ0IGZyYW1lJyBpbiBwcm90b2NvbCBhbmQgYmFja2VuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkxNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3IuanNvbiBn
b3QgbmV3IGNvbW1hbmQgaW4gRGVidWdnZXIgZG9tYWluLgorICAgICAgICBBIGNhbGwgcGF0aCBm
cm9tIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgdG8gVjggRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZy
YW1lIEFQSQorICAgICAgICBpcyBidWlsdC4KKyAgICAgICAgSlNDIGltcGxlbWVudGF0aW9uIGlz
IGEgc3R1YiB3aXRoIGZpeCBtZSAoNDAzMDApLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAoSmF2YVNjcmlwdENh
bGxGcmFtZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
dXBkYXRlQ2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0RlYnVnZ2VyU2NyaXB0LmpzOgorICAgICAgICAoLik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpyZXN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRDYWxsRnJhbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNh
bGxTdGFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0YXJ0RnJhbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGw6
CisKIDIwMTItMDYtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTZXR0aW5nczo6ZGV2aWNlUGl4ZWxSYXRpbyBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBpcyBj
b25mdXNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IGEzMjU0NjcwMTEzZjQ4ZGI0OTM1ZTE3
YjQ2Zjg0NmJlMWRkNGE1ZDIuLjQwZDNhM2ZiOGFkNDRiMDM2NTdkODEwNDdkMWQyZDNhNzA4YzIw
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENh
bGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgSlNWYWx1ZSBKU0ph
dmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydChFeGVj
U3RhdGUqKQoreworICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVtZW50IHRoaXMuCisgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Cit9CisKIEpTVmFsdWUgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lOjp0aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlt
cGwoKS0+dGhpc09iamVjdCgpID8gSlNWYWx1ZShpbXBsKCktPnRoaXNPYmplY3QoKSkgOiBqc051
bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBkOGIxMDcwZGZkZjZkOWM4YjJiYjgyZjhkNWNhZjFhNThhYThkZGMwLi4yZDkx
ZDhhNWUyNTA5YmQyZThhZDFmYTA4ODZkYWZlZTJkM2UwMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMDYsNiArMjA2LDEz
IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisKK3Zv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSopCit7Cisg
ICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgcmVzdGFydCBmcmFtZSBmZWF0dXJlIHRoYXQg
aXMgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAvLyBGSVhNRSg0MDMwMCk6IGltcGxlbWVudCB0
aGlzLgorfQorCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKFNjcmlw
dERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIEFTU0VSVChtX3BhdXNlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmOWRm
YWIzMjA5YmQ1NWEwOGE0YzBmYmI3ODNhYjIyNDg1OGFiOGU1Li5hMTk3NGZiY2FkZjI5M2Y5Mzdm
YTAyMzZmNzhlY2Q5NzEwMTdjZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKICAgICBib29sIHNldFNjcmlwdFNvdXJjZShjb25zdCBT
dHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wgcHJldmlldywg
U3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIFNjcmlwdE9iamVjdCog
cmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2FsbEZyYW1l
KTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigpIHsgcmV0dXJuIHRydWU7IH0KICAg
ICAvLyBGSVhNRTogTmVlZCB0byByZW1vdmUgdGhpcy4gUmVmZXIgdG8gYnVnOiA4ODc1OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKaW5kZXggNzc0ZjY0
NjA2MDRkN2ZhYzdmNzUyOWY1YjAzZTY5YWMxOTA5NWIzMi4uOTE0YjZmMjYyNDc0ZTY4MjFjNzk2
YzM2MGM3MTFjMGM2OWNiNjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGVidWdnZXJTY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanMKQEAgLTI1NCwxMCArMjU0LDE2IEBAIERlYnVnZ2VyU2NyaXB0Ll9mcmFt
ZU1pcnJvclRvSlNDYWxsRnJhbWUgPSBmdW5jdGlvbihmcmFtZU1pcnJvciwgY2FsbGVyRnJhbWUp
CiAgICAgICAgIHNjb3BlQ2hhaW4ucHVzaChEZWJ1Z2dlclNjcmlwdC5fYnVpbGRTY29wZU9iamVj
dChzY29wZU1pcnJvcikpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGV2YWx1YXRlKGV4cHJlc3Np
b24pIHsKKyAgICBmdW5jdGlvbiBldmFsdWF0ZShleHByZXNzaW9uKQorICAgIHsKICAgICAgICAg
cmV0dXJuIGZyYW1lTWlycm9yLmV2YWx1YXRlKGV4cHJlc3Npb24sIGZhbHNlKS52YWx1ZSgpOwog
ICAgIH0KIAorICAgIGZ1bmN0aW9uIHJlc3RhcnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERl
YnVnLkxpdmVFZGl0LlJlc3RhcnRGcmFtZShmcmFtZU1pcnJvcik7CisgICAgfQorCiAgICAgcmV0
dXJuIHsKICAgICAgICAgInNvdXJjZUlEIjogc291cmNlSUQsCiAgICAgICAgICJsaW5lIjogbG9j
YXRpb24gPyBsb2NhdGlvbi5saW5lIDogMCwKQEAgLTI2Nyw3ICsyNzMsOCBAQCBEZWJ1Z2dlclNj
cmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJhbWVNaXJyb3IsIGNh
bGxlckZyYW1lKQogICAgICAgICAic2NvcGVDaGFpbiI6IHNjb3BlQ2hhaW4sCiAgICAgICAgICJz
Y29wZVR5cGUiOiBzY29wZVR5cGUsCiAgICAgICAgICJldmFsdWF0ZSI6IGV2YWx1YXRlLAotICAg
ICAgICAiY2FsbGVyIjogY2FsbGVyRnJhbWUKKyAgICAgICAgImNhbGxlciI6IGNhbGxlckZyYW1l
LAorICAgICAgICAicmVzdGFydCI6IHJlc3RhcnQKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IDViYjQz
NmY0ZWJmYWJhMGE1MTM4YjY0NzlkNjI4MjFkZTFhZWFhMzguLjIxZGU5MzJkNDg3YTI0N2EwODYx
YzUzNmEwNzU1ODk4NjRmMGI0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0xMjUsNiArMTI1LDEzIEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24pCiAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi0+Q2FsbChtX2NhbGxGcmFtZS5n
ZXQoKSwgMSwgYXJndik7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpyZXN0YXJ0KCkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gcmVzdGFy
dEZ1bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fY2FsbEZyYW1lLmdl
dCgpLT5HZXQodjhTdHJpbmcoInJlc3RhcnQiKSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10gPSB7IH07CisgICAgcmV0dXJuIHJlc3RhcnRGdW5jdGlvbi0+Q2FsbChtX2NhbGxG
cmFtZS5nZXQoKSwgMCwgYXJndik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmluZGV4IDk3MTZjOTBmZjVhZmY5NGNh
ZTcyYTNlMGU0ZGZmNWJkMTUyODU3OTYuLjAyMTYxNmU1Njk2NDkyNGRmZjg3MzVlMWQ5YzIyOTRh
NTA0M2UwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0aGlzT2JqZWN0KCkgY29uc3Q7CiAgICAgCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7CisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlc3RhcnQoKTsKICAgICAKIHByaXZhdGU6CiAgICAgSmF2YVNjcmlwdENhbGxG
cmFtZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBkZWJ1Z2dlckNvbnRleHQsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA4NjVkNDdmMjE5Nzk1MGRmN2E2Y2Y1ZjMxNGEz
NWM4NDE2MGFmZjI3Li4wOGFiMTViNjFlOWIyYzdjZmViNGM4MTQ0OWNmNjk0NTdlZDA0ZDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0yNTQsNiArMjU0LDE1IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNv
dXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKFNj
cmlwdFZhbHVlKiBjYWxsRnJhbWUpCit7CisgICAgLy8gQ2FsbCBzdGFjayBtYXkgaGF2ZSBjaGFu
Z2VkIGFmdGVyIGlmIHRoZSBlZGl0ZWQgZnVuY3Rpb24gd2FzIG9uIHRoZSBzdGFjay4KKyAgICBp
ZiAoaXNQYXVzZWQoKSkKKyAgICAgICAgKmNhbGxGcmFtZSA9IGN1cnJlbnRDYWxsRnJhbWUoKTsK
K30KKworCiBTY3JpcHRWYWx1ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSgp
CiB7CiAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggN2U4MGU3Zjg3N2JlYWZiNjZkOGIyNWYxZTkz
NWVlMTc1NDI3YjE4ZS4uNDJlMDc1OTk5ZTk4MGRjOWQ3NzI0OTVkY2I2YWU3ZDA3NTk0YjFhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBA
IC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuU2V0U2NyaXB0U291cmNlKCk7
CiAgICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3Qg
U3RyaW5nJiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZh
bHVlKiBuZXdDYWxsRnJhbWVzLCBTY3JpcHRPYmplY3QqIHJlc3VsdCk7CisgICAgdm9pZCB1cGRh
dGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNlc1Jl
Y29tcGlsYXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgc3VwcG9ydHNOYXRpdmVC
cmVha3BvaW50cygpIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDA2ZjU1YTk5M2FmOWE2ZGY0M2Nh
NDRjYjNjMDU1MjU3NTliMTQ2MWEuLjQ5ZmU3NTE2NTc0ODdiZTJlYzY2ZDY0ZjhiNzgxODdmODhk
NjhkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0
aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9u
Q2FsbDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9ucykKIAog
ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKICAgICB7Ci0gICAgICAgIFY4UmVjdXJz
aW9uU2NvcGUgc2NvcGUoZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgVjhS
ZWN1cnNpb25TY29wZSBpbm5lclNjb3BlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHRoaXNPYmplY3QsIG1fYXJndW1lbnRzLnNp
emUoKSwgYXJncy5nZXQoKSk7CiAgICAgfQogICAgIGlmICghc2NvcGUuc3VjY2VzcygpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0
Q2FsbEZyYW1lQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IDIxMGVmMTAyOTU4NjVlNjZiMmUw
ZjhlMTZhNDhkOTc0MmVjZWQ1ODMuLjc2YjVlZWUzMTlkNjlkMWI1MTFlOWJmMmViNDQzYTFhYTU1
OTg1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCkBAIC00Niw2ICs0Niwx
MyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgIHJldHVybiBpbXBsLT5ldmFsdWF0ZShl
eHByZXNzaW9uKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxG
cmFtZTo6cmVzdGFydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
SU5DX1NUQVRTKCJWOEphdmFTY3JpcHRDYWxsRnJhbWUucmVzdGFydENhbGxiYWNrKCkiKTsKKyAg
ICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4gaW1wbC0+cmVzdGFydCgpOworfQorCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZUNoYWluQWNj
ZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJWOEphdmFTY3JpcHRDYWxsRnJhbWUuc2Nv
cGVDaGFpbkFjY2Vzc29yR2V0dGVyKCkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDJmMGU2MTc4NDQyNjc2MDAzMmVkYjdhOGY1MjAwYmNmMDhh
NGQ5YzcuLjQxNGMyMmY4OWYzYmM0MjFhYzAxOGVmNDM4ODgyYjk4MmMzZTFlMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtOTUsNiArOTUsMjYg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcs
IGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OnJlc3RhcnRGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFZhbHVl
JiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogcmVzdWx0KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2lu
amVjdGVkU2NyaXB0T2JqZWN0LCAicmVzdGFydEZyYW1lIik7CisgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoY2FsbEZyYW1lcyk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZy
YW1lSWQpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CisgICAgbWFr
ZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CisgICAgaWYgKHJlc3VsdFZhbHVlKSB7Cisg
ICAgICAgIGlmIChyZXN1bHRWYWx1ZS0+dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlU3Ry
aW5nKSB7CisgICAgICAgICAgICByZXN1bHRWYWx1ZS0+YXNTdHJpbmcoZXJyb3JTdHJpbmcpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChyZXN1bHRWYWx1ZS0+
dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0KSB7CisgICAgICAgICAgICAqcmVz
dWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKK30KKwog
dm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8RnVuY3Rpb25EZXRhaWxz
PiogcmVzdWx0KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVk
U2NyaXB0T2JqZWN0LCAiZ2V0RnVuY3Rpb25EZXRhaWxzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDhjNjczNmQ5Mzg4MDY1OWM5NTdkNDhkZGY3Y2I4
ODY2MWFjNjUwMjAuLmY4MTQ1MTY3NjNjYjc1ZTMwZmNlMmI2ZmFhNzE0Zjk2YjY1MmMxZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC04MSw2ICs4MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXR1cm5CeVZh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2b2lkIHJl
c3RhcnRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBj
b25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0
KTsKICAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRh
aWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4gPiogcmVz
dWx0KTsKICAgICBOb2RlKiBub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMK
aW5kZXggMzFjODBiZDIxMDY0Mjg3MWU4MWI5YzIzOTgzYzhiYTM0ZjZjM2RiYy4uYWU0Yzk3OGNm
M2YyZTRlNzkxNmQzMWQ4MzA1MGFhZjM2ZjQyYWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMzcxLDYgKzM3MSwxNyBAQCBJ
bmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0
ZUFuZFdyYXAoY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUsIGV4cHJlc3Npb24sIG9iamVj
dEdyb3VwLCB0cnVlLCBpbmplY3RDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSk7CiAgICAg
fSwKIAorICAgIHJlc3RhcnRGcmFtZTogZnVuY3Rpb24odG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJ
ZCkKKyAgICB7CisgICAgICAgIHZhciBjYWxsRnJhbWUgPSB0aGlzLl9jYWxsRnJhbWVGb3JJZCh0
b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKTsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUpCisgICAg
ICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIGNhbGwgZnJhbWUgd2l0aCBnaXZlbiBpZCI7
CisgICAgICAgIHZhciByZXN1bHQgPSBjYWxsRnJhbWUucmVzdGFydCgpOworICAgICAgICBpZiAo
cmVzdWx0ID09PSBmYWxzZSkKKyAgICAgICAgICAgIHJlc3VsdCA9ICJSZXN0YXJ0IGZyYW1lIGlz
IG5vdCBzdXBwb3J0ZWQiOyAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCiAgICAg
X2NhbGxGcmFtZUZvcklkOiBmdW5jdGlvbih0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQogICAg
IHsKICAgICAgICAgdmFyIHBhcnNlZENhbGxGcmFtZUlkID0gZXZhbCgiKCIgKyBjYWxsRnJhbWVJ
ZCArICIpIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggY2Yx
OThjMGZjYjBhMjRiYTU5MjVmMjhkZDRkN2NiYThiNmQxNmQzMi4uNThlYmE4ZGNiZDZhNTg4YjIw
MDk5Yjk3YjBmYmQ1ZGE5NzgwNjViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtMjQ2NSw2ICsyNDY1LDE4IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkVkaXRzIEphdmFTY3JpcHQgc291cmNlIGxpdmUuIgogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXN0YXJ0RnJhbWUiLAorICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImNhbGxGcmFtZUlkIiwgIiRyZWYiOiAiQ2FsbEZyYW1lSWQiLCAiZGVzY3JpcHRpb24iOiAi
Q2FsbCBmcmFtZSBpZGVudGlmaWVyIHRvIGV2YWx1YXRlIG9uLiIgfQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiY2FsbEZyYW1lcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6
ICJDYWxsRnJhbWUifSwgImRlc2NyaXB0aW9uIjogIk5ldyBzdGFjayB0cmFjZS4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAib2JqZWN0IiwgImRl
c2NyaXB0aW9uIjogIlZNLXNwZWNpZmljIGRlc2NyaXB0aW9uLiIsICJoaWRkZW4iOiB0cnVlIH0K
KyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlLAorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXN0YXJ0cyBwYXJ0aWN1bGFyIGNhbGwgZnJh
bWUgZnJvbSB0aGUgYmVnaW5uaW5nLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0U2NyaXB0U291cmNlIiwKICAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JpcHRJ
ZCIsICIkcmVmIjogIlNjcmlwdElkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBzY3JpcHQg
dG8gZ2V0IHNvdXJjZSBmb3IuIiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZmEzOTM3YmFlZDExYTM4YWU2NjQ5OTVh
MjUyNWM1MTkwNTZiZjM1ZC4uMjJkNTYxZDc4NTM4ZjQ4YzUzZTZlZGQ2ZGFhZDVjYzEwNGJjZDll
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMzc4LDYgKzM3OCwxOCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwog
ICAgIGlmIChvYmplY3QpCiAgICAgICAgIHJlc3VsdCA9IG9iamVjdDsKIH0KK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6cmVzdGFydEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lPiA+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQp
OworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgKmVycm9y
U3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpbmplY3RlZFNjcmlwdC5yZXN0YXJ0RnJhbWUoZXJyb3JTdHJpbmcsIG1fY3Vy
cmVudENhbGxTdGFjaywgY2FsbEZyYW1lSWQsICZyZXN1bHQpOworICAgIHNjcmlwdERlYnVnU2Vy
dmVyKCkudXBkYXRlQ2FsbFN0YWNrKCZtX2N1cnJlbnRDYWxsU3RhY2spOworICAgIG5ld0NhbGxG
cmFtZXMgPSBjdXJyZW50Q2FsbEZyYW1lcygpOworfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYg
c2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggOWY0MTVhNWYwZWY4NjQ1
MGIzYTM1OWU1YTAzZmZiYTEwYTYzNjU3Zi4uNTJjNTI0ZjZiMTNmMTY2ZGY3YjIyMTFhZWU4NjE3
ODAwZDc3ODZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCkBAIC04OSw2ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElk
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+ID4mKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3Qg
U3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBwcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+JiBuZXdDYWxsRnJh
bWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVzdGFydEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4g
PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CiAgICAg
dmlydHVhbCB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVu
Y3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+Jik7CiAgICAgdm9pZCBz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6
UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxG
cmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5p
ZGwKaW5kZXggNDdjYTVkMTgxY2FhNjQ1YzBiYzM0M2ZiMDA4MmJkYjdkM2ExZjVhMy4uZDM3M2Q1
ZDgyMWQ1ZjY0NmZiM2I4OWZmNTNkYzM1MjkwM2M3MjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbApAQCAtMzksNiArMzksNyBAQCBt
b2R1bGUgaW5zcGVjdG9yIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ0FUQ0hfU0NP
UEUgPSA0OwogCiAgICAgICAgIFtDdXN0b21dIHZvaWQgZXZhbHVhdGUoaW4gRE9NU3RyaW5nIHNj
cmlwdCk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCByZXN0YXJ0KCk7CiAKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEphdmFTY3JpcHRDYWxsRnJhbWUgY2FsbGVyOwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBzb3VyY2VJRDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148085</attachid>
            <date>2012-06-18 05:05:34 -0700</date>
            <delta_ts>2012-06-18 10:28:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89147-20120618160532.patch</filename>
            <type>text/plain</type>
            <size>18076</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNiNTU3NWQ2MDllZTEw
YTI1MWJhMTYzMTdhZWY1NTkxZDRkZmVkZC4uZTExNTZhZGEyZGZiMjI4YjY1NmVhMDU3NWM3MTdi
OWM2NzE0NzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA2LTE2ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0ICdSZXN0YXJ0IGZyYW1lJyBpbiBwcm90b2NvbCBhbmQgYmFja2VuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkxNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3IuanNvbiBn
b3QgbmV3IGNvbW1hbmQgaW4gRGVidWdnZXIgZG9tYWluLgorICAgICAgICBBIGNhbGwgcGF0aCBm
cm9tIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgdG8gVjggRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZy
YW1lIEFQSQorICAgICAgICBpcyBidWlsdC4KKyAgICAgICAgSlNDIGltcGxlbWVudGF0aW9uIGlz
IGEgc3R1YiB3aXRoIGZpeCBtZSAoNDAzMDApLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAoSmF2YVNjcmlwdENh
bGxGcmFtZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
dXBkYXRlQ2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0RlYnVnZ2VyU2NyaXB0LmpzOgorICAgICAgICAoLik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpyZXN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRDYWxsRnJhbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNh
bGxTdGFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0YXJ0RnJhbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGw6
CisKIDIwMTItMDYtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTZXR0aW5nczo6ZGV2aWNlUGl4ZWxSYXRpbyBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBpcyBj
b25mdXNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IGEzMjU0NjcwMTEzZjQ4ZGI0OTM1ZTE3
YjQ2Zjg0NmJlMWRkNGE1ZDIuLjQwZDNhM2ZiOGFkNDRiMDM2NTdkODEwNDdkMWQyZDNhNzA4YzIw
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENh
bGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgSlNWYWx1ZSBKU0ph
dmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydChFeGVj
U3RhdGUqKQoreworICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVtZW50IHRoaXMuCisgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Cit9CisKIEpTVmFsdWUgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lOjp0aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlt
cGwoKS0+dGhpc09iamVjdCgpID8gSlNWYWx1ZShpbXBsKCktPnRoaXNPYmplY3QoKSkgOiBqc051
bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBkOGIxMDcwZGZkZjZkOWM4YjJiYjgyZjhkNWNhZjFhNThhYThkZGMwLi4yZDkx
ZDhhNWUyNTA5YmQyZThhZDFmYTA4ODZkYWZlZTJkM2UwMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMDYsNiArMjA2LDEz
IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisKK3Zv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSopCit7Cisg
ICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgcmVzdGFydCBmcmFtZSBmZWF0dXJlIHRoYXQg
aXMgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAvLyBGSVhNRSg0MDMwMCk6IGltcGxlbWVudCB0
aGlzLgorfQorCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKFNjcmlw
dERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIEFTU0VSVChtX3BhdXNlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmOWRm
YWIzMjA5YmQ1NWEwOGE0YzBmYmI3ODNhYjIyNDg1OGFiOGU1Li5hMTk3NGZiY2FkZjI5M2Y5Mzdm
YTAyMzZmNzhlY2Q5NzEwMTdjZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKICAgICBib29sIHNldFNjcmlwdFNvdXJjZShjb25zdCBT
dHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wgcHJldmlldywg
U3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIFNjcmlwdE9iamVjdCog
cmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2FsbEZyYW1l
KTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigpIHsgcmV0dXJuIHRydWU7IH0KICAg
ICAvLyBGSVhNRTogTmVlZCB0byByZW1vdmUgdGhpcy4gUmVmZXIgdG8gYnVnOiA4ODc1OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKaW5kZXggNzc0ZjY0
NjA2MDRkN2ZhYzdmNzUyOWY1YjAzZTY5YWMxOTA5NWIzMi4uOTE0YjZmMjYyNDc0ZTY4MjFjNzk2
YzM2MGM3MTFjMGM2OWNiNjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGVidWdnZXJTY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanMKQEAgLTI1NCwxMCArMjU0LDE2IEBAIERlYnVnZ2VyU2NyaXB0Ll9mcmFt
ZU1pcnJvclRvSlNDYWxsRnJhbWUgPSBmdW5jdGlvbihmcmFtZU1pcnJvciwgY2FsbGVyRnJhbWUp
CiAgICAgICAgIHNjb3BlQ2hhaW4ucHVzaChEZWJ1Z2dlclNjcmlwdC5fYnVpbGRTY29wZU9iamVj
dChzY29wZU1pcnJvcikpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGV2YWx1YXRlKGV4cHJlc3Np
b24pIHsKKyAgICBmdW5jdGlvbiBldmFsdWF0ZShleHByZXNzaW9uKQorICAgIHsKICAgICAgICAg
cmV0dXJuIGZyYW1lTWlycm9yLmV2YWx1YXRlKGV4cHJlc3Npb24sIGZhbHNlKS52YWx1ZSgpOwog
ICAgIH0KIAorICAgIGZ1bmN0aW9uIHJlc3RhcnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERl
YnVnLkxpdmVFZGl0LlJlc3RhcnRGcmFtZShmcmFtZU1pcnJvcik7CisgICAgfQorCiAgICAgcmV0
dXJuIHsKICAgICAgICAgInNvdXJjZUlEIjogc291cmNlSUQsCiAgICAgICAgICJsaW5lIjogbG9j
YXRpb24gPyBsb2NhdGlvbi5saW5lIDogMCwKQEAgLTI2Nyw3ICsyNzMsOCBAQCBEZWJ1Z2dlclNj
cmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJhbWVNaXJyb3IsIGNh
bGxlckZyYW1lKQogICAgICAgICAic2NvcGVDaGFpbiI6IHNjb3BlQ2hhaW4sCiAgICAgICAgICJz
Y29wZVR5cGUiOiBzY29wZVR5cGUsCiAgICAgICAgICJldmFsdWF0ZSI6IGV2YWx1YXRlLAotICAg
ICAgICAiY2FsbGVyIjogY2FsbGVyRnJhbWUKKyAgICAgICAgImNhbGxlciI6IGNhbGxlckZyYW1l
LAorICAgICAgICAicmVzdGFydCI6IHJlc3RhcnQKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IDViYjQz
NmY0ZWJmYWJhMGE1MTM4YjY0NzlkNjI4MjFkZTFhZWFhMzguLjIxZGU5MzJkNDg3YTI0N2EwODYx
YzUzNmEwNzU1ODk4NjRmMGI0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0xMjUsNiArMTI1LDEzIEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24pCiAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi0+Q2FsbChtX2NhbGxGcmFtZS5n
ZXQoKSwgMSwgYXJndik7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpyZXN0YXJ0KCkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gcmVzdGFy
dEZ1bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fY2FsbEZyYW1lLmdl
dCgpLT5HZXQodjhTdHJpbmcoInJlc3RhcnQiKSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10gPSB7IH07CisgICAgcmV0dXJuIHJlc3RhcnRGdW5jdGlvbi0+Q2FsbChtX2NhbGxG
cmFtZS5nZXQoKSwgMCwgYXJndik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmluZGV4IDk3MTZjOTBmZjVhZmY5NGNh
ZTcyYTNlMGU0ZGZmNWJkMTUyODU3OTYuLjAyMTYxNmU1Njk2NDkyNGRmZjg3MzVlMWQ5YzIyOTRh
NTA0M2UwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0aGlzT2JqZWN0KCkgY29uc3Q7CiAgICAgCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7CisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlc3RhcnQoKTsKICAgICAKIHByaXZhdGU6CiAgICAgSmF2YVNjcmlwdENhbGxG
cmFtZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBkZWJ1Z2dlckNvbnRleHQsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA4NjVkNDdmMjE5Nzk1MGRmN2E2Y2Y1ZjMxNGEz
NWM4NDE2MGFmZjI3Li45MmY3ZjViM2QxMmNhNTM2YmQ0NjY2MTAyM2M4MWE0ZWExNzUwNzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0yNTQsNiArMjU0LDE0IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNv
dXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKFNj
cmlwdFZhbHVlKiBjYWxsRnJhbWUpCit7CisgICAgaWYgKGlzUGF1c2VkKCkpCisgICAgICAgICpj
YWxsRnJhbWUgPSBjdXJyZW50Q2FsbEZyYW1lKCk7Cit9CisKKwogU2NyaXB0VmFsdWUgU2NyaXB0
RGVidWdTZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUoKQogewogICAgIEFTU0VSVChpc1BhdXNlZCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmlu
ZGV4IDdlODBlN2Y4NzdiZWFmYjY2ZDhiMjVmMWU5MzVlZTE3NTQyN2IxOGUuLjQyZTA3NTk5OWU5
ODBkYzlkNzcyNDk1ZGNiNmFlN2QwNzU5NGIxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGNhblNldFNjcmlwdFNvdXJjZSgpOwogICAgIGJvb2wgc2V0U2NyaXB0U291cmNl
KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCBw
cmV2aWV3LCBTdHJpbmcqIGVycm9yLCBTY3JpcHRWYWx1ZSogbmV3Q2FsbEZyYW1lcywgU2NyaXB0
T2JqZWN0KiByZXN1bHQpOworICAgIHZvaWQgdXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKiBj
YWxsRnJhbWUpOwogCiAgICAgYm9vbCBjYXVzZXNSZWNvbXBpbGF0aW9uKCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIHN1cHBvcnRzTmF0aXZlQnJlYWtwb2ludHMoKSB7IHJldHVybiB0cnVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcAppbmRleCAwNmY1NWE5OTNhZjlhNmRmNDNjYTQ0Y2IzYzA1NTI1NzU5YjE0NjFhLi40OWZl
NzUxNjU3NDg3YmUyZWM2NmQ2NGY4Yjc4MTg3Zjg4ZDY4ZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTEzMyw3ICsxMzMs
NyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0
aW9uLCBib29sIHJlcG9ydEV4Y2VwdGlvbnMpCiAKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBy
ZXN1bHQ7CiAgICAgewotICAgICAgICBWOFJlY3Vyc2lvblNjb3BlIHNjb3BlKGdldFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgaW5uZXJTY29wZShn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICByZXN1bHQgPSBmdW5jdGlvbi0+
Q2FsbCh0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOwogICAgIH0K
ICAgICBpZiAoIXNjb3BlLnN1Y2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9t
LmNwcAppbmRleCAyMTBlZjEwMjk1ODY1ZTY2YjJlMGY4ZTE2YTQ4ZDk3NDJlY2VkNTgzLi43NmI1
ZWVlMzE5ZDY5ZDFiNTExZTliZjJlYjQ0M2ExYWE1NTk4NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2Fs
bEZyYW1lQ3VzdG9tLmNwcApAQCAtNDYsNiArNDYsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnQKICAgICByZXR1cm4gaW1wbC0+ZXZhbHVhdGUoZXhwcmVzc2lvbik7CiB9CiAKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiVjhKYXZhU2NyaXB0Q2Fs
bEZyYW1lLnJlc3RhcnRDYWxsYmFjaygpIik7CisgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogaW1w
bCA9IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAg
cmV0dXJuIGltcGwtPnJlc3RhcnQoKTsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2
YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVDaGFpbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19T
VEFUUygiVjhKYXZhU2NyaXB0Q2FsbEZyYW1lLnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcigpIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCAyZjBl
NjE3ODQ0MjY3NjAwMzJlZGI3YThmNTIwMGJjZjA4YTRkOWM3Li40MTRjMjJmODlmM2JjNDIxYWMw
MThlZjQzODg4MmI5ODJjM2UxZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAKQEAgLTk1LDYgKzk1LDI2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRW
CiAgICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJv
d24pOwogfQogCit2b2lkIEluamVjdGVkU2NyaXB0OjpyZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5n
JiBjYWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3sKKyAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlc3Rh
cnRGcmFtZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOworICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZUlkKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHJlc3VsdFZhbHVlOworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFs
dWUpOworICAgIGlmIChyZXN1bHRWYWx1ZSkgeworICAgICAgICBpZiAocmVzdWx0VmFsdWUtPnR5
cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZykgeworICAgICAgICAgICAgcmVzdWx0
VmFsdWUtPmFzU3RyaW5nKGVycm9yU3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAocmVzdWx0VmFsdWUtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6
VHlwZU9iamVjdCkgeworICAgICAgICAgICAgKnJlc3VsdCA9IHJlc3VsdFZhbHVlLT5hc09iamVj
dCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgICplcnJvclN0
cmluZyA9ICJJbnRlcm5hbCBlcnJvciI7Cit9CisKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1
bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKIHsKICAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldEZ1bmN0aW9u
RGV0YWlscyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRl
eCA4YzY3MzZkOTM4ODA2NTljOTU3ZDQ4ZGRmN2NiODg2NjFhYzY1MDIwLi5mODE0NTE2NzYzY2I3
NWUzMGZjZTJiNmZhYTcxNGY5NmI2NTJjMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuaApAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1
bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCByZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRGdW5jdGlvbkRl
dGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCk7CiAgICAgdm9pZCBn
ZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBv
d25Qcm9wZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+ID4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9i
amVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDMxYzgwYmQyMTA2NDI4NzFlODFi
OWMyMzk4M2M4YmEzNGY2YzNkYmMuLmFlNGM5NzhjZjNmMmU0ZTc5MTZkMzFkODMwNTBhYWYzNmY0
MmFjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKQEAgLTM3MSw2ICszNzEsMTcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVBbmRXcmFwKGNhbGxGcmFtZS5ldmFsdWF0
ZSwgY2FsbEZyYW1lLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgdHJ1ZSwgaW5qZWN0Q29tbWFu
ZExpbmVBUEksIHJldHVybkJ5VmFsdWUpOwogICAgIH0sCiAKKyAgICByZXN0YXJ0RnJhbWU6IGZ1
bmN0aW9uKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpCisgICAgeworICAgICAgICB2YXIgY2Fs
bEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCk7
CisgICAgICAgIGlmICghY2FsbEZyYW1lKQorICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBub3Qg
ZmluZCBjYWxsIGZyYW1lIHdpdGggZ2l2ZW4gaWQiOworICAgICAgICB2YXIgcmVzdWx0ID0gY2Fs
bEZyYW1lLnJlc3RhcnQoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpCisgICAgICAg
ICAgICByZXN1bHQgPSAiUmVzdGFydCBmcmFtZSBpcyBub3Qgc3VwcG9ydGVkIjsgCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfSwKKwogICAgIF9jYWxsRnJhbWVGb3JJZDogZnVuY3Rpb24o
dG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCkKICAgICB7CiAgICAgICAgIHZhciBwYXJzZWRDYWxs
RnJhbWVJZCA9IGV2YWwoIigiICsgY2FsbEZyYW1lSWQgKyAiKSIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGNmMTk4YzBmY2IwYTI0YmE1OTI1ZjI4ZGQ0ZDdj
YmE4YjZkMTZkMzIuLjU4ZWJhOGRjYmQ2YTU4OGIyMDA5OWI5N2IwZmJkNWRhOTc4MDY1YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTI0NjUsNiArMjQ2NSwx
OCBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFZGl0cyBKYXZhU2NyaXB0IHNv
dXJjZSBsaXZlLiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAicmVzdGFydEZyYW1lIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVJZCIsICIkcmVmIjog
IkNhbGxGcmFtZUlkIiwgImRlc2NyaXB0aW9uIjogIkNhbGwgZnJhbWUgaWRlbnRpZmllciB0byBl
dmFsdWF0ZSBvbi4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1
cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhbGxGcmFtZXMiLCAidHlw
ZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiQ2FsbEZyYW1lIn0sICJkZXNjcmlwdGlv
biI6ICJOZXcgc3RhY2sgdHJhY2UuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlc3VsdCIsICJ0eXBlIjogIm9iamVjdCIsICJkZXNjcmlwdGlvbiI6ICJWTS1zcGVjaWZpYyBk
ZXNjcmlwdGlvbi4iLCAiaGlkZGVuIjogdHJ1ZSB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmVzdGFydHMgcGFydGljdWxhciBjYWxsIGZyYW1lIGZyb20gdGhlIGJlZ2lubmluZy4iCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImdl
dFNjcmlwdFNvdXJjZSIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyaXB0SWQiLCAiJHJlZiI6ICJTY3JpcHRJZCIsICJk
ZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgc2NyaXB0IHRvIGdldCBzb3VyY2UgZm9yLiIgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IGZhMzkzN2JhZWQxMWEzOGFlNjY0OTk1YTI1MjVjNTE5MDU2YmYzNWQuLjIyZDU2MWQ3
ODUzOGY0OGM1M2U2ZWRkNmRhYWQ1Y2MxMDRiY2Q5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM3OCw2ICszNzgs
MTggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JT
dHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICBpZiAob2JqZWN0KQogICAgICAgICBy
ZXN1bHQgPSBvYmplY3Q7CiB9Cit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3RhcnRG
cmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQs
IFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4gPiYgbmV3Q2Fs
bEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCkKK3sKKyAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3Rl
ZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUg
aGFzIGdvbmUiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5qZWN0ZWRTY3JpcHQu
cmVzdGFydEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3RhY2ssIGNhbGxGcmFtZUlk
LCAmcmVzdWx0KTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnVwZGF0ZUNhbGxTdGFjaygmbV9j
dXJyZW50Q2FsbFN0YWNrKTsKKyAgICBuZXdDYWxsRnJhbWVzID0gY3VycmVudENhbGxGcmFtZXMo
KTsKK30KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJy
b3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBTdHJpbmcqIHNjcmlwdFNv
dXJjZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oCmluZGV4IDlmNDE1YTVmMGVmODY0NTBiM2EzNTllNWEwM2ZmYmExMGE2MzY1N2Yu
LjUyYzUyNGY2YjEzZjE2NmRmN2IyMjExYWVlODYxNzgwMGQ3Nzg2ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtODksNiAr
ODksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29u
c3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVn
ZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1h
dGNoPiA+Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3Qg
Ym9vbCogcHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkNhbGxGcmFtZT4gPiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3RhcnRGcmFtZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRTb3Vy
Y2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBTdHJpbmcqIHNjcmlwdFNv
dXJjZSk7CiAgICAgdmlydHVhbCB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
RnVuY3Rpb25EZXRhaWxzPiYpOwogICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVu
dChJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCmluZGV4IDQ3Y2E1ZDE4MWNhYTY0NWMw
YmMzNDNmYjAwODJiZGI3ZDNhMWY1YTMuLmQzNzNkNWQ4MjFkNWY2NDZmYjNiODlmZjUzZGMzNTI5
MDNjNzI0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENh
bGxGcmFtZS5pZGwKQEAgLTM5LDYgKzM5LDcgQEAgbW9kdWxlIGluc3BlY3RvciB7CiAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IENBVENIX1NDT1BFID0gNDsKIAogICAgICAgICBbQ3VzdG9t
XSB2b2lkIGV2YWx1YXRlKGluIERPTVN0cmluZyBzY3JpcHQpOworICAgICAgICBbQ3VzdG9tXSBE
T01PYmplY3QgcmVzdGFydCgpOwogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBKYXZhU2Ny
aXB0Q2FsbEZyYW1lIGNhbGxlcjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc291
cmNlSUQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148123</attachid>
            <date>2012-06-18 10:28:21 -0700</date>
            <delta_ts>2012-06-19 05:42:53 -0700</delta_ts>
            <desc>Fix win build</desc>
            <filename>bug-89147-20120618212820.patch</filename>
            <type>text/plain</type>
            <size>18032</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNiNTU3NWQ2MDllZTEw
YTI1MWJhMTYzMTdhZWY1NTkxZDRkZmVkZC4uZTExNTZhZGEyZGZiMjI4YjY1NmVhMDU3NWM3MTdi
OWM2NzE0NzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA2LTE2ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0ICdSZXN0YXJ0IGZyYW1lJyBpbiBwcm90b2NvbCBhbmQgYmFja2VuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkxNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3IuanNvbiBn
b3QgbmV3IGNvbW1hbmQgaW4gRGVidWdnZXIgZG9tYWluLgorICAgICAgICBBIGNhbGwgcGF0aCBm
cm9tIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgdG8gVjggRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZy
YW1lIEFQSQorICAgICAgICBpcyBidWlsdC4KKyAgICAgICAgSlNDIGltcGxlbWVudGF0aW9uIGlz
IGEgc3R1YiB3aXRoIGZpeCBtZSAoNDAzMDApLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAoSmF2YVNjcmlwdENh
bGxGcmFtZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
dXBkYXRlQ2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0RlYnVnZ2VyU2NyaXB0LmpzOgorICAgICAgICAoLik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpyZXN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRDYWxsRnJhbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNh
bGxTdGFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0YXJ0RnJhbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGw6
CisKIDIwMTItMDYtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTZXR0aW5nczo6ZGV2aWNlUGl4ZWxSYXRpbyBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBpcyBj
b25mdXNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IGEzMjU0NjcwMTEzZjQ4ZGI0OTM1ZTE3
YjQ2Zjg0NmJlMWRkNGE1ZDIuLjQwZDNhM2ZiOGFkNDRiMDM2NTdkODEwNDdkMWQyZDNhNzA4YzIw
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENh
bGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgSlNWYWx1ZSBKU0ph
dmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydChFeGVj
U3RhdGUqKQoreworICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVtZW50IHRoaXMuCisgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Cit9CisKIEpTVmFsdWUgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lOjp0aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlt
cGwoKS0+dGhpc09iamVjdCgpID8gSlNWYWx1ZShpbXBsKCktPnRoaXNPYmplY3QoKSkgOiBqc051
bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBkOGIxMDcwZGZkZjZkOWM4YjJiYjgyZjhkNWNhZjFhNThhYThkZGMwLi4yZDkx
ZDhhNWUyNTA5YmQyZThhZDFmYTA4ODZkYWZlZTJkM2UwMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0yMDYsNiArMjA2LDEz
IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisKK3Zv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSopCit7Cisg
ICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgcmVzdGFydCBmcmFtZSBmZWF0dXJlIHRoYXQg
aXMgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAvLyBGSVhNRSg0MDMwMCk6IGltcGxlbWVudCB0
aGlzLgorfQorCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKFNjcmlw
dERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIEFTU0VSVChtX3BhdXNlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmOWRm
YWIzMjA5YmQ1NWEwOGE0YzBmYmI3ODNhYjIyNDg1OGFiOGU1Li5hMTk3NGZiY2FkZjI5M2Y5Mzdm
YTAyMzZmNzhlY2Q5NzEwMTdjZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKICAgICBib29sIHNldFNjcmlwdFNvdXJjZShjb25zdCBT
dHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wgcHJldmlldywg
U3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIFNjcmlwdE9iamVjdCog
cmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2FsbEZyYW1l
KTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigpIHsgcmV0dXJuIHRydWU7IH0KICAg
ICAvLyBGSVhNRTogTmVlZCB0byByZW1vdmUgdGhpcy4gUmVmZXIgdG8gYnVnOiA4ODc1OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKaW5kZXggNzc0ZjY0
NjA2MDRkN2ZhYzdmNzUyOWY1YjAzZTY5YWMxOTA5NWIzMi4uOTE0YjZmMjYyNDc0ZTY4MjFjNzk2
YzM2MGM3MTFjMGM2OWNiNjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGVidWdnZXJTY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanMKQEAgLTI1NCwxMCArMjU0LDE2IEBAIERlYnVnZ2VyU2NyaXB0Ll9mcmFt
ZU1pcnJvclRvSlNDYWxsRnJhbWUgPSBmdW5jdGlvbihmcmFtZU1pcnJvciwgY2FsbGVyRnJhbWUp
CiAgICAgICAgIHNjb3BlQ2hhaW4ucHVzaChEZWJ1Z2dlclNjcmlwdC5fYnVpbGRTY29wZU9iamVj
dChzY29wZU1pcnJvcikpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGV2YWx1YXRlKGV4cHJlc3Np
b24pIHsKKyAgICBmdW5jdGlvbiBldmFsdWF0ZShleHByZXNzaW9uKQorICAgIHsKICAgICAgICAg
cmV0dXJuIGZyYW1lTWlycm9yLmV2YWx1YXRlKGV4cHJlc3Npb24sIGZhbHNlKS52YWx1ZSgpOwog
ICAgIH0KIAorICAgIGZ1bmN0aW9uIHJlc3RhcnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERl
YnVnLkxpdmVFZGl0LlJlc3RhcnRGcmFtZShmcmFtZU1pcnJvcik7CisgICAgfQorCiAgICAgcmV0
dXJuIHsKICAgICAgICAgInNvdXJjZUlEIjogc291cmNlSUQsCiAgICAgICAgICJsaW5lIjogbG9j
YXRpb24gPyBsb2NhdGlvbi5saW5lIDogMCwKQEAgLTI2Nyw3ICsyNzMsOCBAQCBEZWJ1Z2dlclNj
cmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJhbWVNaXJyb3IsIGNh
bGxlckZyYW1lKQogICAgICAgICAic2NvcGVDaGFpbiI6IHNjb3BlQ2hhaW4sCiAgICAgICAgICJz
Y29wZVR5cGUiOiBzY29wZVR5cGUsCiAgICAgICAgICJldmFsdWF0ZSI6IGV2YWx1YXRlLAotICAg
ICAgICAiY2FsbGVyIjogY2FsbGVyRnJhbWUKKyAgICAgICAgImNhbGxlciI6IGNhbGxlckZyYW1l
LAorICAgICAgICAicmVzdGFydCI6IHJlc3RhcnQKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IDViYjQz
NmY0ZWJmYWJhMGE1MTM4YjY0NzlkNjI4MjFkZTFhZWFhMzguLjMyNzRkZWYzODZmZWM1ZWM4NGRl
Y2YzNDY4NzBlMzI4Mjk1ZjJjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0xMjUsNiArMTI1LDEyIEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24pCiAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi0+Q2FsbChtX2NhbGxGcmFtZS5n
ZXQoKSwgMSwgYXJndik7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpyZXN0YXJ0KCkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gcmVzdGFy
dEZ1bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fY2FsbEZyYW1lLmdl
dCgpLT5HZXQodjhTdHJpbmcoInJlc3RhcnQiKSkpOworICAgIHJldHVybiByZXN0YXJ0RnVuY3Rp
b24tPkNhbGwobV9jYWxsRnJhbWUuZ2V0KCksIDAsIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaAppbmRleCA5NzE2
YzkwZmY1YWZmOTRjYWU3MmEzZTBlNGRmZjViZDE1Mjg1Nzk2Li4wMjE2MTZlNTY5NjQ5MjRkZmY4
NzM1ZTFkOWMyMjk0YTUwNDNlMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhpc09iamVjdCgpIGNvbnN0OwogICAgIAogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN0YXJ0KCk7CiAgICAgCiBwcml2YXRlOgogICAgIEph
dmFTY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gZGVidWdnZXJDb250ZXh0
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggODY1ZDQ3ZjIxOTc5NTBk
ZjdhNmNmNWYzMTRhMzVjODQxNjBhZmYyNy4uOTJmN2Y1YjNkMTJjYTUzNmJkNDY2NjEwMjNjODFh
NGVhMTc1MDc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERl
YnVnU2VydmVyLmNwcApAQCAtMjU0LDYgKzI1NCwxNCBAQCBib29sIFNjcmlwdERlYnVnU2VydmVy
OjpzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBu
ZQogICAgIHJldHVybiB0cnVlOwogfQogCisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0
ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2FsbEZyYW1lKQoreworICAgIGlmIChpc1BhdXNlZCgp
KQorICAgICAgICAqY2FsbEZyYW1lID0gY3VycmVudENhbGxGcmFtZSgpOworfQorCisKIFNjcmlw
dFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NF
UlQoaXNQYXVzZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAppbmRleCA3ZTgwZTdmODc3YmVhZmI2NmQ4YjI1ZjFlOTM1ZWUxNzU0MjdiMThl
Li40MmUwNzU5OTllOTgwZGM5ZDc3MjQ5NWRjYjZhZTdkMDc1OTRiMWEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTc3LDYgKzc3LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKICAgICBib29sIHNl
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnQsIGJvb2wgcHJldmlldywgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxG
cmFtZXMsIFNjcmlwdE9iamVjdCogcmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhT
Y3JpcHRWYWx1ZSogY2FsbEZyYW1lKTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzdXBwb3J0c05hdGl2ZUJyZWFrcG9pbnRzKCkg
eyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggMDZmNTVhOTkzYWY5YTZkZjQzY2E0NGNiM2MwNTUyNTc1
OWIxNDYxYS4uNDlmZTc1MTY1NzQ4N2JlMmVjNjZkNjRmOGI3ODE4N2Y4OGQ2OGRhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBA
IC0xMzMsNyArMTMzLDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJv
b2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHRpb25zKQogCiAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gcmVzdWx0OwogICAgIHsKLSAgICAgICAgVjhSZWN1cnNpb25TY29wZSBzY29w
ZShnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBWOFJlY3Vyc2lvblNjb3Bl
IGlubmVyU2NvcGUoZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgcmVzdWx0
ID0gZnVuY3Rpb24tPkNhbGwodGhpc09iamVjdCwgbV9hcmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdl
dCgpKTsKICAgICB9CiAgICAgaWYgKCFzY29wZS5zdWNjZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENh
bGxGcmFtZUN1c3RvbS5jcHAKaW5kZXggMjEwZWYxMDI5NTg2NWU2NmIyZTBmOGUxNmE0OGQ5NzQy
ZWNlZDU4My4uNzZiNWVlZTMxOWQ2OWQxYjUxMWU5YmYyZWI0NDNhMWFhNTU5ODVkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAgLTQ2LDYgKzQ2LDEzIEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50CiAgICAgcmV0dXJuIGltcGwtPmV2YWx1YXRlKGV4cHJlc3Npb24pOwog
fQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIlY4
SmF2YVNjcmlwdENhbGxGcmFtZS5yZXN0YXJ0Q2FsbGJhY2soKSIpOworICAgIEphdmFTY3JpcHRD
YWxsRnJhbWUqIGltcGwgPSBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOworICAgIHJldHVybiBpbXBsLT5yZXN0YXJ0KCk7Cit9CisKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBJTkNfU1RBVFMoIlY4SmF2YVNjcmlwdENhbGxGcmFtZS5zY29wZUNoYWluQWNjZXNz
b3JHZXR0ZXIoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5j
cHAKaW5kZXggMmYwZTYxNzg0NDI2NzYwMDMyZWRiN2E4ZjUyMDBiY2YwOGE0ZDljNy4uNDE0YzIy
Zjg5ZjNiYzQyMWFjMDE4ZWY0Mzg4ODJiOTgyYzNlMWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC05NSw2ICs5NSwyNiBAQCB2b2lkIEluamVj
dGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU2NyaXB0VgogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJl
c3VsdCwgd2FzVGhyb3duKTsKIH0KIAordm9pZCBJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1l
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMs
IGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1
bHQpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRP
YmplY3QsICJyZXN0YXJ0RnJhbWUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxs
RnJhbWVzKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CisgICAg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlv
biwgJnJlc3VsdFZhbHVlKTsKKyAgICBpZiAocmVzdWx0VmFsdWUpIHsKKyAgICAgICAgaWYgKHJl
c3VsdFZhbHVlLT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKKyAgICAg
ICAgICAgIHJlc3VsdFZhbHVlLT5hc1N0cmluZyhlcnJvclN0cmluZyk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdFZhbHVlLT50eXBlKCkgPT0gSW5z
cGVjdG9yVmFsdWU6OlR5cGVPYmplY3QpIHsKKyAgICAgICAgICAgICpyZXN1bHQgPSByZXN1bHRW
YWx1ZS0+YXNPYmplY3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KyAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOworfQorCiB2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7
CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qs
ICJnZXRGdW5jdGlvbkRldGFpbHMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmgKaW5kZXggOGM2NzM2ZDkzODgwNjU5Yzk1N2Q0OGRkZjdjYjg4NjYxYWM2NTAyMC4u
ZjgxNDUxNjc2M2NiNzVlMzBmY2UyYjZmYWE3MTRmOTZiNjUyYzFlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5VmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgIHZvaWQgcmVzdGFydEZyYW1lKEVy
cm9yU3RyaW5nKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYg
Y2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQg
Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQp
OwogICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPiA+KiByZXN1bHQpOwogICAgIE5v
ZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCAzMWM4MGJk
MjEwNjQyODcxZTgxYjljMjM5ODNjOGJhMzRmNmMzZGJjLi5hZTRjOTc4Y2YzZjJlNGU3OTE2ZDMx
ZDgzMDUwYWFmMzZmNDJhY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0zNzEsNiArMzcxLDE3IEBAIEluamVjdGVkU2NyaXB0
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChjYWxs
RnJhbWUuZXZhbHVhdGUsIGNhbGxGcmFtZSwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHRydWUs
IGluamVjdENvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlKTsKICAgICB9LAogCisgICAgcmVz
dGFydEZyYW1lOiBmdW5jdGlvbih0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQorICAgIHsKKyAg
ICAgICAgdmFyIGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwg
Y2FsbEZyYW1lSWQpOworICAgICAgICBpZiAoIWNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVy
biAiQ291bGQgbm90IGZpbmQgY2FsbCBmcmFtZSB3aXRoIGdpdmVuIGlkIjsKKyAgICAgICAgdmFy
IHJlc3VsdCA9IGNhbGxGcmFtZS5yZXN0YXJ0KCk7CisgICAgICAgIGlmIChyZXN1bHQgPT09IGZh
bHNlKQorICAgICAgICAgICAgcmVzdWx0ID0gIlJlc3RhcnQgZnJhbWUgaXMgbm90IHN1cHBvcnRl
ZCI7IAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKICAgICBfY2FsbEZyYW1lRm9y
SWQ6IGZ1bmN0aW9uKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpCiAgICAgewogICAgICAgICB2
YXIgcGFyc2VkQ2FsbEZyYW1lSWQgPSBldmFsKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBjZjE5OGMwZmNiMGEyNGJh
NTkyNWYyOGRkNGQ3Y2JhOGI2ZDE2ZDMyLi41OGViYThkY2JkNmE1ODhiMjAwOTliOTdiMGZiZDVk
YTk3ODA2NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0y
NDY1LDYgKzI0NjUsMTggQEAKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRWRpdHMg
SmF2YVNjcmlwdCBzb3VyY2UgbGl2ZS4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJuYW1lIjogInJlc3RhcnRGcmFtZSIsCisgICAgICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1l
SWQiLCAiJHJlZiI6ICJDYWxsRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJDYWxsIGZyYW1lIGlk
ZW50aWZpZXIgdG8gZXZhbHVhdGUgb24uIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxs
RnJhbWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSJ9
LCAiZGVzY3JpcHRpb24iOiAiTmV3IHN0YWNrIHRyYWNlLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJvYmplY3QiLCAiZGVzY3JpcHRpb24iOiAi
Vk0tc3BlY2lmaWMgZGVzY3JpcHRpb24uIiwgImhpZGRlbiI6IHRydWUgfQorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUsCisgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlJlc3RhcnRzIHBhcnRpY3VsYXIgY2FsbCBmcmFtZSBmcm9tIHRoZSBi
ZWdpbm5pbmcuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJnZXRTY3JpcHRTb3VyY2UiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdElkIiwgIiRyZWYiOiAi
U2NyaXB0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIHNjcmlwdCB0byBnZXQgc291cmNl
IGZvci4iIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcAppbmRleCBmYTM5MzdiYWVkMTFhMzhhZTY2NDk5NWEyNTI1YzUxOTA1NmJm
MzVkLi4yMmQ1NjFkNzg1MzhmNDhjNTNlNmVkZDZkYWFkNWNjMTA0YmNkOWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC0zNzgsNiArMzc4LDE4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0
U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgaWYgKG9iamVj
dCkKICAgICAgICAgcmVzdWx0ID0gb2JqZWN0OwogfQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpyZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGNhbGxGcmFtZUlkLCBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJh
bWU+ID4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpCit7
CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CisgICAgaWYgKGlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5z
cGVjdGVkIGZyYW1lIGhhcyBnb25lIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlu
amVjdGVkU2NyaXB0LnJlc3RhcnRGcmFtZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNr
LCBjYWxsRnJhbWVJZCwgJnJlc3VsdCk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS51cGRhdGVD
YWxsU3RhY2soJm1fY3VycmVudENhbGxTdGFjayk7CisgICAgbmV3Q2FsbEZyYW1lcyA9IGN1cnJl
bnRDYWxsRnJhbWVzKCk7Cit9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2Ny
aXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3Ry
aW5nKiBzY3JpcHRTb3VyY2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA5ZjQxNWE1ZjBlZjg2NDUwYjNhMzU5ZTVhMDNm
ZmJhMTBhNjM2NTdmLi41MmM1MjRmNmIxM2YxNjZkZjdiMjIxMWFlZTg2MTc4MDBkNzc4NmVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaElu
Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQ
YWdlOjpTZWFyY2hNYXRjaD4gPiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2Uo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnQsIGNvbnN0IGJvb2wqIHByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCByZXN0YXJ0RnJhbWUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+JiBuZXdDYWxsRnJh
bWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3Ry
aW5nKiBzY3JpcHRTb3VyY2UpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKTsKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VP
bk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVudW0g
YnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbAppbmRleCA0N2Nh
NWQxODFjYWE2NDVjMGJjMzQzZmIwMDgyYmRiN2QzYTFmNWEzLi5kMzczZDVkODIxZDVmNjQ2ZmIz
Yjg5ZmY1M2RjMzUyOTAzYzcyNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCkBAIC0zOSw2ICszOSw3IEBAIG1vZHVsZSBpbnNwZWN0
b3IgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDQVRDSF9TQ09QRSA9IDQ7CiAKICAg
ICAgICAgW0N1c3RvbV0gdm9pZCBldmFsdWF0ZShpbiBET01TdHJpbmcgc2NyaXB0KTsKKyAgICAg
ICAgW0N1c3RvbV0gRE9NT2JqZWN0IHJlc3RhcnQoKTsKIAogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSmF2YVNjcmlwdENhbGxGcmFtZSBjYWxsZXI7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBsb25nIHNvdXJjZUlEOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148317</attachid>
            <date>2012-06-19 05:43:06 -0700</date>
            <delta_ts>2012-06-19 07:04:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89147-20120619164305.patch</filename>
            <type>text/plain</type>
            <size>18578</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNiNTU3NWQ2MDllZTEw
YTI1MWJhMTYzMTdhZWY1NTkxZDRkZmVkZC4uNmI1MDBjOWY1M2RlNjliNmUxYTRlOGU0OWVmYjE1
OWJkMGE2NmJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA2LTE5ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0ICdSZXN0YXJ0IGZyYW1lJyBpbiBwcm90b2NvbCBhbmQgYmFja2VuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkxNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3IuanNvbiBn
b3QgbmV3IGNvbW1hbmQgaW4gRGVidWdnZXIgZG9tYWluLgorICAgICAgICBBIGNhbGwgcGF0aCBm
cm9tIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgdG8gVjggRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZy
YW1lIEFQSQorICAgICAgICBpcyBidWlsdC4KKyAgICAgICAgSlNDIGltcGxlbWVudGF0aW9uIGlz
IGEgc3R1YiB3aXRoIGZpeCBtZSAoNDAzMDApLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0
RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzOgor
ICAgICAgICAoLik6CisgICAgICAgICogYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJh
bWUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRDYWxsRnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2Fs
bEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SmF2YVNjcmlwdENhbGxGcmFt
ZTo6cmVzdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6cmVzdGFydEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEV4dGVybnMuanM6CisgICAgICAgIChKYXZhU2NyaXB0
Q2FsbEZyYW1lLnByb3RvdHlwZS5yZXN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdGFydEZy
YW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAg
ICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaWRsOgorCiAyMDEyLTA2LTE2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgU2V0dGluZ3M6OmRldmljZVBpeGVsUmF0aW8gZG9lc24ndCBk
byBhbnl0aGluZyBhbmQgaXMgY29uZnVzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRleCBhMzI1
NDY3MDExM2Y0OGRiNDkzNWUxN2I0NmY4NDZiZTFkZDRhNWQyLi40MGQzYTNmYjhhZDQ0YjAzNjU3
ZDgxMDQ3ZDFkMmQzYTcwOGMyMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAgLTQ4LDYgKzQ4
LDEyIEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0ZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxs
RnJhbWU6OnJlc3RhcnQoRXhlY1N0YXRlKikKK3sKKyAgICAvLyBGSVhNRSg0MDMwMCk6IGltcGxl
bWVudCB0aGlzLgorICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTRmFsc2UpOworfQorCiBK
U1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6dGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25z
dAogewogICAgIHJldHVybiBpbXBsKCktPnRoaXNPYmplY3QoKSA/IEpTVmFsdWUoaW1wbCgpLT50
aGlzT2JqZWN0KCkpIDoganNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZDhiMTA3MGRmZGY2ZDljOGIyYmI4MmY4ZDVj
YWYxYTU4YWE4ZGRjMC4uMmQ5MWQ4YTVlMjUwOWJkMmU4YWQxZmEwODg2ZGFmZWUyZDNlMDM1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtMjA2LDYgKzIwNiwxMyBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRT
b3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgU3RyaQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsU3RhY2so
U2NyaXB0VmFsdWUqKQoreworICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIHJlc3RhcnQg
ZnJhbWUgZmVhdHVyZSB0aGF0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgLy8gRklYTUUo
NDAzMDApOiBpbXBsZW1lbnQgdGhpcy4KK30KKwogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlz
cGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBBU1NF
UlQobV9wYXVzZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmgKaW5kZXggZjlkZmFiMzIwOWJkNTVhMDhhNGMwZmJiNzgzYWIyMjQ4NThhYjhlNS4u
YTE5NzRmYmNhZGYyOTNmOTM3ZmEwMjM2Zjc4ZWNkOTcxMDE3Y2YxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC04Myw2ICs4Myw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgY2FuU2V0U2NyaXB0U291cmNlKCk7CiAgICAgYm9vbCBzZXRT
Y3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250
ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJh
bWVzLCBTY3JpcHRPYmplY3QqIHJlc3VsdCk7CisgICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soU2Ny
aXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNlc1JlY29tcGlsYXRpb24oKSB7
IHJldHVybiB0cnVlOyB9CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gcmVtb3ZlIHRoaXMuIFJlZmVy
IHRvIGJ1ZzogODg3NTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
ZWJ1Z2dlclNjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2Ny
aXB0LmpzCmluZGV4IDc3NGY2NDYwNjA0ZDdmYWM3Zjc1MjlmNWIwM2U2OWFjMTkwOTViMzIuLjkx
NGI2ZjI2MjQ3NGU2ODIxYzc5NmMzNjBjNzExYzBjNjljYjYyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCkBAIC0yNTQsMTAgKzI1NCwxNiBAQCBE
ZWJ1Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJhbWVN
aXJyb3IsIGNhbGxlckZyYW1lKQogICAgICAgICBzY29wZUNoYWluLnB1c2goRGVidWdnZXJTY3Jp
cHQuX2J1aWxkU2NvcGVPYmplY3Qoc2NvcGVNaXJyb3IpKTsKICAgICB9CiAKLSAgICBmdW5jdGlv
biBldmFsdWF0ZShleHByZXNzaW9uKSB7CisgICAgZnVuY3Rpb24gZXZhbHVhdGUoZXhwcmVzc2lv
bikKKyAgICB7CiAgICAgICAgIHJldHVybiBmcmFtZU1pcnJvci5ldmFsdWF0ZShleHByZXNzaW9u
LCBmYWxzZSkudmFsdWUoKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiByZXN0YXJ0KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBEZWJ1Zy5MaXZlRWRpdC5SZXN0YXJ0RnJhbWUoZnJhbWVNaXJyb3Ip
OworICAgIH0KKwogICAgIHJldHVybiB7CiAgICAgICAgICJzb3VyY2VJRCI6IHNvdXJjZUlELAog
ICAgICAgICAibGluZSI6IGxvY2F0aW9uID8gbG9jYXRpb24ubGluZSA6IDAsCkBAIC0yNjcsNyAr
MjczLDggQEAgRGVidWdnZXJTY3JpcHQuX2ZyYW1lTWlycm9yVG9KU0NhbGxGcmFtZSA9IGZ1bmN0
aW9uKGZyYW1lTWlycm9yLCBjYWxsZXJGcmFtZSkKICAgICAgICAgInNjb3BlQ2hhaW4iOiBzY29w
ZUNoYWluLAogICAgICAgICAic2NvcGVUeXBlIjogc2NvcGVUeXBlLAogICAgICAgICAiZXZhbHVh
dGUiOiBldmFsdWF0ZSwKLSAgICAgICAgImNhbGxlciI6IGNhbGxlckZyYW1lCisgICAgICAgICJj
YWxsZXIiOiBjYWxsZXJGcmFtZSwKKyAgICAgICAgInJlc3RhcnQiOiByZXN0YXJ0CiAgICAgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcAppbmRleCA1YmI0MzZmNGViZmFiYTBhNTEzOGI2NDc5ZDYyODIxZGUxYWVhYTM4Li4z
Mjc0ZGVmMzg2ZmVjNWVjODRkZWNmMzQ2ODcwZTMyODI5NWYyYzFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtMTI1LDYg
KzEyNSwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZh
bHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQogICAgIHJldHVybiBldmFsRnVuY3Rpb24t
PkNhbGwobV9jYWxsRnJhbWUuZ2V0KCksIDEsIGFyZ3YpOwogfQogCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gSmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydCgpCit7CisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+IHJlc3RhcnRGdW5jdGlvbiA9IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6
Q2FzdChtX2NhbGxGcmFtZS5nZXQoKS0+R2V0KHY4U3RyaW5nKCJyZXN0YXJ0IikpKTsKKyAgICBy
ZXR1cm4gcmVzdGFydEZ1bmN0aW9uLT5DYWxsKG1fY2FsbEZyYW1lLmdldCgpLCAwLCAwKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgKaW5kZXggOTcxNmM5MGZmNWFmZjk0Y2FlNzJhM2UwZTRkZmY1YmQxNTI4NTc5Ni4u
MDIxNjE2ZTU2OTY0OTI0ZGZmODczNWUxZDljMjI5NGE1MDQzZTBhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaApAQCAtNjAsNiArNjAs
NyBAQCBwdWJsaWM6CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRoaXNPYmplY3QoKSBjb25z
dDsKICAgICAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXZhbHVhdGUoY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdGFydCgpOwogICAg
IAogcHJpdmF0ZToKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGRlYnVnZ2VyQ29udGV4dCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsRnJhbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmlu
ZGV4IDg2NWQ0N2YyMTk3OTUwZGY3YTZjZjVmMzE0YTM1Yzg0MTYwYWZmMjcuLjkyZjdmNWIzZDEy
Y2E1MzZiZDQ2NjYxMDIzYzgxYTRlYTE3NTA3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTI1NCw2ICsyNTQsMTQgQEAgYm9v
bCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIGNvbnN0IFN0cmluZyYgbmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorCit2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjp1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSkKK3sK
KyAgICBpZiAoaXNQYXVzZWQoKSkKKyAgICAgICAgKmNhbGxGcmFtZSA9IGN1cnJlbnRDYWxsRnJh
bWUoKTsKK30KKworCiBTY3JpcHRWYWx1ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxG
cmFtZSgpCiB7CiAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggN2U4MGU3Zjg3N2JlYWZiNjZkOGIy
NWYxZTkzNWVlMTc1NDI3YjE4ZS4uNDJlMDc1OTk5ZTk4MGRjOWQ3NzI0OTVkY2I2YWU3ZDA3NTk0
YjFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5oCkBAIC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuU2V0U2NyaXB0U291
cmNlKCk7CiAgICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
Y29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3IsIFNj
cmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBTY3JpcHRPYmplY3QqIHJlc3VsdCk7CisgICAgdm9p
ZCB1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNh
dXNlc1JlY29tcGlsYXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgc3VwcG9ydHNO
YXRpdmVCcmVha3BvaW50cygpIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDA2ZjU1YTk5M2FmOWE2
ZGY0M2NhNDRjYjNjMDU1MjU3NTliMTQ2MWEuLjQ5ZmU3NTE2NTc0ODdiZTJlYzY2ZDY0ZjhiNzgx
ODdmODhkNjhkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdEZ1
bmN0aW9uQ2FsbDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9u
cykKIAogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKICAgICB7Ci0gICAgICAgIFY4
UmVjdXJzaW9uU2NvcGUgc2NvcGUoZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAg
ICAgVjhSZWN1cnNpb25TY29wZSBpbm5lclNjb3BlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHRoaXNPYmplY3QsIG1fYXJndW1l
bnRzLnNpemUoKSwgYXJncy5nZXQoKSk7CiAgICAgfQogICAgIGlmICghc2NvcGUuc3VjY2Vzcygp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IDIxMGVmMTAyOTU4NjVl
NjZiMmUwZjhlMTZhNDhkOTc0MmVjZWQ1ODMuLjc2YjVlZWUzMTlkNjlkMWI1MTFlOWJmMmViNDQz
YTFhYTU1OTg1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCkBAIC00Niw2
ICs0NiwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpl
dmFsdWF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgIHJldHVybiBpbXBsLT5ldmFs
dWF0ZShleHByZXNzaW9uKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlw
dENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7
CisgICAgSU5DX1NUQVRTKCJWOEphdmFTY3JpcHRDYWxsRnJhbWUucmVzdGFydENhbGxiYWNrKCki
KTsKKyAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1l
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4gaW1wbC0+cmVzdGFydCgpOwor
fQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZUNo
YWluQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJWOEphdmFTY3JpcHRDYWxsRnJh
bWUuc2NvcGVDaGFpbkFjY2Vzc29yR2V0dGVyKCkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDJmMGU2MTc4NDQyNjc2MDAzMmVkYjdhOGY1MjAw
YmNmMDhhNGQ5YzcuLjQxNGMyMmY4OWYzYmM0MjFhYzAxOGVmNDM4ODgyYjk4MmMzZTFlMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtOTUsNiAr
OTUsMjYgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKICAgICBtYWtlRXZhbENhbGwoZXJyb3JT
dHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OnJlc3RhcnRGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlw
dFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogcmVzdWx0KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAicmVzdGFydEZyYW1lIik7CisgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
Y2FsbEZyYW1lSWQpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7Cisg
ICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CisgICAgaWYgKHJlc3VsdFZhbHVl
KSB7CisgICAgICAgIGlmIChyZXN1bHRWYWx1ZS0+dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpU
eXBlU3RyaW5nKSB7CisgICAgICAgICAgICByZXN1bHRWYWx1ZS0+YXNTdHJpbmcoZXJyb3JTdHJp
bmcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChyZXN1bHRW
YWx1ZS0+dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0KSB7CisgICAgICAgICAg
ICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsK
K30KKwogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8RnVuY3Rpb25E
ZXRhaWxzPiogcmVzdWx0KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2lu
amVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0RnVuY3Rpb25EZXRhaWxzIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDhjNjczNmQ5Mzg4MDY1OWM5NTdkNDhk
ZGY3Y2I4ODY2MWFjNjUwMjAuLmY4MTQ1MTY3NjNjYjc1ZTMwZmNlMmI2ZmFhNzE0Zjk2YjY1MmMx
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC04MSw2
ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXR1
cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2
b2lkIHJlc3RhcnRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJh
bWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cmVzdWx0KTsKICAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rp
b25EZXRhaWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4g
PiogcmVzdWx0KTsKICAgICBOb2RlKiBub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRFeHRlcm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0RXh0
ZXJucy5qcwppbmRleCA4MTEzM2I3ZWNjODcwNDA4MTRhY2IxOTI4ZGJiNDMyMTdkZjcwYjIxLi5l
ZGQ3NzU0ZTRiZjBlNzM5YjNiNmU5NjA0NGNjNjhlNDhhOTc3MWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRFeHRlcm5zLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEV4dGVybnMuanMKQEAgLTk4LDYgKzk4
LDggQEAgZnVuY3Rpb24gSmF2YVNjcmlwdENhbGxGcmFtZSgpCiAgKi8KIEphdmFTY3JpcHRDYWxs
RnJhbWUucHJvdG90eXBlLnNjb3BlVHlwZSA9IGZ1bmN0aW9uKGluZGV4KSB7IH0KIAorSmF2YVNj
cmlwdENhbGxGcmFtZS5wcm90b3R5cGUucmVzdGFydCA9IGZ1bmN0aW9uKCkgeyB9CisKIC8qKgog
ICogQGNvbnN0cnVjdG9yCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCAzMWM4MGJkMjEwNjQyODcxZTgxYjljMjM5ODNjOGJh
MzRmNmMzZGJjLi5hZTRjOTc4Y2YzZjJlNGU3OTE2ZDMxZDgzMDUwYWFmMzZmNDJhY2NjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBA
IC0zNzEsNiArMzcxLDE3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChjYWxsRnJhbWUuZXZhbHVhdGUsIGNhbGxGcmFt
ZSwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHRydWUsIGluamVjdENvbW1hbmRMaW5lQVBJLCBy
ZXR1cm5CeVZhbHVlKTsKICAgICB9LAogCisgICAgcmVzdGFydEZyYW1lOiBmdW5jdGlvbih0b3BD
YWxsRnJhbWUsIGNhbGxGcmFtZUlkKQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRo
aXMuX2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpOworICAgICAgICBp
ZiAoIWNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGZpbmQgY2FsbCBm
cmFtZSB3aXRoIGdpdmVuIGlkIjsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGNhbGxGcmFtZS5yZXN0
YXJ0KCk7CisgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKQorICAgICAgICAgICAgcmVzdWx0
ID0gIlJlc3RhcnQgZnJhbWUgaXMgbm90IHN1cHBvcnRlZCI7IAorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0sCisKICAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKHRvcENhbGxGcmFt
ZSwgY2FsbEZyYW1lSWQpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkQ2FsbEZyYW1lSWQgPSBl
dmFsKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgppbmRleCBjZjE5OGMwZmNiMGEyNGJhNTkyNWYyOGRkNGQ3Y2JhOGI2ZDE2ZDMy
Li41OGViYThkY2JkNmE1ODhiMjAwOTliOTdiMGZiZDVkYTk3ODA2NWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yNDY1LDYgKzI0NjUsMTggQEAKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRWRpdHMgSmF2YVNjcmlwdCBzb3VyY2UgbGl2ZS4i
CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
InJlc3RhcnRGcmFtZSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1lSWQiLCAiJHJlZiI6ICJDYWxsRnJhbWVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJDYWxsIGZyYW1lIGlkZW50aWZpZXIgdG8gZXZhbHVhdGUgb24u
IiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVzIiwgInR5cGUiOiAiYXJyYXki
LCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSJ9LCAiZGVzY3JpcHRpb24iOiAiTmV3IHN0
YWNrIHRyYWNlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAi
dHlwZSI6ICJvYmplY3QiLCAiZGVzY3JpcHRpb24iOiAiVk0tc3BlY2lmaWMgZGVzY3JpcHRpb24u
IiwgImhpZGRlbiI6IHRydWUgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ImhpZGRlbiI6IHRydWUsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlc3RhcnRz
IHBhcnRpY3VsYXIgY2FsbCBmcmFtZSBmcm9tIHRoZSBiZWdpbm5pbmcuIgorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRTY3JpcHRTb3Vy
Y2UiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNjcmlwdElkIiwgIiRyZWYiOiAiU2NyaXB0SWQiLCAiZGVzY3JpcHRpb24i
OiAiSWQgb2YgdGhlIHNjcmlwdCB0byBnZXQgc291cmNlIGZvci4iIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmYTM5
MzdiYWVkMTFhMzhhZTY2NDk5NWEyNTI1YzUxOTA1NmJmMzVkLi4yMmQ1NjFkNzg1MzhmNDhjNTNl
NmVkZDZkYWFkNWNjMTA0YmNkOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNzgsNiArMzc4LDE4IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJv
ciwgY29uc3QgU3RyaW5nJiBzCiAgICAgaWYgKG9iamVjdCkKICAgICAgICAgcmVzdWx0ID0gb2Jq
ZWN0OwogfQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0YXJ0RnJhbWUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8QXJy
YXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxGcmFtZXMsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JP
YmplY3RJZChjYWxsRnJhbWVJZCk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluamVjdGVkU2NyaXB0LnJlc3RhcnRGcmFt
ZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwgJnJlc3VsdCk7
CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS51cGRhdGVDYWxsU3RhY2soJm1fY3VycmVudENhbGxT
dGFjayk7CisgICAgbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRDYWxsRnJhbWVzKCk7Cit9CiAKIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBl
cnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApp
bmRleCA5ZjQxNWE1ZjBlZjg2NDUwYjNhMzU5ZTVhMDNmZmJhMTBhNjM2NTdmLi41MmM1MjRmNmIx
M2YxNjZkZjdiMjIxMWFlZTg2MTc4MDBkNzc4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4gPiYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIHByZXZp
ZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxs
RnJhbWU+ID4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQp
OworICAgIHZpcnR1YWwgdm9pZCByZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0
YWlscz4mKTsKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9y
RnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9K
YXZhU2NyaXB0Q2FsbEZyYW1lLmlkbAppbmRleCA0N2NhNWQxODFjYWE2NDVjMGJjMzQzZmIwMDgy
YmRiN2QzYTFmNWEzLi5kMzczZDVkODIxZDVmNjQ2ZmIzYjg5ZmY1M2RjMzUyOTAzYzcyNDE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRs
CkBAIC0zOSw2ICszOSw3IEBAIG1vZHVsZSBpbnNwZWN0b3IgewogICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBDQVRDSF9TQ09QRSA9IDQ7CiAKICAgICAgICAgW0N1c3RvbV0gdm9pZCBldmFs
dWF0ZShpbiBET01TdHJpbmcgc2NyaXB0KTsKKyAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IHJl
c3RhcnQoKTsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSmF2YVNjcmlwdENhbGxGcmFt
ZSBjYWxsZXI7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNvdXJjZUlEOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>