<?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>71808</bug_id>
          
          <creation_ts>2011-11-08 06:26:17 -0800</creation_ts>
          <short_desc>Web Inspector: function remote objetct should provide access to function position in the script</short_desc>
          <delta_ts>2011-11-14 01:27:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>72117</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>peter.rybin</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>498009</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-08 06:26:17 -0800</bug_when>
    <thetext>Web Inspector: function remote objetct should provide access to script id and the function position in the script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499879</commentid>
    <comment_count>1</comment_count>
      <attachid>114495</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-10 07:12:00 -0800</bug_when>
    <thetext>Created attachment 114495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499883</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 07:14:20 -0800</bug_when>
    <thetext>Attachment 114495 did not pass style-queue:

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

Source/WebCore/inspector/InjectedScript.cpp:91:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.cpp:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter name &quot;errorString&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 5 in 14 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>499884</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-10 07:14:58 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=114495) [details]
&gt; Patch

Note that this patch depends on this V8 change which has not been pushed to trunk yet: http://code.google.com/p/v8/source/detail?r=9935</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499885</commentid>
    <comment_count>4</comment_count>
      <attachid>114496</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-10 07:16:02 -0800</bug_when>
    <thetext>Created attachment 114496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499889</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 07:19:50 -0800</bug_when>
    <thetext>Attachment 114496 did not pass style-queue:

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

Source/WebCore/inspector/InjectedScript.cpp:91:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.cpp:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 14 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>499896</commentid>
    <comment_count>6</comment_count>
      <attachid>114496</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 07:28:31 -0800</bug_when>
    <thetext>Comment on attachment 114496
Patch

Attachment 114496 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10400334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499938</commentid>
    <comment_count>7</comment_count>
      <attachid>114496</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-10 08:30:28 -0800</bug_when>
    <thetext>Comment on attachment 114496
Patch

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

r- for failing JSC bots.

&gt; LayoutTests/inspector/debugger/function-location-expected.txt:9
&gt; +columnNumber: -1

You should not provide columnNumber in case it is not known.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499987</commentid>
    <comment_count>8</comment_count>
      <attachid>114518</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-10 09:14:36 -0800</bug_when>
    <thetext>Created attachment 114518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499991</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 09:16:59 -0800</bug_when>
    <thetext>Attachment 114518 did not pass style-queue:

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

Source/WebCore/inspector/InjectedScript.cpp:91:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.cpp:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 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>500568</commentid>
    <comment_count>10</comment_count>
      <attachid>114640</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 00:38:12 -0800</bug_when>
    <thetext>Created attachment 114640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500569</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 00:40:04 -0800</bug_when>
    <thetext>Attachment 114640 did not pass style-queue:

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

Source/WebCore/inspector/InjectedScript.cpp:91:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.cpp:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 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>500644</commentid>
    <comment_count>12</comment_count>
      <attachid>114664</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 03:51:47 -0800</bug_when>
    <thetext>Created attachment 114664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500646</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 03:54:58 -0800</bug_when>
    <thetext>Attachment 114664 did not pass style-queue:

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

Source/WebCore/inspector/InjectedScript.cpp:91:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.cpp:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 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>500660</commentid>
    <comment_count>14</comment_count>
      <attachid>114667</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 04:23:18 -0800</bug_when>
    <thetext>Created attachment 114667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500662</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 04:26:00 -0800</bug_when>
    <thetext>Attachment 114667 did not pass style-queue:

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

Source/WebCore/inspector/InjectedScript.cpp:91:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.cpp:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 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>500670</commentid>
    <comment_count>16</comment_count>
      <attachid>114664</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-11 04:36:21 -0800</bug_when>
    <thetext>Comment on attachment 114664
Patch

Inspector part looks good, please check with JSC folks whether exposing SourceCode on JSFunction is Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500673</commentid>
    <comment_count>17</comment_count>
      <attachid>114671</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 04:39:35 -0800</bug_when>
    <thetext>Created attachment 114671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500676</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 04:41:20 -0800</bug_when>
    <thetext>Attachment 114671 did not pass style-queue:

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

Source/WebCore/inspector/InjectedScript.cpp:91:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.cpp:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 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>500684</commentid>
    <comment_count>19</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 05:06:29 -0800</bug_when>
    <thetext>Committed r99950: &lt;http://trac.webkit.org/changeset/99950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500697</commentid>
    <comment_count>20</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 05:16:32 -0800</bug_when>
    <thetext>Landed this patch instead of another one by mistake which is why the bug was closed, reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500714</commentid>
    <comment_count>21</comment_count>
      <attachid>114686</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 05:54:21 -0800</bug_when>
    <thetext>Created attachment 114686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500715</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 05:56:49 -0800</bug_when>
    <thetext>Attachment 114686 did not pass style-queue:

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

Source/WebCore/inspector/InjectedScript.cpp:91:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.cpp:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScript.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 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>500756</commentid>
    <comment_count>23</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 07:27:05 -0800</bug_when>
    <thetext>Alexei or Geoffrey could you look at the JSC-related changes, in particular

1. If you are fine with adding JSFunction::sourceCode getter which is used to avoid direct access to runtime/Executable.h that is not visible from WebCore.
2. In JSInjectedScriptHost::functionLocation new JSObject is created and kept as a raw pointer. I&apos;ve seen such code in other bindings but I&apos;m not sure if I have to create a handle to the object to protect it from being GC&apos;ed or can assume that GC won&apos;t run while I&apos;m in that method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500818</commentid>
    <comment_count>24</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-11-11 08:54:27 -0800</bug_when>
    <thetext>&gt; 1. If you are fine with adding JSFunction::sourceCode getter which is used to avoid direct access to runtime/Executable.h that is not visible from WebCore.

Seems fine.

&gt; 2. In JSInjectedScriptHost::functionLocation new JSObject is created and kept as a raw pointer. I&apos;ve seen such code in other bindings but I&apos;m not sure if I have to create a handle to the object to protect it from being GC&apos;ed or can assume that GC won&apos;t run while I&apos;m in that method.

This code is also fine. For future reference, the reason this is OK is not that GC won&apos;t run. (You&apos;re allocating a string, so GC might run.) Rather, it&apos;s OK because the collector scans the C++ stack, and you have a reference to your new object on the C++ stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500828</commentid>
    <comment_count>25</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 09:08:15 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; 2. In JSInjectedScriptHost::functionLocation new JSObject is created and kept as a raw pointer. I&apos;ve seen such code in other bindings but I&apos;m not sure if I have to create a handle to the object to protect it from being GC&apos;ed or can assume that GC won&apos;t run while I&apos;m in that method.
&gt; 
&gt; This code is also fine. For future reference, the reason this is OK is not that GC won&apos;t run. (You&apos;re allocating a string, so GC might run.) Rather, it&apos;s OK because the collector scans the C++ stack, and you have a reference to your new object on the C++ stack.

That is what I suspected, thanks for the explanation!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501304</commentid>
    <comment_count>26</comment_count>
      <attachid>114686</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 18:46:49 -0800</bug_when>
    <thetext>Comment on attachment 114686
Patch

Attachment 114686 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10448611</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501719</commentid>
    <comment_count>27</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-14 01:27:51 -0800</bug_when>
    <thetext>Committed r100113: &lt;http://trac.webkit.org/changeset/100113&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114495</attachid>
            <date>2011-11-10 07:12:00 -0800</date>
            <delta_ts>2011-11-10 07:15:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71808-20111110191158.patch</filename>
            <type>text/plain</type>
            <size>18158</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4MTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0N2ZhMDI0YjZmM2MzOGJl
MzRjZGI0NTVlNTZlZjRmOWFhYzRlMTM4Li45Y2I4NjRkZjQ4MTNkMGU4NWEwNDJjYWI2ODE4YjM0
MzM4MjM4YWRmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMTAgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0
aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRkZWQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gbG9jYXRpb24gaW5j
bHVkaW5nCisgICAgICAgIHN0YXJ0IGxpbmUsIGNvbHVtbiBhbmQgc2NyaXB0IGlkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rv
ci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkxvY2F0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAg
ICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTEtMTEtMDkgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFk
ZCBzdXBwb3J0IGZvciBwYWludGluZyBpbnRvIGFuIFNrUGljdHVyZSBhbmQgdGhlbiByYXN0ZXJp
emluZyBpbnRvIHRpbGUtc2l6ZWQgY2h1bmtzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGNkMTJk
MTUzODExYjczMTMyMWYyZmNiZjIxZTYyMTNmMTVkY2ExOTkuLmY0NWFhMDVhZTFjODNkMzY2NzJl
ZmEyZWY5OGFhMDliZGRjMTI2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTUxLDggKzUxLDEw
IEBACiAjaW5jbHVkZSAiSlNTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTdG9yYWdlLmgiCisjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQXJy
YXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgpAQCAtMTU2LDYgKzE1OCwzMCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0Ojp0eXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0K
IAorSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19p
bmZvKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBhc0Z1bmN0aW9uKHZhbHVlKTsKKworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlID0gZXhlY3V0YWJsZS0+c291cmNlKCk7CisgICAgaW50IGxpbmVOdW1iZXIg
PSBzb3VyY2VDb2RlLmZpcnN0TGluZSgpOworICAgIGlmIChsaW5lTnVtYmVyKQorICAgICAgICBs
aW5lTnVtYmVyIC09IDE7IC8vIEluIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wgYWxsIHBvc2l0aW9u
cyBhcmUgMC1iYXNlZCB3aGlsZSBpbiBTb3VyY2VDb2RlIHRoZXkgYXJlIDEtYmFzZWQKKyAgICBp
bnQgY29sdW1uTnVtYmVyID0gLTE7CisgICAgVVN0cmluZyBzY3JpcHRJZCA9IFVTdHJpbmc6Om51
bWJlcihzb3VyY2VDb2RlLnByb3ZpZGVyKCktPmFzSUQoKSk7CisKKyAgICBKU09iamVjdCogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lTnVtYmVyIiksIGpzTnVt
YmVyKGxpbmVOdW1iZXIpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgImNvbHVtbk51bWJlciIpLCBqc051bWJlcihjb2x1bW5OdW1i
ZXIpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgInNjcmlwdElkIiksIGpzU3RyaW5nKGV4ZWMsIHNjcmlwdElkKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdChF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCA1MTVmMjE2YjZmMjY3YjU4NjJh
ZjU0NDZmOGRjNGM1OWViMmE0YzUyLi5jZmIwZjA1ZTM4ZWE0MWNhYWI0OTg5MTI0MjQyZWQ1ZDUx
YTRmZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTE1MCw2ICsxNTAs
MjcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0
aW9uTG9jYXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LnR5cGVDYWxsYmFjaygpIik7CisgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlID0gYXJnc1swXTsKKyAgICBpZiAoIXZhbHVlLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1
bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHZhbHVlKTsKKyAgICBpbnQg
bGluZU51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRMaW5lTnVtYmVyKCk7CisgICAgaW50IGNv
bHVtbk51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRDb2x1bW5OdW1iZXIoKTsKKyAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gcmVzdWx0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CisgICAgcmVzdWx0
LT5TZXQodjg6OlN0cmluZzo6TmV3KCJsaW5lTnVtYmVyIiksIHY4OjpJbnRlZ2VyOjpOZXcobGlu
ZU51bWJlcikpOworICAgIHJlc3VsdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiY29sdW1uTnVtYmVy
IiksIHY4OjpJbnRlZ2VyOjpOZXcoY29sdW1uTnVtYmVyKSk7CisgICAgcmVzdWx0LT5TZXQodjg6
OlN0cmluZzo6TmV3KCJzY3JpcHRJZCIpLCBmdW5jdGlvbi0+R2V0U2NyaXB0SWQoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnNwZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0KCkiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDk1YjEyYmIwMmMzMDZjNjk1
ZTY5MGU4YWEwN2NmMDkzYjRmMGI1NDkuLmM0OWY4MTVhNTI3YjdkNzU2ZGZkNDBjYWI3NDNkZTlm
YmNjNmFjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtODgsNiArODgsMjAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKICAgICBtYWtlRXZh
bENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiByZXN1bHQpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3QsICJnZXRGdW5jdGlvbkxvY2F0aW9uIik7CisgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoZnVuY3Rpb25JZCk7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRW
YWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKKyAgICBpZiAoIXJl
c3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVP
YmplY3QpIHsKKyAgICAgICAgaWYgKCFyZXN1bHRWYWx1ZS0+YXNTdHJpbmcoZXJyb3JTdHJpbmcp
KQorICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7Cit9
CisKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIHByb3BlcnRpZXMpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRQcm9wZXJ0aWVzIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDg1NjgwYWQ4NmYxNWVk
YmE5YjljODI2OTMyODY0OTk4NmRhNGJjNTYuLjk5YWU4YTI4NTg5MGM4Yjk3YzZhMjQxNzllMzdh
ZjRmYjRkOGQ2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sKiB3YXNUaHJvd24pOworICAgIHZvaWQgZ2V0RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+KiByZXN1bHQpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJp
bmcmIG9iamVjdElkKTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
aWRsCmluZGV4IDNmMjIxYTVlZTcyNmEyZmU1ZGRkMWNhZGRmNzI2ZDc0ZjM3ZTAzZWUuLjYwNzQ0
YzdiZjVjNjhhODQ0NTNjNDQ4MGQ1M2NjODkyYjAxYjI4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCkBAIC00NCw2ICs0NCw3IEBAIG1v
ZHVsZSBjb3JlIHsKICAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGludGVybmFsQ29uc3RydWN0
b3JOYW1lKGluIERPTU9iamVjdCBvYmplY3QpOwogICAgICAgICBbQ3VzdG9tXSBib29sZWFuIGlz
SFRNTEFsbENvbGxlY3Rpb24oaW4gRE9NT2JqZWN0IG9iamVjdCk7CiAgICAgICAgIFtDdXN0b21d
IERPTVN0cmluZyB0eXBlKGluIERPTU9iamVjdCBvYmplY3QpOworICAgICAgICBbQ3VzdG9tXSBE
T01PYmplY3QgZnVuY3Rpb25Mb2NhdGlvbihpbiBET01PYmplY3Qgb2JqZWN0KTsKIAogICAgICAg
ICBbQ3VzdG9tXSBpbnQgZGF0YWJhc2VJZChpbiBET01PYmplY3QgZGF0YWJhc2UpOwogICAgICAg
ICBbQ3VzdG9tXSBpbnQgc3RvcmFnZUlkKGluIERPTU9iamVjdCBzdG9yYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCA4MmRh
ZjQ5NWUxNDJlOWJmMTI0YTRmZDY1OTcyZmNiZTZkYmVhZjZhLi45YjQ1ZTg0ZTViNTFlNTc1NzY1
ZDNjYjE4MmYxMTE2Y2MxYTdjOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0xOTQsNiArMTk0LDE1IEBAIEluamVjdGVkU2Ny
aXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0sCiAK
KyAgICBnZXRGdW5jdGlvbkxvY2F0aW9uOiBmdW5jdGlvbihmdW5jdGlvbklkKQorICAgIHsKKyAg
ICAgICAgdmFyIHBhcnNlZEZ1bmN0aW9uSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKGZ1bmN0aW9u
SWQpOworICAgICAgICB2YXIgZnVuYyA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZEZ1bmN0aW9u
SWQpOworICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAg
ICByZXR1cm4gIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uIGJ5IGlkLiI7CisgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdEhvc3QuZnVuY3Rpb25Mb2NhdGlvbihmdW5jKTsKKyAgICB9LAorCiAg
ICAgcmVsZWFzZU9iamVjdDogZnVuY3Rpb24ob2JqZWN0SWQpCiAgICAgewogICAgICAgICB2YXIg
cGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBlMmEwYzBkYjIwZTg2YWU1NjI3YzI4
MTEyYWMzMWE4ODFhMzUwNjRiLi4zZWJhZDFlZGQxY2U5Y2YxYWM4OTdmNjMyMDBiMWVkN2QzZWNm
MDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0zMTAsNyAr
MzEwLDggQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjbGFzc05hbWUiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT2JqZWN0IGNs
YXNzIChjb25zdHJ1Y3RvcikgbmFtZS4gU3BlY2lmaWVkIGZvciA8Y29kZT5vYmplY3Q8L2NvZGU+
IHR5cGUgdmFsdWVzIG9ubHkuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZh
bHVlIiwgInR5cGUiOiAiYW55IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJl
bW90ZSBvYmplY3QgdmFsdWUgKGluIGNhc2Ugb2YgcHJpbWl0aXZlIHZhbHVlcyBvciBKU09OIHZh
bHVlcyBpZiBpdCB3YXMgcmVxdWVzdGVkKS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZGVzY3JpcHRpb24iLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuIiB9LAot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3Rl
T2JqZWN0SWQiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVj
dCBpZGVudGlmaWVyIChmb3Igbm9uLXByaW1pdGl2ZSB2YWx1ZXMpLiIgfQorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3RlT2JqZWN0SWQiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVjdCBpZGVudGlmaWVy
IChmb3Igbm9uLXByaW1pdGl2ZSB2YWx1ZXMpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJmdW5jdGlvbkxvY2F0aW9uIiwgIiRyZWYiOiAiRGVidWdnZXIuTG9jYXRpb24iLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rpb24gbG9jYXRpb24gd2l0aGlu
IG93bmluZyBzY3JpcHQuIiB9CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKQEAgLTE4MjUsNiArMTgyNiwxNiBAQAogICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJSZXR1cm5zIHNvdXJjZSBmb3IgdGhlIHNjcmlwdCB3aXRoIGdpdmVuIGlkLiIK
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
Z2V0RnVuY3Rpb25Mb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnVuY3Rpb25JZCIsICIkcmVmIjogIlJ1bnRp
bWUuUmVtb3RlT2JqZWN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIGZ1bmN0aW9uIHRv
IGdldCBsb2NhdGlvbiBmb3IuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2NhdGlvbiIs
ICIkcmVmIjogIkxvY2F0aW9uIiwgImRlc2NyaXB0aW9uIjogIkZ1bmN0aW9uIGxvY2F0aW9uLiIg
fQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJl
dHVybnMgbG9jYXRpb24gb2YgZ2l2ZW4gZnVuY3Rpb24uIgorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRQYXVzZU9uRXhjZXB0aW9ucyIs
CiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic3RhdGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsibm9uZSIsICJ1bmNh
dWdodCIsICJhbGwiXSwgImRlc2NyaXB0aW9uIjogIlBhdXNlIG9uIGV4Y2VwdGlvbnMgbW9kZS4i
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCBlM2YzOWQ4MTY0NzBiY2Q2OGFhM2E3NDE4MzYyMmNhNzQxNDliNGFmLi5l
ZTEwZGRlNjdjMGFhOGIxNjk3OGQ2YmFhODY1NDliOTZkMGE5OTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNTQs
NiArMzU0LDE2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNl
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAgICplcnJvciA9ICJO
byBzY3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SWQ7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGxvY2F0aW9u
KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CisgICAgaWYg
KGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
SW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
bmplY3RlZFNjcmlwdC5nZXRGdW5jdGlvbkxvY2F0aW9uKGVycm9yU3RyaW5nLCBmdW5jdGlvbklk
LCBsb2NhdGlvbik7Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQ
YXVzZU9uTmV4dFN0YXRlbWVudChjb25zdCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hl
ZHVsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaAppbmRleCBmNzg4N2FjMzVhZTA4MDFiZGVkZDI5MjZlYmMxYzVmYWIwNThhNGJlLi42
NTJiYjVjNWEzYzIzZDAwNDQ3NzI5YzE2OGUwNjliYzU1MGZhMmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTg0LDYgKzg0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29u
c3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVn
ZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qKTsKICAgICB2b2lkIHNldFNjcmlwdFNvdXJjZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPEluc3BlY3RvckFycmF5Piog
bmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9p
ZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBT
dHJpbmcqIHNjcmlwdFNvdXJjZSk7CisgICAgdm9pZCBnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogbG9jYXRpb24pOwogICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChjb25z
dCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7
CiAgICAgdm9pZCBjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwogICAgIHZvaWQgYnJlYWtQ
cm9ncmFtKGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBkYXRhKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5YmJkOTZhNDBiNjg5OTI5MTZjZTI5ZWYyY2VlNjE5MzJmN2Yx
ODBjLi42NmI3YTViNmMyYjRlNWE4MTMwZmMwYWFhMTIwNDk1ODkzMDg5OWQyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMTEtMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qg
c2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisK
KyAgICAgICAgQWRkZWQgdGVzdCBmb3IgRGVidWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21t
YW5kLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5j
dGlvbi1sb2NhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTExLTA5ICBBbmRyZXcg
U2NoZXJrdXMgIDxzY2hlcmt1c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW9yZSBtZWRpYSBy
ZWJhc2VsaW5lcyBkdWUgdG8gcjk4NTk2LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmY3ZjhmY2UxNDljZTc5NDAyY2ViMGU2NzM4OWM2OTgzMTc3YWY1OQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdHMgdGhhdCBEZWJ1Z2dlci5nZXRG
dW5jdGlvbkxvY2F0aW9uIGNvbW1hbmQgcmV0dXJucyBsb2NhdGlvbi4gQnVnIDcxODA4CisKK0Rl
YnVnZ2VyIHdhcyBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0R2V0Rmlyc3RMaW5lRnVuY3Rpb25M
b2NhdGlvbgorZmlyc3RMaW5lRnVuY3Rpb24gdHlwZSA9IGZ1bmN0aW9uCitkaWRHZXRMb2NhdGlv
bjogCitsaW5lTnVtYmVyOiA3Citjb2x1bW5OdW1iZXI6IC0xCitzY3JpcHRJZCBpcyB2YWxpZDog
dHJ1ZQorCitSdW5uaW5nOiB0ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbgorbm9u
Rmlyc3RMaW5lRnVuY3Rpb250eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9uOiAKK2xpbmVO
dW1iZXI6IDEyCitjb2x1bW5OdW1iZXI6IC0xCitzY3JpcHRJZCBpcyB2YWxpZDogdHJ1ZQorRGVi
dWdnZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNDE5YTU5NGQ4OWM1
NTNhZGIyNDEzNGM3MmEzYmIzZDFkMWY3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbApAQCAtMCwwICsxLDY4
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4g
IGZ1bmN0aW9uIGZpcnN0TGluZUZ1bmN0aW9uKCkKKworeworfQorCisgICBmdW5jdGlvbiBub3RG
aXJzdExpbmVGdW5jdGlvbigpCisKK3sKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5z
cGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RH
ZXRGaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZpcnN0TGluZUZ1bmN0aW9uIiwgZGlkRXZh
bHVhdGUpOworCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZShyZW1vdGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImZpcnN0
TGluZUZ1bmN0aW9uIHR5cGUgPSAiICsgcmVtb3RlLnR5cGUpOworICAgICAgICAgICAgICAgIERl
YnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25Mb2NhdGlvbihyZW1vdGUub2JqZWN0SWQsIGRpZEdldExv
Y2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEdldExvY2F0
aW9uKGVycm9yLCByZXNwb25zZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlkR2V0TG9jYXRpb246ICIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lTnVtYmVyOiAiICsgcmVzcG9uc2UubGluZU51
bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbHVtbk51
bWJlcjogIiArIHJlc3BvbnNlLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoInNjcmlwdElkIGlzIHZhbGlkOiAiICsgISFyZXNwb25zZS5zY3Jp
cHRJZCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbihu
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KCJub3RGaXJzdExpbmVGdW5jdGlvbiIsIGRpZEV2YWx1YXRlKTsKKworICAgICAgICAgICAgZnVu
Y3Rpb24gZGlkRXZhbHVhdGUocmVtb3RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJub25GaXJzdExpbmVGdW5jdGlvbnR5cGUgPSAiICsg
cmVtb3RlLnR5cGUpOworICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25M
b2NhdGlvbihyZW1vdGUub2JqZWN0SWQsIGRpZEdldExvY2F0aW9uKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEdldExvY2F0aW9uKGVycm9yLCByZXNwb25zZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlk
R2V0TG9jYXRpb246ICIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJsaW5lTnVtYmVyOiAiICsgcmVzcG9uc2UubGluZU51bWJlcik7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbHVtbk51bWJlcjogIiArIHJlc3BvbnNlLmNvbHVt
bk51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInNjcmlw
dElkIGlzIHZhbGlkOiAiICsgISFyZXNwb25zZS5zY3JpcHRJZCk7CisgICAgICAgICAgICAgICAg
bmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9OworCis8L3Njcmlw
dD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyB0aGF0
IERlYnVnZ2VyLmdldEZ1bmN0aW9uTG9jYXRpb24gY29tbWFuZCByZXR1cm5zIGxvY2F0aW9uLgor
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODA4Ij5C
dWcgNzE4MDg8L2E+Cis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2Nh
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0
b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVh
MWQ3Mzc5MzhlNTJkYzljYmM2ZmRkNDc2MGU4ODY1Y2VjOTRlZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rp
b24tbG9jYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQgRGVi
dWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21tYW5kIHJldHVybnMgbG9jYXRpb24uIEJ1ZyA3
MTgwOAorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KKworUnVubmluZzogdGVzdEdldEZpcnN0TGlu
ZUZ1bmN0aW9uTG9jYXRpb24KK2ZpcnN0TGluZUZ1bmN0aW9uIHR5cGUgPSBmdW5jdGlvbgorZGlk
R2V0TG9jYXRpb246IAorbGluZU51bWJlcjogNQorY29sdW1uTnVtYmVyOiAzNgorc2NyaXB0SWQg
aXMgdmFsaWQ6IHRydWUKKworUnVubmluZzogdGVzdEdldE5vbkZpcnN0TGluZUZ1bmN0aW9uTG9j
YXRpb24KK25vbkZpcnN0TGluZUZ1bmN0aW9udHlwZSA9IGZ1bmN0aW9uCitkaWRHZXRMb2NhdGlv
bjogCitsaW5lTnVtYmVyOiAxMAorY29sdW1uTnVtYmVyOiAzMgorc2NyaXB0SWQgaXMgdmFsaWQ6
IHRydWUKK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114496</attachid>
            <date>2011-11-10 07:16:02 -0800</date>
            <delta_ts>2011-11-10 09:14:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71808-20111110191600.patch</filename>
            <type>text/plain</type>
            <size>18146</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4MTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0N2ZhMDI0YjZmM2MzOGJl
