<?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>83526</bug_id>
          
          <creation_ts>2012-04-09 16:48:58 -0700</creation_ts>
          <short_desc>[V8] IndexedDB: Cursor value modifications should be preserved until cursor iterates</short_desc>
          <delta_ts>2012-06-13 13:30:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>598755</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-09 16:48:58 -0700</bug_when>
    <thetext>The IndexedDB spec http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html sayeth, re: IDBCursorWithValue

&quot;Returns the cursor&apos;s current value. Note that if this property returns an object, it returns the same object instance every time it is inspected, until the cursor&apos;s value is changed. This means that if the object is modified, those modifications will be seen by anyone inspecting the value of the cursor. However modifying such an object does not modify the contents of the database.&quot;

The WebKit implementation does not currently support the &quot;same object instance every time&quot; semantics, meaning the following test would fail:

// assume cursor.value = {a: 1, b: 2}
cursor.value.a = 3;
delete cursor.value.b;
cursor.value.foo = &quot;bar&quot;;

assert(cursor.value.a === 3);
assert(cursor.value.b === undefined);
assert(cursor.value.foo === &quot;bar&quot;);

It may be possible to do this via [CachedAttribute] or, since IDBAny already has a custom V8 binding, with custom caching code. Or possible via an IDL attribute on IDBCursorWithValue that ensure the same IDBAny is returned each time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598763</commentid>
    <comment_count>1</comment_count>
      <attachid>136345</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-09 16:51:37 -0700</bug_when>
    <thetext>Created attachment 136345
Layout test for spec behavior</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642718</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-06 13:02:13 -0700</bug_when>
    <thetext>This is pesky. I thought it might be as simple as changing IDBCursorWithValue.idl

-        readonly attribute IDBAny value;
+        readonly attribute [CachedAttribute] SerializedScriptValue value;

(plus appropriate .h/.cpp updates) but this is insufficient since the same IDBCursor object is returned across continue() calls and so the cached value gets re-used incorrectly.

FWIW, if the above is done the autogenerated code (for V8) looks like:


static v8::Handle&lt;v8::Value&gt; valueAttrGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
{
    INC_STATS(&quot;DOM.IDBCursorWithValue.value._get&quot;);
    v8::Handle&lt;v8::String&gt; propertyName = v8::String::NewSymbol(&quot;value&quot;);
    v8::Handle&lt;v8::Value&gt; value = info.Holder()-&gt;GetHiddenValue(propertyName);
    if (!value.IsEmpty())
        return value;
    IDBCursorWithValue* imp = V8IDBCursorWithValue::toNative(info.Holder());
    SerializedScriptValue* serialized = imp-&gt;value();
    value = serialized ? serialized-&gt;deserialize() : v8::Handle&lt;v8::Value&gt;(v8::Null(info.GetIsolate()));
    info.Holder()-&gt;SetHiddenValue(propertyName, value);
    return value;
}

There&apos;s no check that the SSV hasn&apos;t changed, nor a way to invalidate this cache outside the binding layer. Bleah.

The V8IDBAnyCustom.cpp implementation of toV8 unfortunately doesn&apos;t get passed the AccessorInfo object so there&apos;s no place for it to stash a value. We may need to do custom binding for IDBCursorWithValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643938</commentid>
    <comment_count>3</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-06-07 14:46:21 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; &quot;Returns the cursor&apos;s current value. Note that if this property returns an object, it returns the same object instance every time it is inspected, until the cursor&apos;s value is changed. This means that if the object is modified, those modifications will be seen by anyone inspecting the value of the cursor. However modifying such an object does not modify the contents of the database.&quot;
&gt; 
&gt; The WebKit implementation does not currently support the &quot;same object instance every time&quot; semantics

I thought Hans added this for prefetching and that cursor-inconsistency.html tested it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643987</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-07 15:30:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #0)
&gt; &gt; &quot;Returns the cursor&apos;s current value. Note that if this property returns an object, it returns the same object instance every time it is inspected, until the cursor&apos;s value is changed. This means that if the object is modified, those modifications will be seen by anyone inspecting the value of the cursor. However modifying such an object does not modify the contents of the database.&quot;
&gt; &gt; 
&gt; &gt; The WebKit implementation does not currently support the &quot;same object instance every time&quot; semantics
&gt; 
&gt; I thought Hans added this for prefetching and that cursor-inconsistency.html tested it?

Similar but subtly different: the same IDBCursor is indeed returned each time (i.e. request.result), but the cursor&apos;s value (e.g. request.result.value) is deserialized fresh from the SSV on each property access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646161</commentid>
    <comment_count>5</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 12:14:20 -0700</bug_when>
    <thetext>I think I have a fix, I&apos;ll use the test here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646230</commentid>
    <comment_count>6</comment_count>
      <attachid>146900</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 13:58:14 -0700</bug_when>
    <thetext>Created attachment 146900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646257</commentid>
    <comment_count>7</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 14:21:04 -0700</bug_when>
    <thetext>jsbell@ / dgrogan@ - quick review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646294</commentid>
    <comment_count>8</comment_count>
      <attachid>146900</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-11 14:55:16 -0700</bug_when>
    <thetext>Comment on attachment 146900
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Cache the &apos;value&apos; attribute of IDBCursorWithValue with policy

Should mention in the ChangeLog that this is explicit in the spec.

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.h:86
&gt; +    bool valueIsDirty() { return m_valueIsDirty; }

I think this method (or the field) merits a comment, since it&apos;s not obvious why this would exist and subtle in the spec.

&gt; Source/WebCore/Modules/indexeddb/IDBCursorWithValue.idl:31
&gt; +        readonly attribute [V8CustomGetter] IDBAny value;

Would it simplify the code to change IDBAny here to SerializedScriptValue?

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:28
&gt; +    LOG_ERROR(&quot;.value =&gt; is dirty? %d&quot;, imp-&gt;valueIsDirty());

Remove LOG_ERROR calls here and below.

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:37
&gt; +    // either value is dirty, or the hidden value is empty

Can remove this comment, it&apos;s clear from the code.

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:39
&gt; +    v8::Handle&lt;v8::Value&gt; wrapper = result.get() ? getDOMObjectMap(info.GetIsolate()).get(result.get()) : v8::Handle&lt;v8::Object&gt;();

Definitely get a V8/bindings expert to review this bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646339</commentid>
    <comment_count>9</comment_count>
      <attachid>146933</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 15:40:10 -0700</bug_when>
    <thetext>Created attachment 146933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646355</commentid>
    <comment_count>10</comment_count>
      <attachid>146933</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-11 15:49:59 -0700</bug_when>
    <thetext>Comment on attachment 146933
Patch

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

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:1
&gt; +