MzRjZGI0NTVlNTZlZjRmOWFhYzRlMTM4Li45Y2I4NjRkZjQ4MTNkMGU4NWEwNDJjYWI2ODE4YjM0
MzM4MjM4YWRmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMTAgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0
aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRkZWQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gbG9jYXRpb24gaW5j
bHVkaW5nCisgICAgICAgIHN0YXJ0IGxpbmUsIGNvbHVtbiBhbmQgc2NyaXB0IGlkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rv
ci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkxvY2F0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAg
ICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTEtMTEtMDkgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFk
ZCBzdXBwb3J0IGZvciBwYWludGluZyBpbnRvIGFuIFNrUGljdHVyZSBhbmQgdGhlbiByYXN0ZXJp
emluZyBpbnRvIHRpbGUtc2l6ZWQgY2h1bmtzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGNkMTJk
MTUzODExYjczMTMyMWYyZmNiZjIxZTYyMTNmMTVkY2ExOTkuLmY0NWFhMDVhZTFjODNkMzY2NzJl
ZmEyZWY5OGFhMDliZGRjMTI2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTUxLDggKzUxLDEw
IEBACiAjaW5jbHVkZSAiSlNTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTdG9yYWdlLmgiCisjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQXJy
YXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgpAQCAtMTU2LDYgKzE1OCwzMCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0Ojp0eXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0K
IAorSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19p
bmZvKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBhc0Z1bmN0aW9uKHZhbHVlKTsKKworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlID0gZXhlY3V0YWJsZS0+c291cmNlKCk7CisgICAgaW50IGxpbmVOdW1iZXIg
PSBzb3VyY2VDb2RlLmZpcnN0TGluZSgpOworICAgIGlmIChsaW5lTnVtYmVyKQorICAgICAgICBs
aW5lTnVtYmVyIC09IDE7IC8vIEluIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wgYWxsIHBvc2l0aW9u
cyBhcmUgMC1iYXNlZCB3aGlsZSBpbiBTb3VyY2VDb2RlIHRoZXkgYXJlIDEtYmFzZWQKKyAgICBp
bnQgY29sdW1uTnVtYmVyID0gLTE7CisgICAgVVN0cmluZyBzY3JpcHRJZCA9IFVTdHJpbmc6Om51
bWJlcihzb3VyY2VDb2RlLnByb3ZpZGVyKCktPmFzSUQoKSk7CisKKyAgICBKU09iamVjdCogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lTnVtYmVyIiksIGpzTnVt
YmVyKGxpbmVOdW1iZXIpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgImNvbHVtbk51bWJlciIpLCBqc051bWJlcihjb2x1bW5OdW1i
ZXIpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgInNjcmlwdElkIiksIGpzU3RyaW5nKGV4ZWMsIHNjcmlwdElkKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdChF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCA1MTVmMjE2YjZmMjY3YjU4NjJh
ZjU0NDZmOGRjNGM1OWViMmE0YzUyLi5jZmIwZjA1ZTM4ZWE0MWNhYWI0OTg5MTI0MjQyZWQ1ZDUx
YTRmZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTE1MCw2ICsxNTAs
MjcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0
aW9uTG9jYXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LnR5cGVDYWxsYmFjaygpIik7CisgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlID0gYXJnc1swXTsKKyAgICBpZiAoIXZhbHVlLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1
bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHZhbHVlKTsKKyAgICBpbnQg
bGluZU51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRMaW5lTnVtYmVyKCk7CisgICAgaW50IGNv
bHVtbk51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRDb2x1bW5OdW1iZXIoKTsKKyAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gcmVzdWx0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CisgICAgcmVzdWx0
LT5TZXQodjg6OlN0cmluZzo6TmV3KCJsaW5lTnVtYmVyIiksIHY4OjpJbnRlZ2VyOjpOZXcobGlu
ZU51bWJlcikpOworICAgIHJlc3VsdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiY29sdW1uTnVtYmVy
IiksIHY4OjpJbnRlZ2VyOjpOZXcoY29sdW1uTnVtYmVyKSk7CisgICAgcmVzdWx0LT5TZXQodjg6
OlN0cmluZzo6TmV3KCJzY3JpcHRJZCIpLCBmdW5jdGlvbi0+R2V0U2NyaXB0SWQoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnNwZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0KCkiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDk1YjEyYmIwMmMzMDZjNjk1
ZTY5MGU4YWEwN2NmMDkzYjRmMGI1NDkuLmM0OWY4MTVhNTI3YjdkNzU2ZGZkNDBjYWI3NDNkZTlm
YmNjNmFjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtODgsNiArODgsMjAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKICAgICBtYWtlRXZh
bENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiByZXN1bHQpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3QsICJnZXRGdW5jdGlvbkxvY2F0aW9uIik7CisgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoZnVuY3Rpb25JZCk7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRW
YWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKKyAgICBpZiAoIXJl
c3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVP
YmplY3QpIHsKKyAgICAgICAgaWYgKCFyZXN1bHRWYWx1ZS0+YXNTdHJpbmcoZXJyb3JTdHJpbmcp
KQorICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7Cit9
CisKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIHByb3BlcnRpZXMpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRQcm9wZXJ0aWVzIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDg1NjgwYWQ4NmYxNWVk
YmE5YjljODI2OTMyODY0OTk4NmRhNGJjNTYuLjY5ODcxYjk2NDg3OTAxYzY4MDBjNjNiNzI3MDU2
Zjk4NTJhNTY5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sKiB3YXNUaHJvd24pOworICAgIHZvaWQgZ2V0RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJl
c3VsdCk7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBy
ZXN1bHQpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElk
KTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCmluZGV4IDNm
MjIxYTVlZTcyNmEyZmU1ZGRkMWNhZGRmNzI2ZDc0ZjM3ZTAzZWUuLjYwNzQ0YzdiZjVjNjhhODQ0
NTNjNDQ4MGQ1M2NjODkyYjAxYjI4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCkBAIC00NCw2ICs0NCw3IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGludGVybmFsQ29uc3RydWN0b3JOYW1lKGluIERP
TU9iamVjdCBvYmplY3QpOwogICAgICAgICBbQ3VzdG9tXSBib29sZWFuIGlzSFRNTEFsbENvbGxl
Y3Rpb24oaW4gRE9NT2JqZWN0IG9iamVjdCk7CiAgICAgICAgIFtDdXN0b21dIERPTVN0cmluZyB0
eXBlKGluIERPTU9iamVjdCBvYmplY3QpOworICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgZnVu
Y3Rpb25Mb2NhdGlvbihpbiBET01PYmplY3Qgb2JqZWN0KTsKIAogICAgICAgICBbQ3VzdG9tXSBp
bnQgZGF0YWJhc2VJZChpbiBET01PYmplY3QgZGF0YWJhc2UpOwogICAgICAgICBbQ3VzdG9tXSBp
bnQgc3RvcmFnZUlkKGluIERPTU9iamVjdCBzdG9yYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCA4MmRhZjQ5NWUxNDJlOWJm
MTI0YTRmZDY1OTcyZmNiZTZkYmVhZjZhLi45YjQ1ZTg0ZTViNTFlNTc1NzY1ZDNjYjE4MmYxMTE2
Y2MxYTdjOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzCkBAIC0xOTQsNiArMTk0LDE1IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0sCiAKKyAgICBnZXRGdW5j
dGlvbkxvY2F0aW9uOiBmdW5jdGlvbihmdW5jdGlvbklkKQorICAgIHsKKyAgICAgICAgdmFyIHBh
cnNlZEZ1bmN0aW9uSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKGZ1bmN0aW9uSWQpOworICAgICAg
ICB2YXIgZnVuYyA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZEZ1bmN0aW9uSWQpOworICAgICAg
ICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICByZXR1cm4gIkNh
bm5vdCByZXNvbHZlIGZ1bmN0aW9uIGJ5IGlkLiI7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdEhvc3QuZnVuY3Rpb25Mb2NhdGlvbihmdW5jKTsKKyAgICB9LAorCiAgICAgcmVsZWFzZU9i
amVjdDogZnVuY3Rpb24ob2JqZWN0SWQpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkT2JqZWN0
SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCBlMmEwYzBkYjIwZTg2YWU1NjI3YzI4MTEyYWMzMWE4ODFh
MzUwNjRiLi4zZWJhZDFlZGQxY2U5Y2YxYWM4OTdmNjMyMDBiMWVkN2QzZWNmMDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0zMTAsNyArMzEwLDggQEAKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjbGFzc05hbWUiLCAidHlwZSI6ICJzdHJpbmci
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT2JqZWN0IGNsYXNzIChjb25zdHJ1
Y3RvcikgbmFtZS4gU3BlY2lmaWVkIGZvciA8Y29kZT5vYmplY3Q8L2NvZGU+IHR5cGUgdmFsdWVz
IG9ubHkuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhbHVlIiwgInR5cGUi
OiAiYW55IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJlbW90ZSBvYmplY3Qg
dmFsdWUgKGluIGNhc2Ugb2YgcHJpbWl0aXZlIHZhbHVlcyBvciBKU09OIHZhbHVlcyBpZiBpdCB3
YXMgcmVxdWVzdGVkKS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGVzY3Jp
cHRpb24iLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuIiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3RlT2JqZWN0SWQiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVjdCBpZGVudGlmaWVy
IChmb3Igbm9uLXByaW1pdGl2ZSB2YWx1ZXMpLiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3RlT2JqZWN0SWQiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVjdCBpZGVudGlmaWVyIChmb3Igbm9uLXBy
aW1pdGl2ZSB2YWx1ZXMpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5j
dGlvbkxvY2F0aW9uIiwgIiRyZWYiOiAiRGVidWdnZXIuTG9jYXRpb24iLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rpb24gbG9jYXRpb24gd2l0aGluIG93bmluZyBzY3Jp
cHQuIiB9CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsK
QEAgLTE4MjUsNiArMTgyNiwxNiBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJS
ZXR1cm5zIHNvdXJjZSBmb3IgdGhlIHNjcmlwdCB3aXRoIGdpdmVuIGlkLiIKICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0RnVuY3Rpb25M
b2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZnVuY3Rpb25JZCIsICIkcmVmIjogIlJ1bnRpbWUuUmVtb3RlT2Jq
ZWN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIGZ1bmN0aW9uIHRvIGdldCBsb2NhdGlv
biBmb3IuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2NhdGlvbiIsICIkcmVmIjogIkxv
Y2F0aW9uIiwgImRlc2NyaXB0aW9uIjogIkZ1bmN0aW9uIGxvY2F0aW9uLiIgfQorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgbG9jYXRp
b24gb2YgZ2l2ZW4gZnVuY3Rpb24uIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJzZXRQYXVzZU9uRXhjZXB0aW9ucyIsCiAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3Rh
dGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsibm9uZSIsICJ1bmNhdWdodCIsICJhbGwi
XSwgImRlc2NyaXB0aW9uIjogIlBhdXNlIG9uIGV4Y2VwdGlvbnMgbW9kZS4iIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCBlM2YzOWQ4MTY0NzBiY2Q2OGFhM2E3NDE4MzYyMmNhNzQxNDliNGFmLi5lZTEwZGRlNjdjMGFh
OGIxNjk3OGQ2YmFhODY1NDliOTZkMGE5OTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNTQsNiArMzU0LDE2IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAgICplcnJvciA9ICJObyBzY3JpcHQgZm9y
IGlkOiAiICsgc2NyaXB0SWQ7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0
RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGxvY2F0aW9uKQoreworICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
amVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CisgICAgaWYgKGluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZy
YW1lIGhhcyBnb25lIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbmplY3RlZFNjcmlw
dC5nZXRGdW5jdGlvbkxvY2F0aW9uKGVycm9yU3RyaW5nLCBmdW5jdGlvbklkLCBsb2NhdGlvbik7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0
YXRlbWVudChjb25zdCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRl
eCBmNzg4N2FjMzVhZTA4MDFiZGVkZDI5MjZlYmMxYzVmYWIwNThhNGJlLi42NTJiYjVjNWEzYzIz
ZDAwNDQ3NzI5YzE2OGUwNjliYzU1MGZhMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxD
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4qKTsKICAgICB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3Qg
Ym9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbmV3Q2FsbEZyYW1l
cywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRTY3JpcHRT
b3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBTdHJpbmcqIHNjcmlw
dFNvdXJjZSk7CisgICAgdm9pZCBnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbG9jYXRpb24p
OwogICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChjb25zdCBTdHJpbmcmIGJy
ZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdm9pZCBj
YW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwogICAgIHZvaWQgYnJlYWtQcm9ncmFtKGNvbnN0
IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YmJkOTZhNDBiNjg5OTI5MTZjZTI5ZWYyY2VlNjE5MzJmN2YxODBjLi42NmI3YTVi
NmMyYjRlNWE4MTMwZmMwYWFhMTIwNDk1ODkzMDg5OWQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMTEtMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3Zp
ZGUgYWNjZXNzIHRvIGZ1bmN0aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRk
ZWQgdGVzdCBmb3IgRGVidWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21tYW5kLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlv
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTExLTA5ICBBbmRyZXcgU2NoZXJrdXMgIDxz
Y2hlcmt1c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW9yZSBtZWRpYSByZWJhc2VsaW5lcyBk
dWUgdG8gcjk4NTk2LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY3Zjhm
Y2UxNDljZTc5NDAyY2ViMGU2NzM4OWM2OTgzMTc3YWY1OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdHMgdGhhdCBEZWJ1Z2dlci5nZXRGdW5jdGlvbkxvY2F0
aW9uIGNvbW1hbmQgcmV0dXJucyBsb2NhdGlvbi4gQnVnIDcxODA4CisKK0RlYnVnZ2VyIHdhcyBl
bmFibGVkLgorCitSdW5uaW5nOiB0ZXN0R2V0Rmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbgorZmly
c3RMaW5lRnVuY3Rpb24gdHlwZSA9IGZ1bmN0aW9uCitkaWRHZXRMb2NhdGlvbjogCitsaW5lTnVt
YmVyOiA3Citjb2x1bW5OdW1iZXI6IC0xCitzY3JpcHRJZCBpcyB2YWxpZDogdHJ1ZQorCitSdW5u
aW5nOiB0ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbgorbm9uRmlyc3RMaW5lRnVu
Y3Rpb250eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9uOiAKK2xpbmVOdW1iZXI6IDEyCitj
b2x1bW5OdW1iZXI6IC0xCitzY3JpcHRJZCBpcyB2YWxpZDogdHJ1ZQorRGVidWdnZXIgd2FzIGRp
c2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVu
Y3Rpb24tbG9jYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5j
dGlvbi1sb2NhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNDE5YTU5NGQ4OWM1NTNhZGIyNDEzNGM3
MmEzYmIzZDFkMWY3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbApAQCAtMCwwICsxLDY4IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4gIGZ1bmN0aW9uIGZp
cnN0TGluZUZ1bmN0aW9uKCkKKworeworfQorCisgICBmdW5jdGlvbiBub3RGaXJzdExpbmVGdW5j
dGlvbigpCisKK3sKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5y
dW5EZWJ1Z2dlclRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGaXJzdExpbmVG
dW5jdGlvbkxvY2F0aW9uKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImZpcnN0TGluZUZ1bmN0aW9uIiwgZGlkRXZhbHVhdGUpOworCisg
ICAgICAgICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZShyZW1vdGUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImZpcnN0TGluZUZ1bmN0aW9u
IHR5cGUgPSAiICsgcmVtb3RlLnR5cGUpOworICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQu
Z2V0RnVuY3Rpb25Mb2NhdGlvbihyZW1vdGUub2JqZWN0SWQsIGRpZEdldExvY2F0aW9uKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEdldExvY2F0aW9uKGVycm9yLCBy
ZXNwb25zZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiZGlkR2V0TG9jYXRpb246ICIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJsaW5lTnVtYmVyOiAiICsgcmVzcG9uc2UubGluZU51bWJlcik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbHVtbk51bWJlcjogIiArIHJl
c3BvbnNlLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoInNjcmlwdElkIGlzIHZhbGlkOiAiICsgISFyZXNwb25zZS5zY3JpcHRJZCk7CisgICAg
ICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBm
dW5jdGlvbiB0ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbihuZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJub3RGaXJzdExp
bmVGdW5jdGlvbiIsIGRpZEV2YWx1YXRlKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkRXZh
bHVhdGUocmVtb3RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJub25GaXJzdExpbmVGdW5jdGlvbnR5cGUgPSAiICsgcmVtb3RlLnR5cGUp
OworICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25Mb2NhdGlvbihyZW1v
dGUub2JqZWN0SWQsIGRpZEdldExvY2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGZ1bmN0aW9uIGRpZEdldExvY2F0aW9uKGVycm9yLCByZXNwb25zZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlkR2V0TG9jYXRpb246
ICIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lTnVtYmVy
OiAiICsgcmVzcG9uc2UubGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoImNvbHVtbk51bWJlcjogIiArIHJlc3BvbnNlLmNvbHVtbk51bWJlcik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInNjcmlwdElkIGlzIHZhbGlk
OiAiICsgISFyZXNwb25zZS5zY3JpcHRJZCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9OworCis8L3NjcmlwdD4KKworPC9oZWFk
PgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyB0aGF0IERlYnVnZ2VyLmdl
dEZ1bmN0aW9uTG9jYXRpb24gY29tbWFuZCByZXR1cm5zIGxvY2F0aW9uLgorPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODA4Ij5CdWcgNzE4MDg8L2E+
Cis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIv
ZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMWQ3Mzc5MzhlNTJk
YzljYmM2ZmRkNDc2MGU4ODY1Y2VjOTRlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIHJldHVybnMgbG9jYXRpb24uIEJ1ZyA3MTgwOAorCitEZWJ1
Z2dlciB3YXMgZW5hYmxlZC4KKworUnVubmluZzogdGVzdEdldEZpcnN0TGluZUZ1bmN0aW9uTG9j
YXRpb24KK2ZpcnN0TGluZUZ1bmN0aW9uIHR5cGUgPSBmdW5jdGlvbgorZGlkR2V0TG9jYXRpb246
IAorbGluZU51bWJlcjogNQorY29sdW1uTnVtYmVyOiAzNgorc2NyaXB0SWQgaXMgdmFsaWQ6IHRy
dWUKKworUnVubmluZzogdGVzdEdldE5vbkZpcnN0TGluZUZ1bmN0aW9uTG9jYXRpb24KK25vbkZp
cnN0TGluZUZ1bmN0aW9udHlwZSA9IGZ1bmN0aW9uCitkaWRHZXRMb2NhdGlvbjogCitsaW5lTnVt
YmVyOiAxMAorY29sdW1uTnVtYmVyOiAzMgorc2NyaXB0SWQgaXMgdmFsaWQ6IHRydWUKK0RlYnVn
Z2VyIHdhcyBkaXNhYmxlZC4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114518</attachid>
            <date>2011-11-10 09:14:36 -0800</date>
            <delta_ts>2011-11-11 00:38:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71808-20111110211433.patch</filename>
            <type>text/plain</type>
            <size>20103</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4MTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0N2ZhMDI0YjZmM2MzOGJl
MzRjZGI0NTVlNTZlZjRmOWFhYzRlMTM4Li45Y2I4NjRkZjQ4MTNkMGU4NWEwNDJjYWI2ODE4YjM0
MzM4MjM4YWRmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMTAgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0
aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRkZWQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gbG9jYXRpb24gaW5j
bHVkaW5nCisgICAgICAgIHN0YXJ0IGxpbmUsIGNvbHVtbiBhbmQgc2NyaXB0IGlkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rv
ci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkxvY2F0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAg
ICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTEtMTEtMDkgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFk
ZCBzdXBwb3J0IGZvciBwYWludGluZyBpbnRvIGFuIFNrUGljdHVyZSBhbmQgdGhlbiByYXN0ZXJp
emluZyBpbnRvIHRpbGUtc2l6ZWQgY2h1bmtzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3OGE5MTAzZjdkZTE1MzkwODI1MmUyNTFhYTY0OTA3ZWJhZWIxYzZiLi4wYjJlZDYzZjM0
OGY3ZjI3NzRjMDRlNzA4ZDQ1YjNjNzM0Zjk1NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzU5LDcgKzM1OSw3IEBACiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFB
MjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CiAJCTg2Q0EwMzJFMTAzOEU4
NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0EwMzJEMTAzOEU4NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxl
LmNwcCAqLzsgfTsKLQkJODZDQUZFRTMxMDM1RERFNjAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0FGRUUyMTAz
NURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoKTsgfTsgfTsKKwkJODZDQUZFRTMxMDM1RERFNjAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0FGRUUyMTAz
NURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElu
bGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVNZXRob2RzLmggKi87IH07
CiAJCTg2Q0M4NUEzMEVFNzlCNzQwMDI4ODY4MiAvKiBKSVRDYWxsLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUEyMEVFNzlCNzQwMDI4ODY4
MiAvKiBKSVRDYWxsLmNwcCAqLzsgfTsKIAkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJ
VFByb3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9y
dW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MTlmYWQyNzMwZGNmOTE1NGYzMGJiNGE1
ZWZhNDQzMGYxYjhhMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYg
V2ViQ29yZV9GV0RfRXhlY3V0YWJsZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0V4ZWN1dGFibGVf
aAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4ZWN1dGFibGUuaD4KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwCmluZGV4IGNkMTJkMTUzODExYjczMTMyMWYyZmNiZjIxZTYyMTNmMTVkY2ExOTku
LmViYWZjZDI1MTgzZjU1ZjNhYTVmZTNlNzFjZWJlNjM4YzBjYWNmOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHAKQEAgLTUxLDggKzUxLDEwIEBACiAjaW5jbHVkZSAiSlNTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCisjaW5jbHVkZSA8cGFyc2Vy
L1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgpAQCAtMTU2LDYgKzE1OCwyOCBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVu
Y3Rpb25Mb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUg
dmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhl
cml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBhc0Z1bmN0aW9uKHZhbHVlKTsKKworICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsK
KyAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlID0gZXhlY3V0YWJsZS0+c291cmNlKCk7
CisgICAgaW50IGxpbmVOdW1iZXIgPSBzb3VyY2VDb2RlLmZpcnN0TGluZSgpOworICAgIGlmIChs
aW5lTnVtYmVyKQorICAgICAgICBsaW5lTnVtYmVyIC09IDE7IC8vIEluIHRoZSBpbnNwZWN0b3Ig
cHJvdG9jb2wgYWxsIHBvc2l0aW9ucyBhcmUgMC1iYXNlZCB3aGlsZSBpbiBTb3VyY2VDb2RlIHRo
ZXkgYXJlIDEtYmFzZWQKKyAgICBVU3RyaW5nIHNjcmlwdElkID0gVVN0cmluZzo6bnVtYmVyKHNv
dXJjZUNvZGUucHJvdmlkZXIoKS0+YXNJRCgpKTsKKworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGlu
ZU51bWJlcikpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAic2NyaXB0SWQiKSwganNTdHJpbmcoZXhlYywgc2NyaXB0SWQpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNw
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDUxNWYyMTZiNmYyNjdi
NTg2MmFmNTQ0NmY4ZGM0YzU5ZWIyYTRjNTIuLmNmYjBmMDVlMzhlYTQxY2FhYjQ5ODkxMjQyNDJl
ZDVkNTFhNGZmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMTUwLDYg
KzE1MCwyNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5
cGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6
ZnVuY3Rpb25Mb2NhdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QudHlwZUNhbGxiYWNrKCkiKTsKKyAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisK
KyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUgPSBhcmdzWzBdOworICAgIGlmICghdmFsdWUtPklzRnVuY3Rpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
bj4gZnVuY3Rpb24gPSB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QodmFsdWUpOworICAg
IGludCBsaW5lTnVtYmVyID0gZnVuY3Rpb24tPkdldFNjcmlwdExpbmVOdW1iZXIoKTsKKyAgICBp
bnQgY29sdW1uTnVtYmVyID0gZnVuY3Rpb24tPkdldFNjcmlwdENvbHVtbk51bWJlcigpOworICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0PiByZXN1bHQgPSB2ODo6T2JqZWN0OjpOZXcoKTsKKyAgICBy
ZXN1bHQtPlNldCh2ODo6U3RyaW5nOjpOZXcoImxpbmVOdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5l
dyhsaW5lTnVtYmVyKSk7CisgICAgcmVzdWx0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJjb2x1bW5O
dW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhjb2x1bW5OdW1iZXIpKTsKKyAgICByZXN1bHQtPlNl
dCh2ODo6U3RyaW5nOjpOZXcoInNjcmlwdElkIiksIGZ1bmN0aW9uLT5HZXRTY3JpcHRJZCgpKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3Rl
ZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0Lmluc3BlY3QoKSIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggOTViMTJiYjAyYzMw
NmM2OTVlNjkwZThhYTA3Y2YwOTNiNGYwYjU0OS4uYzQ5ZjgxNWE1MjdiN2Q3NTZkZmQ0MGNhYjc0
M2RlOWZiY2M2YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCkBAIC04OCw2ICs4OCwyMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9u
Q2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VgogICAgIG1h
a2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0K
IAordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmpl
Y3RlZFNjcmlwdE9iamVjdCwgImdldEZ1bmN0aW9uTG9jYXRpb24iKTsKKyAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJl
c3VsdFZhbHVlOworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOworICAgIGlm
ICghcmVzdWx0VmFsdWUgfHwgcmVzdWx0VmFsdWUtPnR5cGUoKSAhPSBJbnNwZWN0b3JWYWx1ZTo6
VHlwZU9iamVjdCkgeworICAgICAgICBpZiAoIXJlc3VsdFZhbHVlLT5hc1N0cmluZyhlcnJvclN0
cmluZykpCisgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgICpyZXN1bHQgPSByZXN1bHRWYWx1ZS0+YXNPYmplY3Qo
KTsKK30KKwogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywg
UmVmUHRyPEluc3BlY3RvckFycmF5PiogcHJvcGVydGllcykKIHsKICAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldFByb3BlcnRpZXMiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggODU2ODBhZDg2
ZjE1ZWRiYTliOWM4MjY5MzI4NjQ5OTg2ZGE0YmM1Ni4uNjk4NzFiOTY0ODc5MDFjNjgwMGM2M2I3
MjcwNTZmOTg1MmE1NjlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wqIHdhc1Rocm93bik7CisgICAgdm9pZCBnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKaW5k
ZXggM2YyMjFhNWVlNzI2YTJmZTVkZGQxY2FkZGY3MjZkNzRmMzdlMDNlZS4uNjA3NDRjN2JmNWM2
OGE4NDQ1M2M0NDgwZDUzY2M4OTJiMDFiMjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKQEAgLTQ0LDYgKzQ0LDcgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUo
aW4gRE9NT2JqZWN0IG9iamVjdCk7CiAgICAgICAgIFtDdXN0b21dIGJvb2xlYW4gaXNIVE1MQWxs
Q29sbGVjdGlvbihpbiBET01PYmplY3Qgb2JqZWN0KTsKICAgICAgICAgW0N1c3RvbV0gRE9NU3Ry
aW5nIHR5cGUoaW4gRE9NT2JqZWN0IG9iamVjdCk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVj
dCBmdW5jdGlvbkxvY2F0aW9uKGluIERPTU9iamVjdCBvYmplY3QpOwogCiAgICAgICAgIFtDdXN0
b21dIGludCBkYXRhYmFzZUlkKGluIERPTU9iamVjdCBkYXRhYmFzZSk7CiAgICAgICAgIFtDdXN0
b21dIGludCBzdG9yYWdlSWQoaW4gRE9NT2JqZWN0IHN0b3JhZ2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDgyZGFmNDk1ZTE0
MmU5YmYxMjRhNGZkNjU5NzJmY2JlNmRiZWFmNmEuLjliNDVlODRlNWI1MWU1NzU3NjVkM2NiMTgy
ZjExMTZjYzFhN2M5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTE5NCw2ICsxOTQsMTUgQEAgSW5qZWN0ZWRTY3JpcHQucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAgfSwKIAorICAgIGdl
dEZ1bmN0aW9uTG9jYXRpb246IGZ1bmN0aW9uKGZ1bmN0aW9uSWQpCisgICAgeworICAgICAgICB2
YXIgcGFyc2VkRnVuY3Rpb25JZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQoZnVuY3Rpb25JZCk7Cisg
ICAgICAgIHZhciBmdW5jID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkRnVuY3Rpb25JZCk7Cisg
ICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVy
biAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gYnkgaWQuIjsKKyAgICAgICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0SG9zdC5mdW5jdGlvbkxvY2F0aW9uKGZ1bmMpOworICAgIH0sCisKICAgICByZWxl
YXNlT2JqZWN0OiBmdW5jdGlvbihvYmplY3RJZCkKICAgICB7CiAgICAgICAgIHZhciBwYXJzZWRP
YmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGUyYTBjMGRiMjBlODZhZTU2MjdjMjgxMTJhYzMx
YTg4MWEzNTA2NGIuLjNlYmFkMWVkZDFjZTljZjFhYzg5N2Y2MzIwMGIxZWQ3ZDNlY2YwNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTMxMCw3ICszMTAsOCBA
QAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNsYXNzTmFtZSIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPYmplY3QgY2xhc3MgKGNv
bnN0cnVjdG9yKSBuYW1lLiBTcGVjaWZpZWQgZm9yIDxjb2RlPm9iamVjdDwvY29kZT4gdHlwZSB2
YWx1ZXMgb25seS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAi
dHlwZSI6ICJhbnkiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmVtb3RlIG9i
amVjdCB2YWx1ZSAoaW4gY2FzZSBvZiBwcmltaXRpdmUgdmFsdWVzIG9yIEpTT04gdmFsdWVzIGlm
IGl0IHdhcyByZXF1ZXN0ZWQpLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJk
ZXNjcmlwdGlvbiIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4iIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0SWQiLCAiJHJlZiI6ICJSZW1vdGVPYmplY3RJ
ZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgb2JqZWN0IGlkZW50
aWZpZXIgKGZvciBub24tcHJpbWl0aXZlIHZhbHVlcykuIiB9CisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAib2JqZWN0SWQiLCAiJHJlZiI6ICJSZW1vdGVPYmplY3RJZCIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgb2JqZWN0IGlkZW50aWZpZXIgKGZvciBu
b24tcHJpbWl0aXZlIHZhbHVlcykuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImZ1bmN0aW9uTG9jYXRpb24iLCAiJHJlZiI6ICJEZWJ1Z2dlci5Mb2NhdGlvbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGdW5jdGlvbiBsb2NhdGlvbiB3aXRoaW4gb3duaW5n
IHNjcmlwdC4iIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgewpAQCAtMTgyNSw2ICsxODI2LDE2IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlJldHVybnMgc291cmNlIGZvciB0aGUgc2NyaXB0IHdpdGggZ2l2ZW4gaWQuIgogICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRGdW5j
dGlvbkxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5jdGlvbklkIiwgIiRyZWYiOiAiUnVudGltZS5SZW1v
dGVPYmplY3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgZnVuY3Rpb24gdG8gZ2V0IGxv
Y2F0aW9uIGZvci4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1
cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxvY2F0aW9uIiwgIiRyZWYi
OiAiTG9jYXRpb24iLCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rpb24gbG9jYXRpb24uIiB9CisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBs
b2NhdGlvbiBvZiBnaXZlbiBmdW5jdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICJuYW1lIjogInNldFBhdXNlT25FeGNlcHRpb25zIiwKICAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGF0ZSIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJub25lIiwgInVuY2F1Z2h0Iiwg
ImFsbCJdLCAiZGVzY3JpcHRpb24iOiAiUGF1c2Ugb24gZXhjZXB0aW9ucyBtb2RlLiIgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IGUzZjM5ZDgxNjQ3MGJjZDY4YWEzYTc0MTgzNjIyY2E3NDE0OWI0YWYuLmVlMTBkZGU2
N2MwYWE4YjE2OTc4ZDZiYWE4NjU0OWI5NmQwYTk5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM1NCw2ICszNTQs
MTYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JT
dHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlw
dCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbG9jYXRpb24pCit7Cisg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChmdW5jdGlvbklkKTsKKyAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0
ZWQgZnJhbWUgaGFzIGdvbmUiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGluamVjdGVk
U2NyaXB0LmdldEZ1bmN0aW9uTG9jYXRpb24oZXJyb3JTdHJpbmcsIGZ1bmN0aW9uSWQsIGxvY2F0
aW9uKTsKK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25O
ZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBkYXRhKQogewogICAgIGlmIChtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CmluZGV4IGY3ODg3YWMzNWFlMDgwMWJkZWRkMjkyNmViYzFjNWZhYjA1OGE0YmUuLjY1MmJiNWM1
YTNjMjNkMDA0NDc3MjljMTY4ZTA2OWJjNTUwZmEyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtODQsNiArODQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVm
UHRyPEluc3BlY3RvckFycmF5PiopOwogICAgIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBj
b25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxs
RnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFNj
cmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIFN0cmluZyog
c2NyaXB0U291cmNlKTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uTG9jYXRpb24oRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBsb2Nh
dGlvbik7CiAgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmlu
ZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2
b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CiAgICAgdm9pZCBicmVha1Byb2dyYW0o
Y29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRh
dGEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDliYmQ5NmE0MGI2ODk5MjkxNmNlMjllZjJjZWU2MTkzMmY3ZjE4MGMuLjY2
YjdhNWI2YzJiNGU1YTgxMzBmYzBhYWExMjA0OTU4OTMwODk5ZDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0xMS0xMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBmdW5jdGlvbiByZW1vdGUgb2JqZXRjdCBzaG91bGQg
cHJvdmlkZSBhY2Nlc3MgdG8gZnVuY3Rpb24gcG9zaXRpb24gaW4gdGhlIHNjcmlwdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE4MDgKKworICAgICAg
ICBBZGRlZCB0ZXN0IGZvciBEZWJ1Z2dlci5nZXRGdW5jdGlvbkxvY2F0aW9uIGNvbW1hbmQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxv
Y2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTEtMTEtMDkgIEFuZHJldyBTY2hlcmt1
cyAgPHNjaGVya3VzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3JlIG1lZGlhIHJlYmFzZWxp
bmVzIGR1ZSB0byByOTg1OTYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YTVlYzA3YzE4MmNhZjc5ZDc5MTBhNjM0NWMyZDU3ZjNiZDI4MjA5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0cyB0aGF0IERlYnVnZ2VyLmdldEZ1bmN0aW9u
TG9jYXRpb24gY29tbWFuZCByZXR1cm5zIGxvY2F0aW9uLiBCdWcgNzE4MDgKKworRGVidWdnZXIg
d2FzIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RHZXRGaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9u
CitmaXJzdExpbmVGdW5jdGlvbiB0eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9uOiAKK2xp
bmVOdW1iZXI6IDcKK2NvbHVtbk51bWJlcjogdW5kZWZpbmVkCitzY3JpcHRJZCBpcyB2YWxpZDog
dHJ1ZQorCitSdW5uaW5nOiB0ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbgorbm9u
Rmlyc3RMaW5lRnVuY3Rpb250eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9uOiAKK2xpbmVO
dW1iZXI6IDEyCitjb2x1bW5OdW1iZXI6IHVuZGVmaW5lZAorc2NyaXB0SWQgaXMgdmFsaWQ6IHRy
dWUKK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjQxOWE1
OTRkODljNTUzYWRiMjQxMzRjNzJhM2JiM2QxZDFmNzBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLmh0bWwKQEAgLTAs
MCArMSw2OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQ+ICBmdW5jdGlvbiBmaXJzdExpbmVGdW5jdGlvbigpCisKK3sKK30KKworICAgZnVuY3Rp
b24gbm90Rmlyc3RMaW5lRnVuY3Rpb24oKQorCit7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIEluc3BlY3RvclRlc3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlv
biB0ZXN0R2V0Rmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbihuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmaXJzdExpbmVGdW5jdGlvbiIs
IGRpZEV2YWx1YXRlKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUocmVtb3Rl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJmaXJzdExpbmVGdW5jdGlvbiB0eXBlID0gIiArIHJlbW90ZS50eXBlKTsKKyAgICAgICAgICAg
ICAgICBEZWJ1Z2dlckFnZW50LmdldEZ1bmN0aW9uTG9jYXRpb24ocmVtb3RlLm9iamVjdElkLCBk
aWRHZXRMb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRH
ZXRMb2NhdGlvbihlcnJvciwgcmVzcG9uc2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImRpZEdldExvY2F0aW9uOiAiKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZU51bWJlcjogIiArIHJlc3BvbnNl
LmxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJj
b2x1bW5OdW1iZXI6ICIgKyByZXNwb25zZS5jb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJzY3JpcHRJZCBpcyB2YWxpZDogIiArICEhcmVzcG9u
c2Uuc2NyaXB0SWQpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5vbkZpcnN0TGluZUZ1bmN0aW9uTG9j
YXRpb24obmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgibm90Rmlyc3RMaW5lRnVuY3Rpb24iLCBkaWRFdmFsdWF0ZSk7CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZEV2YWx1YXRlKHJlbW90ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibm9uRmlyc3RMaW5lRnVuY3Rpb250eXBl
ID0gIiArIHJlbW90ZS50eXBlKTsKKyAgICAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LmdldEZ1
bmN0aW9uTG9jYXRpb24ocmVtb3RlLm9iamVjdElkLCBkaWRHZXRMb2NhdGlvbik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRHZXRMb2NhdGlvbihlcnJvciwgcmVzcG9u
c2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImRpZEdldExvY2F0aW9uOiAiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgibGluZU51bWJlcjogIiArIHJlc3BvbnNlLmxpbmVOdW1iZXIpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjb2x1bW5OdW1iZXI6ICIgKyByZXNwb25z
ZS5jb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJzY3JpcHRJZCBpcyB2YWxpZDogIiArICEhcmVzcG9uc2Uuc2NyaXB0SWQpOworICAgICAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0pOworfTsKKwor
PC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVz
dHMgdGhhdCBEZWJ1Z2dlci5nZXRGdW5jdGlvbkxvY2F0aW9uIGNvbW1hbmQgcmV0dXJucyBsb2Nh
dGlvbi4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTgwOCI+QnVnIDcxODA4PC9hPgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rp
b24tbG9jYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYTFkNzM3OTM4ZTUyZGM5Y2JjNmZkZDQ3NjBlODg2NWNlYzk0ZWYwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2Vy
L2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0cyB0
aGF0IERlYnVnZ2VyLmdldEZ1bmN0aW9uTG9jYXRpb24gY29tbWFuZCByZXR1cm5zIGxvY2F0aW9u
LiBCdWcgNzE4MDgKKworRGVidWdnZXIgd2FzIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RHZXRG
aXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uCitmaXJzdExpbmVGdW5jdGlvbiB0eXBlID0gZnVuY3Rp
b24KK2RpZEdldExvY2F0aW9uOiAKK2xpbmVOdW1iZXI6IDUKK2NvbHVtbk51bWJlcjogMzYKK3Nj
cmlwdElkIGlzIHZhbGlkOiB0cnVlCisKK1J1bm5pbmc6IHRlc3RHZXROb25GaXJzdExpbmVGdW5j
dGlvbkxvY2F0aW9uCitub25GaXJzdExpbmVGdW5jdGlvbnR5cGUgPSBmdW5jdGlvbgorZGlkR2V0
TG9jYXRpb246IAorbGluZU51bWJlcjogMTAKK2NvbHVtbk51bWJlcjogMzIKK3NjcmlwdElkIGlz
IHZhbGlkOiB0cnVlCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114640</attachid>
            <date>2011-11-11 00:38:12 -0800</date>
            <delta_ts>2011-11-11 03:51:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71808-20111111123810.patch</filename>
            <type>text/plain</type>
            <size>20108</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NzFkYTYwNDkxZWFkNDU4