Copyright header? (Some but not all of the files in bindings/v8 appear to have them, I note.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646358</commentid>
    <comment_count>11</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 15:51:36 -0700</bug_when>
    <thetext>* I don&apos;t think it simplifies much to use SerializedScriptValue - just changes the transformation slightly, possibly making IDBCursor.cpp more complex in the process.

haraken@ - I wrote this custom binding as a sort of merge of the standard binding code and the CachedAttribute code. I think I likely have one extra layer of caching in here but I don&apos;t understand this completely.. can you take a look at IDBCustomBindings.cpp in this patch? Do I need all the goop calling getDOMObjectMap() and such?
  
(And the final patch will need to update the other build systems too, I will get to that before webkit-review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646359</commentid>
    <comment_count>12</comment_count>
      <attachid>146941</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 15:52:03 -0700</bug_when>
    <thetext>Created attachment 146941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646360</commentid>
    <comment_count>13</comment_count>
      <attachid>146942</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 15:52:21 -0700</bug_when>
    <thetext>Created attachment 146942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646440</commentid>
    <comment_count>14</comment_count>
      <attachid>146942</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 17:03:56 -0700</bug_when>
    <thetext>Comment on attachment 146942
Patch

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

At a high level question: Does the cache really improve performance?

We need to care that GetHiddenValue() and SetHiddenValue() are not so light. In case of SSV, since the serialization overhead is large, the cache management cost will pay. On the other hand, in case of &apos;value&apos;, I am not sure if the cache management cost pays or not. Did you confirm any performance gain in some benchmark (artificial one is OK)?

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:14
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY

Please use the correct copyright of Google.

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:41
&gt; +#include &quot;ContextEnabledFeatures.h&quot;
&gt; +#include &quot;RuntimeEnabledFeatures.h&quot;
&gt; +#include &quot;V8Binding.h&quot;
&gt; +#include &quot;V8BindingState.h&quot;
&gt; +#include &quot;V8DOMWrapper.h&quot;
&gt; +#include &quot;V8HiddenPropertyName.h&quot;
&gt; +#include &quot;V8IDBAny.h&quot;
&gt; +#include &quot;V8IDBCursor.h&quot;
&gt; +#include &quot;V8IsolatedContext.h&quot;
&gt; +#include &quot;V8Proxy.h&quot;
&gt; +#include &lt;wtf/UnusedParam.h&gt;

It seems that unused headers are included. e.g. &quot;ContextEnabledFeatures.h&quot;, &quot;RuntimeEnabledFeatures.h&quot;, etc. Please check each of them if it is needed or not.

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:46
&gt; +                                                                const v8::AccessorInfo&amp; info)

Nit: you do not need to wrap the code.

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:65
&gt; +    RefPtr&lt;IDBAny&gt; result = imp-&gt;value();
&gt; +    v8::Handle&lt;v8::Value&gt; wrapper = result.get() ? getDOMObjectMap(info.GetIsolate()).get(result.get()) : v8::Handle&lt;v8::Object&gt;();
&gt; +    if (wrapper.IsEmpty()) {
&gt; +        wrapper = toV8(result.get(), info.GetIsolate());
&gt; +        if (!wrapper.IsEmpty())
&gt; +            V8DOMWrapper::setNamedHiddenReference(info.Holder(), &quot;value&quot;, wrapper);
&gt; +    }
&gt; +    info.Holder()-&gt;SetHiddenValue(propertyName, wrapper);

getDOMObjectMap() and setNamedHiddenReference() are used for keeping the lifetime of &apos;wrapper&apos; over GC, which is sometimes required by semantics. But in this case, you just want to cache the value for performance (i.e. cache miss won&apos;t violate semantics), and you do not need to care the lifetime management. So I think that this code can be:

RefPtr&lt;IDBAny&gt; result = imp-&gt;value();
v8::Handle&lt;v8::Value&gt; wrapper = toV8(result.get(), info.GetIsolate());
info.Holder()-&gt;SetHiddenValue(propertyName, wrapper);
return wrapper;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646457</commentid>
    <comment_count>15</comment_count>
      <attachid>146974</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 17:23:00 -0700</bug_when>
    <thetext>Created attachment 146974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646458</commentid>
    <comment_count>16</comment_count>
      <attachid>146974</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 17:24:05 -0700</bug_when>
    <thetext>Comment on attachment 146974
Patch

kentaro@ - thanks - this isn&apos;t for performance, this is for spec compliance - like you I suspect this will have a negligible effect on performance. We actually need the JS object to survive mutations during the lifetime of the attribute value. specifically imagine code like this:

cursor.value.foo = &quot;bar&quot;;
...
if (cursor.value.foo == &quot;bar&quot;) { ....}

cursor.advance() // changes the value of cursor.value here

if (cursor.value.foo == &quot;bar&quot;) { ... }

New patch is up. r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646460</commentid>
    <comment_count>17</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 17:24:42 -0700</bug_when>
    <thetext>[I just realized I still need to do XCode project files.. ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646485</commentid>
    <comment_count>18</comment_count>
      <attachid>146974</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 17:48:41 -0700</bug_when>
    <thetext>Comment on attachment 146974
Patch

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

&gt; this isn&apos;t for performance, this is for spec compliance

I am sorry! I should have read your ChangeLog carefully...

For now let me mark r- due to missing necessary tests to confirm the change.

&gt; Source/WebCore/ChangeLog:9
&gt; +        determined by IDBCursor.cpp, to follow spec behavior of keeping a

Link to the spec please.

&gt; Source/WebCore/ChangeLog:12
&gt; +        Test: storage/indexeddb/cursor-value.html

Would you add the following test cases?

(Case 1)
cursor.value.foo = &quot;bar&quot;;
shouldBe(&apos;cursor.value.foo&apos;, ...);
cursor.advance();
shouldBe(&apos;cursor.value.foo&apos;, ...);

(Case 2)
cursor.value.foo = &quot;bar&quot;;
shouldBe(&apos;cursor.value.foo&apos;, ...);
gc();
shouldBe(&apos;cursor.value.foo&apos;, ...);

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:2
&gt; + * Copyright (C) 2011, Google Inc. All rights reserved.

2011 =&gt; 2012

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:13
&gt; + * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos; AND

Please do not change the line manually. Please just copy the whole copyright from bindings/v8/custom/V8TrackEventCustom.cpp, and just change &quot;2011&quot; to &quot;2012&quot;.

&gt; Source/WebCore/bindings/v8/IDBCustomBindings.cpp:50
&gt; +    IDBCursorWithValue* imp = V8IDBCursorWithValue::toNative(info.Holder());
&gt; +    v8::Handle&lt;v8::String&gt; propertyName = v8::String::NewSymbol(&quot;value&quot;);
&gt; +    if (!imp-&gt;valueIsDirty()) {
&gt; +        v8::Handle&lt;v8::Value&gt; value = info.Holder()-&gt;GetHiddenValue(propertyName);
&gt; +        if (!value.IsEmpty())
&gt; +            return value;
&gt; +    }
&gt; +
&gt; +    RefPtr&lt;IDBAny&gt; result = imp-&gt;value();
&gt; +    v8::Handle&lt;v8::Value&gt; wrapper = toV8(result.get(), info.GetIsolate());
&gt; +    info.Holder()-&gt;SetHiddenValue(propertyName, wrapper);
&gt; +    return wrapper;

Confirmation: The semantics you need is:

- If the value is not yet invalidated, return the same wrapper object keeping JavaScript properties.
- If the value is already invalidated, create a new wrapper object.

Is my understanding correct? If so, the code looks correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647075</commentid>
    <comment_count>19</comment_count>
      <attachid>147113</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-12 10:54:31 -0700</bug_when>
    <thetext>Created attachment 147113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647076</commentid>
    <comment_count>20</comment_count>
      <attachid>147113</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-12 10:56:35 -0700</bug_when>
    <thetext>Comment on attachment 147113
Patch

kentaro@ - all issues addressed - cursor advancing/continuing is async, so the tests can be awkward, but I handled both cases, and rolled gc&apos;ing into each case

(to be fair I copied that copyright notice in whole from another file, sounds like I should fix that separately)

in any case, r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647479</commentid>
    <comment_count>21</comment_count>
      <attachid>147113</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-12 16:49:48 -0700</bug_when>
    <thetext>Comment on attachment 147113
Patch

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

Looks OK except for nits.

&gt; Source/WebCore/WebCore.gypi:1884
&gt; +            &apos;bindings/v8/IDBCustomBindings.cpp&apos;,

Is this correct? IDBCustomBindings.cpp is added twice.

&gt; LayoutTests/storage/indexeddb/resources/cursor-value.js:56
&gt; +            index += 2;
&gt; +        } else if (index == 3) {

Nit: why are you using index+=2 instead of index++?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648176</commentid>
    <comment_count>22</comment_count>
      <attachid>147350</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 10:01:35 -0700</bug_when>
    <thetext>Created attachment 147350
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648210</commentid>
    <comment_count>23</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 10:24:16 -0700</bug_when>
    <thetext>jsbell / dgrogan - cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648226</commentid>
    <comment_count>24</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 10:31:50 -0700</bug_when>
    <thetext>haraken: the += 2 was just to keep the index in sync with the actual index of the items we&apos;re iterating, since we&apos;re calling advance(2) - it&apos;s in sync mainly for test readability/maintenance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648407</commentid>
    <comment_count>25</comment_count>
      <attachid>147350</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 13:30:08 -0700</bug_when>
    <thetext>Comment on attachment 147350
Patch for landing

Clearing flags on attachment: 147350

Committed r120241: &lt;http://trac.webkit.org/changeset/120241&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648408</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 13:30:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136345</attachid>
            <date>2012-04-09 16:51:37 -0700</date>
            <delta_ts>2012-06-11 13:58:12 -0700</delta_ts>
            <desc>Layout test for spec behavior</desc>
            <filename>bug-83526-20120409165136.patch</filename>
            <type>text/plain</type>
            <size>3787</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTIyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMWJjMTQ3NzUzMzM3Njc3OGFm
NzFjMDEwYTMzY2Q3MWVlMWM5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItdmFsdWUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci12YWx1ZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MzU2MDBlOTU1ZGFhYzViYThkYzgxOThmN2YyYTZlNGE3ZTljMGY0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNv
ci12YWx1ZS5qcwpAQCAtMCwwICsxLDgzIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHZhbHVlIHByb3BlcnR5LiIpOworCityZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworb3BlbkRhdGFiYXNlKCk7CisKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZSgp
Cit7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItdmFs
dWUnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2co
ImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3Qu
cmVzdWx0Iik7CisgICAgICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAg
ICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAg
ICAgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOworICAgICAgICB9
OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlc3RDdXJzb3IoKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygidGVzdEN1cnNvcigpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
KyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScp
Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHthOiAxLCBiOiAyfSwgJ2tleScpIik7Cisg
ICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3Qu
cmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIidrZXknIik7CisKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiQ2hlY2sgZXhwZWN0ZWQgdmFsdWVzOiIp
OworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEiLCAiMSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLmIiLCAiMiIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLmZvbyIsICJ1bmRlZmluZWQiKTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRl
YnVnKCJNb2RpZnkgdmFsdWVzOiIpOworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IudmFsdWUu
YSA9IDMiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGVsZXRlIGN1cnNvci52YWx1ZS5iIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci52YWx1ZS5mb28gPSAnYmFyJyIpOworCisgICAgICAg
IGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIkVuc3VyZSBtb2RpZmljYXRpb25zIGFyZSByZXRh
aW5lZDoiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hIiwgIjMiKTsKKyAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgInVuZGVmaW5lZCIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICInYmFyJyIpOworICAgIH07CisKKyAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNpc3RlZDsKK30KKwor
ZnVuY3Rpb24gZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNpc3RlZCgpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJlbnN1cmVNb2RpZmljYXRpb25zTm90UGVyc2lzdGVkKCk6Iik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJU
cmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBz
dG9yZS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLmtleSIsICIna2V5JyIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ZGVidWcoIkNoZWNrIGV4cGVjdGVkIHZhbHVlczoiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS5hIiwgIjEiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgIjIi
KTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5mb28iLCAidW5kZWZpbmVkIik7Cisg
ICAgfTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworIH0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146900</attachid>
            <date>2012-06-11 13:58:14 -0700</date>
            <delta_ts>2012-06-11 15:40:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83526-20120611135814.patch</filename>
            <type>text/plain</type>
            <size>13469</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmMTY5MjllNGZiNWZj
ZThkOWU4YzA0MjJkNGYxMmI4Y2M4M2ZmYS4uNGNkODA0NjE0M2MyNGMxMDY3OGFjYjcyOGNhZmM0
YzNiNzg3ZTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEluZGV4ZWRE
QjogQ3Vyc29yIHZhbHVlIG1vZGlmaWNhdGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZCB1bnRpbCBj
dXJzb3IgaXRlcmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2FjaGUgdGhlICd2YWx1ZScgYXR0cmlidXRlIG9mIElEQkN1cnNvcldpdGhWYWx1ZSB3
aXRoIHBvbGljeQorICAgICAgICBkZXRlcm1pbmVkIGJ5IElEQkN1cnNvci5jcHAuICBUaGlzIGxl
dHMgdGhlIEpTIG9iamVjdCBiZSBjaGFuZ2VkCisgICAgICAgIGR1cmluZyB0aGUgbGlmZXRpbWUg
b2YgZWFjaCB2YWx1ZSBjb21pbmcgb3V0IG9mIHRoZSBjdXJzb3IuCisKKyAgICAgICAgVGVzdDog
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OklE
QkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgIChJREJDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yOjp2YWx1ZUlzRGlydHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SURCQ3Vyc29yV2l0aFZhbHVlOjp2YWx1
ZUFjY2Vzc29yR2V0dGVyKToKKwogMjAxMi0wNi0xMSAgTWljaGFlbCBCcsO8bmluZyAgPG1pY2hh
ZWwuYnJ1bmluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIENvbXB1dGUgYW5kIHNl
dCBjYWNoZSBjYXBhY2l0aWVzIHVzaW5nIHRoZSBjdXJyZW50IENhY2hlTW9kZWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGI2MjRhMzU5
Njg1NzJlMDI4NzMwZGE1NjZlYjA0YTVmODI0YWZkOTYuLjNhZWMyZjg0YTA3Yjg2NjgwMmYwNzZk
OGFjOWI4MTZkMDY0NThkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcApAQCAtNzcsNiArNzcsNyBAQCBJREJDdXJzb3I6OklEQkN1cnNvcihQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlJlcXVlc3Qq
CiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwgbV90cmFuc2FjdGlvbk5v
dGlmaWVyKHRyYW5zYWN0aW9uLCB0aGlzKQogICAgICwgbV9nb3RWYWx1ZShmYWxzZSkKKyAgICAs
IG1fdmFsdWVJc0RpcnR5KHRydWUpCiB7CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgQVNT
RVJUKG1fcmVxdWVzdCk7CkBAIC0xMDksOSArMTEwLDEwIEBAIFBhc3NSZWZQdHI8SURCS2V5PiBJ
REJDdXJzb3I6OnByaW1hcnlLZXkoKSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnRQcmltYXJ5
S2V5OwogfQogCi1QYXNzUmVmUHRyPElEQkFueT4gSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0CitQ
YXNzUmVmUHRyPElEQkFueT4gSURCQ3Vyc29yOjp2YWx1ZSgpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJDdXJzb3I6OnZhbHVlIik7CisgICAgbV92YWx1ZUlzRGlydHkgPSBmYWxzZTsKICAgICByZXR1
cm4gbV9jdXJyZW50VmFsdWU7CiB9CiAKQEAgLTIzNiw2ICsyMzgsNyBAQCB2b2lkIElEQkN1cnNv
cjo6c2V0VmFsdWVSZWFkeSgpCiAgICAgbV9jdXJyZW50UHJpbWFyeUtleSA9IG1fYmFja2VuZC0+
cHJpbWFyeUtleSgpOwogICAgIG1fY3VycmVudFZhbHVlID0gSURCQW55OjpjcmVhdGUobV9iYWNr
ZW5kLT52YWx1ZSgpKTsKICAgICBtX2dvdFZhbHVlID0gdHJ1ZTsKKyAgICBtX3ZhbHVlSXNEaXJ0
eSA9IHRydWU7CiB9CiAKIHVuc2lnbmVkIHNob3J0IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRleCBjZWNlMDBh
NGYyYzdhNDVmODU5MTkzMDE5ZDczYmZlY2FhYmMwOTE0Li42OWJlNjYxN2M4M2Q5N2MwY2RkMmM4
YTFiNjYxMDc0ZDg4MTY2ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb24oKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3Q7
CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdDsKLSAgICBQYXNzUmVm
UHRyPElEQkFueT4gdmFsdWUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPElEQkFueT4gdmFsdWUo
KTsKICAgICBJREJBbnkqIHNvdXJjZSgpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiB1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOwogICAgIHZvaWQgY2xvc2Uo
KTsKICAgICB2b2lkIHNldFZhbHVlUmVhZHkoKTsKKyAgICBib29sIHZhbHVlSXNEaXJ0eSgpIHsg
cmV0dXJuIG1fdmFsdWVJc0RpcnR5OyB9CiAKIHByb3RlY3RlZDoKICAgICBJREJDdXJzb3IoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVxdWVzdCosIElEQkFueSog
c291cmNlLCBJREJUcmFuc2FjdGlvbiopOwpAQCAtOTksNiArMTAwLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRLZXk7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJy
ZW50UHJpbWFyeUtleTsKICAgICBSZWZQdHI8SURCQW55PiBtX2N1cnJlbnRWYWx1ZTsKKyAgICBi
b29sIG1fdmFsdWVJc0RpcnR5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1
ZS5pZGwKaW5kZXggNmZmYzViNTU0ODFhZjA3YzVhNzllOGU1YmRhZDViMmVlZTA1ZWU2Ni4uNTEy
ZWE0MDVlNDRhOTFjNTc2MTM2NTQ0ZDdiNTNlYWYxMmY4MDA3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaWRsCkBA
IC0yOCw2ICsyOCw2IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICBpbnRlcmZhY2UgWwogICAgICAg
ICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiAgICAgXSBJREJDdXJzb3JXaXRoVmFsdWUg
OiBJREJDdXJzb3IgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IHZhbHVlOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4Q3VzdG9tR2V0dGVyXSBJREJBbnkgdmFsdWU7
CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1MjM1MTIyZjkxY2M5YjFiY2U2OGUzY2Vh
YjRiMDNkMGVlMTg3NTEwLi4xNmNkMjAyNjY5NjQyYTg2MThhNTI5YWZlMGFkMTRiNWM4MDdhNDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMTI1LDYgKzIxMjUsNyBAQAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lEQkJpbmRp
bmdVdGlsaXRpZXMuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGlu
Z3MuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFw
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lzb2xhdGVkV29ybGQuY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9Jc29sYXRlZFdvcmxkLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MzcwZWM2
ODc4Y2VjN2NkZGJhMDdmNzg5YzU4MzU4ZjBmYzA4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJDdXN0b21CaW5kaW5ncy5jcHAKQEAgLTAsMCArMSw1
MSBAQAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhJREJDdXJzb3JXaXRoVmFs
dWUuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiQ29udGV4
dEVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
KyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgorI2lu
Y2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgi
CisjaW5jbHVkZSAiVjhJREJBbnkuaCIKKyNpbmNsdWRlICJWOElEQkN1cnNvci5oIgorI2luY2x1
ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUg
PHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOElEQkN1cnNvcldpdGhWYWx1ZTo6dmFsdWVBY2Nlc3NvckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLklEQkN1cnNvcldpdGhWYWx1ZS52YWx1ZS5fZ2V0
Iik7CisKKyAgICBJREJDdXJzb3JXaXRoVmFsdWUqIGltcCA9IFY4SURCQ3Vyc29yV2l0aFZhbHVl
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHBy
b3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidmFsdWUiKTsKKyAgICBMT0dfRVJS
T1IoIi52YWx1ZSA9PiBpcyBkaXJ0eT8gJWQiLCBpbXAtPnZhbHVlSXNEaXJ0eSgpKTsKKyAgICBp
ZiAoIWltcC0+dmFsdWVJc0RpcnR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgaWYgKCF2YWx1ZS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiLnZh
bHVlID0+IGhpdCEiKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBMT0dfRVJST1IoIi52YWx1ZSA9PiBzd2luZyBhbmQgYSBtaXNzIik7CisgICAgLy8g
ZWl0aGVyIHZhbHVlIGlzIGRpcnR5LCBvciB0aGUgaGlkZGVuIHZhbHVlIGlzIGVtcHR5CisgICAg
UmVmUHRyPElEQkFueT4gcmVzdWx0ID0gaW1wLT52YWx1ZSgpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gZ2V0RE9NT2JqZWN0TWFwKGluZm8uR2V0
SXNvbGF0ZSgpKS5nZXQocmVzdWx0LmdldCgpKSA6IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsK
KyAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgd3JhcHBlciA9IHRvVjgocmVz
dWx0LmdldCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpCisgICAgICAgICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVuUmVmZXJlbmNl
KGluZm8uSG9sZGVyKCksICJ2YWx1ZSIsIHdyYXBwZXIpOworICAgIH0KKyAgICBpbmZvLkhvbGRl
cigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHdyYXBwZXIpOworICAgIHJldHVybiB3
cmFwcGVyOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkMjJmZTM5ZTVmODc1ZWRkZjdmZjJk
Y2Q4ZjhkZWZkMDViYTBmZjkuLmVmZTA4YTlmNGZkMmU3ODNlMmY3NmVmMzRkNDMzMWI0ZTc2NGNj
NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMSAgQWxlYyBGbGV0dCAgPGFsZWNm
bGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVkREI6IEN1cnNvciB2YWx1
ZSBtb2RpZmljYXRpb25zIHNob3VsZCBiZSBwcmVzZXJ2ZWQgdW50aWwgY3Vyc29yIGl0ZXJhdGVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzUyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanM6IEFkZGVkLgorICAgICAg
ICAob3BlbkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAg
ICAgICAgKG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChvcGVuRGF0
YWJhc2UpOgorICAgICAgICAodGVzdEN1cnNvci5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAg
ICh0ZXN0Q3Vyc29yKToKKyAgICAgICAgKGVuc3VyZU1vZGlmaWNhdGlvbnNOb3RQZXJzaXN0ZWQu
cmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNp
c3RlZCk6CisKIDIwMTItMDYtMTEgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBbUXRdIEdhcmRlbmluZywgc2tpcCBuZXcgZmFpbGluZyB0ZXN0cy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MjYyNTg1ZGExZmJlMWE2OTRiMmNmZmU0ZDgxNGM2
MjlhOWJiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1Rlc3QgSW5kZXhl
ZERCJ3MgY3Vyc29yIHZhbHVlIHByb3BlcnR5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIg
fHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVk
REI7CisKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXZhbHVlJykKK2RiID0gcmVx
dWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpCit0cmFu
c2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0CitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKwordGVzdEN1cnNvcigpOgordHJhbnNhY3Rpb24g
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykKK3N0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCh7YTogMSwgYjogMn0sICdrZXknKQor
cmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK1BB
U1MgY3Vyc29yLmtleSBpcyAna2V5JworCitDaGVjayBleHBlY3RlZCB2YWx1ZXM6CitQQVNTIGN1
cnNvci52YWx1ZS5hIGlzIDEKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMgMgorUEFTUyBjdXJzb3Iu
dmFsdWUuZm9vIGlzIHVuZGVmaW5lZAorCitNb2RpZnkgdmFsdWVzOgorY3Vyc29yLnZhbHVlLmEg
PSAzCitkZWxldGUgY3Vyc29yLnZhbHVlLmIKK2N1cnNvci52YWx1ZS5mb28gPSAnYmFyJworCitF
bnN1cmUgbW9kaWZpY2F0aW9ucyBhcmUgcmV0YWluZWQ6CitQQVNTIGN1cnNvci52YWx1ZS5hIGlz
IDMKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMgdW5kZWZpbmVkCitQQVNTIGN1cnNvci52YWx1ZS5m
b28gaXMgJ2JhcicKKworZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNpc3RlZCgpOgordHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHknKQorc3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3Io
KQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAna2V5JworCitD
aGVjayBleHBlY3RlZCB2YWx1ZXM6CitQQVNTIGN1cnNvci52YWx1ZS5hIGlzIDEKK1BBU1MgY3Vy
c29yLnZhbHVlLmIgaXMgMgorUEFTUyBjdXJzb3IudmFsdWUuZm9vIGlzIHVuZGVmaW5lZAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmYxYmMxNDc3NTMzMzc2Nzc4YWY3MWMwMTBhMzNjZDcxZWUxYzk1NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2N1cnNvci12YWx1ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItdmFsdWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
Y3Vyc29yLXZhbHVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2MjAxMmU5MTA0YWViYWRiM2VjM2RlZTI0ODU1
YmYzNDA4MThiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzCkBAIC0wLDAgKzEsODMgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJzb3IgdmFsdWUgcHJvcGVy
dHkuIik7CisKK3JlbW92ZVZlbmRvclByZWZpeGVzKCk7CitvcGVuRGF0YWJhc2UoKTsKKworZnVu
Y3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhl
ZERCLm9wZW4oJ2N1cnNvci12YWx1ZScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRl
c3RDdXJzb3I7CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gdGVzdEN1cnNvcigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0Q3Vyc29yKCk6Iik7CisgICAgZXZh
bEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRl
JykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHthOiAxLCBiOiAyfSwgJ2tleScp
Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJl
cXVlc3QucmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIidrZXknIik7
CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiQ2hlY2sgZXhwZWN0ZWQgdmFs
dWVzOiIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEiLCAiMSIpOworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmIiLCAiMiIpOworICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLmZvbyIsICJ1bmRlZmluZWQiKTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgIGRlYnVnKCJNb2RpZnkgdmFsdWVzOiIpOworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
dmFsdWUuYSA9IDMiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGVsZXRlIGN1cnNvci52YWx1ZS5i
Iik7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci52YWx1ZS5mb28gPSAnYmFyJyIpOworCisg
ICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIkVuc3VyZSBtb2RpZmljYXRpb25zIGFy
ZSByZXRhaW5lZDoiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hIiwgIjMiKTsK
KyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgInVuZGVmaW5lZCIpOworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICInYmFyJyIpOworICAgIH07CisKKyAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNpc3RlZDsK
K30KKworZnVuY3Rpb24gZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNpc3RlZCgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJlbnN1cmVNb2RpZmljYXRpb25zTm90UGVyc2lzdGVkKCk6
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
LCAncmVhZG9ubHknKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUub3Bl
bkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFu
ZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5rZXkiLCAiJ2tleSciKTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJD
aGVjayBleHBlY3RlZCB2YWx1ZXM6Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
YSIsICIxIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuYiIsICIyIik7CisgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgInVuZGVmaW5lZCIpOworICAgIH07Cisg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKyB9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146933</attachid>
            <date>2012-06-11 15:40:10 -0700</date>
            <delta_ts>2012-06-11 15:52:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83526-20120611154010.patch</filename>
            <type>text/plain</type>
            <size>13365</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmMTY5MjllNGZiNWZj
ZThkOWU4YzA0MjJkNGYxMmI4Y2M4M2ZmYS4uODg4YWNlNGEyZjkxZmNhYzEzNWJjYTdjYWM2MTgy
M2U5YTJjY2ZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEluZGV4ZWRE
QjogQ3Vyc29yIHZhbHVlIG1vZGlmaWNhdGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZCB1bnRpbCBj
dXJzb3IgaXRlcmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2FjaGUgdGhlICd2YWx1ZScgYXR0cmlidXRlIG9mIElEQkN1cnNvcldpdGhWYWx1ZSB3
aXRoIHBvbGljeQorICAgICAgICBkZXRlcm1pbmVkIGJ5IElEQkN1cnNvci5jcHAsIHRvIGZvbGxv
dyBzcGVjIGJlaGF2aW9yIG9mIGtlZXBpbmcgYQorICAgICAgICBjb25zaXN0ZW50IHNjcmlwdCBv
YmplY3QgdW50aWwgdGhlIGN1cnNvciBhZHZhbmNlcy4KKworICAgICAgICBUZXN0OiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3I6OnZhbHVlSXNEaXJ0eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yV2l0aFZhbHVlLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
YmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhJREJDdXJzb3JXaXRoVmFsdWU6OnZhbHVlQWNjZXNz
b3JHZXR0ZXIpOgorCiAyMDEyLTA2LTExICBNaWNoYWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVu
aW5nQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gQ29tcHV0ZSBhbmQgc2V0IGNhY2hl
IGNhcGFjaXRpZXMgdXNpbmcgdGhlIGN1cnJlbnQgQ2FjaGVNb2RlbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggYjYyNGEzNTk2ODU3MmUw
Mjg3MzBkYTU2NmViMDRhNWY4MjRhZmQ5Ni4uM2FlYzJmODRhMDdiODY2ODAyZjA3NmQ4YWM5Yjgx
NmQwNjQ1OGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCkBAIC03Nyw2ICs3Nyw3IEBAIElEQkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCUmVxdWVzdCoKICAgICAs
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX3RyYW5zYWN0aW9uTm90aWZpZXIo
dHJhbnNhY3Rpb24sIHRoaXMpCiAgICAgLCBtX2dvdFZhbHVlKGZhbHNlKQorICAgICwgbV92YWx1
ZUlzRGlydHkodHJ1ZSkKIHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKICAgICBBU1NFUlQobV9y
ZXF1ZXN0KTsKQEAgLTEwOSw5ICsxMTAsMTAgQEAgUGFzc1JlZlB0cjxJREJLZXk+IElEQkN1cnNv
cjo6cHJpbWFyeUtleSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCQW55PiBJREJDdXJzb3I6OnZhbHVlKCkgY29uc3QKK1Bhc3NSZWZQ
dHI8SURCQW55PiBJREJDdXJzb3I6OnZhbHVlKCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNv
cjo6dmFsdWUiKTsKKyAgICBtX3ZhbHVlSXNEaXJ0eSA9IGZhbHNlOwogICAgIHJldHVybiBtX2N1
cnJlbnRWYWx1ZTsKIH0KIApAQCAtMjM2LDYgKzIzOCw3IEBAIHZvaWQgSURCQ3Vyc29yOjpzZXRW
YWx1ZVJlYWR5KCkKICAgICBtX2N1cnJlbnRQcmltYXJ5S2V5ID0gbV9iYWNrZW5kLT5wcmltYXJ5
S2V5KCk7CiAgICAgbV9jdXJyZW50VmFsdWUgPSBJREJBbnk6OmNyZWF0ZShtX2JhY2tlbmQtPnZh
bHVlKCkpOwogICAgIG1fZ290VmFsdWUgPSB0cnVlOworICAgIG1fdmFsdWVJc0RpcnR5ID0gdHJ1
ZTsKIH0KIAogdW5zaWduZWQgc2hvcnQgSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25z
dCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IGNlY2UwMGE0ZjJjN2E0
NWY4NTkxOTMwMTlkNzNiZmVjYWFiYzA5MTQuLjNmOWQ4NGY5ODgxMTgxMmM2YmZjYjUzYzIzODgz
MWVlM2ZiYjVlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGRpcmVj
dGlvbigpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdDsKICAgICBQ
YXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SURC
QW55PiB2YWx1ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCQW55PiB2YWx1ZSgpOwogICAg
IElEQkFueSogc291cmNlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVw
ZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CkBAIC04NCw2ICs4NCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbG9zZSgpOwogICAgIHZvaWQgc2V0VmFsdWVSZWFkeSgpOwogCisgICAgLy8gVGhlIHNw
ZWMgcmVxdWlyZXMgdGhhdCB0aGUgc2NyaXB0IG9iamVjdCB0aGF0IHdyYXBzIHRoZSB2YWx1ZQor
ICAgIC8vIGJlIHVuY2hhbmdlZCB1bnRpbCB0aGUgdmFsdWUgY2hhbmdlcyBhcyBhIHJlc3VsdCBv
ZiB0aGUgY3Vyc29yCisgICAgLy8gYWR2YW5jaW5nLgorICAgIGJvb2wgdmFsdWVJc0RpcnR5KCkg
eyByZXR1cm4gbV92YWx1ZUlzRGlydHk7IH0KKwogcHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJREJSZXF1ZXN0KiwgSURCQW55
KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAKQEAgLTk5LDYgKzEwNCw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5OwogICAgIFJlZlB0cjxJREJLZXk+IG1f
Y3VycmVudFByaW1hcnlLZXk7CiAgICAgUmVmUHRyPElEQkFueT4gbV9jdXJyZW50VmFsdWU7Cisg
ICAgYm9vbCBtX3ZhbHVlSXNEaXJ0eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhW
YWx1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRo
VmFsdWUuaWRsCmluZGV4IDZmZmM1YjU1NDgxYWYwN2M1YTc5ZThlNWJkYWQ1YjJlZWUwNWVlNjYu
LjUxMmVhNDA1ZTQ0YTkxYzU3NjEzNjU0NGQ3YjUzZWFmMTJmODAwNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmlk
bApAQCAtMjgsNiArMjgsNiBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgaW50ZXJmYWNlIFsKICAg
ICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogICAgIF0gSURCQ3Vyc29yV2l0aFZh
bHVlIDogSURCQ3Vyc29yIHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSB2YWx1
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEN1c3RvbUdldHRlcl0gSURCQW55IHZh
bHVlOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTIzNTEyMmY5MWNjOWIxYmNlNjhl
M2NlYWI0YjAzZDBlZTE4NzUxMC4uMTZjZDIwMjY2OTY0MmE4NjE4YTUyOWFmZTBhZDE0YjVjODA3
YTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjEyNSw2ICsyMTI1LDcgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JREJC
aW5kaW5nVXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJp
bmRpbmdzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBl
ck1hcC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Jc29sYXRlZFdvcmxkLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvSXNvbGF0ZWRXb3JsZC5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjgx
NzhhNGRiOGFhZDk3NjVjYzgxODNjZTNmMTU2ZWVjMTE3YTk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwCkBAIC0wLDAg
KzEsNDcgQEAKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SURCQ3Vyc29yV2l0
aFZhbHVlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkNv
bnRleHRFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIK
KyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFt
ZS5oIgorI2luY2x1ZGUgIlY4SURCQW55LmgiCisjaW5jbHVkZSAiVjhJREJDdXJzb3IuaCIKKyNp
bmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhJREJDdXJzb3JXaXRoVmFsdWU6OnZhbHVlQWNjZXNzb3JHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5JREJDdXJzb3JXaXRoVmFsdWUudmFsdWUu
X2dldCIpOworCisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKiBpbXAgPSBWOElEQkN1cnNvcldpdGhW
YWx1ZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5n
PiBwcm9wZXJ0eU5hbWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhbHVlIik7CisgICAgaWYg
KCFpbXAtPnZhbHVlSXNEaXJ0eSgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldEhpZGRlblZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
IH0KKworICAgIFJlZlB0cjxJREJBbnk+IHJlc3VsdCA9IGltcC0+dmFsdWUoKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/IGdldERPTU9iamVjdE1h
cChpbmZvLkdldElzb2xhdGUoKSkuZ2V0KHJlc3VsdC5nZXQoKSkgOiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCk7CisgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIHdyYXBwZXIg
PSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRl
blJlZmVyZW5jZShpbmZvLkhvbGRlcigpLCAidmFsdWUiLCB3cmFwcGVyKTsKKyAgICB9CisgICAg
aW5mby5Ib2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lLCB3cmFwcGVyKTsKKyAg
ICByZXR1cm4gd3JhcHBlcjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZDIyZmUzOWU1Zjg3
NWVkZGY3ZmYyZGNkOGY4ZGVmZDA1YmEwZmY5Li5lZmUwOGE5ZjRmZDJlNzgzZTJmNzZlZjM0ZDQz
MzFiNGU3NjRjYzc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMTEgIEFsZWMgRmxl
dHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gSW5kZXhlZERCOiBD
dXJzb3IgdmFsdWUgbW9kaWZpY2F0aW9ucyBzaG91bGQgYmUgcHJlc2VydmVkIHVudGlsIGN1cnNv
ciBpdGVyYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODM1MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChvcGVuRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAob3BlbkRhdGFiYXNlKToKKyAgICAgICAgKHRlc3RDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdEN1cnNvcik6CisgICAgICAgIChlbnN1cmVNb2RpZmljYXRpb25zTm90
UGVyc2lzdGVkLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGVuc3VyZU1vZGlmaWNhdGlv
bnNOb3RQZXJzaXN0ZWQpOgorCiAyMDEyLTA2LTExICBTemlsYXJkIExlZGFuICA8c3psZWRhbkBp
bmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBHYXJkZW5pbmcsIHNraXAgbmV3IGZhaWxp
bmcgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItdmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXZhbHVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTI2MjU4NWRhMWZiZTFhNjk0YjJj
ZmZlNGQ4MTRjNjI5YTliYjEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUyIEBACitU
ZXN0IEluZGV4ZWREQidzIGN1cnNvciB2YWx1ZSBwcm9wZXJ0eS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0
SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2Vs
Zi5PSW5kZXhlZERCOworCityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci12YWx1ZScp
CitkYiA9IHJlcXVlc3QucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKQordHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdAorRGVsZXRlZCBhbGwgb2JqZWN0IHN0
b3Jlcy4KK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpCisKK3Rlc3RDdXJzb3IoKToKK3Ry
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpCitzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitzdG9yZS5wdXQoe2E6IDEsIGI6IDJ9
LCAna2V5JykKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IHJlcXVlc3Qu
cmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgJ2tleScKKworQ2hlY2sgZXhwZWN0ZWQgdmFsdWVz
OgorUEFTUyBjdXJzb3IudmFsdWUuYSBpcyAxCitQQVNTIGN1cnNvci52YWx1ZS5iIGlzIDIKK1BB
U1MgY3Vyc29yLnZhbHVlLmZvbyBpcyB1bmRlZmluZWQKKworTW9kaWZ5IHZhbHVlczoKK2N1cnNv
ci52YWx1ZS5hID0gMworZGVsZXRlIGN1cnNvci52YWx1ZS5iCitjdXJzb3IudmFsdWUuZm9vID0g
J2JhcicKKworRW5zdXJlIG1vZGlmaWNhdGlvbnMgYXJlIHJldGFpbmVkOgorUEFTUyBjdXJzb3Iu
dmFsdWUuYSBpcyAzCitQQVNTIGN1cnNvci52YWx1ZS5iIGlzIHVuZGVmaW5lZAorUEFTUyBjdXJz
b3IudmFsdWUuZm9vIGlzICdiYXInCisKK2Vuc3VyZU1vZGlmaWNhdGlvbnNOb3RQZXJzaXN0ZWQo
KToKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykKK3N0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK3JlcXVlc3QgPSBzdG9yZS5v
cGVuQ3Vyc29yKCkKK2N1cnNvciA9IHJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMg
J2tleScKKworQ2hlY2sgZXhwZWN0ZWQgdmFsdWVzOgorUEFTUyBjdXJzb3IudmFsdWUuYSBpcyAx
CitQQVNTIGN1cnNvci52YWx1ZS5iIGlzIDIKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBpcyB1bmRl
ZmluZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZmMWJjMTQ3NzUzMzM3Njc3OGFmNzFjMDEwYTMzY2Q3MWVlMWM5NTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUu
aHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9jdXJzb3ItdmFsdWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2N1cnNvci12YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjIwMTJlOTEwNGFlYmFkYjNl
YzNkZWUyNDg1NWJmMzQwODE4Yjc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci12YWx1ZS5qcwpAQCAtMCwwICsxLDgzIEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHZh
bHVlIHByb3BlcnR5LiIpOworCityZW1vdmVWZW5kb3JQcmVmaXhlcygpOworb3BlbkRhdGFiYXNl
KCk7CisKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCit7CisgICAgZXZhbEFuZExvZygicmVxdWVz
dCA9IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItdmFsdWUnKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAg
ICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSB0ZXN0Q3Vyc29yOworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRl
c3RDdXJzb3IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEN1cnNvcigpOiIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
J3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7YTogMSwgYjog
Mn0sICdrZXknKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29y
KCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICIna2V5JyIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIkNoZWNrIGV4
cGVjdGVkIHZhbHVlczoiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hIiwgIjEi
KTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgIjIiKTsKKyAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5mb28iLCAidW5kZWZpbmVkIik7CisKKyAgICAgICAgZGVidWco
IiIpOworICAgICAgICBkZWJ1ZygiTW9kaWZ5IHZhbHVlczoiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLnZhbHVlLmEgPSAzIik7CisgICAgICAgIGV2YWxBbmRMb2coImRlbGV0ZSBjdXJz
b3IudmFsdWUuYiIpOworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IudmFsdWUuZm9vID0gJ2Jh
ciciKTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJFbnN1cmUgbW9kaWZp
Y2F0aW9ucyBhcmUgcmV0YWluZWQ6Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
YSIsICIzIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuYiIsICJ1bmRlZmluZWQi
KTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5mb28iLCAiJ2JhciciKTsKKyAgICB9
OworCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGVuc3VyZU1vZGlmaWNhdGlvbnNOb3RQ
ZXJzaXN0ZWQ7Cit9CisKK2Z1bmN0aW9uIGVuc3VyZU1vZGlmaWNhdGlvbnNOb3RQZXJzaXN0ZWQo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBl
cnNpc3RlZCgpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIidrZXknIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAg
ICBkZWJ1ZygiQ2hlY2sgZXhwZWN0ZWQgdmFsdWVzOiIpOworICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLmEiLCAiMSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmIiLCAi
MiIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICJ1bmRlZmluZWQiKTsK
KyAgICB9OworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146941</attachid>
            <date>2012-06-11 15:52:03 -0700</date>
            <delta_ts>2012-06-11 15:52:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83526-20120611155203.patch</filename>
            <type>text/plain</type>
            <size>14738</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmMTY5MjllNGZiNWZj
ZThkOWU4YzA0MjJkNGYxMmI4Y2M4M2ZmYS4uODg4YWNlNGEyZjkxZmNhYzEzNWJjYTdjYWM2MTgy
M2U5YTJjY2ZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEluZGV4ZWRE
QjogQ3Vyc29yIHZhbHVlIG1vZGlmaWNhdGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZCB1bnRpbCBj
dXJzb3IgaXRlcmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2FjaGUgdGhlICd2YWx1ZScgYXR0cmlidXRlIG9mIElEQkN1cnNvcldpdGhWYWx1ZSB3
aXRoIHBvbGljeQorICAgICAgICBkZXRlcm1pbmVkIGJ5IElEQkN1cnNvci5jcHAsIHRvIGZvbGxv
dyBzcGVjIGJlaGF2aW9yIG9mIGtlZXBpbmcgYQorICAgICAgICBjb25zaXN0ZW50IHNjcmlwdCBv
YmplY3QgdW50aWwgdGhlIGN1cnNvciBhZHZhbmNlcy4KKworICAgICAgICBUZXN0OiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3I6OnZhbHVlSXNEaXJ0eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yV2l0aFZhbHVlLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
YmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhJREJDdXJzb3JXaXRoVmFsdWU6OnZhbHVlQWNjZXNz
b3JHZXR0ZXIpOgorCiAyMDEyLTA2LTExICBNaWNoYWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVu
aW5nQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gQ29tcHV0ZSBhbmQgc2V0IGNhY2hl
IGNhcGFjaXRpZXMgdXNpbmcgdGhlIGN1cnJlbnQgQ2FjaGVNb2RlbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggYjYyNGEzNTk2ODU3MmUw
Mjg3MzBkYTU2NmViMDRhNWY4MjRhZmQ5Ni4uM2FlYzJmODRhMDdiODY2ODAyZjA3NmQ4YWM5Yjgx
NmQwNjQ1OGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCkBAIC03Nyw2ICs3Nyw3IEBAIElEQkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCUmVxdWVzdCoKICAgICAs
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX3RyYW5zYWN0aW9uTm90aWZpZXIo
dHJhbnNhY3Rpb24sIHRoaXMpCiAgICAgLCBtX2dvdFZhbHVlKGZhbHNlKQorICAgICwgbV92YWx1
ZUlzRGlydHkodHJ1ZSkKIHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKICAgICBBU1NFUlQobV9y
ZXF1ZXN0KTsKQEAgLTEwOSw5ICsxMTAsMTAgQEAgUGFzc1JlZlB0cjxJREJLZXk+IElEQkN1cnNv
cjo6cHJpbWFyeUtleSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCQW55PiBJREJDdXJzb3I6OnZhbHVlKCkgY29uc3QKK1Bhc3NSZWZQ
dHI8SURCQW55PiBJREJDdXJzb3I6OnZhbHVlKCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNv
cjo6dmFsdWUiKTsKKyAgICBtX3ZhbHVlSXNEaXJ0eSA9IGZhbHNlOwogICAgIHJldHVybiBtX2N1
cnJlbnRWYWx1ZTsKIH0KIApAQCAtMjM2LDYgKzIzOCw3IEBAIHZvaWQgSURCQ3Vyc29yOjpzZXRW
YWx1ZVJlYWR5KCkKICAgICBtX2N1cnJlbnRQcmltYXJ5S2V5ID0gbV9iYWNrZW5kLT5wcmltYXJ5
S2V5KCk7CiAgICAgbV9jdXJyZW50VmFsdWUgPSBJREJBbnk6OmNyZWF0ZShtX2JhY2tlbmQtPnZh
bHVlKCkpOwogICAgIG1fZ290VmFsdWUgPSB0cnVlOworICAgIG1fdmFsdWVJc0RpcnR5ID0gdHJ1
ZTsKIH0KIAogdW5zaWduZWQgc2hvcnQgSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25z
dCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IGNlY2UwMGE0ZjJjN2E0
NWY4NTkxOTMwMTlkNzNiZmVjYWFiYzA5MTQuLjNmOWQ4NGY5ODgxMTgxMmM2YmZjYjUzYzIzODgz
MWVlM2ZiYjVlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGRpcmVj
dGlvbigpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdDsKICAgICBQ
YXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SURC
QW55PiB2YWx1ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCQW55PiB2YWx1ZSgpOwogICAg
IElEQkFueSogc291cmNlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVw
ZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CkBAIC04NCw2ICs4NCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbG9zZSgpOwogICAgIHZvaWQgc2V0VmFsdWVSZWFkeSgpOwogCisgICAgLy8gVGhlIHNw
ZWMgcmVxdWlyZXMgdGhhdCB0aGUgc2NyaXB0IG9iamVjdCB0aGF0IHdyYXBzIHRoZSB2YWx1ZQor
ICAgIC8vIGJlIHVuY2hhbmdlZCB1bnRpbCB0aGUgdmFsdWUgY2hhbmdlcyBhcyBhIHJlc3VsdCBv
ZiB0aGUgY3Vyc29yCisgICAgLy8gYWR2YW5jaW5nLgorICAgIGJvb2wgdmFsdWVJc0RpcnR5KCkg
eyByZXR1cm4gbV92YWx1ZUlzRGlydHk7IH0KKwogcHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJREJSZXF1ZXN0KiwgSURCQW55
KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAKQEAgLTk5LDYgKzEwNCw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5OwogICAgIFJlZlB0cjxJREJLZXk+IG1f
Y3VycmVudFByaW1hcnlLZXk7CiAgICAgUmVmUHRyPElEQkFueT4gbV9jdXJyZW50VmFsdWU7Cisg
ICAgYm9vbCBtX3ZhbHVlSXNEaXJ0eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhW
YWx1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRo
VmFsdWUuaWRsCmluZGV4IDZmZmM1YjU1NDgxYWYwN2M1YTc5ZThlNWJkYWQ1YjJlZWUwNWVlNjYu
LjUxMmVhNDA1ZTQ0YTkxYzU3NjEzNjU0NGQ3YjUzZWFmMTJmODAwNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmlk
bApAQCAtMjgsNiArMjgsNiBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgaW50ZXJmYWNlIFsKICAg
ICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogICAgIF0gSURCQ3Vyc29yV2l0aFZh
bHVlIDogSURCQ3Vyc29yIHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSB2YWx1
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEN1c3RvbUdldHRlcl0gSURCQW55IHZh
bHVlOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTIzNTEyMmY5MWNjOWIxYmNlNjhl
M2NlYWI0YjAzZDBlZTE4NzUxMC4uMTZjZDIwMjY2OTY0MmE4NjE4YTUyOWFmZTBhZDE0YjVjODA3
YTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjEyNSw2ICsyMTI1LDcgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JREJC
aW5kaW5nVXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJp
bmRpbmdzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBl
ck1hcC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Jc29sYXRlZFdvcmxkLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvSXNvbGF0ZWRXb3JsZC5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2Fk
ODcyMGJkZTcwOTA0M2Q3NDRlMWU2MWNkZmM0Nzg3ZjhmYzBkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhJREJDdXJz
b3JXaXRoVmFsdWUuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdTdGF0
ZS5oIgorI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVy
dHlOYW1lLmgiCisjaW5jbHVkZSAiVjhJREJBbnkuaCIKKyNpbmNsdWRlICJWOElEQkN1cnNvci5o
IgorI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOElEQkN1cnNvcldpdGhWYWx1ZTo6dmFsdWVBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLklEQkN1cnNvcldpdGhWYWx1ZS52
YWx1ZS5fZ2V0Iik7CisKKyAgICBJREJDdXJzb3JXaXRoVmFsdWUqIGltcCA9IFY4SURCQ3Vyc29y
V2l0aFZhbHVlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidmFsdWUiKTsKKyAg
ICBpZiAoIWltcC0+dmFsdWVJc0RpcnR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lKTsK
KyAgICAgICAgaWYgKCF2YWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgfQorCisgICAgUmVmUHRyPElEQkFueT4gcmVzdWx0ID0gaW1wLT52YWx1ZSgpOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gZ2V0RE9NT2Jq
ZWN0TWFwKGluZm8uR2V0SXNvbGF0ZSgpKS5nZXQocmVzdWx0LmdldCgpKSA6IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKTsKKyAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgd3Jh
cHBlciA9IHRvVjgocmVzdWx0LmdldCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVk
SGlkZGVuUmVmZXJlbmNlKGluZm8uSG9sZGVyKCksICJ2YWx1ZSIsIHdyYXBwZXIpOworICAgIH0K
KyAgICBpbmZvLkhvbGRlcigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHdyYXBwZXIp
OworICAgIHJldHVybiB3cmFwcGVyOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkMjJmZTM5
ZTVmODc1ZWRkZjdmZjJkY2Q4ZjhkZWZkMDViYTBmZjkuLmVmZTA4YTlmNGZkMmU3ODNlMmY3NmVm
MzRkNDMzMWI0ZTc2NGNjNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMSAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVk
REI6IEN1cnNvciB2YWx1ZSBtb2RpZmljYXRpb25zIHNob3VsZCBiZSBwcmVzZXJ2ZWQgdW50aWwg
Y3Vyc29yIGl0ZXJhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanM6
IEFkZGVkLgorICAgICAgICAob3BlbkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qu
b25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6Cisg
ICAgICAgIChvcGVuRGF0YWJhc2UpOgorICAgICAgICAodGVzdEN1cnNvci5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgICh0ZXN0Q3Vyc29yKToKKyAgICAgICAgKGVuc3VyZU1vZGlmaWNhdGlv
bnNOb3RQZXJzaXN0ZWQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZW5zdXJlTW9kaWZp
Y2F0aW9uc05vdFBlcnNpc3RlZCk6CisKIDIwMTItMDYtMTEgIFN6aWxhcmQgTGVkYW4gIDxzemxl
ZGFuQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIEdhcmRlbmluZywgc2tpcCBuZXcg
ZmFpbGluZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci12YWx1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItdmFsdWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MjYyNTg1ZGExZmJlMWE2
OTRiMmNmZmU0ZDgxNGM2MjlhOWJiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIg
QEAKK1Rlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHZhbHVlIHByb3BlcnR5LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53
ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8
fCBzZWxmLk9JbmRleGVkREI7CisKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXZh
bHVlJykKK2RiID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpCit0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0CitEZWxldGVkIGFsbCBvYmpl
Y3Qgc3RvcmVzLgorZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKwordGVzdEN1cnNvcigp
OgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykKK3N0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCh7YTogMSwg
YjogMn0sICdrZXknKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVx
dWVzdC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAna2V5JworCitDaGVjayBleHBlY3RlZCB2
YWx1ZXM6CitQQVNTIGN1cnNvci52YWx1ZS5hIGlzIDEKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMg
MgorUEFTUyBjdXJzb3IudmFsdWUuZm9vIGlzIHVuZGVmaW5lZAorCitNb2RpZnkgdmFsdWVzOgor
Y3Vyc29yLnZhbHVlLmEgPSAzCitkZWxldGUgY3Vyc29yLnZhbHVlLmIKK2N1cnNvci52YWx1ZS5m
b28gPSAnYmFyJworCitFbnN1cmUgbW9kaWZpY2F0aW9ucyBhcmUgcmV0YWluZWQ6CitQQVNTIGN1
cnNvci52YWx1ZS5hIGlzIDMKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMgdW5kZWZpbmVkCitQQVNT
IGN1cnNvci52YWx1ZS5mb28gaXMgJ2JhcicKKworZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNp
c3RlZCgpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHkn
KQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9IHN0
b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtl
eSBpcyAna2V5JworCitDaGVjayBleHBlY3RlZCB2YWx1ZXM6CitQQVNTIGN1cnNvci52YWx1ZS5h
IGlzIDEKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMgMgorUEFTUyBjdXJzb3IudmFsdWUuZm9vIGlz
IHVuZGVmaW5lZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12
YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmYxYmMxNDc3NTMzMzc2Nzc4YWY3MWMwMTBhMzNjZDcxZWUxYzk1NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12
YWx1ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci12YWx1ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2MjAxMmU5MTA0YWVi
YWRiM2VjM2RlZTI0ODU1YmYzNDA4MThiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzCkBAIC0wLDAgKzEs
ODMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJz
b3IgdmFsdWUgcHJvcGVydHkuIik7CisKK3JlbW92ZVZlbmRvclByZWZpeGVzKCk7CitvcGVuRGF0
YWJhc2UoKTsKKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci12YWx1ZScpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIp
OworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAg
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rp
b24gdGVzdEN1cnNvcigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0Q3Vyc29y
KCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCAncmVhZHdyaXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHthOiAx
LCBiOiAyfSwgJ2tleScpIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5D
dXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIidrZXknIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiQ2hl
Y2sgZXhwZWN0ZWQgdmFsdWVzOiIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEi
LCAiMSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmIiLCAiMiIpOworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICJ1bmRlZmluZWQiKTsKKworICAgICAgICBk
ZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJNb2RpZnkgdmFsdWVzOiIpOworICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IudmFsdWUuYSA9IDMiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGVsZXRl
IGN1cnNvci52YWx1ZS5iIik7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci52YWx1ZS5mb28g
PSAnYmFyJyIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIkVuc3VyZSBt
b2RpZmljYXRpb25zIGFyZSByZXRhaW5lZDoiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5hIiwgIjMiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgInVuZGVm
aW5lZCIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICInYmFyJyIpOwor
ICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZW5zdXJlTW9kaWZpY2F0aW9u
c05vdFBlcnNpc3RlZDsKK30KKworZnVuY3Rpb24gZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNp
c3RlZCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJlbnN1cmVNb2RpZmljYXRpb25z
Tm90UGVyc2lzdGVkKCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHknKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAiJ2tleSciKTsKKworICAgICAgICBkZWJ1ZygiIik7Cisg
ICAgICAgIGRlYnVnKCJDaGVjayBleHBlY3RlZCB2YWx1ZXM6Iik7CisgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUuYSIsICIxIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
YiIsICIyIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgInVuZGVmaW5l
ZCIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsK
KyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146942</attachid>
            <date>2012-06-11 15:52:21 -0700</date>
            <delta_ts>2012-06-11 17:22:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83526-20120611155220.patch</filename>
            <type>text/plain</type>
            <size>14738</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmMTY5MjllNGZiNWZj
ZThkOWU4YzA0MjJkNGYxMmI4Y2M4M2ZmYS4uODg4YWNlNGEyZjkxZmNhYzEzNWJjYTdjYWM2MTgy
M2U5YTJjY2ZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEluZGV4ZWRE
QjogQ3Vyc29yIHZhbHVlIG1vZGlmaWNhdGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZCB1bnRpbCBj
dXJzb3IgaXRlcmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2FjaGUgdGhlICd2YWx1ZScgYXR0cmlidXRlIG9mIElEQkN1cnNvcldpdGhWYWx1ZSB3
aXRoIHBvbGljeQorICAgICAgICBkZXRlcm1pbmVkIGJ5IElEQkN1cnNvci5jcHAsIHRvIGZvbGxv
dyBzcGVjIGJlaGF2aW9yIG9mIGtlZXBpbmcgYQorICAgICAgICBjb25zaXN0ZW50IHNjcmlwdCBv
YmplY3QgdW50aWwgdGhlIGN1cnNvciBhZHZhbmNlcy4KKworICAgICAgICBUZXN0OiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3I6OnZhbHVlSXNEaXJ0eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yV2l0aFZhbHVlLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
YmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhJREJDdXJzb3JXaXRoVmFsdWU6OnZhbHVlQWNjZXNz
b3JHZXR0ZXIpOgorCiAyMDEyLTA2LTExICBNaWNoYWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVu
aW5nQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gQ29tcHV0ZSBhbmQgc2V0IGNhY2hl
IGNhcGFjaXRpZXMgdXNpbmcgdGhlIGN1cnJlbnQgQ2FjaGVNb2RlbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggYjYyNGEzNTk2ODU3MmUw
Mjg3MzBkYTU2NmViMDRhNWY4MjRhZmQ5Ni4uM2FlYzJmODRhMDdiODY2ODAyZjA3NmQ4YWM5Yjgx
NmQwNjQ1OGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCkBAIC03Nyw2ICs3Nyw3IEBAIElEQkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCUmVxdWVzdCoKICAgICAs
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX3RyYW5zYWN0aW9uTm90aWZpZXIo
dHJhbnNhY3Rpb24sIHRoaXMpCiAgICAgLCBtX2dvdFZhbHVlKGZhbHNlKQorICAgICwgbV92YWx1
ZUlzRGlydHkodHJ1ZSkKIHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKICAgICBBU1NFUlQobV9y
ZXF1ZXN0KTsKQEAgLTEwOSw5ICsxMTAsMTAgQEAgUGFzc1JlZlB0cjxJREJLZXk+IElEQkN1cnNv
cjo6cHJpbWFyeUtleSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCQW55PiBJREJDdXJzb3I6OnZhbHVlKCkgY29uc3QKK1Bhc3NSZWZQ
dHI8SURCQW55PiBJREJDdXJzb3I6OnZhbHVlKCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNv
cjo6dmFsdWUiKTsKKyAgICBtX3ZhbHVlSXNEaXJ0eSA9IGZhbHNlOwogICAgIHJldHVybiBtX2N1
cnJlbnRWYWx1ZTsKIH0KIApAQCAtMjM2LDYgKzIzOCw3IEBAIHZvaWQgSURCQ3Vyc29yOjpzZXRW
YWx1ZVJlYWR5KCkKICAgICBtX2N1cnJlbnRQcmltYXJ5S2V5ID0gbV9iYWNrZW5kLT5wcmltYXJ5
S2V5KCk7CiAgICAgbV9jdXJyZW50VmFsdWUgPSBJREJBbnk6OmNyZWF0ZShtX2JhY2tlbmQtPnZh
bHVlKCkpOwogICAgIG1fZ290VmFsdWUgPSB0cnVlOworICAgIG1fdmFsdWVJc0RpcnR5ID0gdHJ1
ZTsKIH0KIAogdW5zaWduZWQgc2hvcnQgSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25z
dCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IGNlY2UwMGE0ZjJjN2E0
NWY4NTkxOTMwMTlkNzNiZmVjYWFiYzA5MTQuLjNmOWQ4NGY5ODgxMTgxMmM2YmZjYjUzYzIzODgz
MWVlM2ZiYjVlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGRpcmVj
dGlvbigpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdDsKICAgICBQ
YXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SURC
QW55PiB2YWx1ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCQW55PiB2YWx1ZSgpOwogICAg
IElEQkFueSogc291cmNlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVw
ZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CkBAIC04NCw2ICs4NCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbG9zZSgpOwogICAgIHZvaWQgc2V0VmFsdWVSZWFkeSgpOwogCisgICAgLy8gVGhlIHNw
ZWMgcmVxdWlyZXMgdGhhdCB0aGUgc2NyaXB0IG9iamVjdCB0aGF0IHdyYXBzIHRoZSB2YWx1ZQor
ICAgIC8vIGJlIHVuY2hhbmdlZCB1bnRpbCB0aGUgdmFsdWUgY2hhbmdlcyBhcyBhIHJlc3VsdCBv
ZiB0aGUgY3Vyc29yCisgICAgLy8gYWR2YW5jaW5nLgorICAgIGJvb2wgdmFsdWVJc0RpcnR5KCkg
eyByZXR1cm4gbV92YWx1ZUlzRGlydHk7IH0KKwogcHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJREJSZXF1ZXN0KiwgSURCQW55
KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAKQEAgLTk5LDYgKzEwNCw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5OwogICAgIFJlZlB0cjxJREJLZXk+IG1f
Y3VycmVudFByaW1hcnlLZXk7CiAgICAgUmVmUHRyPElEQkFueT4gbV9jdXJyZW50VmFsdWU7Cisg
ICAgYm9vbCBtX3ZhbHVlSXNEaXJ0eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhW
YWx1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRo
VmFsdWUuaWRsCmluZGV4IDZmZmM1YjU1NDgxYWYwN2M1YTc5ZThlNWJkYWQ1YjJlZWUwNWVlNjYu
LjUxMmVhNDA1ZTQ0YTkxYzU3NjEzNjU0NGQ3YjUzZWFmMTJmODAwNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmlk
bApAQCAtMjgsNiArMjgsNiBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgaW50ZXJmYWNlIFsKICAg
ICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogICAgIF0gSURCQ3Vyc29yV2l0aFZh
bHVlIDogSURCQ3Vyc29yIHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSB2YWx1
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEN1c3RvbUdldHRlcl0gSURCQW55IHZh
bHVlOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTIzNTEyMmY5MWNjOWIxYmNlNjhl
M2NlYWI0YjAzZDBlZTE4NzUxMC4uMTZjZDIwMjY2OTY0MmE4NjE4YTUyOWFmZTBhZDE0YjVjODA3
YTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjEyNSw2ICsyMTI1LDcgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JREJC
aW5kaW5nVXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJp
bmRpbmdzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBl
ck1hcC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Jc29sYXRlZFdvcmxkLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvSXNvbGF0ZWRXb3JsZC5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzQ1
ZDhkZTM5ZWNjNGJjNGI5NjE1ODRiYmIwNWMwNWYyYjY2ZTRiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhJREJDdXJz
b3JXaXRoVmFsdWUuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdTdGF0
ZS5oIgorI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVy
dHlOYW1lLmgiCisjaW5jbHVkZSAiVjhJREJBbnkuaCIKKyNpbmNsdWRlICJWOElEQkN1cnNvci5o
IgorI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOElEQkN1cnNvcldpdGhWYWx1ZTo6dmFsdWVBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLklEQkN1cnNvcldpdGhWYWx1ZS52
YWx1ZS5fZ2V0Iik7CisKKyAgICBJREJDdXJzb3JXaXRoVmFsdWUqIGltcCA9IFY4SURCQ3Vyc29y
V2l0aFZhbHVlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidmFsdWUiKTsKKyAg
ICBpZiAoIWltcC0+dmFsdWVJc0RpcnR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lKTsK
KyAgICAgICAgaWYgKCF2YWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgfQorCisgICAgUmVmUHRyPElEQkFueT4gcmVzdWx0ID0gaW1wLT52YWx1ZSgpOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gZ2V0RE9NT2Jq
ZWN0TWFwKGluZm8uR2V0SXNvbGF0ZSgpKS5nZXQocmVzdWx0LmdldCgpKSA6IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKTsKKyAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgd3Jh
cHBlciA9IHRvVjgocmVzdWx0LmdldCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVk
SGlkZGVuUmVmZXJlbmNlKGluZm8uSG9sZGVyKCksICJ2YWx1ZSIsIHdyYXBwZXIpOworICAgIH0K
KyAgICBpbmZvLkhvbGRlcigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHdyYXBwZXIp
OworICAgIHJldHVybiB3cmFwcGVyOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkMjJmZTM5
ZTVmODc1ZWRkZjdmZjJkY2Q4ZjhkZWZkMDViYTBmZjkuLmVmZTA4YTlmNGZkMmU3ODNlMmY3NmVm
MzRkNDMzMWI0ZTc2NGNjNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMSAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVk
REI6IEN1cnNvciB2YWx1ZSBtb2RpZmljYXRpb25zIHNob3VsZCBiZSBwcmVzZXJ2ZWQgdW50aWwg
Y3Vyc29yIGl0ZXJhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanM6
IEFkZGVkLgorICAgICAgICAob3BlbkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qu
b25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6Cisg
ICAgICAgIChvcGVuRGF0YWJhc2UpOgorICAgICAgICAodGVzdEN1cnNvci5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgICh0ZXN0Q3Vyc29yKToKKyAgICAgICAgKGVuc3VyZU1vZGlmaWNhdGlv
bnNOb3RQZXJzaXN0ZWQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZW5zdXJlTW9kaWZp
Y2F0aW9uc05vdFBlcnNpc3RlZCk6CisKIDIwMTItMDYtMTEgIFN6aWxhcmQgTGVkYW4gIDxzemxl
ZGFuQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIEdhcmRlbmluZywgc2tpcCBuZXcg
ZmFpbGluZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci12YWx1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItdmFsdWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MjYyNTg1ZGExZmJlMWE2
OTRiMmNmZmU0ZDgxNGM2MjlhOWJiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIg
QEAKK1Rlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHZhbHVlIHByb3BlcnR5LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53
ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8
fCBzZWxmLk9JbmRleGVkREI7CisKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXZh
bHVlJykKK2RiID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpCit0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0CitEZWxldGVkIGFsbCBvYmpl
Y3Qgc3RvcmVzLgorZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKwordGVzdEN1cnNvcigp
OgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykKK3N0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCh7YTogMSwg
YjogMn0sICdrZXknKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVx
dWVzdC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAna2V5JworCitDaGVjayBleHBlY3RlZCB2
YWx1ZXM6CitQQVNTIGN1cnNvci52YWx1ZS5hIGlzIDEKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMg
MgorUEFTUyBjdXJzb3IudmFsdWUuZm9vIGlzIHVuZGVmaW5lZAorCitNb2RpZnkgdmFsdWVzOgor
Y3Vyc29yLnZhbHVlLmEgPSAzCitkZWxldGUgY3Vyc29yLnZhbHVlLmIKK2N1cnNvci52YWx1ZS5m
b28gPSAnYmFyJworCitFbnN1cmUgbW9kaWZpY2F0aW9ucyBhcmUgcmV0YWluZWQ6CitQQVNTIGN1
cnNvci52YWx1ZS5hIGlzIDMKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMgdW5kZWZpbmVkCitQQVNT
IGN1cnNvci52YWx1ZS5mb28gaXMgJ2JhcicKKworZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNp
c3RlZCgpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHkn
KQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9IHN0
b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtl
eSBpcyAna2V5JworCitDaGVjayBleHBlY3RlZCB2YWx1ZXM6CitQQVNTIGN1cnNvci52YWx1ZS5h
IGlzIDEKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMgMgorUEFTUyBjdXJzb3IudmFsdWUuZm9vIGlz
IHVuZGVmaW5lZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12
YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmYxYmMxNDc3NTMzMzc2Nzc4YWY3MWMwMTBhMzNjZDcxZWUxYzk1NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12
YWx1ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci12YWx1ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2MjAxMmU5MTA0YWVi
YWRiM2VjM2RlZTI0ODU1YmYzNDA4MThiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzCkBAIC0wLDAgKzEs
ODMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJz
b3IgdmFsdWUgcHJvcGVydHkuIik7CisKK3JlbW92ZVZlbmRvclByZWZpeGVzKCk7CitvcGVuRGF0
YWJhc2UoKTsKKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci12YWx1ZScpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIp
OworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAg
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rp
b24gdGVzdEN1cnNvcigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0Q3Vyc29y
KCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCAncmVhZHdyaXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHthOiAx
LCBiOiAyfSwgJ2tleScpIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5D
dXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIidrZXknIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiQ2hl
Y2sgZXhwZWN0ZWQgdmFsdWVzOiIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEi
LCAiMSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmIiLCAiMiIpOworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICJ1bmRlZmluZWQiKTsKKworICAgICAgICBk
ZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJNb2RpZnkgdmFsdWVzOiIpOworICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IudmFsdWUuYSA9IDMiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGVsZXRl
IGN1cnNvci52YWx1ZS5iIik7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci52YWx1ZS5mb28g
PSAnYmFyJyIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIkVuc3VyZSBt
b2RpZmljYXRpb25zIGFyZSByZXRhaW5lZDoiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5hIiwgIjMiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgInVuZGVm
aW5lZCIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICInYmFyJyIpOwor
ICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZW5zdXJlTW9kaWZpY2F0aW9u
c05vdFBlcnNpc3RlZDsKK30KKworZnVuY3Rpb24gZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNp
c3RlZCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJlbnN1cmVNb2RpZmljYXRpb25z
Tm90UGVyc2lzdGVkKCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHknKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAiJ2tleSciKTsKKworICAgICAgICBkZWJ1ZygiIik7Cisg
ICAgICAgIGRlYnVnKCJDaGVjayBleHBlY3RlZCB2YWx1ZXM6Iik7CisgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUuYSIsICIxIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
YiIsICIyIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgInVuZGVmaW5l
ZCIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsK
KyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146974</attachid>
            <date>2012-06-11 17:23:00 -0700</date>
            <delta_ts>2012-06-12 10:54:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83526-20120611172259.patch</filename>
            <type>text/plain</type>
            <size>16657</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU4Mzc1NTk2M2RhMjkw
MTU5NDU2OWY4ZjBiZGUyNjAxYjgwYTJhZC4uNTU5OGRhZjhkZjA0YmNhZjFiM2NlOWFhYmVjY2Iz
MGE2YzIyNTdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEluZGV4ZWRE
QjogQ3Vyc29yIHZhbHVlIG1vZGlmaWNhdGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZCB1bnRpbCBj
dXJzb3IgaXRlcmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2FjaGUgdGhlICd2YWx1ZScgYXR0cmlidXRlIG9mIElEQkN1cnNvcldpdGhWYWx1ZSB3
aXRoIHBvbGljeQorICAgICAgICBkZXRlcm1pbmVkIGJ5IElEQkN1cnNvci5jcHAsIHRvIGZvbGxv
dyBzcGVjIGJlaGF2aW9yIG9mIGtlZXBpbmcgYQorICAgICAgICBjb25zaXN0ZW50IHNjcmlwdCBv
YmplY3QgdW50aWwgdGhlIGN1cnNvciBhZHZhbmNlcy4KKworICAgICAgICBUZXN0OiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuaDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3I6OnZhbHVlSXNEaXJ0eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yV2l0aFZhbHVlLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
YmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhJREJDdXJzb3JXaXRoVmFsdWU6OnZhbHVlQWNjZXNz
b3JHZXR0ZXIpOgorCiAyMDEyLTA2LTExICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgU1ZHSW1hZ2VDYWNoZSBsZWFrcyBpbWFnZSBkYXRhCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBiNjI0
YTM1OTY4NTcyZTAyODczMGRhNTY2ZWIwNGE1ZjgyNGFmZDk2Li4zYWVjMmY4NGEwN2I4NjY4MDJm
MDc2ZDhhYzliODE2ZDA2NDU4ZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTc3LDYgKzc3LDcgQEAgSURCQ3Vyc29yOjpJREJDdXJz
b3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJSZXF1
ZXN0KgogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAsIG1fdHJhbnNhY3Rp
b25Ob3RpZmllcih0cmFuc2FjdGlvbiwgdGhpcykKICAgICAsIG1fZ290VmFsdWUoZmFsc2UpCisg
ICAgLCBtX3ZhbHVlSXNEaXJ0eSh0cnVlKQogewogICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAg
IEFTU0VSVChtX3JlcXVlc3QpOwpAQCAtMTA5LDkgKzExMCwxMCBAQCBQYXNzUmVmUHRyPElEQktl
eT4gSURCQ3Vyc29yOjpwcmltYXJ5S2V5KCkgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50UHJp
bWFyeUtleTsKIH0KIAotUGFzc1JlZlB0cjxJREJBbnk+IElEQkN1cnNvcjo6dmFsdWUoKSBjb25z
dAorUGFzc1JlZlB0cjxJREJBbnk+IElEQkN1cnNvcjo6dmFsdWUoKQogewogICAgIElEQl9UUkFD
RSgiSURCQ3Vyc29yOjp2YWx1ZSIpOworICAgIG1fdmFsdWVJc0RpcnR5ID0gZmFsc2U7CiAgICAg
cmV0dXJuIG1fY3VycmVudFZhbHVlOwogfQogCkBAIC0yMzYsNiArMjM4LDcgQEAgdm9pZCBJREJD
dXJzb3I6OnNldFZhbHVlUmVhZHkoKQogICAgIG1fY3VycmVudFByaW1hcnlLZXkgPSBtX2JhY2tl
bmQtPnByaW1hcnlLZXkoKTsKICAgICBtX2N1cnJlbnRWYWx1ZSA9IElEQkFueTo6Y3JlYXRlKG1f
YmFja2VuZC0+dmFsdWUoKSk7CiAgICAgbV9nb3RWYWx1ZSA9IHRydWU7CisgICAgbV92YWx1ZUlz
RGlydHkgPSB0cnVlOwogfQogCiB1bnNpZ25lZCBzaG9ydCBJREJDdXJzb3I6OnN0cmluZ1RvRGly
ZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggY2Vj
ZTAwYTRmMmM3YTQ1Zjg1OTE5MzAxOWQ3M2JmZWNhYWJjMDkxNC4uM2Y5ZDg0Zjk4ODExODEyYzZi
ZmNiNTNjMjM4ODMxZWUzZmJiNWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNv
bnN0OwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3Q7Ci0gICAgUGFz
c1JlZlB0cjxJREJBbnk+IHZhbHVlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IHZh
bHVlKCk7CiAgICAgSURCQW55KiBzb3VyY2UoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gdXBkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTg0LDYgKzg0LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBzZXRWYWx1ZVJlYWR5KCk7CiAKKyAg
ICAvLyBUaGUgc3BlYyByZXF1aXJlcyB0aGF0IHRoZSBzY3JpcHQgb2JqZWN0IHRoYXQgd3JhcHMg
dGhlIHZhbHVlCisgICAgLy8gYmUgdW5jaGFuZ2VkIHVudGlsIHRoZSB2YWx1ZSBjaGFuZ2VzIGFz
IGEgcmVzdWx0IG9mIHRoZSBjdXJzb3IKKyAgICAvLyBhZHZhbmNpbmcuCisgICAgYm9vbCB2YWx1
ZUlzRGlydHkoKSB7IHJldHVybiBtX3ZhbHVlSXNEaXJ0eTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIElEQlJlcXVl
c3QqLCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKIApAQCAtOTksNiArMTA0LDcg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRLZXk7CiAgICAgUmVmUHRy
PElEQktleT4gbV9jdXJyZW50UHJpbWFyeUtleTsKICAgICBSZWZQdHI8SURCQW55PiBtX2N1cnJl
bnRWYWx1ZTsKKyAgICBib29sIG1fdmFsdWVJc0RpcnR5OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yV2l0aFZhbHVlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5pZGwKaW5kZXggNmZmYzViNTU0ODFhZjA3YzVhNzllOGU1YmRhZDVi
MmVlZTA1ZWU2Ni4uNTEyZWE0MDVlNDRhOTFjNTc2MTM2NTQ0ZDdiNTNlYWYxMmY4MDA3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZh
bHVlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JX
aXRoVmFsdWUuaWRsCkBAIC0yOCw2ICsyOCw2IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiAgICAgXSBJREJD
dXJzb3JXaXRoVmFsdWUgOiBJREJDdXJzb3IgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
SURCQW55IHZhbHVlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4Q3VzdG9tR2V0dGVy
XSBJREJBbnkgdmFsdWU7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Vz
ZVY4LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKaW5kZXggNDQ4ZTI2NmE4NzFk
ZjU4N2MzOWY2YTI5ZjdlZDQ2NjU0MDU5Y2MxOS4uZmZmYzI2YjEzNWU0MmYzMzZmZjcyNzQ5YjRl
NGE1MmJkMTc3M2VkZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKQEAgLTIyLDYgKzIyLDcgQEAgTElTVChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAog
ICAgIGJpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwCiAgICAgYmluZGluZ3MvdjgvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAKKyAgICBiaW5kaW5ncy92OC9JREJDdXN0b21CaW5kaW5ncy5jcHAK
ICAgICBiaW5kaW5ncy92OC9Jc29sYXRlZFdvcmxkLmNwcAogICAgIGJpbmRpbmdzL3Y4L0RpY3Rp
b25hcnkuY3BwCiAgICAgYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDUyMzUxMjJmOTFjYzliMWJjZTY4ZTNjZWFiNGIwM2QwZWUxODc1MTAu
Ljk3Zjk4MTEzMjc2ZTRmM2ZjYjcyMzM2MWExZDUwYzk4YTI0MzcxMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTE4ODEsNiArMTg4MSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvR0NDb250
cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCcsCkBAIC0yMTI1LDYgKzIxMjYsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURC
Q3VzdG9tQmluZGluZ3MuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JbnRydXNpdmVE
T01XcmFwcGVyTWFwLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lzb2xhdGVkV29ybGQu
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Jc29sYXRlZFdvcmxkLmgnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1MTlhNjg5ZDJi
ZDQ1ZmJhNDczYWY5ZDMyYTE1ZGZiMDkwMTFjN2MxLi5jNjI3NGMwMWRlOTZjZGJhODJkMmI1YmFk
ODI3NzdkNDY5MzcyYTNkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNjM1MjIsNiArNjM1MjIsNTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXElEQkN1c3RvbUJp
bmRpbmdzLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wK
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0
aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJ
CQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIgogCQkJCQk+CiAJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
SURCQ3VzdG9tQmluZGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2MTk2MGM1ODM1NDg0ZjExYTcxMWRi
OGJhMzkwYjk2NjI4NzU2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9JREJDdXN0b21CaW5kaW5ncy5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
KyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOElEQkN1cnNvcldpdGhWYWx1
ZS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJWOElEQkFu
eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElE
QkN1cnNvcldpdGhWYWx1ZTo6dmFsdWVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5JREJDdXJzb3JXaXRoVmFsdWUudmFsdWUuX2dldCIpOworCisgICAgSURCQ3Vyc29yV2l0
aFZhbHVlKiBpbXAgPSBWOElEQkN1cnNvcldpdGhWYWx1ZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm9wZXJ0eU5hbWUgPSB2ODo6U3RyaW5n
OjpOZXdTeW1ib2woInZhbHVlIik7CisgICAgaWYgKCFpbXAtPnZhbHVlSXNEaXJ0eSgpKSB7Cisg
ICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldEhp
ZGRlblZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIFJlZlB0cjxJREJBbnk+IHJl
c3VsdCA9IGltcC0+dmFsdWUoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9
IHRvVjgocmVzdWx0LmdldCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaW5mby5Ib2xkZXIo
KS0+U2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lLCB3cmFwcGVyKTsKKyAgICByZXR1cm4gd3Jh
cHBlcjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OWFmN2NiNDcyMDg4ZDY2YmE2ZTg0NThi
ZDVjMDhjNTk4MmE2ZGYzLi4zOTE1Zjc0YzhkZWU0NTBjZmEzMTg5YWU0ZjdlYmM0NTMzMWI1ZGYw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMTEgIEFsZWMgRmxldHQgIDxhbGVjZmxl
dHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gSW5kZXhlZERCOiBDdXJzb3IgdmFsdWUg
bW9kaWZpY2F0aW9ucyBzaG91bGQgYmUgcHJlc2VydmVkIHVudGlsIGN1cnNvciBpdGVyYXRlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1MjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci12YWx1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzOiBBZGRlZC4KKyAgICAgICAg
KG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgIChvcGVuRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAob3BlbkRhdGFi
YXNlKToKKyAgICAgICAgKHRlc3RDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
dGVzdEN1cnNvcik6CisgICAgICAgIChlbnN1cmVNb2RpZmljYXRpb25zTm90UGVyc2lzdGVkLnJl
cXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGVuc3VyZU1vZGlmaWNhdGlvbnNOb3RQZXJzaXN0
ZWQpOgorCiAyMDEyLTA2LTExICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgTGFzdCBsYXJnZSBzbGV3IG9mIENocm9taXVtIHdpbmRvd3MgcG5nIHJlYmFzZWxpbmVz
LiBTZWUgIGh0dHA6Ly9jcmJ1Zy5jb20vMTMxODI5IGZvciBtb3JlIGluZm9ybWF0aW9uLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkyNjI1ODVkYTFmYmUxYTY5NGIyY2ZmZTRkODE0YzYyOWE5
YmIxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci12YWx1ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MiBAQAorVGVzdCBJbmRleGVkREIn
cyBjdXJzb3IgdmFsdWUgcHJvcGVydHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBz
ZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsK
KworcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItdmFsdWUnKQorZGIgPSByZXF1ZXN0
LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKK3RyYW5zYWN0
aW9uID0gcmVxdWVzdC5yZXN1bHQKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmUnKQorCit0ZXN0Q3Vyc29yKCk6Cit0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUucHV0KHthOiAxLCBiOiAyfSwgJ2tleScpCityZXF1
ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpCitjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorUEFTUyBj
dXJzb3Iua2V5IGlzICdrZXknCisKK0NoZWNrIGV4cGVjdGVkIHZhbHVlczoKK1BBU1MgY3Vyc29y
LnZhbHVlLmEgaXMgMQorUEFTUyBjdXJzb3IudmFsdWUuYiBpcyAyCitQQVNTIGN1cnNvci52YWx1
ZS5mb28gaXMgdW5kZWZpbmVkCisKK01vZGlmeSB2YWx1ZXM6CitjdXJzb3IudmFsdWUuYSA9IDMK
K2RlbGV0ZSBjdXJzb3IudmFsdWUuYgorY3Vyc29yLnZhbHVlLmZvbyA9ICdiYXInCisKK0Vuc3Vy
ZSBtb2RpZmljYXRpb25zIGFyZSByZXRhaW5lZDoKK1BBU1MgY3Vyc29yLnZhbHVlLmEgaXMgMwor
UEFTUyBjdXJzb3IudmFsdWUuYiBpcyB1bmRlZmluZWQKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBp
cyAnYmFyJworCitlbnN1cmVNb2RpZmljYXRpb25zTm90UGVyc2lzdGVkKCk6Cit0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpCitzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpCitj
dXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzICdrZXknCisKK0NoZWNr
IGV4cGVjdGVkIHZhbHVlczoKK1BBU1MgY3Vyc29yLnZhbHVlLmEgaXMgMQorUEFTUyBjdXJzb3Iu
dmFsdWUuYiBpcyAyCitQQVNTIGN1cnNvci52YWx1ZS5mb28gaXMgdW5kZWZpbmVkCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjFi
YzE0Nzc1MzMzNzY3NzhhZjcxYzAxMGEzM2NkNzFlZTFjOTU0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0bWwKQEAgLTAsMCAr
MSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvY3Vyc29yLXZhbHVlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNv
ci12YWx1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3ItdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYyMDEyZTkxMDRhZWJhZGIzZWMzZGVlMjQ4NTViZjM0
MDgxOGI3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanMKQEAgLTAsMCArMSw4MyBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciB2YWx1ZSBwcm9wZXJ0eS4i
KTsKKworcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKK29wZW5EYXRhYmFzZSgpOworCitmdW5jdGlv
biBvcGVuRGF0YWJhc2UoKQoreworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbignY3Vyc29yLXZhbHVlJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7CisgICAgICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdEN1
cnNvcjsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0Q3Vyc29yKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RDdXJzb3IoKToiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIp
OworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2E6IDEsIGI6IDJ9LCAna2V5JykiKTsK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVz
dC5yZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiJ2tleSciKTsKKwor
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJDaGVjayBleHBlY3RlZCB2YWx1ZXM6
Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuYSIsICIxIik7CisgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUuYiIsICIyIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuZm9vIiwgInVuZGVmaW5lZCIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ZGVidWcoIk1vZGlmeSB2YWx1ZXM6Iik7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci52YWx1
ZS5hID0gMyIpOworICAgICAgICBldmFsQW5kTG9nKCJkZWxldGUgY3Vyc29yLnZhbHVlLmIiKTsK
KyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLnZhbHVlLmZvbyA9ICdiYXInIik7CisKKyAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiRW5zdXJlIG1vZGlmaWNhdGlvbnMgYXJlIHJl
dGFpbmVkOiIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEiLCAiMyIpOworICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmIiLCAidW5kZWZpbmVkIik7CisgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7CisgICAgfTsKKworICAgIHRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBlbnN1cmVNb2RpZmljYXRpb25zTm90UGVyc2lzdGVkOworfQor
CitmdW5jdGlvbiBlbnN1cmVNb2RpZmljYXRpb25zTm90UGVyc2lzdGVkKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoImVuc3VyZU1vZGlmaWNhdGlvbnNOb3RQZXJzaXN0ZWQoKToiKTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdy
ZWFkb25seScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vy
c29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsICIna2V5JyIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIkNoZWNr
IGV4cGVjdGVkIHZhbHVlczoiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hIiwg
IjEiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgIjIiKTsKKyAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5mb28iLCAidW5kZWZpbmVkIik7CisgICAgfTsKKyAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworIH0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147113</attachid>
            <date>2012-06-12 10:54:31 -0700</date>
            <delta_ts>2012-06-13 10:01:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83526-20120612105431.patch</filename>
            <type>text/plain</type>
            <size>19994</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBmODZmY2JlMjMwZmU5
NzIzODc0M2I5NGY4OTljYzg2N2Y0NmVkNy4uNDJlNzg2MjQ0NDA4YWI2MDQ5MzQ0OWIxMzRiNDMz
NmUyYTdmMGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA2LTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEluZGV4ZWRE
QjogQ3Vyc29yIHZhbHVlIG1vZGlmaWNhdGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZCB1bnRpbCBj
dXJzb3IgaXRlcmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2FjaGUgdGhlICd2YWx1ZScgYXR0cmlidXRlIG9mIElEQkN1cnNvcldpdGhWYWx1ZSB3
aXRoIHBvbGljeQorICAgICAgICBkZXRlcm1pbmVkIGJ5IElEQkN1cnNvci5jcHAsIHRvIGZvbGxv
dyBzcGVjIGJlaGF2aW9yIG9mIGtlZXBpbmcgYQorICAgICAgICBjb25zaXN0ZW50IHNjcmlwdCBv
YmplY3QgdW50aWwgdGhlIGN1cnNvciBhZHZhbmNlcy4gU2VlCisgICAgICAgIGh0dHA6Ly93d3cu
dzMub3JnL1RSL0luZGV4ZWREQi8jd2lkbC1JREJDdXJzb3JXaXRoVmFsdWVTeW5jLXZhbHVlCisg
ICAgICAgIGZvciBkZXRhaWxzLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci12YWx1ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpJREJDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OnNldFZhbHVlUmVhZHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5o
OgorICAgICAgICAoSURCQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dmFs
dWVJc0RpcnR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFs
dWUuaWRsOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9J
REJDdXN0b21CaW5kaW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOElEQkN1cnNvcldpdGhWYWx1ZTo6dmFsdWVBY2Nlc3NvckdldHRlcik6CisK
IDIwMTItMDYtMTIgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIFtTaGFkb3cgRE9NXSA8c3R5bGU+IGluc2lkZSBTaGFkb3cgc3VidHJlZSBzaG91bGQgYmUg
c2NvcGVkIGluc2lkZSB0aGUgc3VidHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGI2MjRhMzU5Njg1NzJlMDI4NzMwZGE1NjZlYjA0
YTVmODI0YWZkOTYuLjNhZWMyZjg0YTA3Yjg2NjgwMmYwNzZkOGFjOWI4MTZkMDY0NThkZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAt
NzcsNiArNzcsNyBAQCBJREJDdXJzb3I6OklEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlJlcXVlc3QqCiAgICAgLCBtX3RyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uKQogICAgICwgbV90cmFuc2FjdGlvbk5vdGlmaWVyKHRyYW5zYWN0aW9uLCB0
aGlzKQogICAgICwgbV9nb3RWYWx1ZShmYWxzZSkKKyAgICAsIG1fdmFsdWVJc0RpcnR5KHRydWUp
CiB7CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgQVNTRVJUKG1fcmVxdWVzdCk7CkBAIC0x
MDksOSArMTEwLDEwIEBAIFBhc3NSZWZQdHI8SURCS2V5PiBJREJDdXJzb3I6OnByaW1hcnlLZXko
KSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5OwogfQogCi1QYXNzUmVmUHRy
PElEQkFueT4gSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0CitQYXNzUmVmUHRyPElEQkFueT4gSURC
Q3Vyc29yOjp2YWx1ZSgpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OnZhbHVlIik7Cisg
ICAgbV92YWx1ZUlzRGlydHkgPSBmYWxzZTsKICAgICByZXR1cm4gbV9jdXJyZW50VmFsdWU7CiB9
CiAKQEAgLTIzNiw2ICsyMzgsNyBAQCB2b2lkIElEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeSgpCiAg
ICAgbV9jdXJyZW50UHJpbWFyeUtleSA9IG1fYmFja2VuZC0+cHJpbWFyeUtleSgpOwogICAgIG1f
Y3VycmVudFZhbHVlID0gSURCQW55OjpjcmVhdGUobV9iYWNrZW5kLT52YWx1ZSgpKTsKICAgICBt
X2dvdFZhbHVlID0gdHJ1ZTsKKyAgICBtX3ZhbHVlSXNEaXJ0eSA9IHRydWU7CiB9CiAKIHVuc2ln
bmVkIHNob3J0IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJl
Y3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRleCBjZWNlMDBhNGYyYzdhNDVmODU5MTkzMDE5ZDcz
YmZlY2FhYmMwOTE0Li4zZjlkODRmOTg4MTE4MTJjNmJmY2I1M2MyMzg4MzFlZTNmYmI1ZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNzIs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24oKSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXkoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPElEQkFueT4gdmFsdWUoKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPElEQkFueT4gdmFsdWUoKTsKICAgICBJREJBbnkqIHNvdXJj
ZSgpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgRXhjZXB0
aW9uQ29kZSYpOwpAQCAtODQsNiArODQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoKTsK
ICAgICB2b2lkIHNldFZhbHVlUmVhZHkoKTsKIAorICAgIC8vIFRoZSBzcGVjIHJlcXVpcmVzIHRo
YXQgdGhlIHNjcmlwdCBvYmplY3QgdGhhdCB3cmFwcyB0aGUgdmFsdWUKKyAgICAvLyBiZSB1bmNo
YW5nZWQgdW50aWwgdGhlIHZhbHVlIGNoYW5nZXMgYXMgYSByZXN1bHQgb2YgdGhlIGN1cnNvcgor
ICAgIC8vIGFkdmFuY2luZy4KKyAgICBib29sIHZhbHVlSXNEaXJ0eSgpIHsgcmV0dXJuIG1fdmFs
dWVJc0RpcnR5OyB9CisKIHByb3RlY3RlZDoKICAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJU
cmFuc2FjdGlvbiopOwogCkBAIC05OSw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
REJLZXk+IG1fY3VycmVudEtleTsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRQcmltYXJ5
S2V5OwogICAgIFJlZlB0cjxJREJBbnk+IG1fY3VycmVudFZhbHVlOworICAgIGJvb2wgbV92YWx1
ZUlzRGlydHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmlkbAppbmRl
eCA2ZmZjNWI1NTQ4MWFmMDdjNWE3OWU4ZTViZGFkNWIyZWVlMDVlZTY2Li41MTJlYTQwNWU0NGE5
MWM1NzYxMzY1NDRkN2I1M2VhZjEyZjgwMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5pZGwKQEAgLTI4LDYgKzI4
LDYgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlv
bmFsPUlOREVYRURfREFUQUJBU0UKICAgICBdIElEQkN1cnNvcldpdGhWYWx1ZSA6IElEQkN1cnNv
ciB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgdmFsdWU7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbVjhDdXN0b21HZXR0ZXJdIElEQkFueSB2YWx1ZTsKICAgICB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9Vc2VWOC5jbWFrZQppbmRleCA0NDhlMjY2YTg3MWRmNTg3YzM5ZjZhMjlmN2VkNDY2NTQwNTlj
YzE5Li5mZmZjMjZiMTM1ZTQyZjMzNmZmNzI3NDliNGU0YTUyYmQxNzczZWRmIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5j
bWFrZQpAQCAtMjIsNiArMjIsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBi
aW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCiAgICAgYmluZGluZ3MvdjgvRGF0ZUV4dGVu
c2lvbi5jcHAKICAgICBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorICAgIGJp
bmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcAogICAgIGJpbmRpbmdzL3Y4L0lzb2xhdGVk
V29ybGQuY3BwCiAgICAgYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKICAgICBiaW5kaW5ncy92
OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTIzNTEyMmY5
MWNjOWIxYmNlNjhlM2NlYWI0YjAzZDBlZTE4NzUxMC4uOTdmOTgxMTMyNzZlNGYzZmNiNzIzMzYx
YTFkNTBjOThhMjQzNzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTg4MSw2ICsxODgxLDcgQEAK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92
OC9JREJDdXN0b21CaW5kaW5ncy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTQXJy
YXlCdWZmZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0FycmF5QnVm
ZmVyVmlld0hlbHBlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20u
Y3BwJywKQEAgLTIxMjUsNiArMjEyNiw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvRGF0
ZUV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0
aWVzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5o
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9JREJDdXN0b21CaW5kaW5ncy5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvSXNvbGF0ZWRXb3JsZC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L0lzb2xhdGVkV29ybGQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDUxOWE2ODlkMmJkNDVmYmE0NzNhZjlkMzJhMTVkZmIwOTAx
MWM3YzEuLmM2Mjc0YzAxZGU5NmNkYmE4MmQyYjViYWQ4Mjc3N2Q0NjkzNzJhM2QgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02MzUyMiw2ICs2
MzUyMiw1OCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSURCQ3VzdG9tQmluZGluZ3MuY3BwIgorCQkJCQk+CisJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJ
CTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0i
UmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJDdXN0b21CaW5kaW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJDdXN0b21CaW5kaW5ncy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTY1Njk3NjNlM2YwMDI3YTMzZmRiMGY2YTQxMmM2MTIxNjkyY2IzOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdz
LmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SURC
Q3Vyc29yV2l0aFZhbHVlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2lu
Y2x1ZGUgIlY4SURCQW55LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SURCQ3Vyc29yV2l0aFZhbHVlOjp2YWx1ZUFjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIElOQ19TVEFUUygiRE9NLklEQkN1cnNvcldpdGhWYWx1ZS52YWx1ZS5fZ2V0Iik7CisKKyAg
ICBJREJDdXJzb3JXaXRoVmFsdWUqIGltcCA9IFY4SURCQ3Vyc29yV2l0aFZhbHVlOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFt
ZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidmFsdWUiKTsKKyAgICBpZiAoIWltcC0+dmFsdWVJ
c0RpcnR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gaW5mby5I
b2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICAgICAgaWYgKCF2YWx1
ZS5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgUmVm
UHRyPElEQkFueT4gcmVzdWx0ID0gaW1wLT52YWx1ZSgpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3cmFwcGVyID0gdG9WOChyZXN1bHQuZ2V0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICBpbmZvLkhvbGRlcigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHdyYXBwZXIpOwor
ICAgIHJldHVybiB3cmFwcGVyOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQxMGU0NDdiMjc4
ZTIwZTdiMjQxZDBkMWU4Y2JmNjZjMWMxNTIzMWYuLjFlZjM1ZjZmODcwYmZiYzcxN2EzODZlNmE3
NWQ3Yzg1NGFmMTg2OTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMSAgQWxlYyBG
bGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVkREI6
IEN1cnNvciB2YWx1ZSBtb2RpZmljYXRpb25zIHNob3VsZCBiZSBwcmVzZXJ2ZWQgdW50aWwgY3Vy
c29yIGl0ZXJhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXZhbHVlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanM6IEFk
ZGVkLgorICAgICAgICAob3BlbkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgIChvcGVuRGF0YWJhc2UpOgorICAgICAgICAodGVzdEN1cnNvci5yZXF1ZXN0Lm9uc3VjY2Vz
cyk6CisgICAgICAgICh0ZXN0Q3Vyc29yKToKKyAgICAgICAgKGVuc3VyZU1vZGlmaWNhdGlvbnNO
b3RQZXJzaXN0ZWQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZW5zdXJlTW9kaWZpY2F0
aW9uc05vdFBlcnNpc3RlZCk6CisKIDIwMTItMDYtMTIgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNh
a0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtTaGFkb3cgRE9NXSA8c3R5bGU+IGluc2lkZSBTaGFk
b3cgc3VidHJlZSBzaG91bGQgYmUgc2NvcGVkIGluc2lkZSB0aGUgc3VidHJlZS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMwM2E0MjE1YWNlNmU3NDMxYzNjMWM4ZTIyODEyZjdmMWMxYjdkN2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
dmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTI5IEBACitUZXN0IEluZGV4ZWREQidzIGN1
cnNvciB2YWx1ZSBwcm9wZXJ0eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2lu
ZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYu
bW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCity
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci12YWx1ZScpCitkYiA9IHJlcXVlc3QucmVz
dWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQordHJhbnNhY3Rpb24g
PSByZXF1ZXN0LnJlc3VsdAorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK2RiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZScpCisKK3Rlc3RDdXJzb3IoKToKK3RyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpCitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpCitzdG9yZS5wdXQoe2E6IDEsIGI6IDEwfSwgJ2tleTEnKQorc3RvcmUu
cHV0KHthOiAyLCBiOiAyMH0sICdrZXkyJykKK3N0b3JlLnB1dCh7YTogMywgYjogMzB9LCAna2V5
MycpCitzdG9yZS5wdXQoe2E6IDQsIGI6IDQwfSwgJ2tleTQnKQorc3RvcmUucHV0KHthOiA1LCBi
OiA1MH0sICdrZXk1JykKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKKworLS0tLS0tLS0t
LQorVmFsdWUgYXQgaW5kZXg6IDAKK2N1cnNvciA9IHJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNv
ci5rZXkgaXMgZXhwZWN0ZWRLZXkKKworQ2hlY2sgZXhwZWN0ZWQgdmFsdWVzOgorUEFTUyBjdXJz
b3IudmFsdWUuYSBpcyBleHBlY3RlZEEKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMgZXhwZWN0ZWRC
CitQQVNTIGN1cnNvci52YWx1ZS5mb28gaXMgdW5kZWZpbmVkCisKK01vZGlmeSB2YWx1ZXM6Citj
dXJzb3IudmFsdWUuYSA9IDMKK2RlbGV0ZSBjdXJzb3IudmFsdWUuYgorY3Vyc29yLnZhbHVlLmZv
byA9ICdiYXInCisKK0Vuc3VyZSBtb2RpZmljYXRpb25zIGFyZSByZXRhaW5lZDoKK1BBU1MgY3Vy
c29yLnZhbHVlLmEgaXMgMworUEFTUyBjdXJzb3IudmFsdWUuYiBpcyB1bmRlZmluZWQKK1BBU1Mg
Y3Vyc29yLnZhbHVlLmZvbyBpcyAnYmFyJworCitDaGVjayBvYmplY3QgdmFsdWUgc3Vydml2ZXMg
Z2MKK2djKCkKK1BBU1MgY3Vyc29yLnZhbHVlLmEgaXMgMworUEFTUyBjdXJzb3IudmFsdWUuYiBp
cyB1bmRlZmluZWQKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBpcyAnYmFyJworCitDaGVjayBvYmpl
Y3QgaWRlbnRpdHkKK2xvY2FsVmFsdWVSZWYgPSBjdXJzb3IudmFsdWUKK1BBU1MgbG9jYWxWYWx1
ZVJlZiBpcyBjdXJzb3IudmFsdWUKKworLS0tLS0tLS0tLQorVmFsdWUgYXQgaW5kZXg6IDEKK2N1
cnNvciA9IHJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0ZWRLZXkKKwor
Q2hlY2sgZXhwZWN0ZWQgdmFsdWVzOgorUEFTUyBjdXJzb3IudmFsdWUuYSBpcyBleHBlY3RlZEEK
K1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMgZXhwZWN0ZWRCCitQQVNTIGN1cnNvci52YWx1ZS5mb28g
aXMgdW5kZWZpbmVkCisKK01vZGlmeSB2YWx1ZXM6CitjdXJzb3IudmFsdWUuYSA9IDMKK2RlbGV0
ZSBjdXJzb3IudmFsdWUuYgorY3Vyc29yLnZhbHVlLmZvbyA9ICdiYXInCisKK0Vuc3VyZSBtb2Rp
ZmljYXRpb25zIGFyZSByZXRhaW5lZDoKK1BBU1MgY3Vyc29yLnZhbHVlLmEgaXMgMworUEFTUyBj
dXJzb3IudmFsdWUuYiBpcyB1bmRlZmluZWQKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBpcyAnYmFy
JworCitDaGVjayBvYmplY3QgdmFsdWUgc3Vydml2ZXMgZ2MKK2djKCkKK1BBU1MgY3Vyc29yLnZh
bHVlLmEgaXMgMworUEFTUyBjdXJzb3IudmFsdWUuYiBpcyB1bmRlZmluZWQKK1BBU1MgY3Vyc29y
LnZhbHVlLmZvbyBpcyAnYmFyJworCitDaGVjayBvYmplY3QgaWRlbnRpdHkKK2xvY2FsVmFsdWVS
ZWYgPSBjdXJzb3IudmFsdWUKK1BBU1MgbG9jYWxWYWx1ZVJlZiBpcyBjdXJzb3IudmFsdWUKKwor
LS0tLS0tLS0tLQorVmFsdWUgYXQgaW5kZXg6IDMKK2N1cnNvciA9IHJlcXVlc3QucmVzdWx0CitQ
QVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0ZWRLZXkKKworQ2hlY2sgZXhwZWN0ZWQgdmFsdWVzOgor
UEFTUyBjdXJzb3IudmFsdWUuYSBpcyBleHBlY3RlZEEKK1BBU1MgY3Vyc29yLnZhbHVlLmIgaXMg
ZXhwZWN0ZWRCCitQQVNTIGN1cnNvci52YWx1ZS5mb28gaXMgdW5kZWZpbmVkCisKK01vZGlmeSB2
YWx1ZXM6CitjdXJzb3IudmFsdWUuYSA9IDMKK2RlbGV0ZSBjdXJzb3IudmFsdWUuYgorY3Vyc29y
LnZhbHVlLmZvbyA9ICdiYXInCisKK0Vuc3VyZSBtb2RpZmljYXRpb25zIGFyZSByZXRhaW5lZDoK
K1BBU1MgY3Vyc29yLnZhbHVlLmEgaXMgMworUEFTUyBjdXJzb3IudmFsdWUuYiBpcyB1bmRlZmlu
ZWQKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBpcyAnYmFyJworCitDaGVjayBvYmplY3QgdmFsdWUg
c3Vydml2ZXMgZ2MKK2djKCkKK1BBU1MgY3Vyc29yLnZhbHVlLmEgaXMgMworUEFTUyBjdXJzb3Iu
dmFsdWUuYiBpcyB1bmRlZmluZWQKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBpcyAnYmFyJworCitD
aGVjayBvYmplY3QgaWRlbnRpdHkKK2xvY2FsVmFsdWVSZWYgPSBjdXJzb3IudmFsdWUKK1BBU1Mg
bG9jYWxWYWx1ZVJlZiBpcyBjdXJzb3IudmFsdWUKKworZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBl
cnNpc3RlZCgpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9u
bHknKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9
IHN0b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgY3Vyc29y
LmtleSBpcyAna2V5MScKKworQ2hlY2sgZXhwZWN0ZWQgdmFsdWVzOgorUEFTUyBjdXJzb3IudmFs
dWUuYSBpcyAxCitQQVNTIGN1cnNvci52YWx1ZS5iIGlzIDEwCitQQVNTIGN1cnNvci52YWx1ZS5m
b28gaXMgdW5kZWZpbmVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFs
dWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZjFiYzE0Nzc1MzMzNzY3NzhhZjcxYzAxMGEzM2NkNzFlZTFj
OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXZhbHVlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLXZhbHVlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci12YWx1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlZmU4NzQx
MTlkYTE3ZmVjMzZlZDZlZTVlYzA0MmY3YjA3NThjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdmFsdWUuanMKQEAgLTAs
MCArMSwxMjQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBjdXJzb3IgdmFsdWUgcHJvcGVydHkuIik7CisKK3JlbW92ZVZlbmRvclByZWZpeGVzKCk7Citv
cGVuRGF0YWJhc2UoKTsKKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci12YWx1ZScpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJl
c3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7CisgICAgICAgIH07CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gdGVzdEN1cnNvcigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0
Q3Vyc29yKCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0
KHthOiAxLCBiOiAxMH0sICdrZXkxJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2E6
IDIsIGI6IDIwfSwgJ2tleTInKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7YTogMywg
YjogMzB9LCAna2V5MycpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHthOiA0LCBiOiA0
MH0sICdrZXk0JykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2E6IDUsIGI6IDUwfSwg
J2tleTUnKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2
YXIgaW5kZXggPSAwOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIi0tLS0tLS0tLS0iKTsKKyAgICAgICAgZGVi
dWcoIlZhbHVlIGF0IGluZGV4OiAiICsgaW5kZXgpOworICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAg
ICAgICAgZW5zdXJlT2JqZWN0RGF0YSgxLCAxMCwgJ2tleTEnKTsKKyAgICAgICAgICAgIGN1cnNv
ci5jb250aW51ZSgpOworICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgfSBlbHNlIGlmIChp
bmRleCA9PSAxKSB7CisgICAgICAgICAgICBlbnN1cmVPYmplY3REYXRhKDIsIDIwLCAna2V5Micp
OworICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMik7CisgICAgICAgICAgICBpbmRleCArPSAy
OworICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDMpIHsKKyAgICAgICAgICAgIGVuc3VyZU9i
amVjdERhdGEoNCwgNDAsICdrZXk0Jyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJCYWQgaW5kZXg6ICIgKyBpbmRleCk7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGVuc3VyZU1vZGlmaWNhdGlvbnNOb3RQZXJzaXN0
ZWQ7Cit9CisKK2Z1bmN0aW9uIGVuc3VyZU9iamVjdERhdGEoYSwgYiwga2V5KQoreworICAgIGV4
cGVjdGVkQSA9IGE7CisgICAgZXhwZWN0ZWRCID0gYjsKKyAgICBleHBlY3RlZEtleSA9IGtleTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJleHBlY3RlZEtleSIpOworCisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJDaGVjayBleHBlY3RlZCB2YWx1ZXM6Iik7CisgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5hIiwgImV4cGVjdGVkQSIpOworICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUuYiIsICJleHBlY3RlZEIiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICJ1
bmRlZmluZWQiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiTW9kaWZ5IHZhbHVlczoi
KTsKKyAgICBldmFsQW5kTG9nKCJjdXJzb3IudmFsdWUuYSA9IDMiKTsKKyAgICBldmFsQW5kTG9n
KCJkZWxldGUgY3Vyc29yLnZhbHVlLmIiKTsKKyAgICBldmFsQW5kTG9nKCJjdXJzb3IudmFsdWUu
Zm9vID0gJ2JhciciKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiRW5zdXJlIG1vZGlm
aWNhdGlvbnMgYXJlIHJldGFpbmVkOiIpOworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuYSIs
ICIzIik7CisgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgInVuZGVmaW5lZCIpOworICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7CisKKyAgICAvLyBtYWtlIHN1
cmUgdG8gdGVzdCBHQyBiZWZvcmUgaG9sZGluZyBhIHNwZWNpZmljIHJlZiB0byB0aGUgdmFsdWUK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNoZWNrIG9iamVjdCB2YWx1ZSBzdXJ2aXZlcyBn
YyIpOworICAgIGV2YWxBbmRMb2coImdjKCkiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmEiLCAiMyIpOworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuYiIsICJ1bmRlZmluZWQiKTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIsICInYmFyJyIpOworCisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJDaGVjayBvYmplY3QgaWRlbnRpdHkiKTsKKyAgICBldmFsQW5kTG9n
KCJsb2NhbFZhbHVlUmVmID0gY3Vyc29yLnZhbHVlIik7CisgICAgc2hvdWxkQmUoImxvY2FsVmFs
dWVSZWYiLCAiY3Vyc29yLnZhbHVlIik7Cit9CisKK2Z1bmN0aW9uIGVuc3VyZU1vZGlmaWNhdGlv
bnNOb3RQZXJzaXN0ZWQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZW5zdXJlTW9k
aWZpY2F0aW9uc05vdFBlcnNpc3RlZCgpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFu
ZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7
CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIidrZXkxJyIpOworCisgICAgICAgIGRl
YnVnKCIiKTsKKyAgICAgICAgZGVidWcoIkNoZWNrIGV4cGVjdGVkIHZhbHVlczoiKTsKKyAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hIiwgIjEiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5iIiwgIjEwIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9v
IiwgInVuZGVmaW5lZCIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZp
bmlzaEpTVGVzdDsKKyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147350</attachid>
            <date>2012-06-13 10:01:35 -0700</date>
            <delta_ts>2012-06-13 13:30:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-83526-20120613100135.patch</filename>
            <type>text/plain</type>
            <size>19567</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmOWQ2NmJiMjA3ZmMw
NTI3Y2I2NzQ3YzA1NWNjYTY5NTA3NGNiYi4uYTAyMzQ2Y2E4ZmMwOTJmZTE5NWViNGIwMWJkNzYz
ODRkZjAyYzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA2LTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEluZGV4ZWRE
QjogQ3Vyc29yIHZhbHVlIG1vZGlmaWNhdGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZCB1bnRpbCBj
dXJzb3IgaXRlcmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgorCisgICAg
ICAgIENhY2hlIHRoZSAndmFsdWUnIGF0dHJpYnV0ZSBvZiBJREJDdXJzb3JXaXRoVmFsdWUgd2l0
aCBwb2xpY3kKKyAgICAgICAgZGV0ZXJtaW5lZCBieSBJREJDdXJzb3IuY3BwLCB0byBmb2xsb3cg
c3BlYyBiZWhhdmlvciBvZiBrZWVwaW5nIGEKKyAgICAgICAgY29uc2lzdGVudCBzY3JpcHQgb2Jq
ZWN0IHVudGlsIHRoZSBjdXJzb3IgYWR2YW5jZXMuIFNlZQorICAgICAgICBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9JbmRleGVkREIvI3dpZGwtSURCQ3Vyc29yV2l0aFZhbHVlU3luYy12YWx1ZQorICAg
ICAgICBmb3IgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItdmFsdWUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpz
ZXRWYWx1ZVJlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoK
KyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnZhbHVl
SXNEaXJ0eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVl
LmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURC
Q3VzdG9tQmluZGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhJREJDdXJzb3JXaXRoVmFsdWU6OnZhbHVlQWNjZXNzb3JHZXR0ZXIpOgorCiAy
MDEyLTA2LTEyICBXZWkgSmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29tPgogCiAgICAgICAgIHdl
YmNvcmUgc2hvdWxkIGRlcGVuZCBvbiB3ZWJjb3JlX2FybV9uZW9uIGZvciBvbmx5IGFybSB0YXJn
ZXRfYXJjaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKaW5kZXggZmM3OTM3NTBjMTkyOTc2YzE4ODEzMTdiZWY0OTY0Y2VlODczYzJmNy4uYThjNDMz
MGQxODc5YWU5NzMwMjY5Nzg5MzQ0ODliZjA3YzFkNWY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC03Nyw2ICs3Nyw3IEBAIElEQkN1
cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCwgSURCUmVxdWVzdCoKICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAg
LCBtX3RyYW5zYWN0aW9uTm90aWZpZXIodHJhbnNhY3Rpb24sIHRoaXMpCiAgICAgLCBtX2dvdFZh
bHVlKGZhbHNlKQorICAgICwgbV92YWx1ZUlzRGlydHkodHJ1ZSkKIHsKICAgICBBU1NFUlQobV9i
YWNrZW5kKTsKICAgICBBU1NFUlQobV9yZXF1ZXN0KTsKQEAgLTEwOSw5ICsxMTAsMTAgQEAgUGFz
c1JlZlB0cjxJREJLZXk+IElEQkN1cnNvcjo6cHJpbWFyeUtleSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY3VycmVudFByaW1hcnlLZXk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQW55PiBJREJDdXJzb3I6
OnZhbHVlKCkgY29uc3QKK1Bhc3NSZWZQdHI8SURCQW55PiBJREJDdXJzb3I6OnZhbHVlKCkKIHsK
ICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6dmFsdWUiKTsKKyAgICBtX3ZhbHVlSXNEaXJ0eSA9
IGZhbHNlOwogICAgIHJldHVybiBtX2N1cnJlbnRWYWx1ZTsKIH0KIApAQCAtMjQxLDYgKzI0Myw3
IEBAIHZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KCkKICAgICBtX2N1cnJlbnRQcmltYXJ5
S2V5ID0gbV9iYWNrZW5kLT5wcmltYXJ5S2V5KCk7CiAgICAgbV9jdXJyZW50VmFsdWUgPSBJREJB
bnk6OmNyZWF0ZShtX2JhY2tlbmQtPnZhbHVlKCkpOwogICAgIG1fZ290VmFsdWUgPSB0cnVlOwor
ICAgIG1fdmFsdWVJc0RpcnR5ID0gdHJ1ZTsKIH0KIAogdW5zaWduZWQgc2hvcnQgSURCQ3Vyc29y
OjpzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0
aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5oCmluZGV4IGNlY2UwMGE0ZjJjN2E0NWY4NTkxOTMwMTlkNzNiZmVjYWFiYzA5MTQuLjNmOWQ4
NGY5ODgxMTgxMmM2YmZjYjUzYzIzODgzMWVlM2ZiYjVlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbigpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXkoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8SURCQW55PiB2YWx1ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8SURCQW55PiB2YWx1ZSgpOwogICAgIElEQkFueSogc291cmNlKCkgY29uc3Q7CiAKICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CkBAIC04NCw2
ICs4NCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgc2V0VmFsdWVS
ZWFkeSgpOwogCisgICAgLy8gVGhlIHNwZWMgcmVxdWlyZXMgdGhhdCB0aGUgc2NyaXB0IG9iamVj
dCB0aGF0IHdyYXBzIHRoZSB2YWx1ZQorICAgIC8vIGJlIHVuY2hhbmdlZCB1bnRpbCB0aGUgdmFs
dWUgY2hhbmdlcyBhcyBhIHJlc3VsdCBvZiB0aGUgY3Vyc29yCisgICAgLy8gYWR2YW5jaW5nLgor
ICAgIGJvb2wgdmFsdWVJc0RpcnR5KCkgeyByZXR1cm4gbV92YWx1ZUlzRGlydHk7IH0KKwogcHJv
dGVjdGVkOgogICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+LCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAKQEAg
LTk5LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5
OwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudFByaW1hcnlLZXk7CiAgICAgUmVmUHRyPElE
QkFueT4gbV9jdXJyZW50VmFsdWU7CisgICAgYm9vbCBtX3ZhbHVlSXNEaXJ0eTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaWRsCmluZGV4IDZmZmM1YjU1NDgxYWYwN2M1
YTc5ZThlNWJkYWQ1YjJlZWUwNWVlNjYuLjUxMmVhNDA1ZTQ0YTkxYzU3NjEzNjU0NGQ3YjUzZWFm
MTJmODAwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmlkbApAQCAtMjgsNiArMjgsNiBAQCBtb2R1bGUgc3RvcmFn
ZSB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFT
RQogICAgIF0gSURCQ3Vyc29yV2l0aFZhbHVlIDogSURCQ3Vyc29yIHsKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIElEQkFueSB2YWx1ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtW
OEN1c3RvbUdldHRlcl0gSURCQW55IHZhbHVlOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VWOC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCmluZGV4
IDQ0OGUyNjZhODcxZGY1ODdjMzlmNmEyOWY3ZWQ0NjY1NDA1OWNjMTkuLmZmZmMyNmIxMzVlNDJm
MzM2ZmY3Mjc0OWI0ZTRhNTJiZDE3NzNlZGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Vz
ZVY4LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCkBAIC0yMiw2ICsyMiw3
IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L0RPTVdyYXBw
ZXJXb3JsZC5jcHAKICAgICBiaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAogICAgIGJpbmRp
bmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisgICAgYmluZGluZ3MvdjgvSURCQ3VzdG9t
QmluZGluZ3MuY3BwCiAgICAgYmluZGluZ3MvdjgvSXNvbGF0ZWRXb3JsZC5jcHAKICAgICBiaW5k
aW5ncy92OC9EaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkMjI1YjlhNWY4ZDRlZWE1NzhjYWZhMmVlZTVi
NDM5MmYwZTA0OTA3Li5kNjcwOTM1Y2Q4MmZkMGY0NGI0NDRjNDgwNmE1NGYxYzk4MWZiNzUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yMTI2LDYgKzIxMjYsNyBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L0RhdGVFeHRlbnNpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdV
dGlsaXRpZXMuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3Mu
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lzb2xhdGVkV29ybGQuY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9Jc29sYXRlZFdvcmxkLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2MTBmZWZmNDk3ZDRmOTg0ZDQxNzM5ZWM2
MGRlNjdiYzE1MWZiM2RiLi40NWNkMDIyODRiNmE1ZGY5NDFiNGE0ZmMzZTc0MGViNTg4NTY1MjU5
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
NjM1MzAsNiArNjM1MzAsNTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXElEQkN1c3RvbUJpbmRpbmdzLmNwcCIKKwkJ
CQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29s
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQ3VzdG9t
QmluZGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGlu
Z3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2NTY5NzYzZTNmMDAyN2EzM2ZkYjBmNmE0MTJjNjEyMTY5MmNi
MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJDdXN0
b21CaW5kaW5ncy5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJWOElEQkN1cnNvcldpdGhWYWx1ZS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKKyNpbmNsdWRlICJWOElEQkFueS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOElEQkN1cnNvcldpdGhWYWx1ZTo6dmFsdWVBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5JREJDdXJzb3JXaXRoVmFsdWUudmFsdWUuX2dl
dCIpOworCisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKiBpbXAgPSBWOElEQkN1cnNvcldpdGhWYWx1
ZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBw
cm9wZXJ0eU5hbWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhbHVlIik7CisgICAgaWYgKCFp
bXAtPnZhbHVlSXNEaXJ0eSgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSA9IGluZm8uSG9sZGVyKCktPkdldEhpZGRlblZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgICAg
IGlmICghdmFsdWUuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0K
KworICAgIFJlZlB0cjxJREJBbnk+IHJlc3VsdCA9IGltcC0+dmFsdWUoKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHRvVjgocmVzdWx0LmdldCgpLCBpbmZvLkdldElzb2xh
dGUoKSk7CisgICAgaW5mby5Ib2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lLCB3
cmFwcGVyKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAy
MWNjYWQyZmFkYzUxYzE5NGZjNDFlODFhMjllNjg5ZjA4MTdlZjk3Li41NzVmYTRkNTM2YWU5YzQ1
MjA4OTdlZWI0ZTgwNDAxZWFhNzdlYjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDYt
MTEgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0g
SW5kZXhlZERCOiBDdXJzb3IgdmFsdWUgbW9kaWZpY2F0aW9ucyBzaG91bGQgYmUgcHJlc2VydmVk
IHVudGlsIGN1cnNvciBpdGVyYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODM1MjYKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEu
CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci12YWx1
ZS5qczogQWRkZWQuCisgICAgICAgIChvcGVuRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAob3BlbkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKG9wZW5EYXRhYmFzZSk6CisgICAgICAgICh0ZXN0Q3Vyc29yLnJlcXVlc3Qu
b25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RDdXJzb3IpOgorICAgICAgICAoZW5zdXJlTW9kaWZp
Y2F0aW9uc05vdFBlcnNpc3RlZC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChlbnN1cmVN
b2RpZmljYXRpb25zTm90UGVyc2lzdGVkKToKKwogMjAxMi0wNi0xMiAgRWRhZW5hIFNhbGluYXMg
SmFzc28gIDxlZGFlbmFAYXBwbGUuY29tPgogCiAgICAgICAgIENhbid0IHNldCBlbC50eXBlIG9u
IGEgPGJ1dHRvbj4gZWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci12YWx1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAzYTQyMTVhY2U2
ZTc0MzFjM2MxYzhlMjI4MTJmN2YxYzFiN2Q3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMjkgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHZhbHVlIHByb3BlcnR5LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwg
c2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4
ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vy
c29yLXZhbHVlJykKK2RiID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCduZXcgdmVyc2lvbicpCit0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0CitEZWxldGVkIGFs
bCBvYmplY3Qgc3RvcmVzLgorZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKwordGVzdEN1
cnNvcigpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRl
JykKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCh7
YTogMSwgYjogMTB9LCAna2V5MScpCitzdG9yZS5wdXQoe2E6IDIsIGI6IDIwfSwgJ2tleTInKQor
c3RvcmUucHV0KHthOiAzLCBiOiAzMH0sICdrZXkzJykKK3N0b3JlLnB1dCh7YTogNCwgYjogNDB9
LCAna2V5NCcpCitzdG9yZS5wdXQoe2E6IDUsIGI6IDUwfSwgJ2tleTUnKQorcmVxdWVzdCA9IHN0
b3JlLm9wZW5DdXJzb3IoKQorCistLS0tLS0tLS0tCitWYWx1ZSBhdCBpbmRleDogMAorY3Vyc29y
ID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3RlZEtleQorCitDaGVj
ayBleHBlY3RlZCB2YWx1ZXM6CitQQVNTIGN1cnNvci52YWx1ZS5hIGlzIGV4cGVjdGVkQQorUEFT
UyBjdXJzb3IudmFsdWUuYiBpcyBleHBlY3RlZEIKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBpcyB1
bmRlZmluZWQKKworTW9kaWZ5IHZhbHVlczoKK2N1cnNvci52YWx1ZS5hID0gMworZGVsZXRlIGN1
cnNvci52YWx1ZS5iCitjdXJzb3IudmFsdWUuZm9vID0gJ2JhcicKKworRW5zdXJlIG1vZGlmaWNh
dGlvbnMgYXJlIHJldGFpbmVkOgorUEFTUyBjdXJzb3IudmFsdWUuYSBpcyAzCitQQVNTIGN1cnNv
ci52YWx1ZS5iIGlzIHVuZGVmaW5lZAorUEFTUyBjdXJzb3IudmFsdWUuZm9vIGlzICdiYXInCisK
K0NoZWNrIG9iamVjdCB2YWx1ZSBzdXJ2aXZlcyBnYworZ2MoKQorUEFTUyBjdXJzb3IudmFsdWUu
YSBpcyAzCitQQVNTIGN1cnNvci52YWx1ZS5iIGlzIHVuZGVmaW5lZAorUEFTUyBjdXJzb3IudmFs
dWUuZm9vIGlzICdiYXInCisKK0NoZWNrIG9iamVjdCBpZGVudGl0eQorbG9jYWxWYWx1ZVJlZiA9
IGN1cnNvci52YWx1ZQorUEFTUyBsb2NhbFZhbHVlUmVmIGlzIGN1cnNvci52YWx1ZQorCistLS0t
LS0tLS0tCitWYWx1ZSBhdCBpbmRleDogMQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK1BBU1Mg
Y3Vyc29yLmtleSBpcyBleHBlY3RlZEtleQorCitDaGVjayBleHBlY3RlZCB2YWx1ZXM6CitQQVNT
IGN1cnNvci52YWx1ZS5hIGlzIGV4cGVjdGVkQQorUEFTUyBjdXJzb3IudmFsdWUuYiBpcyBleHBl
Y3RlZEIKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBpcyB1bmRlZmluZWQKKworTW9kaWZ5IHZhbHVl
czoKK2N1cnNvci52YWx1ZS5hID0gMworZGVsZXRlIGN1cnNvci52YWx1ZS5iCitjdXJzb3IudmFs
dWUuZm9vID0gJ2JhcicKKworRW5zdXJlIG1vZGlmaWNhdGlvbnMgYXJlIHJldGFpbmVkOgorUEFT
UyBjdXJzb3IudmFsdWUuYSBpcyAzCitQQVNTIGN1cnNvci52YWx1ZS5iIGlzIHVuZGVmaW5lZAor
UEFTUyBjdXJzb3IudmFsdWUuZm9vIGlzICdiYXInCisKK0NoZWNrIG9iamVjdCB2YWx1ZSBzdXJ2
aXZlcyBnYworZ2MoKQorUEFTUyBjdXJzb3IudmFsdWUuYSBpcyAzCitQQVNTIGN1cnNvci52YWx1
ZS5iIGlzIHVuZGVmaW5lZAorUEFTUyBjdXJzb3IudmFsdWUuZm9vIGlzICdiYXInCisKK0NoZWNr
IG9iamVjdCBpZGVudGl0eQorbG9jYWxWYWx1ZVJlZiA9IGN1cnNvci52YWx1ZQorUEFTUyBsb2Nh
bFZhbHVlUmVmIGlzIGN1cnNvci52YWx1ZQorCistLS0tLS0tLS0tCitWYWx1ZSBhdCBpbmRleDog
MworY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3RlZEtl
eQorCitDaGVjayBleHBlY3RlZCB2YWx1ZXM6CitQQVNTIGN1cnNvci52YWx1ZS5hIGlzIGV4cGVj
dGVkQQorUEFTUyBjdXJzb3IudmFsdWUuYiBpcyBleHBlY3RlZEIKK1BBU1MgY3Vyc29yLnZhbHVl
LmZvbyBpcyB1bmRlZmluZWQKKworTW9kaWZ5IHZhbHVlczoKK2N1cnNvci52YWx1ZS5hID0gMwor
ZGVsZXRlIGN1cnNvci52YWx1ZS5iCitjdXJzb3IudmFsdWUuZm9vID0gJ2JhcicKKworRW5zdXJl
IG1vZGlmaWNhdGlvbnMgYXJlIHJldGFpbmVkOgorUEFTUyBjdXJzb3IudmFsdWUuYSBpcyAzCitQ
QVNTIGN1cnNvci52YWx1ZS5iIGlzIHVuZGVmaW5lZAorUEFTUyBjdXJzb3IudmFsdWUuZm9vIGlz
ICdiYXInCisKK0NoZWNrIG9iamVjdCB2YWx1ZSBzdXJ2aXZlcyBnYworZ2MoKQorUEFTUyBjdXJz
b3IudmFsdWUuYSBpcyAzCitQQVNTIGN1cnNvci52YWx1ZS5iIGlzIHVuZGVmaW5lZAorUEFTUyBj
dXJzb3IudmFsdWUuZm9vIGlzICdiYXInCisKK0NoZWNrIG9iamVjdCBpZGVudGl0eQorbG9jYWxW
YWx1ZVJlZiA9IGN1cnNvci52YWx1ZQorUEFTUyBsb2NhbFZhbHVlUmVmIGlzIGN1cnNvci52YWx1
ZQorCitlbnN1cmVNb2RpZmljYXRpb25zTm90UGVyc2lzdGVkKCk6Cit0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpCitzdG9yZSA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZScpCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpCitjdXJzb3Ig
PSByZXF1ZXN0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzICdrZXkxJworCitDaGVjayBleHBl
Y3RlZCB2YWx1ZXM6CitQQVNTIGN1cnNvci52YWx1ZS5hIGlzIDEKK1BBU1MgY3Vyc29yLnZhbHVl
LmIgaXMgMTAKK1BBU1MgY3Vyc29yLnZhbHVlLmZvbyBpcyB1bmRlZmluZWQKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMWJjMTQ3
NzUzMzM3Njc3OGFmNzFjMDEwYTMzY2Q3MWVlMWM5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdmFsdWUuaHRtbApAQCAtMCwwICsxLDEw
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
dXJzb3ItdmFsdWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXZh
bHVlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci12
YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MWVmZTg3NDExOWRhMTdmZWMzNmVkNmVlNWVjMDQyZjdiMDc1
OGM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2N1cnNvci12YWx1ZS5qcwpAQCAtMCwwICsxLDEyNCBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciB2YWx1ZSBwcm9wZXJ0eS4iKTsK
KworcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKK29wZW5EYXRhYmFzZSgpOworCitmdW5jdGlvbiBv
cGVuRGF0YWJhc2UoKQoreworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bignY3Vyc29yLXZhbHVlJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZScpIik7CisgICAgICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdEN1cnNv
cjsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0Q3Vyc29yKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RDdXJzb3IoKToiKTsKKyAgICBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOwor
ICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyki
KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2E6IDEsIGI6IDEwfSwgJ2tleTEnKSIpOwor
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7YTogMiwgYjogMjB9LCAna2V5MicpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KHthOiAzLCBiOiAzMH0sICdrZXkzJykiKTsKKyAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoe2E6IDQsIGI6IDQwfSwgJ2tleTQnKSIpOworICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCh7YTogNSwgYjogNTB9LCAna2V5NScpIik7CisgICAgZXZhbEFuZExvZygi
cmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZhciBpbmRleCA9IDA7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1
ZygiLS0tLS0tLS0tLSIpOworICAgICAgICBkZWJ1ZygiVmFsdWUgYXQgaW5kZXg6ICIgKyBpbmRl
eCk7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAg
ICAgIGlmIChpbmRleCA9PSAwKSB7CisgICAgICAgICAgICBlbnN1cmVPYmplY3REYXRhKDEsIDEw
LCAna2V5MScpOworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgICAgICBp
bmRleCsrOworICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDEpIHsKKyAgICAgICAgICAgIGVu
c3VyZU9iamVjdERhdGEoMiwgMjAsICdrZXkyJyk7CisgICAgICAgICAgICBjdXJzb3IuYWR2YW5j
ZSgyKTsKKyAgICAgICAgICAgIGluZGV4ICs9IDI7CisgICAgICAgIH0gZWxzZSBpZiAoaW5kZXgg
PT0gMykgeworICAgICAgICAgICAgZW5zdXJlT2JqZWN0RGF0YSg0LCA0MCwgJ2tleTQnKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkJhZCBpbmRleDogIiArIGlu
ZGV4KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNpc3RlZDsKK30KKworZnVuY3Rpb24gZW5zdXJlT2Jq
ZWN0RGF0YShhLCBiLCBrZXkpCit7CisgICAgZXhwZWN0ZWRBID0gYTsKKyAgICBleHBlY3RlZEIg
PSBiOworICAgIGV4cGVjdGVkS2V5ID0ga2V5OworICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
ImV4cGVjdGVkS2V5Iik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNoZWNrIGV4cGVj
dGVkIHZhbHVlczoiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEiLCAiZXhwZWN0ZWRB
Iik7CisgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5iIiwgImV4cGVjdGVkQiIpOworICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgInVuZGVmaW5lZCIpOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJNb2RpZnkgdmFsdWVzOiIpOworICAgIGV2YWxBbmRMb2coImN1cnNvci52
YWx1ZS5hID0gMyIpOworICAgIGV2YWxBbmRMb2coImRlbGV0ZSBjdXJzb3IudmFsdWUuYiIpOwor
ICAgIGV2YWxBbmRMb2coImN1cnNvci52YWx1ZS5mb28gPSAnYmFyJyIpOworCisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJFbnN1cmUgbW9kaWZpY2F0aW9ucyBhcmUgcmV0YWluZWQ6Iik7Cisg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hIiwgIjMiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLmIiLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5mb28i
LCAiJ2JhciciKTsKKworICAgIC8vIG1ha2Ugc3VyZSB0byB0ZXN0IEdDIGJlZm9yZSBob2xkaW5n
IGEgc3BlY2lmaWMgcmVmIHRvIHRoZSB2YWx1ZQorICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
Q2hlY2sgb2JqZWN0IHZhbHVlIHN1cnZpdmVzIGdjIik7CisgICAgZXZhbEFuZExvZygiZ2MoKSIp
OworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuYSIsICIzIik7CisgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5iIiwgInVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
Zm9vIiwgIidiYXInIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNoZWNrIG9iamVj
dCBpZGVudGl0eSIpOworICAgIGV2YWxBbmRMb2coImxvY2FsVmFsdWVSZWYgPSBjdXJzb3IudmFs
dWUiKTsKKyAgICBzaG91bGRCZSgibG9jYWxWYWx1ZVJlZiIsICJjdXJzb3IudmFsdWUiKTsKK30K
KworZnVuY3Rpb24gZW5zdXJlTW9kaWZpY2F0aW9uc05vdFBlcnNpc3RlZCgpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJlbnN1cmVNb2RpZmljYXRpb25zTm90UGVyc2lzdGVkKCk6Iik7
CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAn
cmVhZG9ubHknKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUub3BlbkN1
cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAiJ2tleTEnIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiQ2hl
Y2sgZXhwZWN0ZWQgdmFsdWVzOiIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEi
LCAiMSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmIiLCAiMTAiKTsKKyAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5mb28iLCAidW5kZWZpbmVkIik7CisgICAgfTsKKyAg
ICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworIH0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>