MDkwYmFkYWY3MzkyOTI5NzVlMmU4YzU5Li5iMjE1MGMyNTI0ZTNiMDQxYWNjMTYxYmU2ZmI2ZDk5
ZGU3NDEzODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMTAgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0
aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRkZWQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gbG9jYXRpb24gaW5j
bHVkaW5nCisgICAgICAgIHN0YXJ0IGxpbmUsIGNvbHVtbiBhbmQgc2NyaXB0IGlkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rv
ci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkxvY2F0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAg
ICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTEtMTEtMTAgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdENTU1NoYWRlclZhbHVl
LmggaXMgbm90IGEgbWVtYmVyIG9mIHRoZSBXZWJDb3JlIHRhcmdldApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwMmFmYWVkNjZiYmZiZDI0YWE2YTJlYjZmODhlOWI5OWUzM2VlMjA1
Li5lNzU4NTIyMGIwMTFkNzRkMmEwYmVkMGE4YzQ5NjIyNjQwNGQ5MjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzYxLDcgKzM2MSw3IEBACiAJCTg2QzU2OEUxMTFBMjEzRUUw
MDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlck1JUFMuaCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CiAJCTg2
Q0EwMzJFMTAzOEU4NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0EwMzJEMTAzOEU4NDQwMDI4QTYwOSAv
KiBFeGVjdXRhYmxlLmNwcCAqLzsgfTsKLQkJODZDQUZFRTMxMDM1RERFNjAwMjhBNjA5IC8qIEV4
ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJODZDQUZFRTMxMDM1RERFNjAwMjhBNjA5IC8qIEV4
ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDQzg1QTEwRUU3OUE0NzAwMjg4
NjgyIC8qIEpJVElubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVNZXRo
b2RzLmggKi87IH07CiAJCTg2Q0M4NUEzMEVFNzlCNzQwMDI4ODY4MiAvKiBKSVRDYWxsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUEyMEVF
NzlCNzQwMDI4ODY4MiAvKiBKSVRDYWxsLmNwcCAqLzsgfTsKIAkJODZDQzg1QzQwRUU3QTg5NDAw
Mjg4NjgyIC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvRXhlY3V0YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MTlmYWQyNzMwZGNm
OTE1NGYzMGJiNGE1ZWZhNDQzMGYxYjhhMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRXhlY3V0YWJsZV9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X0V4ZWN1dGFibGVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4ZWN1dGFibGUuaD4KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNj
cmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGNkMTJkMTUzODExYjczMTMyMWYyZmNiZjIxZTYy
MTNmMTVkY2ExOTkuLmViYWZjZDI1MTgzZjU1ZjNhYTVmZTNlNzFjZWJlNjM4YzBjYWNmOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKQEAgLTUxLDggKzUxLDEwIEBACiAjaW5jbHVkZSAiSlNTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCisjaW5j
bHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGVJbnN0YW5j
ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1
dGFibGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgpAQCAtMTU2LDYgKzE1
OCwyOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXZhbHVlLmFz
Q2VsbCgpLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBhc0Z1bmN0aW9uKHZhbHVl
KTsKKworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4
ZWN1dGFibGUoKTsKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlID0gZXhlY3V0YWJs
ZS0+c291cmNlKCk7CisgICAgaW50IGxpbmVOdW1iZXIgPSBzb3VyY2VDb2RlLmZpcnN0TGluZSgp
OworICAgIGlmIChsaW5lTnVtYmVyKQorICAgICAgICBsaW5lTnVtYmVyIC09IDE7IC8vIEluIHRo
ZSBpbnNwZWN0b3IgcHJvdG9jb2wgYWxsIHBvc2l0aW9ucyBhcmUgMC1iYXNlZCB3aGlsZSBpbiBT
b3VyY2VDb2RlIHRoZXkgYXJlIDEtYmFzZWQKKyAgICBVU3RyaW5nIHNjcmlwdElkID0gVVN0cmlu
Zzo6bnVtYmVyKHNvdXJjZUNvZGUucHJvdmlkZXIoKS0+YXNJRCgpKTsKKworICAgIEpTT2JqZWN0
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgImxpbmVOdW1iZXIiKSwg
anNOdW1iZXIobGluZU51bWJlcikpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAic2NyaXB0SWQiKSwganNTdHJpbmcoZXhlYywgc2Ny
aXB0SWQpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpID49IDIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDUx
NWYyMTZiNmYyNjdiNTg2MmFmNTQ0NmY4ZGM0YzU5ZWIyYTRjNTIuLmNmYjBmMDVlMzhlYTQxY2Fh
YjQ5ODkxMjQyNDJlZDVkNTFhNGZmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cApAQCAtMTUwLDYgKzE1MCwyNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNj
cmlwdEhvc3Q6OnR5cGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVk
U2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QudHlwZUNhbGxiYWNr
KCkiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBhcmdzWzBdOworICAgIGlmICghdmFsdWUtPklzRnVu
Y3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3Qo
dmFsdWUpOworICAgIGludCBsaW5lTnVtYmVyID0gZnVuY3Rpb24tPkdldFNjcmlwdExpbmVOdW1i
ZXIoKTsKKyAgICBpbnQgY29sdW1uTnVtYmVyID0gZnVuY3Rpb24tPkdldFNjcmlwdENvbHVtbk51
bWJlcigpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiByZXN1bHQgPSB2ODo6T2JqZWN0OjpO
ZXcoKTsKKyAgICByZXN1bHQtPlNldCh2ODo6U3RyaW5nOjpOZXcoImxpbmVOdW1iZXIiKSwgdjg6
OkludGVnZXI6Ok5ldyhsaW5lTnVtYmVyKSk7CisgICAgcmVzdWx0LT5TZXQodjg6OlN0cmluZzo6
TmV3KCJjb2x1bW5OdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhjb2x1bW5OdW1iZXIpKTsKKyAg
ICByZXN1bHQtPlNldCh2ODo6U3RyaW5nOjpOZXcoInNjcmlwdElkIiksIGZ1bmN0aW9uLT5HZXRT
Y3JpcHRJZCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0Lmluc3BlY3Qo
KSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXgg
OTViMTJiYjAyYzMwNmM2OTVlNjkwZThhYTA3Y2YwOTNiNGYwYjU0OS4uYzQ5ZjgxNWE1MjdiN2Q3
NTZkZmQ0MGNhYjc0M2RlOWZiY2M2YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC04OCw2ICs4OCwyMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0
OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2Ny
aXB0VgogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2Fz
VGhyb3duKTsKIH0KIAordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbihF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldEZ1bmN0aW9uTG9jYXRpb24iKTsKKyAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHJlc3VsdFZhbHVlOworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFs
dWUpOworICAgIGlmICghcmVzdWx0VmFsdWUgfHwgcmVzdWx0VmFsdWUtPnR5cGUoKSAhPSBJbnNw
ZWN0b3JWYWx1ZTo6VHlwZU9iamVjdCkgeworICAgICAgICBpZiAoIXJlc3VsdFZhbHVlLT5hc1N0
cmluZyhlcnJvclN0cmluZykpCisgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwg
ZXJyb3IiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICpyZXN1bHQgPSByZXN1bHRWYWx1
ZS0+YXNPYmplY3QoKTsKK30KKwogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3du
UHJvcGVydGllcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcHJvcGVydGllcykKIHsKICAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldFBy
b3BlcnRpZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5k
ZXggODU2ODBhZDg2ZjE1ZWRiYTliOWM4MjY5MzI4NjQ5OTg2ZGE0YmM1Ni4uNjk4NzFiOTY0ODc5
MDFjNjgwMGM2M2I3MjcwNTZmOTg1MmE1NjlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wqIHdhc1Rocm93bik7CisgICAgdm9pZCBnZXRGdW5jdGlvbkxv
Y2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcm
IG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5pZGwKaW5kZXggM2YyMjFhNWVlNzI2YTJmZTVkZGQxY2FkZGY3MjZkNzRmMzdlMDNlZS4u
NjA3NDRjN2JmNWM2OGE4NDQ1M2M0NDgwZDUzY2M4OTJiMDFiMjgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKQEAgLTQ0LDYgKzQ0LDcg
QEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgaW50ZXJuYWxDb25z
dHJ1Y3Rvck5hbWUoaW4gRE9NT2JqZWN0IG9iamVjdCk7CiAgICAgICAgIFtDdXN0b21dIGJvb2xl
YW4gaXNIVE1MQWxsQ29sbGVjdGlvbihpbiBET01PYmplY3Qgb2JqZWN0KTsKICAgICAgICAgW0N1
c3RvbV0gRE9NU3RyaW5nIHR5cGUoaW4gRE9NT2JqZWN0IG9iamVjdCk7CisgICAgICAgIFtDdXN0
b21dIERPTU9iamVjdCBmdW5jdGlvbkxvY2F0aW9uKGluIERPTU9iamVjdCBvYmplY3QpOwogCiAg
ICAgICAgIFtDdXN0b21dIGludCBkYXRhYmFzZUlkKGluIERPTU9iamVjdCBkYXRhYmFzZSk7CiAg
ICAgICAgIFtDdXN0b21dIGludCBzdG9yYWdlSWQoaW4gRE9NT2JqZWN0IHN0b3JhZ2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4
IDgyZGFmNDk1ZTE0MmU5YmYxMjRhNGZkNjU5NzJmY2JlNmRiZWFmNmEuLjliNDVlODRlNWI1MWU1
NzU3NjVkM2NiMTgyZjExMTZjYzFhN2M5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTE5NCw2ICsxOTQsMTUgQEAgSW5qZWN0
ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAg
fSwKIAorICAgIGdldEZ1bmN0aW9uTG9jYXRpb246IGZ1bmN0aW9uKGZ1bmN0aW9uSWQpCisgICAg
eworICAgICAgICB2YXIgcGFyc2VkRnVuY3Rpb25JZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQoZnVu
Y3Rpb25JZCk7CisgICAgICAgIHZhciBmdW5jID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkRnVu
Y3Rpb25JZCk7CisgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgICAgIHJldHVybiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gYnkgaWQuIjsKKyAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5mdW5jdGlvbkxvY2F0aW9uKGZ1bmMpOworICAgIH0s
CisKICAgICByZWxlYXNlT2JqZWN0OiBmdW5jdGlvbihvYmplY3RJZCkKICAgICB7CiAgICAgICAg
IHZhciBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDE5N2YyZDM5ODhkODYwMjRj
NjU0ZWZiYWMzMDJhZDI3YTYzOWYzNDYuLmQwMTM2YTNjMmZlNzgwODBhNDE5OGYzMGVmYjQxMDRh
MzI3ZmYwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTMx
MCw3ICszMTAsOCBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNsYXNzTmFtZSIs
ICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPYmpl
Y3QgY2xhc3MgKGNvbnN0cnVjdG9yKSBuYW1lLiBTcGVjaWZpZWQgZm9yIDxjb2RlPm9iamVjdDwv
Y29kZT4gdHlwZSB2YWx1ZXMgb25seS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAidmFsdWUiLCAidHlwZSI6ICJhbnkiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiUmVtb3RlIG9iamVjdCB2YWx1ZSAoaW4gY2FzZSBvZiBwcmltaXRpdmUgdmFsdWVzIG9yIEpT
T04gdmFsdWVzIGlmIGl0IHdhcyByZXF1ZXN0ZWQpLiIgfSwKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJkZXNjcmlwdGlvbiIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4i
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0SWQiLCAiJHJlZiI6ICJS
ZW1vdGVPYmplY3RJZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUg
b2JqZWN0IGlkZW50aWZpZXIgKGZvciBub24tcHJpbWl0aXZlIHZhbHVlcykuIiB9CisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0SWQiLCAiJHJlZiI6ICJSZW1vdGVPYmplY3RJ
ZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgb2JqZWN0IGlkZW50
aWZpZXIgKGZvciBub24tcHJpbWl0aXZlIHZhbHVlcykuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImZ1bmN0aW9uTG9jYXRpb24iLCAiJHJlZiI6ICJEZWJ1Z2dlci5Mb2NhdGlv
biIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGdW5jdGlvbiBsb2NhdGlvbiB3
aXRoaW4gb3duaW5nIHNjcmlwdC4iIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgewpAQCAtMTg5MSw2ICsxODkyLDE2IEBACiAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlJldHVybnMgc291cmNlIGZvciB0aGUgc2NyaXB0IHdpdGggZ2l2ZW4g
aWQuIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJnZXRGdW5jdGlvbkxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5jdGlvbklkIiwgIiRyZWYiOiAi
UnVudGltZS5SZW1vdGVPYmplY3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgZnVuY3Rp
b24gdG8gZ2V0IGxvY2F0aW9uIGZvci4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxvY2F0
aW9uIiwgIiRyZWYiOiAiTG9jYXRpb24iLCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rpb24gbG9jYXRp
b24uIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmV0dXJucyBsb2NhdGlvbiBvZiBnaXZlbiBmdW5jdGlvbi4iCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogInNldFBhdXNlT25FeGNlcHRp
b25zIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzdGF0ZSIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJub25lIiwg
InVuY2F1Z2h0IiwgImFsbCJdLCAiZGVzY3JpcHRpb24iOiAiUGF1c2Ugb24gZXhjZXB0aW9ucyBt
b2RlLiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IGUzZjM5ZDgxNjQ3MGJjZDY4YWEzYTc0MTgzNjIyY2E3NDE0OWI0
YWYuLmVlMTBkZGU2N2MwYWE4YjE2OTc4ZDZiYWE4NjU0OWI5NmQwYTk5MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTM1NCw2ICszNTQsMTYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRT
b3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICAgICAgKmVycm9y
ID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0KIAordm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbG9j
YXRpb24pCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChmdW5jdGlvbklkKTsKKyAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CisgICAgICAgICplcnJvclN0cmlu
ZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uTG9jYXRpb24oZXJyb3JTdHJpbmcsIGZ1bmN0
aW9uSWQsIGxvY2F0aW9uKTsKK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hl
ZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKQogewogICAgIGlmIChtX2phdmFTY3JpcHRQYXVz
ZVNjaGVkdWxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCmluZGV4IGY3ODg3YWMzNWFlMDgwMWJkZWRkMjkyNmViYzFjNWZhYjA1OGE0
YmUuLjY1MmJiNWM1YTNjMjNkMDA0NDc3MjljMTY4ZTA2OWJjNTUwZmEyYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtODQs
NiArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29s
KiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFs
SXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiopOwogICAgIHZvaWQgc2V0U2NyaXB0U291
cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBu
ZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAg
ICB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0
SWQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uTG9jYXRpb24o
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBsb2NhdGlvbik7CiAgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50
KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBk
YXRhKTsKICAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CiAgICAgdm9pZCBi
cmVha1Byb2dyYW0oY29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGRhdGEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM4NDljYzllZGY3MTZlOWI5M2E0MzQyMjQ3ZDU1NzAw
NTk1NjFkZTYuLjA2ZDhkNjdmYTRkODk4ZjI1MzJhM2I0Yzc2MGI4MGZlNTk3YTQ5N2UgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBmdW5jdGlvbiByZW1vdGUgb2Jq
ZXRjdCBzaG91bGQgcHJvdmlkZSBhY2Nlc3MgdG8gZnVuY3Rpb24gcG9zaXRpb24gaW4gdGhlIHNj
cmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE4
MDgKKworICAgICAgICBBZGRlZCB0ZXN0IGZvciBEZWJ1Z2dlci5nZXRGdW5jdGlvbkxvY2F0aW9u
IGNvbW1hbmQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2Vy
L2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTEtMTEtMTAgIFl1
dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBV
bnJldmlld2VkLCByZWJhc2VsaW5lIFNWRyB0ZXN0IHJlc3VsdHMgY2hhbmdlZCBhZnRlciByOTk1
MzkuIChwYXJ0IDcsIHRoZSBmaW5hbCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRhNWVjMDdjMTgyY2FmNzlkNzkxMGE2MzQ1YzJkNTdmM2JkMjgyMDkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIHJldHVybnMgbG9jYXRpb24uIEJ1ZyA3MTgwOAorCitEZWJ1
Z2dlciB3YXMgZW5hYmxlZC4KKworUnVubmluZzogdGVzdEdldEZpcnN0TGluZUZ1bmN0aW9uTG9j
YXRpb24KK2ZpcnN0TGluZUZ1bmN0aW9uIHR5cGUgPSBmdW5jdGlvbgorZGlkR2V0TG9jYXRpb246
IAorbGluZU51bWJlcjogNworY29sdW1uTnVtYmVyOiB1bmRlZmluZWQKK3NjcmlwdElkIGlzIHZh
bGlkOiB0cnVlCisKK1J1bm5pbmc6IHRlc3RHZXROb25GaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9u
Citub25GaXJzdExpbmVGdW5jdGlvbnR5cGUgPSBmdW5jdGlvbgorZGlkR2V0TG9jYXRpb246IAor
bGluZU51bWJlcjogMTIKK2NvbHVtbk51bWJlcjogdW5kZWZpbmVkCitzY3JpcHRJZCBpcyB2YWxp
ZDogdHJ1ZQorRGVidWdnZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhm
NDE5YTU5NGQ4OWM1NTNhZGIyNDEzNGM3MmEzYmIzZDFkMWY3MGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbApA
QCAtMCwwICsxLDY4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdD4gIGZ1bmN0aW9uIGZpcnN0TGluZUZ1bmN0aW9uKCkKKworeworfQorCisgICBm
dW5jdGlvbiBub3RGaXJzdExpbmVGdW5jdGlvbigpCisKK3sKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCisgICAgICAgIGZ1
bmN0aW9uIHRlc3RHZXRGaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uKG5leHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZpcnN0TGluZUZ1bmN0
aW9uIiwgZGlkRXZhbHVhdGUpOworCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZShy
ZW1vdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoImZpcnN0TGluZUZ1bmN0aW9uIHR5cGUgPSAiICsgcmVtb3RlLnR5cGUpOworICAgICAg
ICAgICAgICAgIERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25Mb2NhdGlvbihyZW1vdGUub2JqZWN0
SWQsIGRpZEdldExvY2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9u
IGRpZEdldExvY2F0aW9uKGVycm9yLCByZXNwb25zZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlkR2V0TG9jYXRpb246ICIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lTnVtYmVyOiAiICsgcmVz
cG9uc2UubGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImNvbHVtbk51bWJlcjogIiArIHJlc3BvbnNlLmNvbHVtbk51bWJlcik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInNjcmlwdElkIGlzIHZhbGlkOiAiICsgISFy
ZXNwb25zZS5zY3JpcHRJZCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rp
b25Mb2NhdGlvbihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJub3RGaXJzdExpbmVGdW5jdGlvbiIsIGRpZEV2YWx1YXRlKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUocmVtb3RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJub25GaXJzdExpbmVGdW5jdGlv
bnR5cGUgPSAiICsgcmVtb3RlLnR5cGUpOworICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQu
Z2V0RnVuY3Rpb25Mb2NhdGlvbihyZW1vdGUub2JqZWN0SWQsIGRpZEdldExvY2F0aW9uKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEdldExvY2F0aW9uKGVycm9yLCBy
ZXNwb25zZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiZGlkR2V0TG9jYXRpb246ICIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJsaW5lTnVtYmVyOiAiICsgcmVzcG9uc2UubGluZU51bWJlcik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbHVtbk51bWJlcjogIiArIHJl
c3BvbnNlLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoInNjcmlwdElkIGlzIHZhbGlkOiAiICsgISFyZXNwb25zZS5zY3JpcHRJZCk7CisgICAg
ICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9
OworCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
cD5UZXN0cyB0aGF0IERlYnVnZ2VyLmdldEZ1bmN0aW9uTG9jYXRpb24gY29tbWFuZCByZXR1cm5z
IGxvY2F0aW9uLgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxODA4Ij5CdWcgNzE4MDg8L2E+Cis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9m
dW5jdGlvbi1sb2NhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVhMWQ3Mzc5MzhlNTJkYzljYmM2ZmRkNDc2MGU4ODY1Y2VjOTRlZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVi
dWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rl
c3RzIHRoYXQgRGVidWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21tYW5kIHJldHVybnMgbG9j
YXRpb24uIEJ1ZyA3MTgwOAorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KKworUnVubmluZzogdGVz
dEdldEZpcnN0TGluZUZ1bmN0aW9uTG9jYXRpb24KK2ZpcnN0TGluZUZ1bmN0aW9uIHR5cGUgPSBm
dW5jdGlvbgorZGlkR2V0TG9jYXRpb246IAorbGluZU51bWJlcjogNQorY29sdW1uTnVtYmVyOiAz
Ngorc2NyaXB0SWQgaXMgdmFsaWQ6IHRydWUKKworUnVubmluZzogdGVzdEdldE5vbkZpcnN0TGlu
ZUZ1bmN0aW9uTG9jYXRpb24KK25vbkZpcnN0TGluZUZ1bmN0aW9udHlwZSA9IGZ1bmN0aW9uCitk
aWRHZXRMb2NhdGlvbjogCitsaW5lTnVtYmVyOiAxMAorY29sdW1uTnVtYmVyOiAzMgorc2NyaXB0
SWQgaXMgdmFsaWQ6IHRydWUKK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114664</attachid>
            <date>2011-11-11 03:51:47 -0800</date>
            <delta_ts>2011-11-11 04:36:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71808-20111111155145.patch</filename>
            <type>text/plain</type>
            <size>19496</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NzFkYTYwNDkxZWFkNDU4
MDkwYmFkYWY3MzkyOTI5NzVlMmU4YzU5Li5iMjE1MGMyNTI0ZTNiMDQxYWNjMTYxYmU2ZmI2ZDk5
ZGU3NDEzODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMTAgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0
aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRkZWQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gbG9jYXRpb24gaW5j
bHVkaW5nCisgICAgICAgIHN0YXJ0IGxpbmUsIGNvbHVtbiBhbmQgc2NyaXB0IGlkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rv
ci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkxvY2F0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAg
ICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTEtMTEtMTAgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdENTU1NoYWRlclZhbHVl
LmggaXMgbm90IGEgbWVtYmVyIG9mIHRoZSBXZWJDb3JlIHRhcmdldApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBlZWFmN2Q1NDEyMGJhYTI4MjRm
ZTk4ZDM2OTZhZGE4ZDRjZjAwMjRlLi5lN2IzODIzNjFkMjU3Njk1NjM2ZDk2Zjk2YzIyN2EzMjE3
NmU2ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cApAQCAtMTQ5LDYgKzE0OSwxMyBAQCBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0
ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG5hbWUoZXhlYyk7CiB9
CiAKK2NvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUoKSBjb25zdAorewor
ICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
JmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKK30KKwogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNGdW5j
dGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4M2JhYWFlNWVmZTVm
MzZmMmQyNDZmNmViYTE0NjAwMDY5YTcyNDU2Li5iMDQxODE5MDBlYjMxN2NjZjBiZWM1YjFkMmM4
YTIyYjk0ZGFmMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQWN0aXZh
dGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRh
YmxlOworICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgY2xhc3MgVlB0ckhhY2tFeGVjdXRhYmxl
OwogICAgIG5hbWVzcGFjZSBERkcgewogICAgIGNsYXNzIEpJVENvZGVHZW5lcmF0b3I7CkBAIC05
Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RG
dW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJs
ZSgpIGNvbnN0OwogCisgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUoKSBjb25z
dDsKKwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCBjZDEyZDE1MzgxMWI3MzEzMjFmMmZjYmYy
MWU2MjEzZjE1ZGNhMTk5Li5kOTc4ZWEwY2VjZDJmYjY2MTFiMTBmOTkwNTgwODUzYzNkNTc0ZWUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNTdG9y
YWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCisj
aW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGVJbnN0
YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
QXJyYXkuaD4KQEAgLTE1Niw2ICsxNTcsMjkgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9z
dDo6dHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
K0pTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uTG9jYXRpb24oRXhlY1N0YXRl
KiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CisgICAgaWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5m
bykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gYXNGdW5jdGlvbih2YWx1ZSk7CisKKyAgICBjb25zdCBTb3VyY2VDb2RlKiBzb3VyY2VD
b2RlID0gZnVuY3Rpb24tPnNvdXJjZUNvZGUoKTsKKyAgICBpZiAoIXNvdXJjZUNvZGUpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGludCBsaW5lTnVtYmVyID0gc291cmNlQ29k
ZS0+Zmlyc3RMaW5lKCk7CisgICAgaWYgKGxpbmVOdW1iZXIpCisgICAgICAgIGxpbmVOdW1iZXIg
LT0gMTsgLy8gSW4gdGhlIGluc3BlY3RvciBwcm90b2NvbCBhbGwgcG9zaXRpb25zIGFyZSAwLWJh
c2VkIHdoaWxlIGluIFNvdXJjZUNvZGUgdGhleSBhcmUgMS1iYXNlZAorICAgIFVTdHJpbmcgc2Ny
aXB0SWQgPSBVU3RyaW5nOjpudW1iZXIoc291cmNlQ29kZS0+cHJvdmlkZXIoKS0+YXNJRCgpKTsK
KworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAg
ICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
ImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJlcikpOworICAgIHJlc3VsdC0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAic2NyaXB0SWQiKSwganNT
dHJpbmcoZXhlYywgc2NyaXB0SWQpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBKU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0
b20uY3BwCmluZGV4IDUxNWYyMTZiNmYyNjdiNTg2MmFmNTQ0NmY4ZGM0YzU5ZWIyYTRjNTIuLmNm
YjBmMDVlMzhlYTQxY2FhYjQ5ODkxMjQyNDJlZDVkNTFhNGZmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcApAQCAtMTUwLDYgKzE1MCwyNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhv
c3QudHlwZUNhbGxiYWNrKCkiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBhcmdzWzBdOworICAgIGlm
ICghdmFsdWUtPklzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj46OkNhc3QodmFsdWUpOworICAgIGludCBsaW5lTnVtYmVyID0gZnVuY3Rpb24tPkdl
dFNjcmlwdExpbmVOdW1iZXIoKTsKKyAgICBpbnQgY29sdW1uTnVtYmVyID0gZnVuY3Rpb24tPkdl
dFNjcmlwdENvbHVtbk51bWJlcigpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiByZXN1bHQg
PSB2ODo6T2JqZWN0OjpOZXcoKTsKKyAgICByZXN1bHQtPlNldCh2ODo6U3RyaW5nOjpOZXcoImxp
bmVOdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhsaW5lTnVtYmVyKSk7CisgICAgcmVzdWx0LT5T
ZXQodjg6OlN0cmluZzo6TmV3KCJjb2x1bW5OdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhjb2x1
bW5OdW1iZXIpKTsKKyAgICByZXN1bHQtPlNldCh2ODo6U3RyaW5nOjpOZXcoInNjcmlwdElkIiks
IGZ1bmN0aW9uLT5HZXRTY3JpcHRJZCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3Jp
cHRIb3N0Lmluc3BlY3QoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKaW5kZXggOTViMTJiYjAyYzMwNmM2OTVlNjkwZThhYTA3Y2YwOTNiNGYwYjU0OS4u
YzQ5ZjgxNWE1MjdiN2Q3NTZkZmQ0MGNhYjc0M2RlOWZiY2M2YWMwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC04OCw2ICs4OCwyMCBAQCB2b2lk
IEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU2NyaXB0VgogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rp
b24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVu
Y3Rpb25Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldEZ1bmN0aW9u
TG9jYXRpb24iKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOworICAgIG1ha2VDYWxsKGZ1bmN0
aW9uLCAmcmVzdWx0VmFsdWUpOworICAgIGlmICghcmVzdWx0VmFsdWUgfHwgcmVzdWx0VmFsdWUt
PnR5cGUoKSAhPSBJbnNwZWN0b3JWYWx1ZTo6VHlwZU9iamVjdCkgeworICAgICAgICBpZiAoIXJl
c3VsdFZhbHVlLT5hc1N0cmluZyhlcnJvclN0cmluZykpCisgICAgICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiSW50ZXJuYWwgZXJyb3IiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICpyZXN1
bHQgPSByZXN1bHRWYWx1ZS0+YXNPYmplY3QoKTsKK30KKwogdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcHJvcGVy
dGllcykKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlw
dE9iamVjdCwgImdldFByb3BlcnRpZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmgKaW5kZXggODU2ODBhZDg2ZjE1ZWRiYTliOWM4MjY5MzI4NjQ5OTg2ZGE0YmM1
Ni4uNjk4NzFiOTY0ODc5MDFjNjgwMGM2M2I3MjcwNTZmOTg1MmE1NjlkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5VmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHdhc1Rocm93bik7CisgICAgdm9p
ZCBnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlv
bklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3Bl
cnRpZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZv
ck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVj
dChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5pZGwKaW5kZXggM2YyMjFhNWVlNzI2YTJmZTVkZGQxY2FkZGY3
MjZkNzRmMzdlMDNlZS4uNjA3NDRjN2JmNWM2OGE4NDQ1M2M0NDgwZDUzY2M4OTJiMDFiMjgzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwK
QEAgLTQ0LDYgKzQ0LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbQ3VzdG9tXSBET01PYmpl
Y3QgaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoaW4gRE9NT2JqZWN0IG9iamVjdCk7CiAgICAgICAg
IFtDdXN0b21dIGJvb2xlYW4gaXNIVE1MQWxsQ29sbGVjdGlvbihpbiBET01PYmplY3Qgb2JqZWN0
KTsKICAgICAgICAgW0N1c3RvbV0gRE9NU3RyaW5nIHR5cGUoaW4gRE9NT2JqZWN0IG9iamVjdCk7
CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBmdW5jdGlvbkxvY2F0aW9uKGluIERPTU9iamVj
dCBvYmplY3QpOwogCiAgICAgICAgIFtDdXN0b21dIGludCBkYXRhYmFzZUlkKGluIERPTU9iamVj
dCBkYXRhYmFzZSk7CiAgICAgICAgIFtDdXN0b21dIGludCBzdG9yYWdlSWQoaW4gRE9NT2JqZWN0
IHN0b3JhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
U291cmNlLmpzCmluZGV4IDgyZGFmNDk1ZTE0MmU5YmYxMjRhNGZkNjU5NzJmY2JlNmRiZWFmNmEu
LjliNDVlODRlNWI1MWU1NzU3NjVkM2NiMTgyZjExMTZjYzFhN2M5NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTE5NCw2ICsx
OTQsMTUgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZGVz
Y3JpcHRvcnM7CiAgICAgfSwKIAorICAgIGdldEZ1bmN0aW9uTG9jYXRpb246IGZ1bmN0aW9uKGZ1
bmN0aW9uSWQpCisgICAgeworICAgICAgICB2YXIgcGFyc2VkRnVuY3Rpb25JZCA9IHRoaXMuX3Bh
cnNlT2JqZWN0SWQoZnVuY3Rpb25JZCk7CisgICAgICAgIHZhciBmdW5jID0gdGhpcy5fb2JqZWN0
Rm9ySWQocGFyc2VkRnVuY3Rpb25JZCk7CisgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1
bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVybiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gYnkg
aWQuIjsKKyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5mdW5jdGlvbkxvY2F0aW9u
KGZ1bmMpOworICAgIH0sCisKICAgICByZWxlYXNlT2JqZWN0OiBmdW5jdGlvbihvYmplY3RJZCkK
ICAgICB7CiAgICAgICAgIHZhciBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQo
b2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDE5
N2YyZDM5ODhkODYwMjRjNjU0ZWZiYWMzMDJhZDI3YTYzOWYzNDYuLmQwMTM2YTNjMmZlNzgwODBh
NDE5OGYzMGVmYjQxMDRhMzI3ZmYwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KQEAgLTMxMCw3ICszMTAsOCBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImNsYXNzTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJPYmplY3QgY2xhc3MgKGNvbnN0cnVjdG9yKSBuYW1lLiBTcGVjaWZpZWQgZm9y
IDxjb2RlPm9iamVjdDwvY29kZT4gdHlwZSB2YWx1ZXMgb25seS4iIH0sCiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAidHlwZSI6ICJhbnkiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiUmVtb3RlIG9iamVjdCB2YWx1ZSAoaW4gY2FzZSBvZiBwcmltaXRp
dmUgdmFsdWVzIG9yIEpTT04gdmFsdWVzIGlmIGl0IHdhcyByZXF1ZXN0ZWQpLiIgfSwKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkZXNjcmlwdGlvbiIsICJ0eXBlIjogInN0cmluZyIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgdGhlIG9iamVjdC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0
SWQiLCAiJHJlZiI6ICJSZW1vdGVPYmplY3RJZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJVbmlxdWUgb2JqZWN0IGlkZW50aWZpZXIgKGZvciBub24tcHJpbWl0aXZlIHZhbHVl
cykuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0SWQiLCAiJHJlZiI6
ICJSZW1vdGVPYmplY3RJZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJVbmlx
dWUgb2JqZWN0IGlkZW50aWZpZXIgKGZvciBub24tcHJpbWl0aXZlIHZhbHVlcykuIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZ1bmN0aW9uTG9jYXRpb24iLCAiJHJlZiI6ICJE
ZWJ1Z2dlci5Mb2NhdGlvbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGdW5j
dGlvbiBsb2NhdGlvbiB3aXRoaW4gb3duaW5nIHNjcmlwdC4iIH0KICAgICAgICAgICAgICAgICBd
CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewpAQCAtMTg5MSw2ICsxODkyLDE2IEBACiAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgc291cmNlIGZvciB0aGUgc2Ny
aXB0IHdpdGggZ2l2ZW4gaWQuIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJnZXRGdW5jdGlvbkxvY2F0aW9uIiwKKyAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5jdGlv
bklkIiwgIiRyZWYiOiAiUnVudGltZS5SZW1vdGVPYmplY3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJ
ZCBvZiB0aGUgZnVuY3Rpb24gdG8gZ2V0IGxvY2F0aW9uIGZvci4iIH0KKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImxvY2F0aW9uIiwgIiRyZWYiOiAiTG9jYXRpb24iLCAiZGVzY3JpcHRpb24iOiAi
RnVuY3Rpb24gbG9jYXRpb24uIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBsb2NhdGlvbiBvZiBnaXZlbiBmdW5jdGlvbi4iCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogInNl
dFBhdXNlT25FeGNlcHRpb25zIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0ZSIsICJ0eXBlIjogInN0cmluZyIsICJl
bnVtIjogWyJub25lIiwgInVuY2F1Z2h0IiwgImFsbCJdLCAiZGVzY3JpcHRpb24iOiAiUGF1c2Ug
b24gZXhjZXB0aW9ucyBtb2RlLiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUzZjM5ZDgxNjQ3MGJjZDY4YWEzYTc0
MTgzNjIyY2E3NDE0OWI0YWYuLmVlMTBkZGU2N2MwYWE4YjE2OTc4ZDZiYWE4NjU0OWI5NmQwYTk5
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAKQEAgLTM1NCw2ICszNTQsMTYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMK
ICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0KIAor
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogbG9jYXRpb24pCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChm
dW5jdGlvbklkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CisgICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uTG9jYXRpb24oZXJy
b3JTdHJpbmcsIGZ1bmN0aW9uSWQsIGxvY2F0aW9uKTsKK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJl
YWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKQogewogICAgIGlmICht
X2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGY3ODg3YWMzNWFlMDgwMWJkZWRkMjky
NmViYzFjNWZhYjA1OGE0YmUuLjY1MmJiNWM1YTNjMjNkMDA0NDc3MjljMTY4ZTA2OWJjNTUwZmEy
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWFyY2hJbkNvbnRl
bnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiopOwogICAgIHZv
aWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwg
Y29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKKyAgICB2b2lkIGdldEZ1
bmN0aW9uTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBsb2NhdGlvbik7CiAgICAgdm9pZCBzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50
KCk7CiAgICAgdm9pZCBicmVha1Byb2dyYW0oY29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM4NDljYzllZGY3MTZlOWI5
M2E0MzQyMjQ3ZDU1NzAwNTk1NjFkZTYuLjA2ZDhkNjdmYTRkODk4ZjI1MzJhM2I0Yzc2MGI4MGZl
NTk3YTQ5N2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xMCAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBmdW5j
dGlvbiByZW1vdGUgb2JqZXRjdCBzaG91bGQgcHJvdmlkZSBhY2Nlc3MgdG8gZnVuY3Rpb24gcG9z
aXRpb24gaW4gdGhlIHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzE4MDgKKworICAgICAgICBBZGRlZCB0ZXN0IGZvciBEZWJ1Z2dlci5nZXRG
dW5jdGlvbkxvY2F0aW9uIGNvbW1hbmQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rp
b24tbG9jYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5z
cGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisK
IDIwMTEtMTEtMTAgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBVbnJldmlld2VkLCByZWJhc2VsaW5lIFNWRyB0ZXN0IHJlc3VsdHMgY2hh
bmdlZCBhZnRlciByOTk1MzkuIChwYXJ0IDcsIHRoZSBmaW5hbCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRhNWVjMDdjMTgyY2FmNzlkNzkxMGE2MzQ1YzJkNTdmM2JkMjgy
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVu
Y3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQg
RGVidWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21tYW5kIHJldHVybnMgbG9jYXRpb24uIEJ1
ZyA3MTgwOAorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KKworUnVubmluZzogdGVzdEdldEZpcnN0
TGluZUZ1bmN0aW9uTG9jYXRpb24KK2ZpcnN0TGluZUZ1bmN0aW9uIHR5cGUgPSBmdW5jdGlvbgor
ZGlkR2V0TG9jYXRpb246IAorbGluZU51bWJlcjogNworY29sdW1uTnVtYmVyOiB1bmRlZmluZWQK
K3NjcmlwdElkIGlzIHZhbGlkOiB0cnVlCisKK1J1bm5pbmc6IHRlc3RHZXROb25GaXJzdExpbmVG
dW5jdGlvbkxvY2F0aW9uCitub25GaXJzdExpbmVGdW5jdGlvbnR5cGUgPSBmdW5jdGlvbgorZGlk
R2V0TG9jYXRpb246IAorbGluZU51bWJlcjogMTIKK2NvbHVtbk51bWJlcjogdW5kZWZpbmVkCitz
Y3JpcHRJZCBpcyB2YWxpZDogdHJ1ZQorRGVidWdnZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhmNDE5YTU5NGQ4OWM1NTNhZGIyNDEzNGM3MmEzYmIzZDFkMWY3MGYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24t
bG9jYXRpb24uaHRtbApAQCAtMCwwICsxLDY4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4gIGZ1bmN0aW9uIGZpcnN0TGluZUZ1bmN0aW9uKCkK
KworeworfQorCisgICBmdW5jdGlvbiBub3RGaXJzdExpbmVGdW5jdGlvbigpCisKK3sKK30KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0
ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uKG5l
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ImZpcnN0TGluZUZ1bmN0aW9uIiwgZGlkRXZhbHVhdGUpOworCisgICAgICAgICAgICBmdW5jdGlv
biBkaWRFdmFsdWF0ZShyZW1vdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoImZpcnN0TGluZUZ1bmN0aW9uIHR5cGUgPSAiICsgcmVtb3Rl
LnR5cGUpOworICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25Mb2NhdGlv
bihyZW1vdGUub2JqZWN0SWQsIGRpZEdldExvY2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGRpZEdldExvY2F0aW9uKGVycm9yLCByZXNwb25zZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlkR2V0TG9j
YXRpb246ICIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5l
TnVtYmVyOiAiICsgcmVzcG9uc2UubGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoImNvbHVtbk51bWJlcjogIiArIHJlc3BvbnNlLmNvbHVtbk51bWJl
cik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInNjcmlwdElkIGlz
IHZhbGlkOiAiICsgISFyZXNwb25zZS5zY3JpcHRJZCk7CisgICAgICAgICAgICAgICAgbmV4dCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Tm9u
Rmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJub3RGaXJzdExpbmVGdW5jdGlvbiIsIGRpZEV2
YWx1YXRlKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUocmVtb3RlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJub25G
aXJzdExpbmVGdW5jdGlvbnR5cGUgPSAiICsgcmVtb3RlLnR5cGUpOworICAgICAgICAgICAgICAg
IERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25Mb2NhdGlvbihyZW1vdGUub2JqZWN0SWQsIGRpZEdl
dExvY2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEdldExv
Y2F0aW9uKGVycm9yLCByZXNwb25zZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlkR2V0TG9jYXRpb246ICIpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lTnVtYmVyOiAiICsgcmVzcG9uc2UubGlu
ZU51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbHVt
bk51bWJlcjogIiArIHJlc3BvbnNlLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoInNjcmlwdElkIGlzIHZhbGlkOiAiICsgISFyZXNwb25zZS5z
Y3JpcHRJZCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgXSk7Cit9OworCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD5UZXN0cyB0aGF0IERlYnVnZ2VyLmdldEZ1bmN0aW9uTG9jYXRpb24g
Y29tbWFuZCByZXR1cm5zIGxvY2F0aW9uLgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxODA4Ij5CdWcgNzE4MDg8L2E+Cis8L3A+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMWQ3Mzc5MzhlNTJkYzljYmM2ZmRkNDc2MGU4ODY1
Y2VjOTRlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQgRGVidWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21t
YW5kIHJldHVybnMgbG9jYXRpb24uIEJ1ZyA3MTgwOAorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4K
KworUnVubmluZzogdGVzdEdldEZpcnN0TGluZUZ1bmN0aW9uTG9jYXRpb24KK2ZpcnN0TGluZUZ1
bmN0aW9uIHR5cGUgPSBmdW5jdGlvbgorZGlkR2V0TG9jYXRpb246IAorbGluZU51bWJlcjogNQor
Y29sdW1uTnVtYmVyOiAzNgorc2NyaXB0SWQgaXMgdmFsaWQ6IHRydWUKKworUnVubmluZzogdGVz
dEdldE5vbkZpcnN0TGluZUZ1bmN0aW9uTG9jYXRpb24KK25vbkZpcnN0TGluZUZ1bmN0aW9udHlw
ZSA9IGZ1bmN0aW9uCitkaWRHZXRMb2NhdGlvbjogCitsaW5lTnVtYmVyOiAxMAorY29sdW1uTnVt
YmVyOiAzMgorc2NyaXB0SWQgaXMgdmFsaWQ6IHRydWUKK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4K
Kwo=
</data>
<flag name="review"
          id="113378"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114667</attachid>
            <date>2011-11-11 04:23:18 -0800</date>
            <delta_ts>2011-11-11 04:39:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71808-20111111162316.patch</filename>
            <type>text/plain</type>
            <size>20256</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMTM0YzViZjQ0MTc2ZDc4
MTI2MjY4NmE0NmUyYzhjZWM2NTQwZGViLi4yMzIwYmM0NjcwYTJkOTIwNmM3OWJmNGQ4OTgxOTZi
YTdlY2I4OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMTAgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0
aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRkZWQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gbG9jYXRpb24gaW5j
bHVkaW5nCisgICAgICAgIHN0YXJ0IGxpbmUsIGNvbHVtbiBhbmQgc2NyaXB0IGlkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rv
ci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkxvY2F0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAg
ICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTEtMTEtMTEgIEFscGhh
IExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHNjcm9sbGlu
ZyBpcyBicm9rZW4gd2l0aCBjb21wb3NpdG9yIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLm9yZGVyCmluZGV4IDNjZWRhNjUzZWQ5ZTkwZWQ2OTg3MjNhMGI3MTI4
ODkwMjJiYzlkMDUuLjZmZmRlOTAxMDkxOWQzYThmZjk4MTEwZjZjYTM4OTlmOWIwNzU2MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKQEAgLTk5OSw2ICs5
OTksNyBAQCBfX1pOM0pTQzhKU1BhcnNlcjIwcGFyc2VSZXR1cm5TdGF0ZW1lbnRJTlNfMTBBU1RC
dWlsZGVyRUVFTlRfOVN0YXRlbWVudEVSUzNfCiBfX1pOM0pTQzEwQVNUQnVpbGRlcjExbWFrZURp
dk5vZGVFUE5TXzE0RXhwcmVzc2lvbk5vZGVFUzJfYgogX19aTjNKU0MxNEV4cHJlc3Npb25Ob2Rl
MTRzdHJpcFVuYXJ5UGx1c0V2CiBfX1pOSzNKU0MxME51bWJlck5vZGU4aXNOdW1iZXJFdgorX19a
TkszSlNDMTBKU0Z1bmN0aW9uMTBzb3VyY2VDb2RlRXYKIF9fWk4zSlNDMTVTdHJpY3RFcXVhbE5v
ZGUxMmVtaXRCeXRlY29kZUVSTlNfMTdCeXRlY29kZUdlbmVyYXRvckVQTlNfMTBSZWdpc3RlcklE
RQogX19aTjNKU0MxMFJldHVybk5vZGUxMmVtaXRCeXRlY29kZUVSTlNfMTdCeXRlY29kZUdlbmVy
YXRvckVQTlNfMTBSZWdpc3RlcklERQogX19aTjNKU0MxM0xvZ2ljYWxPcE5vZGUxMmVtaXRCeXRl
Y29kZUVSTlNfMTdCeXRlY29kZUdlbmVyYXRvckVQTlNfMTBSZWdpc3RlcklERQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBlZWFmN2Q1NDEyMGJh
YTI4MjRmZTk4ZDM2OTZhZGE4ZDRjZjAwMjRlLi5lN2IzODIzNjFkMjU3Njk1NjM2ZDk2Zjk2YzIy
N2EzMjE3NmU2ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcApAQCAtMTQ5LDYgKzE0OSwxMyBAQCBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNh
bGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG5hbWUoZXhl
Yyk7CiB9CiAKK2NvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUoKSBjb25z
dAoreworICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKK30KKwogdm9pZCBKU0Z1bmN0aW9uOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
SlNGdW5jdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4M2JhYWFl
NWVmZTVmMzZmMmQyNDZmNmViYTE0NjAwMDY5YTcyNDU2Li5iMDQxODE5MDBlYjMxN2NjZjBiZWM1
YjFkMmM4YTIyYjk0ZGFmMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpT
QWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBOYXRpdmVF
eGVjdXRhYmxlOworICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgY2xhc3MgVlB0ckhhY2tFeGVj
dXRhYmxlOwogICAgIG5hbWVzcGFjZSBERkcgewogICAgIGNsYXNzIEpJVENvZGVHZW5lcmF0b3I7
CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgYm9vbCBp
c0hvc3RGdW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhl
Y3V0YWJsZSgpIGNvbnN0OwogCisgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUo
KSBjb25zdDsKKwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCBjZDEyZDE1MzgxMWI3MzEzMjFm
MmZjYmYyMWU2MjEzZjE1ZGNhMTk5Li5kOTc4ZWEwY2VjZDJmYjY2MTFiMTBmOTkwNTgwODUzYzNk
NTc0ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVk
U2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAi
SlNTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdG9yYWdl
LmgiCisjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0Rh
dGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTQXJyYXkuaD4KQEAgLTE1Niw2ICsxNTcsMjkgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6dHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiB9CiAKK0pTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uTG9jYXRpb24oRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgaWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246
OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gYXNGdW5jdGlvbih2YWx1ZSk7CisKKyAgICBjb25zdCBTb3VyY2VDb2RlKiBz
b3VyY2VDb2RlID0gZnVuY3Rpb24tPnNvdXJjZUNvZGUoKTsKKyAgICBpZiAoIXNvdXJjZUNvZGUp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGludCBsaW5lTnVtYmVyID0gc291
cmNlQ29kZS0+Zmlyc3RMaW5lKCk7CisgICAgaWYgKGxpbmVOdW1iZXIpCisgICAgICAgIGxpbmVO
dW1iZXIgLT0gMTsgLy8gSW4gdGhlIGluc3BlY3RvciBwcm90b2NvbCBhbGwgcG9zaXRpb25zIGFy
ZSAwLWJhc2VkIHdoaWxlIGluIFNvdXJjZUNvZGUgdGhleSBhcmUgMS1iYXNlZAorICAgIFVTdHJp
bmcgc2NyaXB0SWQgPSBVU3RyaW5nOjpudW1iZXIoc291cmNlQ29kZS0+cHJvdmlkZXIoKS0+YXNJ
RCgpKTsKKworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJlcikpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAic2NyaXB0SWQi
KSwganNTdHJpbmcoZXhlYywgc2NyaXB0SWQpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwCmluZGV4IDUxNWYyMTZiNmYyNjdiNTg2MmFmNTQ0NmY4ZGM0YzU5ZWIyYTRj
NTIuLmNmYjBmMDVlMzhlYTQxY2FhYjQ5ODkxMjQyNDJlZDVkNTFhNGZmZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMTUwLDYgKzE1MCwyNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNj
cmlwdEhvc3QudHlwZUNhbGxiYWNrKCkiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFu
ZGxlU2NvcGU7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBhcmdzWzBdOwor
ICAgIGlmICghdmFsdWUtPklzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj46OkNhc3QodmFsdWUpOworICAgIGludCBsaW5lTnVtYmVyID0gZnVuY3Rp
b24tPkdldFNjcmlwdExpbmVOdW1iZXIoKTsKKyAgICBpbnQgY29sdW1uTnVtYmVyID0gZnVuY3Rp
b24tPkdldFNjcmlwdENvbHVtbk51bWJlcigpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBy
ZXN1bHQgPSB2ODo6T2JqZWN0OjpOZXcoKTsKKyAgICByZXN1bHQtPlNldCh2ODo6U3RyaW5nOjpO
ZXcoImxpbmVOdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhsaW5lTnVtYmVyKSk7CisgICAgcmVz
dWx0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJjb2x1bW5OdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5l
dyhjb2x1bW5OdW1iZXIpKTsKKyAgICByZXN1bHQtPlNldCh2ODo6U3RyaW5nOjpOZXcoInNjcmlw
dElkIiksIGZ1bmN0aW9uLT5HZXRTY3JpcHRJZCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0
ZWRTY3JpcHRIb3N0Lmluc3BlY3QoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAKaW5kZXggOTViMTJiYjAyYzMwNmM2OTVlNjkwZThhYTA3Y2YwOTNiNGYw
YjU0OS4uYzQ5ZjgxNWE1MjdiN2Q3NTZkZmQ0MGNhYjc0M2RlOWZiY2M2YWMwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC04OCw2ICs4OCwyMCBA
QCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU2NyaXB0VgogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywg
ZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAordm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3sKKyAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldEZ1
bmN0aW9uTG9jYXRpb24iKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvbklk
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOworICAgIG1ha2VDYWxs
KGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOworICAgIGlmICghcmVzdWx0VmFsdWUgfHwgcmVzdWx0
VmFsdWUtPnR5cGUoKSAhPSBJbnNwZWN0b3JWYWx1ZTo6VHlwZU9iamVjdCkgeworICAgICAgICBp
ZiAoIXJlc3VsdFZhbHVlLT5hc1N0cmluZyhlcnJvclN0cmluZykpCisgICAgICAgICAgICAqZXJy
b3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
ICpyZXN1bHQgPSByZXN1bHRWYWx1ZS0+YXNPYmplY3QoKTsKK30KKwogdm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3RvckFycmF5Piog
cHJvcGVydGllcykKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3Rl
ZFNjcmlwdE9iamVjdCwgImdldFByb3BlcnRpZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmgKaW5kZXggODU2ODBhZDg2ZjE1ZWRiYTliOWM4MjY5MzI4NjQ5OTg2
ZGE0YmM1Ni4uNjk4NzFiOTY0ODc5MDFjNjgwMGM2M2I3MjcwNTZmOTg1MmE1NjlkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTc4LDYgKzc4LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5VmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBy
ZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHdhc1Rocm93bik7Cisg
ICAgdm9pZCBnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdl
dFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93
blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgTm9kZSog
bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVsZWFz
ZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKaW5kZXggM2YyMjFhNWVlNzI2YTJmZTVkZGQx
Y2FkZGY3MjZkNzRmMzdlMDNlZS4uNjA3NDRjN2JmNWM2OGE4NDQ1M2M0NDgwZDUzY2M4OTJiMDFi
MjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGwKQEAgLTQ0LDYgKzQ0LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbQ3VzdG9tXSBE
T01PYmplY3QgaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoaW4gRE9NT2JqZWN0IG9iamVjdCk7CiAg
ICAgICAgIFtDdXN0b21dIGJvb2xlYW4gaXNIVE1MQWxsQ29sbGVjdGlvbihpbiBET01PYmplY3Qg
b2JqZWN0KTsKICAgICAgICAgW0N1c3RvbV0gRE9NU3RyaW5nIHR5cGUoaW4gRE9NT2JqZWN0IG9i
amVjdCk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBmdW5jdGlvbkxvY2F0aW9uKGluIERP
TU9iamVjdCBvYmplY3QpOwogCiAgICAgICAgIFtDdXN0b21dIGludCBkYXRhYmFzZUlkKGluIERP
TU9iamVjdCBkYXRhYmFzZSk7CiAgICAgICAgIFtDdXN0b21dIGludCBzdG9yYWdlSWQoaW4gRE9N
T2JqZWN0IHN0b3JhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzCmluZGV4IDgyZGFmNDk1ZTE0MmU5YmYxMjRhNGZkNjU5NzJmY2JlNmRi
ZWFmNmEuLjliNDVlODRlNWI1MWU1NzU3NjVkM2NiMTgyZjExMTZjYzFhN2M5NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTE5
NCw2ICsxOTQsMTUgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gZGVzY3JpcHRvcnM7CiAgICAgfSwKIAorICAgIGdldEZ1bmN0aW9uTG9jYXRpb246IGZ1bmN0
aW9uKGZ1bmN0aW9uSWQpCisgICAgeworICAgICAgICB2YXIgcGFyc2VkRnVuY3Rpb25JZCA9IHRo
aXMuX3BhcnNlT2JqZWN0SWQoZnVuY3Rpb25JZCk7CisgICAgICAgIHZhciBmdW5jID0gdGhpcy5f
b2JqZWN0Rm9ySWQocGFyc2VkRnVuY3Rpb25JZCk7CisgICAgICAgIGlmICh0eXBlb2YgZnVuYyAh
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVybiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rp
b24gYnkgaWQuIjsKKyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5mdW5jdGlvbkxv
Y2F0aW9uKGZ1bmMpOworICAgIH0sCisKICAgICByZWxlYXNlT2JqZWN0OiBmdW5jdGlvbihvYmpl
Y3RJZCkKICAgICB7CiAgICAgICAgIHZhciBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2Jq
ZWN0SWQob2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmlu
ZGV4IDE5N2YyZDM5ODhkODYwMjRjNjU0ZWZiYWMzMDJhZDI3YTYzOWYzNDYuLmQwMTM2YTNjMmZl
NzgwODBhNDE5OGYzMGVmYjQxMDRhMzI3ZmYwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KQEAgLTMxMCw3ICszMTAsOCBAQAogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImNsYXNzTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJPYmplY3QgY2xhc3MgKGNvbnN0cnVjdG9yKSBuYW1lLiBTcGVjaWZp
ZWQgZm9yIDxjb2RlPm9iamVjdDwvY29kZT4gdHlwZSB2YWx1ZXMgb25seS4iIH0sCiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAidHlwZSI6ICJhbnkiLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmVtb3RlIG9iamVjdCB2YWx1ZSAoaW4gY2FzZSBvZiBw
cmltaXRpdmUgdmFsdWVzIG9yIEpTT04gdmFsdWVzIGlmIGl0IHdhcyByZXF1ZXN0ZWQpLiIgfSwK
ICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkZXNjcmlwdGlvbiIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTdHJpbmcgcmVwcmVzZW50
YXRpb24gb2YgdGhlIG9iamVjdC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
b2JqZWN0SWQiLCAiJHJlZiI6ICJSZW1vdGVPYmplY3RJZCIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJVbmlxdWUgb2JqZWN0IGlkZW50aWZpZXIgKGZvciBub24tcHJpbWl0aXZl
IHZhbHVlcykuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0SWQiLCAi
JHJlZiI6ICJSZW1vdGVPYmplY3RJZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJVbmlxdWUgb2JqZWN0IGlkZW50aWZpZXIgKGZvciBub24tcHJpbWl0aXZlIHZhbHVlcykuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZ1bmN0aW9uTG9jYXRpb24iLCAiJHJl
ZiI6ICJEZWJ1Z2dlci5Mb2NhdGlvbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJGdW5jdGlvbiBsb2NhdGlvbiB3aXRoaW4gb3duaW5nIHNjcmlwdC4iIH0KICAgICAgICAgICAg
ICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewpAQCAtMTg5MSw2ICsxODkyLDE2
IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgc291cmNlIGZvciB0
aGUgc2NyaXB0IHdpdGggZ2l2ZW4gaWQuIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRGdW5jdGlvbkxvY2F0aW9uIiwKKyAgICAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJm
dW5jdGlvbklkIiwgIiRyZWYiOiAiUnVudGltZS5SZW1vdGVPYmplY3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZCBvZiB0aGUgZnVuY3Rpb24gdG8gZ2V0IGxvY2F0aW9uIGZvci4iIH0KKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImxvY2F0aW9uIiwgIiRyZWYiOiAiTG9jYXRpb24iLCAiZGVzY3JpcHRp
b24iOiAiRnVuY3Rpb24gbG9jYXRpb24uIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBsb2NhdGlvbiBvZiBnaXZlbiBmdW5jdGlv
bi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1l
IjogInNldFBhdXNlT25FeGNlcHRpb25zIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0ZSIsICJ0eXBlIjogInN0cmlu
ZyIsICJlbnVtIjogWyJub25lIiwgInVuY2F1Z2h0IiwgImFsbCJdLCAiZGVzY3JpcHRpb24iOiAi
UGF1c2Ugb24gZXhjZXB0aW9ucyBtb2RlLiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUzZjM5ZDgxNjQ3MGJjZDY4
YWEzYTc0MTgzNjIyY2E3NDE0OWI0YWYuLmVlMTBkZGU2N2MwYWE4YjE2OTc4ZDZiYWE4NjU0OWI5
NmQwYTk5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTM1NCw2ICszNTQsMTYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsK
IH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkxvY2F0aW9uKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogbG9jYXRpb24pCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmpl
Y3RJZChmdW5jdGlvbklkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7
CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uTG9jYXRp
b24oZXJyb3JTdHJpbmcsIGZ1bmN0aW9uSWQsIGxvY2F0aW9uKTsKK30KKwogdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmlu
ZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKQogewogICAg
IGlmIChtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGY3ODg3YWMzNWFlMDgwMWJk
ZWRkMjkyNmViYzFjNWZhYjA1OGE0YmUuLjY1MmJiNWM1YTNjMjNkMDA0NDc3MjljMTY4ZTA2OWJj
NTUwZmEyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWFyY2hJ
bkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiopOwog
ICAgIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3Jp
cHRJZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKKyAgICB2b2lk
IGdldEZ1bmN0aW9uTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9u
SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBsb2NhdGlvbik7CiAgICAgdm9pZCBzY2hlZHVs
ZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3Rh
dGVtZW50KCk7CiAgICAgdm9pZCBicmVha1Byb2dyYW0oY29uc3QgU3RyaW5nJiBicmVha1JlYXNv
biwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVmYWY1MTMxOWI5
YmVkNTgzMmUyMTE1NjI3NWM5MjQyM2FjYWJhYjkuLjUxODY2Y2UyZmY2MzkzOGMxY2U0M2NmYjE4
NzMyOGI0NTQ3ZDIyYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xMCAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBmdW5jdGlvbiByZW1vdGUgb2JqZXRjdCBzaG91bGQgcHJvdmlkZSBhY2Nlc3MgdG8gZnVuY3Rp
b24gcG9zaXRpb24gaW4gdGhlIHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzE4MDgKKworICAgICAgICBBZGRlZCB0ZXN0IGZvciBEZWJ1Z2dl
ci5nZXRGdW5jdGlvbkxvY2F0aW9uIGNvbW1hbmQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9j
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
ZnVuY3Rpb24tbG9jYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisKIDIwMTEtMTEtMTEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CiAKICAgICAgICAgW1F0XSA0IG5ldyB0ZXN0cyBmYWlsIGludHJvZHVjZWQgaW4gcjk4ODUy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9j
YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0
aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTVlYzA3YzE4MmNhZjc5ZDc5
MTBhNjM0NWMyZDU3ZjNiZDI4MjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE5IEBACitUZXN0cyB0aGF0IERlYnVnZ2VyLmdldEZ1bmN0aW9uTG9jYXRpb24gY29tbWFuZCBy
ZXR1cm5zIGxvY2F0aW9uLiBCdWcgNzE4MDgKKworRGVidWdnZXIgd2FzIGVuYWJsZWQuCisKK1J1
bm5pbmc6IHRlc3RHZXRGaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uCitmaXJzdExpbmVGdW5jdGlv
biB0eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9uOiAKK2xpbmVOdW1iZXI6IDcKK2NvbHVt
bk51bWJlcjogdW5kZWZpbmVkCitzY3JpcHRJZCBpcyB2YWxpZDogdHJ1ZQorCitSdW5uaW5nOiB0
ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbgorbm9uRmlyc3RMaW5lRnVuY3Rpb250
eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9uOiAKK2xpbmVOdW1iZXI6IDEyCitjb2x1bW5O
dW1iZXI6IHVuZGVmaW5lZAorc2NyaXB0SWQgaXMgdmFsaWQ6IHRydWUKK0RlYnVnZ2VyIHdhcyBk
aXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1
bmN0aW9uLWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVu
Y3Rpb24tbG9jYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjQxOWE1OTRkODljNTUzYWRiMjQxMzRj
NzJhM2JiM2QxZDFmNzBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+ICBmdW5jdGlvbiBm
aXJzdExpbmVGdW5jdGlvbigpCisKK3sKK30KKworICAgZnVuY3Rpb24gbm90Rmlyc3RMaW5lRnVu
Y3Rpb24oKQorCit7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3Qu
cnVuRGVidWdnZXJUZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmlyc3RMaW5l
RnVuY3Rpb25Mb2NhdGlvbihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJmaXJzdExpbmVGdW5jdGlvbiIsIGRpZEV2YWx1YXRlKTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUocmVtb3RlKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJmaXJzdExpbmVGdW5jdGlv
biB0eXBlID0gIiArIHJlbW90ZS50eXBlKTsKKyAgICAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50
LmdldEZ1bmN0aW9uTG9jYXRpb24ocmVtb3RlLm9iamVjdElkLCBkaWRHZXRMb2NhdGlvbik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRHZXRMb2NhdGlvbihlcnJvciwg
cmVzcG9uc2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImRpZEdldExvY2F0aW9uOiAiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgibGluZU51bWJlcjogIiArIHJlc3BvbnNlLmxpbmVOdW1iZXIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjb2x1bW5OdW1iZXI6ICIgKyBy
ZXNwb25zZS5jb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJzY3JpcHRJZCBpcyB2YWxpZDogIiArICEhcmVzcG9uc2Uuc2NyaXB0SWQpOworICAg
ICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdEdldE5vbkZpcnN0TGluZUZ1bmN0aW9uTG9jYXRpb24obmV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibm90Rmlyc3RM
aW5lRnVuY3Rpb24iLCBkaWRFdmFsdWF0ZSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEV2
YWx1YXRlKHJlbW90ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgibm9uRmlyc3RMaW5lRnVuY3Rpb250eXBlID0gIiArIHJlbW90ZS50eXBl
KTsKKyAgICAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LmdldEZ1bmN0aW9uTG9jYXRpb24ocmVt
b3RlLm9iamVjdElkLCBkaWRHZXRMb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBmdW5jdGlvbiBkaWRHZXRMb2NhdGlvbihlcnJvciwgcmVzcG9uc2UpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImRpZEdldExvY2F0aW9u
OiAiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZU51bWJl
cjogIiArIHJlc3BvbnNlLmxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJjb2x1bW5OdW1iZXI6ICIgKyByZXNwb25zZS5jb2x1bW5OdW1iZXIpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJzY3JpcHRJZCBpcyB2YWxp
ZDogIiArICEhcmVzcG9uc2Uuc2NyaXB0SWQpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0pOworfTsKKworPC9zY3JpcHQ+CisKKzwvaGVh
ZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgdGhhdCBEZWJ1Z2dlci5n
ZXRGdW5jdGlvbkxvY2F0aW9uIGNvbW1hbmQgcmV0dXJucyBsb2NhdGlvbi4KKzxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTgwOCI+QnVnIDcxODA4PC9h
PgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2Vy
L2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTFkNzM3OTM4ZTUy
ZGM5Y2JjNmZkZDQ3NjBlODg2NWNlYzk0ZWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0cyB0aGF0IERlYnVnZ2VyLmdldEZ1
bmN0aW9uTG9jYXRpb24gY29tbWFuZCByZXR1cm5zIGxvY2F0aW9uLiBCdWcgNzE4MDgKKworRGVi
dWdnZXIgd2FzIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RHZXRGaXJzdExpbmVGdW5jdGlvbkxv
Y2F0aW9uCitmaXJzdExpbmVGdW5jdGlvbiB0eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9u
OiAKK2xpbmVOdW1iZXI6IDUKK2NvbHVtbk51bWJlcjogMzYKK3NjcmlwdElkIGlzIHZhbGlkOiB0
cnVlCisKK1J1bm5pbmc6IHRlc3RHZXROb25GaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uCitub25G
aXJzdExpbmVGdW5jdGlvbnR5cGUgPSBmdW5jdGlvbgorZGlkR2V0TG9jYXRpb246IAorbGluZU51
bWJlcjogMTAKK2NvbHVtbk51bWJlcjogMzIKK3NjcmlwdElkIGlzIHZhbGlkOiB0cnVlCitEZWJ1
Z2dlciB3YXMgZGlzYWJsZWQuCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114671</attachid>
            <date>2011-11-11 04:39:35 -0800</date>
            <delta_ts>2011-11-11 05:54:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71808-20111111163933.patch</filename>
            <type>text/plain</type>
            <size>20097</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMTM0YzViZjQ0MTc2ZDc4
MTI2MjY4NmE0NmUyYzhjZWM2NTQwZGViLi4yMzIwYmM0NjcwYTJkOTIwNmM3OWJmNGQ4OTgxOTZi
YTdlY2I4OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMTAgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0
aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRkZWQgRGVidWdnZXIuZ2V0RnVu
Y3Rpb25Mb2NhdGlvbiBjb21tYW5kIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gbG9jYXRpb24gaW5j
bHVkaW5nCisgICAgICAgIHN0YXJ0IGxpbmUsIGNvbHVtbiBhbmQgc2NyaXB0IGlkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rv
ci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkxvY2F0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAg
ICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTEtMTEtMTEgIEFscGhh
IExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHNjcm9sbGlu
ZyBpcyBicm9rZW4gd2l0aCBjb21wb3NpdG9yIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYWZiY2I2NDUzNDMxYjAwZTRjZWU2N2E5YjBiOGNkMjhl
YzUzMjZkMC4uODkzMTRmMjNkZDAwMTY4OGE2YjhmNTU4YzAxNTk1OWVjMmU2NzM4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC01MzIsNiArNTMyLDcgQEAg
X19aTjNXVEY5ZGF5SW5ZZWFyRWRpCiBfX1pOM1dURjllbXB0eUF0b21FCiBfX1pOM1dURjl4bWxu
c0F0b21FCiBfX1pOM1dURmVxRVJLTlNfN0NTdHJpbmdFUzJfCitfX1pOSzNKU0MxMEpTRnVuY3Rp
b24xMHNvdXJjZUNvZGVFdgogX19aTkszSlNDMTBKU0Z1bmN0aW9uMjNpc0hvc3RGdW5jdGlvbk5v
bklubGluZUV2CiBfX1pOSzNKU0MxMUludGVycHJldGVyMTRyZXRyaWV2ZUNhbGxlckVQTlNfOUV4
ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRQogX19aTkszSlNDMTFJbnRlcnByZXRlcjE4cmV0cmll
dmVMYXN0Q2FsbGVyRVBOU185RXhlY1N0YXRlRVJpUmxSTlNfN1VTdHJpbmdFUk5TXzdKU1ZhbHVl
RQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBl
ZWFmN2Q1NDEyMGJhYTI4MjRmZTk4ZDM2OTZhZGE4ZDRjZjAwMjRlLi5lN2IzODIzNjFkMjU3Njk1
NjM2ZDk2Zjk2YzIyN2EzMjE3NmU2ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTQ5LDYgKzE0OSwxMyBAQCBjb25zdCBVU3RyaW5nIEpT
RnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIG5hbWUoZXhlYyk7CiB9CiAKK2NvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJj
ZUNvZGUoKSBjb25zdAoreworICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKK30KKwogdm9pZCBK
U0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRnVuY3Rp
b24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApp
bmRleCA4M2JhYWFlNWVmZTVmMzZmMmQyNDZmNmViYTE0NjAwMDY5YTcyNDU2Li5iMDQxODE5MDBl
YjMxN2NjZjBiZWM1YjFkMmM4YTIyYjk0ZGFmMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBj
bGFzcyBOYXRpdmVFeGVjdXRhYmxlOworICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgY2xhc3Mg
VlB0ckhhY2tFeGVjdXRhYmxlOwogICAgIG5hbWVzcGFjZSBERkcgewogICAgIGNsYXNzIEpJVENv
ZGVHZW5lcmF0b3I7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBp
bmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGpzRXhlY3V0YWJsZSgpIGNvbnN0OwogCisgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUq
IHNvdXJjZUNvZGUoKSBjb25zdDsKKwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCBjZDEyZDE1
MzgxMWI3MzEzMjFmMmZjYmYyMWU2MjEzZjE1ZGNhMTk5Li5kOTc4ZWEwY2VjZDJmYjY2MTFiMTBm
OTkwNTgwODUzYzNkNTc0ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC01MSw2ICs1MSw3IEBA
CiAjaW5jbHVkZSAiSlNTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJTdG9yYWdlLmgiCisjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRl
IDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4KQEAgLTE1Niw2ICsxNTcsMjkgQEAgSlNWYWx1ZSBK
U0luamVjdGVkU2NyaXB0SG9zdDo6dHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKK0pTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9u
TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAxKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMo
JkpTRnVuY3Rpb246OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gYXNGdW5jdGlvbih2YWx1ZSk7CisKKyAgICBjb25zdCBT
b3VyY2VDb2RlKiBzb3VyY2VDb2RlID0gZnVuY3Rpb24tPnNvdXJjZUNvZGUoKTsKKyAgICBpZiAo
IXNvdXJjZUNvZGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGludCBsaW5l
TnVtYmVyID0gc291cmNlQ29kZS0+Zmlyc3RMaW5lKCk7CisgICAgaWYgKGxpbmVOdW1iZXIpCisg
ICAgICAgIGxpbmVOdW1iZXIgLT0gMTsgLy8gSW4gdGhlIGluc3BlY3RvciBwcm90b2NvbCBhbGwg
cG9zaXRpb25zIGFyZSAwLWJhc2VkIHdoaWxlIGluIFNvdXJjZUNvZGUgdGhleSBhcmUgMS1iYXNl
ZAorICAgIFVTdHJpbmcgc2NyaXB0SWQgPSBVU3RyaW5nOjpudW1iZXIoc291cmNlQ29kZS0+cHJv
dmlkZXIoKS0+YXNJRCgpKTsKKworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZXhlYywgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJlcikpOwor
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAic2NyaXB0SWQiKSwganNTdHJpbmcoZXhlYywgc2NyaXB0SWQpKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDUxNWYyMTZiNmYyNjdiNTg2MmFmNTQ0NmY4
ZGM0YzU5ZWIyYTRjNTIuLmNmYjBmMDVlMzhlYTQxY2FhYjQ5ODkxMjQyNDJlZDVkNTFhNGZmZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVk
U2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMTUwLDYgKzE1MCwyNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25Mb2Nh
dGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJJbmplY3RlZFNjcmlwdEhvc3QudHlwZUNhbGxiYWNrKCkiKTsKKyAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUg
PSBhcmdzWzBdOworICAgIGlmICghdmFsdWUtPklzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24g
PSB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QodmFsdWUpOworICAgIGludCBsaW5lTnVt
YmVyID0gZnVuY3Rpb24tPkdldFNjcmlwdExpbmVOdW1iZXIoKTsKKyAgICBpbnQgY29sdW1uTnVt
YmVyID0gZnVuY3Rpb24tPkdldFNjcmlwdENvbHVtbk51bWJlcigpOworICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiByZXN1bHQgPSB2ODo6T2JqZWN0OjpOZXcoKTsKKyAgICByZXN1bHQtPlNldCh2
ODo6U3RyaW5nOjpOZXcoImxpbmVOdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhsaW5lTnVtYmVy
KSk7CisgICAgcmVzdWx0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJjb2x1bW5OdW1iZXIiKSwgdjg6
OkludGVnZXI6Ok5ldyhjb2x1bW5OdW1iZXIpKTsKKyAgICByZXN1bHQtPlNldCh2ODo6U3RyaW5n
OjpOZXcoInNjcmlwdElkIiksIGZ1bmN0aW9uLT5HZXRTY3JpcHRJZCgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6
Omluc3BlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0Lmluc3BlY3QoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggOTViMTJiYjAyYzMwNmM2OTVlNjkwZThh
YTA3Y2YwOTNiNGYwYjU0OS4uYzQ5ZjgxNWE1MjdiN2Q3NTZkZmQ0MGNhYjc0M2RlOWZiY2M2YWMw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC04
OCw2ICs4OCwyMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VgogICAgIG1ha2VFdmFsQ2FsbChl
cnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAordm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3Vs
dCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9i
amVjdCwgImdldEZ1bmN0aW9uTG9jYXRpb24iKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChmdW5jdGlvbklkKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwor
ICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOworICAgIGlmICghcmVzdWx0VmFs
dWUgfHwgcmVzdWx0VmFsdWUtPnR5cGUoKSAhPSBJbnNwZWN0b3JWYWx1ZTo6VHlwZU9iamVjdCkg
eworICAgICAgICBpZiAoIXJlc3VsdFZhbHVlLT5hc1N0cmluZyhlcnJvclN0cmluZykpCisgICAg
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgICpyZXN1bHQgPSByZXN1bHRWYWx1ZS0+YXNPYmplY3QoKTsKK30KKwogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiogcHJvcGVydGllcykKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldFByb3BlcnRpZXMiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggODU2ODBhZDg2ZjE1ZWRiYTliOWM4
MjY5MzI4NjQ5OTg2ZGE0YmM1Ni4uNjk4NzFiOTY0ODc5MDFjNjgwMGM2M2I3MjcwNTZmOTg1MmE1
NjlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTc4
LDYgKzc4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJl
dHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHdh
c1Rocm93bik7CisgICAgdm9pZCBnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsK
ICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7
CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogICAg
IHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKaW5kZXggM2YyMjFhNWVl
NzI2YTJmZTVkZGQxY2FkZGY3MjZkNzRmMzdlMDNlZS4uNjA3NDRjN2JmNWM2OGE4NDQ1M2M0NDgw
ZDUzY2M4OTJiMDFiMjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5pZGwKQEAgLTQ0LDYgKzQ0LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICBbQ3VzdG9tXSBET01PYmplY3QgaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoaW4gRE9NT2JqZWN0
IG9iamVjdCk7CiAgICAgICAgIFtDdXN0b21dIGJvb2xlYW4gaXNIVE1MQWxsQ29sbGVjdGlvbihp
biBET01PYmplY3Qgb2JqZWN0KTsKICAgICAgICAgW0N1c3RvbV0gRE9NU3RyaW5nIHR5cGUoaW4g
RE9NT2JqZWN0IG9iamVjdCk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBmdW5jdGlvbkxv
Y2F0aW9uKGluIERPTU9iamVjdCBvYmplY3QpOwogCiAgICAgICAgIFtDdXN0b21dIGludCBkYXRh
YmFzZUlkKGluIERPTU9iamVjdCBkYXRhYmFzZSk7CiAgICAgICAgIFtDdXN0b21dIGludCBzdG9y
YWdlSWQoaW4gRE9NT2JqZWN0IHN0b3JhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDgyZGFmNDk1ZTE0MmU5YmYxMjRhNGZk
NjU5NzJmY2JlNmRiZWFmNmEuLjliNDVlODRlNWI1MWU1NzU3NjVkM2NiMTgyZjExMTZjYzFhN2M5
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMKQEAgLTE5NCw2ICsxOTQsMTUgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAgfSwKIAorICAgIGdldEZ1bmN0aW9uTG9j
YXRpb246IGZ1bmN0aW9uKGZ1bmN0aW9uSWQpCisgICAgeworICAgICAgICB2YXIgcGFyc2VkRnVu
Y3Rpb25JZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQoZnVuY3Rpb25JZCk7CisgICAgICAgIHZhciBm
dW5jID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkRnVuY3Rpb25JZCk7CisgICAgICAgIGlmICh0
eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVybiAiQ2Fubm90IHJl
c29sdmUgZnVuY3Rpb24gYnkgaWQuIjsKKyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9z
dC5mdW5jdGlvbkxvY2F0aW9uKGZ1bmMpOworICAgIH0sCisKICAgICByZWxlYXNlT2JqZWN0OiBm
dW5jdGlvbihvYmplY3RJZCkKICAgICB7CiAgICAgICAgIHZhciBwYXJzZWRPYmplY3RJZCA9IHRo
aXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCmluZGV4IDE5N2YyZDM5ODhkODYwMjRjNjU0ZWZiYWMzMDJhZDI3YTYzOWYzNDYu
LmQwMTM2YTNjMmZlNzgwODBhNDE5OGYzMGVmYjQxMDRhMzI3ZmYwM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTMxMCw3ICszMTAsOCBAQAogICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImNsYXNzTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPYmplY3QgY2xhc3MgKGNvbnN0cnVjdG9yKSBu
YW1lLiBTcGVjaWZpZWQgZm9yIDxjb2RlPm9iamVjdDwvY29kZT4gdHlwZSB2YWx1ZXMgb25seS4i
IH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAidHlwZSI6ICJhbnki
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmVtb3RlIG9iamVjdCB2YWx1ZSAo
aW4gY2FzZSBvZiBwcmltaXRpdmUgdmFsdWVzIG9yIEpTT04gdmFsdWVzIGlmIGl0IHdhcyByZXF1
ZXN0ZWQpLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkZXNjcmlwdGlvbiIs
ICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTdHJp
bmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4iIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAib2JqZWN0SWQiLCAiJHJlZiI6ICJSZW1vdGVPYmplY3RJZCIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgb2JqZWN0IGlkZW50aWZpZXIgKGZvciBu
b24tcHJpbWl0aXZlIHZhbHVlcykuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
b2JqZWN0SWQiLCAiJHJlZiI6ICJSZW1vdGVPYmplY3RJZCIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJVbmlxdWUgb2JqZWN0IGlkZW50aWZpZXIgKGZvciBub24tcHJpbWl0aXZl
IHZhbHVlcykuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZ1bmN0aW9uTG9j
YXRpb24iLCAiJHJlZiI6ICJEZWJ1Z2dlci5Mb2NhdGlvbiIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJGdW5jdGlvbiBsb2NhdGlvbiB3aXRoaW4gb3duaW5nIHNjcmlwdC4iIH0K
ICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewpAQCAtMTg5
MSw2ICsxODkyLDE2IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMg
c291cmNlIGZvciB0aGUgc2NyaXB0IHdpdGggZ2l2ZW4gaWQuIgogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRGdW5jdGlvbkxvY2F0aW9u
IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJmdW5jdGlvbklkIiwgIiRyZWYiOiAiUnVudGltZS5SZW1vdGVPYmplY3RJZCIs
ICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgZnVuY3Rpb24gdG8gZ2V0IGxvY2F0aW9uIGZvci4i
IH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxvY2F0aW9uIiwgIiRyZWYiOiAiTG9jYXRpb24i
LCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rpb24gbG9jYXRpb24uIiB9CisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBsb2NhdGlvbiBvZiBn
aXZlbiBmdW5jdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICJuYW1lIjogInNldFBhdXNlT25FeGNlcHRpb25zIiwKICAgICAgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0ZSIsICJ0
eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJub25lIiwgInVuY2F1Z2h0IiwgImFsbCJdLCAiZGVz
Y3JpcHRpb24iOiAiUGF1c2Ugb24gZXhjZXB0aW9ucyBtb2RlLiIgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUzZjM5
ZDgxNjQ3MGJjZDY4YWEzYTc0MTgzNjIyY2E3NDE0OWI0YWYuLmVlMTBkZGU2N2MwYWE4YjE2OTc4
ZDZiYWE4NjU0OWI5NmQwYTk5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM1NCw2ICszNTQsMTYgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIg
KyBzY3JpcHRJZDsKIH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlv
bkxvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlv
bklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbG9jYXRpb24pCit7CisgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRT
Y3JpcHRGb3JPYmplY3RJZChmdW5jdGlvbklkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFz
IGdvbmUiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGluamVjdGVkU2NyaXB0LmdldEZ1
bmN0aW9uTG9jYXRpb24oZXJyb3JTdHJpbmcsIGZ1bmN0aW9uSWQsIGxvY2F0aW9uKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50
KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBk
YXRhKQogewogICAgIGlmIChtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGY3ODg3
YWMzNWFlMDgwMWJkZWRkMjkyNmViYzFjNWZhYjA1OGE0YmUuLjY1MmJiNWM1YTNjMjNkMDA0NDc3
MjljMTY4ZTA2OWJjNTUwZmEyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElk
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiopOwogICAgIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBj
b25zdCBwcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNl
KTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBsb2NhdGlvbik7CiAgICAg
dm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFz
b24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2b2lkIGNhbmNlbFBh
dXNlT25OZXh0U3RhdGVtZW50KCk7CiAgICAgdm9pZCBicmVha1Byb2dyYW0oY29uc3QgU3RyaW5n
JiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGVmYWY1MTMxOWI5YmVkNTgzMmUyMTE1NjI3NWM5MjQyM2FjYWJhYjkuLjUxODY2Y2UyZmY2Mzkz
OGMxY2U0M2NmYjE4NzMyOGI0NTQ3ZDIyYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0x
MS0xMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBmdW5jdGlvbiByZW1vdGUgb2JqZXRjdCBzaG91bGQgcHJvdmlkZSBhY2Nl
c3MgdG8gZnVuY3Rpb24gcG9zaXRpb24gaW4gdGhlIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE4MDgKKworICAgICAgICBBZGRlZCB0ZXN0
IGZvciBEZWJ1Z2dlci5nZXRGdW5jdGlvbkxvY2F0aW9uIGNvbW1hbmQuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
ZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTEtMTEtMTEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1t
ZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgW1F0XSA0IG5ldyB0ZXN0cyBmYWlsIGludHJvZHVj
ZWQgaW4gcjk4ODUyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
ZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTVlYzA3
YzE4MmNhZjc5ZDc5MTBhNjM0NWMyZDU3ZjNiZDI4MjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE5IEBACitUZXN0cyB0aGF0IERlYnVnZ2VyLmdldEZ1bmN0aW9uTG9jYXRp
b24gY29tbWFuZCByZXR1cm5zIGxvY2F0aW9uLiBCdWcgNzE4MDgKKworRGVidWdnZXIgd2FzIGVu
YWJsZWQuCisKK1J1bm5pbmc6IHRlc3RHZXRGaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uCitmaXJz
dExpbmVGdW5jdGlvbiB0eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9uOiAKK2xpbmVOdW1i
ZXI6IDcKK2NvbHVtbk51bWJlcjogdW5kZWZpbmVkCitzY3JpcHRJZCBpcyB2YWxpZDogdHJ1ZQor
CitSdW5uaW5nOiB0ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbgorbm9uRmlyc3RM
aW5lRnVuY3Rpb250eXBlID0gZnVuY3Rpb24KK2RpZEdldExvY2F0aW9uOiAKK2xpbmVOdW1iZXI6
IDEyCitjb2x1bW5OdW1iZXI6IHVuZGVmaW5lZAorc2NyaXB0SWQgaXMgdmFsaWQ6IHRydWUKK0Rl
YnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjQxOWE1OTRkODlj
NTUzYWRiMjQxMzRjNzJhM2JiM2QxZDFmNzBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLmh0bWwKQEAgLTAsMCArMSw2
OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+
ICBmdW5jdGlvbiBmaXJzdExpbmVGdW5jdGlvbigpCisKK3sKK30KKworICAgZnVuY3Rpb24gbm90
Rmlyc3RMaW5lRnVuY3Rpb24oKQorCit7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIElu
c3BlY3RvclRlc3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0
R2V0Rmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbihuZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmaXJzdExpbmVGdW5jdGlvbiIsIGRpZEV2
YWx1YXRlKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUocmVtb3RlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJmaXJz
dExpbmVGdW5jdGlvbiB0eXBlID0gIiArIHJlbW90ZS50eXBlKTsKKyAgICAgICAgICAgICAgICBE
ZWJ1Z2dlckFnZW50LmdldEZ1bmN0aW9uTG9jYXRpb24ocmVtb3RlLm9iamVjdElkLCBkaWRHZXRM
b2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRHZXRMb2Nh
dGlvbihlcnJvciwgcmVzcG9uc2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoImRpZEdldExvY2F0aW9uOiAiKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZU51bWJlcjogIiArIHJlc3BvbnNlLmxpbmVO
dW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjb2x1bW5O
dW1iZXI6ICIgKyByZXNwb25zZS5jb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJzY3JpcHRJZCBpcyB2YWxpZDogIiArICEhcmVzcG9uc2Uuc2Ny
aXB0SWQpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5vbkZpcnN0TGluZUZ1bmN0aW9uTG9jYXRpb24o
bmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZSgibm90Rmlyc3RMaW5lRnVuY3Rpb24iLCBkaWRFdmFsdWF0ZSk7CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGRpZEV2YWx1YXRlKHJlbW90ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibm9uRmlyc3RMaW5lRnVuY3Rpb250eXBlID0gIiAr
IHJlbW90ZS50eXBlKTsKKyAgICAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LmdldEZ1bmN0aW9u
TG9jYXRpb24ocmVtb3RlLm9iamVjdElkLCBkaWRHZXRMb2NhdGlvbik7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRHZXRMb2NhdGlvbihlcnJvciwgcmVzcG9uc2UpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImRp
ZEdldExvY2F0aW9uOiAiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgibGluZU51bWJlcjogIiArIHJlc3BvbnNlLmxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjb2x1bW5OdW1iZXI6ICIgKyByZXNwb25zZS5jb2x1
bW5OdW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJzY3Jp
cHRJZCBpcyB2YWxpZDogIiArICEhcmVzcG9uc2Uuc2NyaXB0SWQpOworICAgICAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0pOworfTsKKworPC9zY3Jp
cHQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgdGhh
dCBEZWJ1Z2dlci5nZXRGdW5jdGlvbkxvY2F0aW9uIGNvbW1hbmQgcmV0dXJucyBsb2NhdGlvbi4K
KzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTgwOCI+
QnVnIDcxODA4PC9hPgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9j
YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVj
dG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YTFkNzM3OTM4ZTUyZGM5Y2JjNmZkZDQ3NjBlODg2NWNlYzk0ZWYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0
aW9uLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0cyB0aGF0IERl
YnVnZ2VyLmdldEZ1bmN0aW9uTG9jYXRpb24gY29tbWFuZCByZXR1cm5zIGxvY2F0aW9uLiBCdWcg
NzE4MDgKKworRGVidWdnZXIgd2FzIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RHZXRGaXJzdExp
bmVGdW5jdGlvbkxvY2F0aW9uCitmaXJzdExpbmVGdW5jdGlvbiB0eXBlID0gZnVuY3Rpb24KK2Rp
ZEdldExvY2F0aW9uOiAKK2xpbmVOdW1iZXI6IDUKK2NvbHVtbk51bWJlcjogMzYKK3NjcmlwdElk
IGlzIHZhbGlkOiB0cnVlCisKK1J1bm5pbmc6IHRlc3RHZXROb25GaXJzdExpbmVGdW5jdGlvbkxv
Y2F0aW9uCitub25GaXJzdExpbmVGdW5jdGlvbnR5cGUgPSBmdW5jdGlvbgorZGlkR2V0TG9jYXRp
b246IAorbGluZU51bWJlcjogMTAKK2NvbHVtbk51bWJlcjogMzIKK3NjcmlwdElkIGlzIHZhbGlk
OiB0cnVlCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114686</attachid>
            <date>2011-11-11 05:54:21 -0800</date>
            <delta_ts>2011-11-11 18:46:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71808-20111111175419.patch</filename>
            <type>text/plain</type>
            <size>21920</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5NTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhi
Y2Y0NGE3NTRjN2UyMTc3ZTg0YTg1OTg5MTlkZjEzOGY1YzE4YTguLjRmMjVjNWNmMDkyZjlkNjk1
NGEwZDM4Y2M5MGRkODIwOThkMGZhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDExLTExLTExICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGZ1bmN0aW9uIHJlbW90ZSBvYmpldGN0IHNo
b3VsZCBwcm92aWRlIGFjY2VzcyB0byBmdW5jdGlvbiBwb3NpdGlvbiBpbiB0aGUgc2NyaXB0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTgwOAorCisg
ICAgICAgIEV4cG9zZWQgYWNjZXNzb3IgZm9yIGZ1bmN0aW9uIHNvdXJjZSBjb2RlLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmg6CisKIDIwMTEtMTEtMTEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5OTk1MC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNzM4YjJkY2YyYTMyM2ExOGJjY2E2NGU5MzljYTZhOWYwZDRlNDkwLi43
YWEyNzU5YmM4ODMwY2NlYjJhZjgzYjg0ODhhMjk4OWZiNTBmOTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTEtMTEtMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qg
c2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIGZ1bmN0aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisK
KyAgICAgICAgQWRkZWQgRGVidWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21tYW5kIGZvciBy
ZXNvbHZpbmcgZnVuY3Rpb24gbG9jYXRpb24gaW5jbHVkaW5nCisgICAgICAgIHN0YXJ0IGxpbmUs
IGNvbHVtbiBhbmQgc2NyaXB0IGlkLgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRt
YW4uCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9u
Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkxv
Y2F0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1
bmN0aW9uTG9jYXRpb25DYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkxv
Y2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0
RnVuY3Rpb25Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaDoKKwogMjAxMS0xMS0xMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbY2hyb21pdW1dIGxpc3QgZGVkaWNhdGVk
IHdvcmtlcnMgaW4gY2FzZSBpbnNwZWN0b3Igb3BlbmVkIHBvc3Qtd29ya2VyIGNyZWF0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYWZiY2I2NDUzNDMx
YjAwZTRjZWU2N2E5YjBiOGNkMjhlYzUzMjZkMC4uODkzMTRmMjNkZDAwMTY4OGE2YjhmNTU4YzAx
NTk1OWVjMmU2NzM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CkBAIC01MzIsNiArNTMyLDcgQEAgX19aTjNXVEY5ZGF5SW5ZZWFyRWRpCiBfX1pOM1dURjllbXB0
eUF0b21FCiBfX1pOM1dURjl4bWxuc0F0b21FCiBfX1pOM1dURmVxRVJLTlNfN0NTdHJpbmdFUzJf
CitfX1pOSzNKU0MxMEpTRnVuY3Rpb24xMHNvdXJjZUNvZGVFdgogX19aTkszSlNDMTBKU0Z1bmN0
aW9uMjNpc0hvc3RGdW5jdGlvbk5vbklubGluZUV2CiBfX1pOSzNKU0MxMUludGVycHJldGVyMTRy
ZXRyaWV2ZUNhbGxlckVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRQogX19aTkszSlND
MTFJbnRlcnByZXRlcjE4cmV0cmlldmVMYXN0Q2FsbGVyRVBOU185RXhlY1N0YXRlRVJpUmxSTlNf
N1VTdHJpbmdFUk5TXzdKU1ZhbHVlRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCAwYzI3OWUzMDZiYmQ2MGE1NWQ3MjhmMmRjN2Ix
ZjE2MmJkOWEwYjMyLi43MTJlOWE4ZTFjYmUzYzdjYmFiNmY0NWE2NWY1MzM0YjNkYThiNmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZgpAQCAtMzA3LDYgKzMwNyw3IEBAIEVYUE9SVFMKICAgICA/c2xvd0FwcGVuZEBNYXJrZWRBcmd1
bWVudEJ1ZmZlckBKU0NAQEFBRVhWSlNWYWx1ZUAyQEBaCiAgICAgP3Nsb3dWYWxpZGF0ZUNlbGxA
SlNDQEBZQVhQQVZKU0NlbGxAMUBAWgogICAgID9zbG93VmFsaWRhdGVDZWxsQEpTQ0BAWUFYUEFW
SlNHbG9iYWxPYmplY3RAMUBAWgorICAgID9zb3VyY2VDb2RlQEpTRnVuY3Rpb25ASlNDQEBRQkVQ
QlZTb3VyY2VDb2RlQDJAWFoKICAgICA/c3RhcnRQcm9maWxpbmdAUHJvZmlsZXJASlNDQEBRQUVY
UEFWRXhlY1N0YXRlQDJAQUJWVVN0cmluZ0AyQEBaCiAgICAgP3N0YXJ0U2FtcGxpbmdASlNHbG9i
YWxEYXRhQEpTQ0BAUUFFWFhaCiAgICAgP3N0b3BQcm9maWxpbmdAUHJvZmlsZXJASlNDQEBRQUU/
QVY/JFBhc3NSZWZQdHJAVlByb2ZpbGVASlNDQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBBQlZVU3Ry
aW5nQDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
aW5kZXggZWVhZjdkNTQxMjBiYWEyODI0ZmU5OGQzNjk2YWRhOGQ0Y2YwMDI0ZS4uZTdiMzgyMzYx
ZDI1NzY5NTYzNmQ5NmY5NmMyMjdhMzIxNzZlNmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTE0OSw2ICsxNDksMTMgQEAgY29uc3QgVVN0
cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBuYW1lKGV4ZWMpOwogfQogCitjb25zdCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9u
Ojpzb3VyY2VDb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7Cit9CisK
IHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U0Z1bmN0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKaW5kZXggODNiYWFhZTVlZmU1ZjM2ZjJkMjQ2ZjZlYmExNDYwMDA2OWE3MjQ1Ni4uYjA0
MTgxOTAwZWIzMTdjY2YwYmVjNWIxZDJjOGEyMmI5NGRhZjJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKKyAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAg
IGNsYXNzIFZQdHJIYWNrRXhlY3V0YWJsZTsKICAgICBuYW1lc3BhY2UgREZHIHsKICAgICBjbGFz
cyBKSVRDb2RlR2VuZXJhdG9yOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBqc0V4ZWN1dGFibGUoKSBjb25zdDsKIAorICAgICAgICBjb25zdCBTb3Vy
Y2VDb2RlKiBzb3VyY2VDb2RlKCkgY29uc3Q7CisKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERB
VEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXgg
Y2QxMmQxNTM4MTFiNzMxMzIxZjJmY2JmMjFlNjIxM2YxNWRjYTE5OS4uZDk3OGVhMGNlY2QyZmI2
NjExYjEwZjk5MDU4MDg1M2MzZDU3NGVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNTEsNiAr
NTEsNyBAQAogI2luY2x1ZGUgIkpTU3RvcmFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZS5oIgorI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CkBAIC0xNTYsNiArMTU3LDI5IEBAIEpT
VmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogfQogCitKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojpm
dW5jdGlvbkxvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghdmFsdWUuYXNDZWxsKCktPmlu
aGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGFzRnVuY3Rpb24odmFsdWUpOworCisgICAg
Y29uc3QgU291cmNlQ29kZSogc291cmNlQ29kZSA9IGZ1bmN0aW9uLT5zb3VyY2VDb2RlKCk7Cisg
ICAgaWYgKCFzb3VyY2VDb2RlKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBp
bnQgbGluZU51bWJlciA9IHNvdXJjZUNvZGUtPmZpcnN0TGluZSgpOworICAgIGlmIChsaW5lTnVt
YmVyKQorICAgICAgICBsaW5lTnVtYmVyIC09IDE7IC8vIEluIHRoZSBpbnNwZWN0b3IgcHJvdG9j
b2wgYWxsIHBvc2l0aW9ucyBhcmUgMC1iYXNlZCB3aGlsZSBpbiBTb3VyY2VDb2RlIHRoZXkgYXJl
IDEtYmFzZWQKKyAgICBVU3RyaW5nIHNjcmlwdElkID0gVVN0cmluZzo6bnVtYmVyKHNvdXJjZUNv
ZGUtPnByb3ZpZGVyKCktPmFzSUQoKSk7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lTnVtYmVyIiksIGpzTnVtYmVyKGxpbmVOdW1i
ZXIpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgInNjcmlwdElkIiksIGpzU3RyaW5nKGV4ZWMsIHNjcmlwdElkKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdChF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCA1MTVmMjE2YjZmMjY3YjU4NjJh
ZjU0NDZmOGRjNGM1OWViMmE0YzUyLi5jZmIwZjA1ZTM4ZWE0MWNhYWI0OTg5MTI0MjQyZWQ1ZDUx
YTRmZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTE1MCw2ICsxNTAs
MjcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0
aW9uTG9jYXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LnR5cGVDYWxsYmFjaygpIik7CisgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlID0gYXJnc1swXTsKKyAgICBpZiAoIXZhbHVlLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1
bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHZhbHVlKTsKKyAgICBpbnQg
bGluZU51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRMaW5lTnVtYmVyKCk7CisgICAgaW50IGNv
bHVtbk51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRDb2x1bW5OdW1iZXIoKTsKKyAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gcmVzdWx0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CisgICAgcmVzdWx0
LT5TZXQodjg6OlN0cmluZzo6TmV3KCJsaW5lTnVtYmVyIiksIHY4OjpJbnRlZ2VyOjpOZXcobGlu
ZU51bWJlcikpOworICAgIHJlc3VsdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiY29sdW1uTnVtYmVy
IiksIHY4OjpJbnRlZ2VyOjpOZXcoY29sdW1uTnVtYmVyKSk7CisgICAgcmVzdWx0LT5TZXQodjg6
OlN0cmluZzo6TmV3KCJzY3JpcHRJZCIpLCBmdW5jdGlvbi0+R2V0U2NyaXB0SWQoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnNwZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0KCkiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDk1YjEyYmIwMmMzMDZjNjk1
ZTY5MGU4YWEwN2NmMDkzYjRmMGI1NDkuLmM0OWY4MTVhNTI3YjdkNzU2ZGZkNDBjYWI3NDNkZTlm
YmNjNmFjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtODgsNiArODgsMjAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKICAgICBtYWtlRXZh
bENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiByZXN1bHQpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3QsICJnZXRGdW5jdGlvbkxvY2F0aW9uIik7CisgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoZnVuY3Rpb25JZCk7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRW
YWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKKyAgICBpZiAoIXJl
c3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVP
YmplY3QpIHsKKyAgICAgICAgaWYgKCFyZXN1bHRWYWx1ZS0+YXNTdHJpbmcoZXJyb3JTdHJpbmcp
KQorICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUtPmFzT2JqZWN0KCk7Cit9
CisKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIHByb3BlcnRpZXMpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRQcm9wZXJ0aWVzIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDg1NjgwYWQ4NmYxNWVk
YmE5YjljODI2OTMyODY0OTk4NmRhNGJjNTYuLjY5ODcxYjk2NDg3OTAxYzY4MDBjNjNiNzI3MDU2
Zjk4NTJhNTY5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sKiB3YXNUaHJvd24pOworICAgIHZvaWQgZ2V0RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJl
c3VsdCk7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBy
ZXN1bHQpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElk
KTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCmluZGV4IDNm
MjIxYTVlZTcyNmEyZmU1ZGRkMWNhZGRmNzI2ZDc0ZjM3ZTAzZWUuLjYwNzQ0YzdiZjVjNjhhODQ0
NTNjNDQ4MGQ1M2NjODkyYjAxYjI4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCkBAIC00NCw2ICs0NCw3IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGludGVybmFsQ29uc3RydWN0b3JOYW1lKGluIERP
TU9iamVjdCBvYmplY3QpOwogICAgICAgICBbQ3VzdG9tXSBib29sZWFuIGlzSFRNTEFsbENvbGxl
Y3Rpb24oaW4gRE9NT2JqZWN0IG9iamVjdCk7CiAgICAgICAgIFtDdXN0b21dIERPTVN0cmluZyB0
eXBlKGluIERPTU9iamVjdCBvYmplY3QpOworICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgZnVu
Y3Rpb25Mb2NhdGlvbihpbiBET01PYmplY3Qgb2JqZWN0KTsKIAogICAgICAgICBbQ3VzdG9tXSBp
bnQgZGF0YWJhc2VJZChpbiBET01PYmplY3QgZGF0YWJhc2UpOwogICAgICAgICBbQ3VzdG9tXSBp
bnQgc3RvcmFnZUlkKGluIERPTU9iamVjdCBzdG9yYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCA4MmRhZjQ5NWUxNDJlOWJm
MTI0YTRmZDY1OTcyZmNiZTZkYmVhZjZhLi45YjQ1ZTg0ZTViNTFlNTc1NzY1ZDNjYjE4MmYxMTE2
Y2MxYTdjOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzCkBAIC0xOTQsNiArMTk0LDE1IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0sCiAKKyAgICBnZXRGdW5j
dGlvbkxvY2F0aW9uOiBmdW5jdGlvbihmdW5jdGlvbklkKQorICAgIHsKKyAgICAgICAgdmFyIHBh
cnNlZEZ1bmN0aW9uSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKGZ1bmN0aW9uSWQpOworICAgICAg
ICB2YXIgZnVuYyA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZEZ1bmN0aW9uSWQpOworICAgICAg
ICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICByZXR1cm4gIkNh
bm5vdCByZXNvbHZlIGZ1bmN0aW9uIGJ5IGlkLiI7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdEhvc3QuZnVuY3Rpb25Mb2NhdGlvbihmdW5jKTsKKyAgICB9LAorCiAgICAgcmVsZWFzZU9i
amVjdDogZnVuY3Rpb24ob2JqZWN0SWQpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkT2JqZWN0
SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCAxOTdmMmQzOTg4ZDg2MDI0YzY1NGVmYmFjMzAyYWQyN2E2
MzlmMzQ2Li5kMDEzNmEzYzJmZTc4MDgwYTQxOThmMzBlZmI0MTA0YTMyN2ZmMDNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0zMTAsNyArMzEwLDggQEAKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjbGFzc05hbWUiLCAidHlwZSI6ICJzdHJpbmci
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT2JqZWN0IGNsYXNzIChjb25zdHJ1
Y3RvcikgbmFtZS4gU3BlY2lmaWVkIGZvciA8Y29kZT5vYmplY3Q8L2NvZGU+IHR5cGUgdmFsdWVz
IG9ubHkuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhbHVlIiwgInR5cGUi
OiAiYW55IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJlbW90ZSBvYmplY3Qg
dmFsdWUgKGluIGNhc2Ugb2YgcHJpbWl0aXZlIHZhbHVlcyBvciBKU09OIHZhbHVlcyBpZiBpdCB3
YXMgcmVxdWVzdGVkKS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGVzY3Jp
cHRpb24iLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuIiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3RlT2JqZWN0SWQiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVjdCBpZGVudGlmaWVy
IChmb3Igbm9uLXByaW1pdGl2ZSB2YWx1ZXMpLiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3RlT2JqZWN0SWQiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVjdCBpZGVudGlmaWVyIChmb3Igbm9uLXBy
aW1pdGl2ZSB2YWx1ZXMpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5j
dGlvbkxvY2F0aW9uIiwgIiRyZWYiOiAiRGVidWdnZXIuTG9jYXRpb24iLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rpb24gbG9jYXRpb24gd2l0aGluIG93bmluZyBzY3Jp
cHQuIiB9CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsK
QEAgLTE4OTEsNiArMTg5MiwxNiBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJS
ZXR1cm5zIHNvdXJjZSBmb3IgdGhlIHNjcmlwdCB3aXRoIGdpdmVuIGlkLiIKICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0RnVuY3Rpb25M
b2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZnVuY3Rpb25JZCIsICIkcmVmIjogIlJ1bnRpbWUuUmVtb3RlT2Jq
ZWN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIGZ1bmN0aW9uIHRvIGdldCBsb2NhdGlv
biBmb3IuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2NhdGlvbiIsICIkcmVmIjogIkxv
Y2F0aW9uIiwgImRlc2NyaXB0aW9uIjogIkZ1bmN0aW9uIGxvY2F0aW9uLiIgfQorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgbG9jYXRp
b24gb2YgZ2l2ZW4gZnVuY3Rpb24uIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJzZXRQYXVzZU9uRXhjZXB0aW9ucyIsCiAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3Rh
dGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsibm9uZSIsICJ1bmNhdWdodCIsICJhbGwi
XSwgImRlc2NyaXB0aW9uIjogIlBhdXNlIG9uIGV4Y2VwdGlvbnMgbW9kZS4iIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCBlM2YzOWQ4MTY0NzBiY2Q2OGFhM2E3NDE4MzYyMmNhNzQxNDliNGFmLi5lZTEwZGRlNjdjMGFh
OGIxNjk3OGQ2YmFhODY1NDliOTZkMGE5OTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNTQsNiArMzU0LDE2IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAgICplcnJvciA9ICJObyBzY3JpcHQgZm9y
IGlkOiAiICsgc2NyaXB0SWQ7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0
RnVuY3Rpb25Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGxvY2F0aW9uKQoreworICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
amVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CisgICAgaWYgKGluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZy
YW1lIGhhcyBnb25lIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbmplY3RlZFNjcmlw
dC5nZXRGdW5jdGlvbkxvY2F0aW9uKGVycm9yU3RyaW5nLCBmdW5jdGlvbklkLCBsb2NhdGlvbik7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0
YXRlbWVudChjb25zdCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRl
eCBmNzg4N2FjMzVhZTA4MDFiZGVkZDI5MjZlYmMxYzVmYWIwNThhNGJlLi42NTJiYjVjNWEzYzIz
ZDAwNDQ3NzI5YzE2OGUwNjliYzU1MGZhMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxD
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4qKTsKICAgICB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3Qg
Ym9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbmV3Q2FsbEZyYW1l
cywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRTY3JpcHRT
b3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBTdHJpbmcqIHNjcmlw
dFNvdXJjZSk7CisgICAgdm9pZCBnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbG9jYXRpb24p
OwogICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChjb25zdCBTdHJpbmcmIGJy
ZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdm9pZCBj
YW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwogICAgIHZvaWQgYnJlYWtQcm9ncmFtKGNvbnN0
IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZjVmYTgyMWQ4MTllMmU5YjMxOWJlMWU5ODc1MDVjMDJiYTgzNmYwLi45YTJmYWMz
ZjBjZmVkMGU5M2FkODViMDg5ZDY1YWM2NTk5ZGFkOWQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMTEtMTAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogZnVuY3Rpb24gcmVtb3RlIG9iamV0Y3Qgc2hvdWxkIHByb3Zp
ZGUgYWNjZXNzIHRvIGZ1bmN0aW9uIHBvc2l0aW9uIGluIHRoZSBzY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODA4CisKKyAgICAgICAgQWRk
ZWQgdGVzdCBmb3IgRGVidWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21tYW5kLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2Z1bmN0aW9uLWxvY2F0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTEtMTEtMTEgIFRvbnkgR2VudGlsY29yZSAgPHRv
bnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgY2hyb21pdW0gYmFzZWxpbmVzIGFm
dGVyIHI5OTk0MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9m
dW5jdGlvbi1sb2NhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNWVjMDdj
MTgyY2FmNzlkNzkxMGE2MzQ1YzJkNTdmM2JkMjgyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQgRGVidWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlv
biBjb21tYW5kIHJldHVybnMgbG9jYXRpb24uIEJ1ZyA3MTgwOAorCitEZWJ1Z2dlciB3YXMgZW5h
YmxlZC4KKworUnVubmluZzogdGVzdEdldEZpcnN0TGluZUZ1bmN0aW9uTG9jYXRpb24KK2ZpcnN0
TGluZUZ1bmN0aW9uIHR5cGUgPSBmdW5jdGlvbgorZGlkR2V0TG9jYXRpb246IAorbGluZU51bWJl
cjogNworY29sdW1uTnVtYmVyOiB1bmRlZmluZWQKK3NjcmlwdElkIGlzIHZhbGlkOiB0cnVlCisK
K1J1bm5pbmc6IHRlc3RHZXROb25GaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uCitub25GaXJzdExp
bmVGdW5jdGlvbnR5cGUgPSBmdW5jdGlvbgorZGlkR2V0TG9jYXRpb246IAorbGluZU51bWJlcjog
MTIKK2NvbHVtbk51bWJlcjogdW5kZWZpbmVkCitzY3JpcHRJZCBpcyB2YWxpZDogdHJ1ZQorRGVi
dWdnZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9mdW5jdGlvbi1sb2NhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNDE5YTU5NGQ4OWM1
NTNhZGIyNDEzNGM3MmEzYmIzZDFkMWY3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24uaHRtbApAQCAtMCwwICsxLDY4
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4g
IGZ1bmN0aW9uIGZpcnN0TGluZUZ1bmN0aW9uKCkKKworeworfQorCisgICBmdW5jdGlvbiBub3RG
aXJzdExpbmVGdW5jdGlvbigpCisKK3sKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5z
cGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RH
ZXRGaXJzdExpbmVGdW5jdGlvbkxvY2F0aW9uKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZpcnN0TGluZUZ1bmN0aW9uIiwgZGlkRXZh
bHVhdGUpOworCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZShyZW1vdGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImZpcnN0
TGluZUZ1bmN0aW9uIHR5cGUgPSAiICsgcmVtb3RlLnR5cGUpOworICAgICAgICAgICAgICAgIERl
YnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25Mb2NhdGlvbihyZW1vdGUub2JqZWN0SWQsIGRpZEdldExv
Y2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEdldExvY2F0
aW9uKGVycm9yLCByZXNwb25zZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlkR2V0TG9jYXRpb246ICIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lTnVtYmVyOiAiICsgcmVzcG9uc2UubGluZU51
bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbHVtbk51
bWJlcjogIiArIHJlc3BvbnNlLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoInNjcmlwdElkIGlzIHZhbGlkOiAiICsgISFyZXNwb25zZS5zY3Jp
cHRJZCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Tm9uRmlyc3RMaW5lRnVuY3Rpb25Mb2NhdGlvbihu
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KCJub3RGaXJzdExpbmVGdW5jdGlvbiIsIGRpZEV2YWx1YXRlKTsKKworICAgICAgICAgICAgZnVu
Y3Rpb24gZGlkRXZhbHVhdGUocmVtb3RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJub25GaXJzdExpbmVGdW5jdGlvbnR5cGUgPSAiICsg
cmVtb3RlLnR5cGUpOworICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25M
b2NhdGlvbihyZW1vdGUub2JqZWN0SWQsIGRpZEdldExvY2F0aW9uKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEdldExvY2F0aW9uKGVycm9yLCByZXNwb25zZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlk
R2V0TG9jYXRpb246ICIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJsaW5lTnVtYmVyOiAiICsgcmVzcG9uc2UubGluZU51bWJlcik7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbHVtbk51bWJlcjogIiArIHJlc3BvbnNlLmNvbHVt
bk51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInNjcmlw
dElkIGlzIHZhbGlkOiAiICsgISFyZXNwb25zZS5zY3JpcHRJZCk7CisgICAgICAgICAgICAgICAg
bmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9OworCis8L3Njcmlw
dD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyB0aGF0
IERlYnVnZ2VyLmdldEZ1bmN0aW9uTG9jYXRpb24gY29tbWFuZCByZXR1cm5zIGxvY2F0aW9uLgor
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODA4Ij5C
dWcgNzE4MDg8L2E+Cis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9mdW5jdGlvbi1sb2Nh
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0
b3IvZGVidWdnZXIvZnVuY3Rpb24tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVh
MWQ3Mzc5MzhlNTJkYzljYmM2ZmRkNDc2MGU4ODY1Y2VjOTRlZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZnVuY3Rp
b24tbG9jYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQgRGVi
dWdnZXIuZ2V0RnVuY3Rpb25Mb2NhdGlvbiBjb21tYW5kIHJldHVybnMgbG9jYXRpb24uIEJ1ZyA3
MTgwOAorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KKworUnVubmluZzogdGVzdEdldEZpcnN0TGlu
ZUZ1bmN0aW9uTG9jYXRpb24KK2ZpcnN0TGluZUZ1bmN0aW9uIHR5cGUgPSBmdW5jdGlvbgorZGlk
R2V0TG9jYXRpb246IAorbGluZU51bWJlcjogNQorY29sdW1uTnVtYmVyOiAzNgorc2NyaXB0SWQg
aXMgdmFsaWQ6IHRydWUKKworUnVubmluZzogdGVzdEdldE5vbkZpcnN0TGluZUZ1bmN0aW9uTG9j
YXRpb24KK25vbkZpcnN0TGluZUZ1bmN0aW9udHlwZSA9IGZ1bmN0aW9uCitkaWRHZXRMb2NhdGlv
bjogCitsaW5lTnVtYmVyOiAxMAorY29sdW1uTnVtYmVyOiAzMgorc2NyaXB0SWQgaXMgdmFsaWQ6
IHRydWUKK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwo=
</data>
<flag name="review"
          id="113398"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="113563"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>