<?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>145599</bug_id>
          
          <creation_ts>2015-06-03 02:05:37 -0700</creation_ts>
          <short_desc>Implement RegExp.prototype.flags</short_desc>
          <delta_ts>2015-06-17 01:40:28 -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>JavaScriptCore</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>https://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.flags</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145705</dependson>
    
    <dependson>145706</dependson>
          <blocked>146052</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jordan Harband">ljharb</reporter>
          <assigned_to name="Jordan Harband">ljharb</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099111</commentid>
    <comment_count>0</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-03 02:05:37 -0700</bug_when>
    <thetext>Per https://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.flags, the RegExp.prototype.flags getter should return a sorted string of the flag characters, suitable for being passed into the RegExp constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099183</commentid>
    <comment_count>1</comment_count>
      <attachid>254186</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-03 10:24:16 -0700</bug_when>
    <thetext>Created attachment 254186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099189</commentid>
    <comment_count>2</comment_count>
      <attachid>254186</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-03 10:56:41 -0700</bug_when>
    <thetext>Comment on attachment 254186
Patch

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

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:76
&gt; +void RegExpPrototype::finishCreation(VM&amp; vm, JSGlobalObject* globalObject)
&gt; +{
&gt; +    JSFunction* flagsFunction = JSFunction::create(vm, globalObject, 0, vm.propertyNames-&gt;flags.string(), regExpProtoFuncGetFlags);
&gt; +    GetterSetter* accessor = GetterSetter::create(vm, globalObject);
&gt; +    accessor-&gt;setGetter(vm, globalObject, flagsFunction);
&gt; +    putDirectNonIndexAccessor(vm, vm.propertyNames-&gt;flags, accessor, DontEnum | Accessor);
&gt; +}

Can you use a standard host property instead of a Javascript getter? That&apos;s more efficient, and it should require less code.

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:139
&gt; +static inline String getRegExpFlags(ExecState *exec, RegExpObject* regexp)

We usually use &quot;get&quot; to mean &quot;returns a value through an out parameter&quot;. This function should be named &quot;flags()&quot; or &quot;flagsString()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099205</commentid>
    <comment_count>3</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-03 11:54:41 -0700</bug_when>
    <thetext>(In reply to comment #2)
Can you use a standard host property instead of a Javascript getter? That&apos;s
&gt; more efficient, and it should require less code.
No, the spec requires that it be a getter on the prototype.

&gt; &gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:139
&gt; &gt; +static inline String getRegExpFlags(ExecState *exec, RegExpObject* regexp)
&gt; 
&gt; We usually use &quot;get&quot; to mean &quot;returns a value through an out parameter&quot;.
&gt; This function should be named &quot;flags()&quot; or &quot;flagsString()&quot;.
Sure, I&apos;ll rename it this evening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099228</commentid>
    <comment_count>4</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-03 13:01:20 -0700</bug_when>
    <thetext>Actually, perhaps I misunderstood your comment - can you point me to an example of a &quot;standard host property&quot; instead of a getter?

Also, note that &quot;flags&quot; is meant to work with subclassing, so it&apos;d always need to check the appropriate flag properties (global, etc), even if it&apos;s .call-ed with a RegExp subclass instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099245</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-03 13:28:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Also, note that &quot;flags&quot; is meant to work with subclassing, so it&apos;d always
&gt; need to check the appropriate flag properties (global, etc), even if it&apos;s
&gt; .call-ed with a RegExp subclass instance.

Should cover that with a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099261</commentid>
    <comment_count>6</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-03 13:54:30 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Also, note that &quot;flags&quot; is meant to work with subclassing, so it&apos;d always
&gt; &gt; need to check the appropriate flag properties (global, etc), even if it&apos;s
&gt; &gt; .call-ed with a RegExp subclass instance.
&gt; 
&gt; Should cover that with a test case.
Good call - WK doesn&apos;t support subclassing yet afaik, but I can definitely call it with a generic object in tests and make sure the right strings are produced. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099392</commentid>
    <comment_count>7</comment_count>
      <attachid>254242</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-03 21:44:30 -0700</bug_when>
    <thetext>Created attachment 254242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099584</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-04 13:30:13 -0700</bug_when>
    <thetext>&gt; Actually, perhaps I misunderstood your comment - can you point me to an
&gt; example of a &quot;standard host property&quot; instead of a getter?

Consider the other properties of a RegExpObject: global; ignoreCase; multiline; and source. To produce a standard host property, they list themselves in a table:

/* Source for RegExpObject.lut.h
@begin regExpTable
    global        regExpObjectGlobal       DontDelete|ReadOnly|DontEnum
    ignoreCase    regExpObjectIgnoreCase   DontDelete|ReadOnly|DontEnum
    multiline     regExpObjectMultiline    DontDelete|ReadOnly|DontEnum
    source        regExpObjectSource       DontDelete|ReadOnly|DontEnum
@end

This table is processed by a script at compile time in order to produce a hash table of properties.

The second entry in the table indicates the function to call in order to access the property. 

Can you make flags work this way?

&gt; Also, note that &quot;flags&quot; is meant to work with subclassing, so it&apos;d always
&gt; need to check the appropriate flag properties (global, etc), even if it&apos;s
&gt; .call-ed with a RegExp subclass instance.

Yup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099587</commentid>
    <comment_count>9</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-04 13:37:57 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Actually, perhaps I misunderstood your comment - can you point me to an
&gt; &gt; example of a &quot;standard host property&quot; instead of a getter?
&gt; 
&gt; Consider the other properties of a RegExpObject: global; ignoreCase;
&gt; multiline; and source. To produce a standard host property, they list
&gt; themselves in a table:
&gt; 
&gt; /* Source for RegExpObject.lut.h
&gt; @begin regExpTable
&gt;     global        regExpObjectGlobal       DontDelete|ReadOnly|DontEnum
&gt;     ignoreCase    regExpObjectIgnoreCase   DontDelete|ReadOnly|DontEnum
&gt;     multiline     regExpObjectMultiline    DontDelete|ReadOnly|DontEnum
&gt;     source        regExpObjectSource       DontDelete|ReadOnly|DontEnum
&gt; @end
&gt; 
&gt; This table is processed by a script at compile time in order to produce a
&gt; hash table of properties.
&gt; 
&gt; The second entry in the table indicates the function to call in order to
&gt; access the property. 
&gt; 
&gt; Can you make flags work this way?
&gt; 
&gt; &gt; Also, note that &quot;flags&quot; is meant to work with subclassing, so it&apos;d always
&gt; &gt; need to check the appropriate flag properties (global, etc), even if it&apos;s
&gt; &gt; .call-ed with a RegExp subclass instance.
&gt; 
&gt; Yup.


However, currently `Object.getOwnPropertyDescriptor(RegExp.prototype, &apos;source&apos;)` returns a descriptor with &quot;value&quot; set, and not &quot;get&quot;. The spec for &quot;flags&quot; requires that it be an actual getter function, so it&apos;d be different from the four regExpTable examples you mentioned. I&apos;m pretty new to C++ and Webkit both - do you think this would work in the same way if it was in the table?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099593</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-04 13:50:51 -0700</bug_when>
    <thetext>&gt; However, currently `Object.getOwnPropertyDescriptor(RegExp.prototype,
&gt; &apos;source&apos;)` returns a descriptor with &quot;value&quot; set, and not &quot;get&quot;. The spec
&gt; for &quot;flags&quot; requires that it be an actual getter function, so it&apos;d be
&gt; different from the four regExpTable examples you mentioned.

Aha. I understand your motivation now.

In fact, all of these properties are supposed to be getters according to the ES6 spec. It&apos;s a bug in our implementation of these automatic tables that they do not produce proper getters.

Still, I think it is best to implement all of these properties through the same mechanism, rather than fixing the getter issue for one property through special-case code. Then, we should update the underlying mechanism to produce getters, as ES6 requires.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099610</commentid>
    <comment_count>11</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-04 14:11:26 -0700</bug_when>
    <thetext>That&apos;s a fair point, but I&apos;m super wary of introducing new functionality in a broken way. I&apos;d prefer to add flags correctly, and migrate it to a &quot;proper&quot; mechanism once that exists - otherwise the es6-shim will have to overwrite Safari&apos;s broken implementation with its own, and the ES6 Compatibility Table will have to mark Webkit as failing to have that feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099611</commentid>
    <comment_count>12</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-04 14:12:43 -0700</bug_when>
    <thetext>In other words, I feel strongly that spec correctness is far more important than &quot;implementation code consistency&quot;, because the latter can be cleaned up later transparently - the former is a user-visible bug that the entire internet has to support for effectively forever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099870</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-05 11:16:43 -0700</bug_when>
    <thetext>I agree with Geoff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099888</commentid>
    <comment_count>14</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-05 11:42:51 -0700</bug_when>
    <thetext>In that case, this shouldn&apos;t land. It&apos;s horrific to suggest landing a known broken feature and condemning the internet to support it forever, so this should just wait until the other properties can be changed to getters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099892</commentid>
    <comment_count>15</comment_count>
      <attachid>254242</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-05 11:53:49 -0700</bug_when>
    <thetext>Comment on attachment 254242
Patch

I&apos;ve filed this bug to follow up on getter-ness for all properties: https://bugs.webkit.org/show_bug.cgi?id=145705. Maybe you can help us resolve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100225</commentid>
    <comment_count>16</comment_count>
      <attachid>254242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-07 15:02:07 -0700</bug_when>
    <thetext>Comment on attachment 254242
Patch

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

Added comments :)

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:143
&gt; +    if (regexp-&gt;get(exec, exec-&gt;propertyNames().global).toBoolean(exec))

We need to check an exceptions per `get` since it may cause an exception.

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:157
&gt; +    JSValue flags = jsMakeNontrivialString(exec, flagsString(exec, asRegExpObject(thisValue)));

Because we just check `thisValue.inherits(JSObject::info())`, `asRegExpObject` is unsafe. It may not be `RegExpObject`.
For example,

var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, &apos;flags&apos;);
desc.get.call([]);

According to the spec, RegExp.prototype.flags accepts all JSObject (indlucing JSArray). So I think using `isObject` guard and `asObject` is enough.

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:173
&gt;      String source = thisObject-&gt;get(exec, exec-&gt;propertyNames().source).toString(exec)-&gt;value(exec);

We need to check an exception here before executing `flagsString`.

And since `get` may cause an exception, `thisObject-&gt;get(exec, exec-&gt;propertyNames().source).toString(exec)` is not safe.

... thisObject-&gt;get(exec, exec-&gt;propertyNames().source);
// check exception
....toString(exec)-&gt;value(exec);
// check exception

is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100226</commentid>
    <comment_count>17</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-07 15:05:43 -0700</bug_when>
    <thetext>Thanks, I&apos;ll update this patch with those comments after 145705 goes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100936</commentid>
    <comment_count>18</comment_count>
      <attachid>254633</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-10 00:36:48 -0700</bug_when>
    <thetext>Created attachment 254633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100994</commentid>
    <comment_count>19</comment_count>
      <attachid>254633</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-10 05:33:45 -0700</bug_when>
    <thetext>Comment on attachment 254633
Patch

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

Patch itself looks nice. With nits.

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:224
&gt; +    JSValue flags = jsMakeNontrivialString(exec, flagsString(exec, asObject(thisValue)));

flags = flagsString(exec, asObject(thisValue));
// check exception
return JSValue::encode(jsMakeNontrivialString(exec, flags));

is preferable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101055</commentid>
    <comment_count>20</comment_count>
      <attachid>254663</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-10 10:39:14 -0700</bug_when>
    <thetext>Created attachment 254663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101115</commentid>
    <comment_count>21</comment_count>
      <attachid>254663</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-10 14:42:45 -0700</bug_when>
    <thetext>Comment on attachment 254663
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101135</commentid>
    <comment_count>22</comment_count>
      <attachid>254663</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-10 15:33:10 -0700</bug_when>
    <thetext>Comment on attachment 254663
Patch

Clearing flags on attachment: 254663

Committed r185432: &lt;http://trac.webkit.org/changeset/185432&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101136</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-10 15:33:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101140</commentid>
    <comment_count>24</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-06-10 15:39:10 -0700</bug_when>
    <thetext>Yay! Thanks everyone for the reviews, and the patience as we worked this out, and special thanks to Yusuke for taking on 145705 to pave the way for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101170</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-10 17:11:11 -0700</bug_when>
    <thetext>Looks like js/regexp-flags.html started crashing on several bots after this change:
https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK2%20(Tests)/r185432%20(4870)/results.html

Please address ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101171</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-10 17:11:52 -0700</bug_when>
    <thetext>Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000110c6fd77 WTFCrash + 39
1   com.apple.JavaScriptCore      	0x0000000110686da8 JSC::jsNontrivialString(JSC::VM*, WTF::String const&amp;) + 72
2   com.apple.JavaScriptCore      	0x0000000110686965 JSC::jsNontrivialString(JSC::ExecState*, WTF::String const&amp;) + 37
3   com.apple.JavaScriptCore      	0x0000000110b674e5 JSC::JSValue JSC::jsMakeNontrivialString&lt;WTF::String&amp;&gt;(JSC::ExecState*, WTF::String&amp;&amp;&amp;) + 37
4   com.apple.JavaScriptCore      	0x0000000110b669ff JSC::regExpProtoGetterFlags(JSC::ExecState*) + 191
5   com.apple.JavaScriptCore      	0x0000000110a07399 vmEntryToNative + 367
6   com.apple.JavaScriptCore      	0x000000011084f30f JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 1535
7   com.apple.JavaScriptCore      	0x00000001102c670e JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 190
8   com.apple.JavaScriptCore      	0x000000011078dc5d JSC::callGetter(JSC::ExecState*, JSC::JSValue, JSC::JSValue) + 221
9   com.apple.JavaScriptCore      	0x0000000110b51861 JSC::PropertySlot::functionGetter(JSC::ExecState*) const + 145
10  com.apple.JavaScriptCore      	0x000000011025a3cd JSC::PropertySlot::getValue(JSC::ExecState*, JSC::PropertyName) const + 93
11  com.apple.JavaScriptCore      	0x000000011025d86b JSC::JSValue::get(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;) const + 91
12  com.apple.JavaScriptCore      	0x00000001109fbd21 llint_slow_path_get_by_id + 241
13  com.apple.JavaScriptCore      	0x0000000110a0a1b0 llint_entry + 11668
14  com.apple.JavaScriptCore      	0x0000000110a071d9 vmEntryToJavaScript + 361
15  com.apple.JavaScriptCore      	0x000000011086b01c JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 252
16  com.apple.JavaScriptCore      	0x000000011084bcff JSC::Interpreter::execute(JSC::EvalExecutable*, JSC::ExecState*, JSC::JSValue, JSC::JSScope*) + 2543
17  com.apple.JavaScriptCore      	0x000000011084b2d9 JSC::eval(JSC::ExecState*) + 1065
18  com.apple.JavaScriptCore      	0x0000000110a00c48 llint_slow_path_call_eval + 328
19  com.apple.JavaScriptCore      	0x0000000110a0dd36 llint_entry + 26906
20  ???                           	0x0000549da7601afa 0 + 93036094692090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101172</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-10 17:14:22 -0700</bug_when>
    <thetext>Looks like an assertion hit in JSC::jsNontrivialString(JSC::VM*, WTF::String const&amp;):
ASSERT(s.length() &gt; 1);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101174</commentid>
    <comment_count>28</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-10 17:19:17 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Looks like an assertion hit in JSC::jsNontrivialString(JSC::VM*, WTF::String
&gt; const&amp;):
&gt; ASSERT(s.length() &gt; 1);

Nice catch. Since jsNontrivialString requires the given string is *non-trivial*, the length of it should be larger than 1.
I&apos;ll fix it with a unreviewed very simple follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101179</commentid>
    <comment_count>29</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-10 17:40:57 -0700</bug_when>
    <thetext>Committed r185440: &lt;http://trac.webkit.org/changeset/185440&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254186</attachid>
            <date>2015-06-03 10:24:16 -0700</date>
            <delta_ts>2015-06-03 21:44:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145599-20150603102402.patch</filename>
            <type>text/plain</type>
            <size>12743</size>
            <attacher name="Jordan Harband">ljharb</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NTlhOTIwZDA1MDkxNjJmODhlNGYzOGMzN2ExZmVkMmY2NThjZTdhLi5jYjI0NDIyMmJkMGUwN2Vj
ZjVhZTRhNGVkOTU0ZmI3YjI5ZWJhNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNS0wNi0wMyAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBSZWdFeHAucHJvdG90eXBlLmZsYWdzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1OTkKKyAgICAgICAgcGVy
IGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3Nl
Yy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFncworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6Z2V0UmVnRXhwRmxhZ3MpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNHZXRG
bGFncyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5
cGU6OmNyZWF0ZSk6CisKIDIwMTUtMDYtMDIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEdhcmRlbmluZzogZml4IGJyb2tlbiBDTG9vcCBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDRk
NmM1ZGE2MjE4NjA1YWNlMWQ1MjAyMmQyZGViMmEwYjMyNTFmMjcuLjM3NGM5ZTVmYTVlY2ZiYzk1
NGI2MDQ0MTM3ZmI3ZjM3MmViN2JhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBACiAgICAgbWFj
cm8oZXhlYykgXAogICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZXhpdEtp
bmQpIFwKKyAgICBtYWNybyhmbGFncykgXAogICAgIG1hY3JvKGZvY3VzKSBcCiAgICAgbWFjcm8o
Zm9yRWFjaCkgXAogICAgIG1hY3JvKGZvcndhcmQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxNGEwYzFjZmE2ZWMyYWNkMzkz
ZTU0M2Y0MjYwYzJjMzI2YmExOTM3Li40NTM1NjFjMzRkYjI3NzMwNDk2ZjBlNGE2OTYzNmM0Mzli
MjY3ZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0zMTYsOCArMzE2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChW
TSYgdm0pCiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxs
b2NhdGlvbltpXSA9IG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV07
CiAKICAgICBSZWdFeHAqIGVtcHR5UmVnZXggPSBSZWdFeHA6OmNyZWF0ZSh2bSwgIiIsIE5vRmxh
Z3MpOwotICAgIAotICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJv
dG90eXBlOjpjcmVhdGUodm0sIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIGVtcHR5UmVnZXgpKTsKKworICAgIG1fcmVn
RXhwUHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIFJl
Z0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSksIGVtcHR5UmVnZXgsIHRoaXMpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4
cFByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogI2lmIEVOQUJMRShQUk9NSVNFUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IGU3
MmUxN2I4ZjIzMjM2Y2ZhNTk4NDcxZWE3ZWU4NzQzYzA2ZDg2MGYuLmEwMjA2MmZjYWI2NzBmYWQ4
MmFkYzI0ZDk1ZmQ4ZTJhYTBiOWJhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVk
ZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtNDEsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rl
c3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0dldEZsYWdzKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKik7CiAKIH0KQEAgLTY1LDYgKzY3LDE0IEBAIFJlZ0V4cFByb3Rv
dHlwZTo6UmVnRXhwUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4
cCogcmVnRXhwKQogewogfQogCit2b2lkIFJlZ0V4cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTRnVuY3Rpb24q
IGZsYWdzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
dm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3Muc3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY0dldEZsYWdz
KTsKKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCk7CisgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0
LCBmbGFnc0Z1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5mbGFncywgYWNjZXNzb3IsIERvbnRFbnVtIHwgQWNjZXNzb3IpOworfQor
CiBib29sIFJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8UmVnRXhwT2Jq
ZWN0PihleGVjLCByZWdFeHBQcm90b3R5cGVUYWJsZSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0xMjYsNiArMTM2LDI4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAor
c3RhdGljIGlubGluZSBTdHJpbmcgZ2V0UmVnRXhwRmxhZ3MoRXhlY1N0YXRlICpleGVjLCBSZWdF
eHBPYmplY3QqIHJlZ2V4cCkKK3sKKyAgICBjaGFyIGZsYWdzWzRdID0geyAwLCAwLCAwLCAwIH07
CisgICAgaW50IGluZGV4ID0gMDsKKyAgICBpZiAocmVnZXhwLT5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmdsb2JhbCkudG9Cb29sZWFuKGV4ZWMpKQorICAgICAgICBmbGFnc1tpbmRl
eCsrXSA9ICdnJzsKKyAgICBpZiAocmVnZXhwLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmlnbm9yZUNhc2UpLnRvQm9vbGVhbihleGVjKSkKKyAgICAgICAgZmxhZ3NbaW5kZXgrK10g
PSAnaSc7CisgICAgaWYgKHJlZ2V4cC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5t
dWx0aWxpbmUpLnRvQm9vbGVhbihleGVjKSkKKyAgICAgICAgZmxhZ3NbaW5kZXhdID0gJ20nOwor
ICAgIHJldHVybiBTdHJpbmcoZmxhZ3MpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY0dldEZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKEpTT2JqZWN0OjppbmZvKCkpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICBKU1ZhbHVlIGZsYWdzID0ganNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVj
LCBnZXRSZWdFeHBGbGFncyhleGVjLCBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShmbGFncyk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CkBAIC0xMzgsMTcgKzE3MCwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hl
Y2tlci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZWFybHlSZXR1cm5WYWx1ZSk7CiAKLSAgICBjaGFyIHBvc3RmaXhbNV0gPSB7ICcvJywgMCwgMCwg
MCwgMCB9OwotICAgIGludCBpbmRleCA9IDE7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2xvYmFsKS50b0Jvb2xlYW4oZXhlYykpCi0gICAgICAg
IHBvc3RmaXhbaW5kZXgrK10gPSAnZyc7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuaWdub3JlQ2FzZSkudG9Cb29sZWFuKGV4ZWMpKQotICAgICAg
ICBwb3N0Zml4W2luZGV4KytdID0gJ2knOwotICAgIGlmICh0aGlzT2JqZWN0LT5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLm11bHRpbGluZSkudG9Cb29sZWFuKGV4ZWMpKQotICAgICAg
ICBwb3N0Zml4W2luZGV4XSA9ICdtJzsKICAgICBTdHJpbmcgc291cmNlID0gdGhpc09iamVjdC0+
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zb3VyY2UpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgZmxhZ3MgPSBnZXRSZWdFeHBGbGFncyhleGVjLCB0aGlz
T2JqZWN0KTsKICAgICAvLyBJZiBzb3VyY2UgaXMgZW1wdHksIHVzZSAiLyg/OikvIiB0byBhdm9p
ZCBjb2xsaWRpbmcgd2l0aCBjb21tZW50IHN5bnRheAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiLyIsIHNvdXJjZSwgcG9zdGZpeCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
LyIsIHNvdXJjZSwgIi8iLCBmbGFncykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKaW5kZXggY2I2
ZWU2OTc0YTQ3Y2VjYmUxMDE5NzZhM2RkNGI4ZTczZmUzOTFiMy4uZTQ1YjI0MzRlZWM4Y2JkN2Yx
MDQ2OTI1NmIwNzAzMDcwMjdmNmM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKQEAgLTMxLDEwICszMSwxMCBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBSZWdFeHBPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdDsKIAotICAgIHN0YXRpYyBSZWdFeHBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKKyAgICBzdGF0aWMgUmVnRXhwUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwKiByZWdF
eHAsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBSZWdFeHBQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cFBy
b3RvdHlwZT4odm0uaGVhcCkpIFJlZ0V4cFByb3RvdHlwZSh2bSwgc3RydWN0dXJlLCByZWdFeHAp
OwotICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHBy
b3RvdHlwZTsKICAgICB9CiAKQEAgLTUwLDYgKzUwLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRl
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBlYTZhZTQzNjQwODA2NWQyYzUxYTZiYTYyZGE3MWFkY2Y3NmM2MzhkLi4xYmMwMTU0NjE2OWI2
MWM3ZmE1ZDg1NWQ5NDU1YTY3YWM5MGQwYmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUt
MDYtMDMgIEpvcmRhbiBIYXJiYW5kICA8bGpoYXJiQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgUmVnRXhwLnByb3RvdHlwZS5mbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0
eU5hbWVzLmpzOgorCiAyMDE1LTA2LTAyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg1MTI4IGFuZCBy
MTg1MTMyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDQ1ZGRlMTJlN2UwYTNjYTZkZjZlYmVlN2IxYjUwMTQ3
NDQzY2ExZTIuLjViNTdkMGUyOWY2OGFjMzA5YWUwZmEzODhiZWQ1M2UwMGEwZTkyYTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBl
Y3RlZC50eHQKQEAgLTU2LDcgKzU2LDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVz
KE51bWJlci5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAndG9FeHBvbmVudGkKIFBBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhEYXRlKSBpcyBbJ1VUQycsICdsZW5ndGgnLCAnbmFt
ZScsICdub3cnLCAncGFyc2UnLCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVy
dHlOYW1lcyhEYXRlLnByb3RvdHlwZSkgaXMgWydjb25zdHJ1Y3RvcicsICdnZXREYXRlJywgJ2dl
dERheScsICdnZXRGdWxsWWVhcicsICdnZXRIb3VycycsICdnZXRNaWxsaXNlY29uZHMnLCAnZ2V0
TWludXRlcycsICdnZXRNb250aCcsICdnZXRTZWNvbmRzJywgJ2dldFRpbWUnLCAnZ2V0VGltZXpv
bmVPZmZzZXQnLCAnZ2V0VVRDRGF0ZScsICdnZXRVVENEYXknLCAnZ2V0VVRDRnVsbFllYXInLCAn
Z2V0VVRDSG91cnMnLCAnZ2V0VVRDTWlsbGlzZWNvbmRzJywgJ2dldFVUQ01pbnV0ZXMnLCAnZ2V0
VVRDTW9udGgnLCAnZ2V0VVRDU2Vjb25kcycsICdnZXRZZWFyJywgJ3NldERhdGUnLCAnc2V0RnVs
bFllYXInLCAnc2V0SG91cnMnLCAnc2V0TWlsbGlzZWNvbmRzJywgJ3NldE1pbnV0ZXMnLCAnc2V0
TW9udGgnLCAnc2V0U2Vjb25kcycsICdzZXRUaW1lJywgJ3NldFVUQ0RhdGUnLCAnc2V0VVRDRnVs
bFllYXInLCAnc2V0VVRDSG91cnMnLCAnc2V0VVRDTWlsbGlzZWNvbmRzJywgJ3NldFVUQ01pbnV0
ZXMnLCAnc2V0VVRDTW9udGgnLCAnc2V0VVRDU2Vjb25kcycsICdzZXRZZWFyJywgJ3RvRGF0ZVN0
cmluZycsICd0b0dNVFN0cmluZycsICd0b0lTT1N0cmluZycsICd0b0pTT04nLCAndG9Mb2NhbGVE
YXRlU3RyaW5nJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvTG9jYWxlVGltZVN0cmluZycsICd0b1N0
cmluZycsICd0b1RpbWVTdHJpbmcnLCAndG9VVENTdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdl
dFNvcnRlZE93blByb3BlcnR5TmFtZXMoUmVnRXhwKSBpcyBbJyQmJywgIiQnIiwgJyQqJywgJyQr
JywgJyQxJywgJyQyJywgJyQzJywgJyQ0JywgJyQ1JywgJyQ2JywgJyQ3JywgJyQ4JywgJyQ5Jywg
JyRfJywgJyRgJywgJ2lucHV0JywgJ2xhc3RNYXRjaCcsICdsYXN0UGFyZW4nLCAnbGVmdENvbnRl
eHQnLCAnbGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywgJ3Byb3RvdHlwZScsICdyaWdodENv
bnRleHQnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUp
IGlzIFsnY29tcGlsZScsICdjb25zdHJ1Y3RvcicsICdleGVjJywgJ2dsb2JhbCcsICdpZ25vcmVD
YXNlJywgJ2xhc3RJbmRleCcsICdtdWx0aWxpbmUnLCAnc291cmNlJywgJ3Rlc3QnLCAndG9TdHJp
bmcnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpIGlz
IFsnY29tcGlsZScsICdjb25zdHJ1Y3RvcicsICdleGVjJywgJ2ZsYWdzJywgJ2dsb2JhbCcsICdp
Z25vcmVDYXNlJywgJ2xhc3RJbmRleCcsICdtdWx0aWxpbmUnLCAnc291cmNlJywgJ3Rlc3QnLCAn
dG9TdHJpbmcnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEVycm9yKSBpcyBbJ2xl
bmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFt
ZXMoRXJyb3IucHJvdG90eXBlKSBpcyBbJ2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScs
ICd0b1N0cmluZyddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWF0aCkgaXMgWydF
JywnTE4xMCcsJ0xOMicsJ0xPRzEwRScsJ0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdh
YnMnLCdhY29zJywnYWNvc2gnLCdhc2luJywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcs
J2NicnQnLCdjZWlsJywnY2x6MzInLCdjb3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcics
J2Zyb3VuZCcsJ2h5cG90JywnaW11bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4
JywnbWluJywncG93JywncmFuZG9tJywncm91bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQn
LCd0YW4nLCd0YW5oJywndHJ1bmMnXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCmluZGV4IGZmNDU5ZjE1MDkw
MGIxNzUxYzc4NDdjNDk4MjhlMGU2YTVjYmE4YzcuLjg0M2M5ZTc2OTY0YmMyYzEwNzQxNjI2ZWNl
YzAyYmQyYjE4NGE2NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKQEAgLTY1LDcgKzY1LDcgQEAgdmFy
IGV4cGVjdGVkUHJvcGVydHlOYW1lc1NldCA9IHsKICAgICAiRGF0ZSI6ICJbJ1VUQycsICdsZW5n
dGgnLCAnbmFtZScsICdub3cnLCAncGFyc2UnLCAncHJvdG90eXBlJ10iLAogICAgICJEYXRlLnBy
b3RvdHlwZSI6ICJbJ2NvbnN0cnVjdG9yJywgJ2dldERhdGUnLCAnZ2V0RGF5JywgJ2dldEZ1bGxZ
ZWFyJywgJ2dldEhvdXJzJywgJ2dldE1pbGxpc2Vjb25kcycsICdnZXRNaW51dGVzJywgJ2dldE1v
bnRoJywgJ2dldFNlY29uZHMnLCAnZ2V0VGltZScsICdnZXRUaW1lem9uZU9mZnNldCcsICdnZXRV
VENEYXRlJywgJ2dldFVUQ0RheScsICdnZXRVVENGdWxsWWVhcicsICdnZXRVVENIb3VycycsICdn
ZXRVVENNaWxsaXNlY29uZHMnLCAnZ2V0VVRDTWludXRlcycsICdnZXRVVENNb250aCcsICdnZXRV
VENTZWNvbmRzJywgJ2dldFllYXInLCAnc2V0RGF0ZScsICdzZXRGdWxsWWVhcicsICdzZXRIb3Vy
cycsICdzZXRNaWxsaXNlY29uZHMnLCAnc2V0TWludXRlcycsICdzZXRNb250aCcsICdzZXRTZWNv
bmRzJywgJ3NldFRpbWUnLCAnc2V0VVRDRGF0ZScsICdzZXRVVENGdWxsWWVhcicsICdzZXRVVENI
b3VycycsICdzZXRVVENNaWxsaXNlY29uZHMnLCAnc2V0VVRDTWludXRlcycsICdzZXRVVENNb250
aCcsICdzZXRVVENTZWNvbmRzJywgJ3NldFllYXInLCAndG9EYXRlU3RyaW5nJywgJ3RvR01UU3Ry
aW5nJywgJ3RvSVNPU3RyaW5nJywgJ3RvSlNPTicsICd0b0xvY2FsZURhdGVTdHJpbmcnLCAndG9M
b2NhbGVTdHJpbmcnLCAndG9Mb2NhbGVUaW1lU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3RvVGltZVN0
cmluZycsICd0b1VUQ1N0cmluZycsICd2YWx1ZU9mJ10iLAogICAgICJSZWdFeHAiOiAiWyckJics
IFwiJCdcIiwgJyQqJywgJyQrJywgJyQxJywgJyQyJywgJyQzJywgJyQ0JywgJyQ1JywgJyQ2Jywg
JyQ3JywgJyQ4JywgJyQ5JywgJyRfJywgJyRgJywgJ2lucHV0JywgJ2xhc3RNYXRjaCcsICdsYXN0
UGFyZW4nLCAnbGVmdENvbnRleHQnLCAnbGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywgJ3By
b3RvdHlwZScsICdyaWdodENvbnRleHQnXSIsCi0gICAgIlJlZ0V4cC5wcm90b3R5cGUiOiAiWydj
b21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2V4ZWMnLCAnZ2xvYmFsJywgJ2lnbm9yZUNhc2UnLCAn
bGFzdEluZGV4JywgJ211bHRpbGluZScsICdzb3VyY2UnLCAndGVzdCcsICd0b1N0cmluZyddIiwK
KyAgICAiUmVnRXhwLnByb3RvdHlwZSI6ICJbJ2NvbXBpbGUnLCAnY29uc3RydWN0b3InLCAnZXhl
YycsICdmbGFncycsICdnbG9iYWwnLCAnaWdub3JlQ2FzZScsICdsYXN0SW5kZXgnLCAnbXVsdGls
aW5lJywgJ3NvdXJjZScsICd0ZXN0JywgJ3RvU3RyaW5nJ10iLAogICAgICJFcnJvciI6ICJbJ2xl
bmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddIiwKICAgICAiRXJyb3IucHJvdG90eXBlIjogIlsn
Y29uc3RydWN0b3InLCAnbWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10iLAogICAgICJNYXRo
IjogIlsnRScsJ0xOMTAnLCdMTjInLCdMT0cxMEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NR
UlQyJywnYWJzJywnYWNvcycsJ2Fjb3NoJywnYXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywn
YXRhbmgnLCdjYnJ0JywnY2VpbCcsJ2NsejMyJywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywn
Zmxvb3InLCdmcm91bmQnLCdoeXBvdCcsJ2ltdWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9n
MicsJ21heCcsJ21pbicsJ3BvdycsJ3JhbmRvbScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3Npbmgn
LCdzcXJ0JywndGFuJywndGFuaCcsJ3RydW5jJ10iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254242</attachid>
            <date>2015-06-03 21:44:30 -0700</date>
            <delta_ts>2015-06-10 00:36:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145599-20150603214416.patch</filename>
            <type>text/plain</type>
            <size>17062</size>
            <attacher name="Jordan Harband">ljharb</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NTlhOTIwZDA1MDkxNjJmODhlNGYzOGMzN2ExZmVkMmY2NThjZTdhLi41MzFhMjk1ZjM5ZmNlNWRm
NmRkZDhlMWYwODAyMTIwNjE0MGY0ZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNS0wNi0wMyAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBSZWdFeHAucHJvdG90eXBlLmZsYWdzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1OTkKKyAgICAgICAgcGVy
IGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3Nl
Yy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFncworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6ZmxhZ3NTdHJpbmcpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNHZXRGbGFn
cyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5cGU6
OmNyZWF0ZSk6CisKIDIwMTUtMDYtMDIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEdhcmRlbmluZzogZml4IGJyb2tlbiBDTG9vcCBidWlsZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDRkNmM1
ZGE2MjE4NjA1YWNlMWQ1MjAyMmQyZGViMmEwYjMyNTFmMjcuLjM3NGM5ZTVmYTVlY2ZiYzk1NGI2
MDQ0MTM3ZmI3ZjM3MmViN2JhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBACiAgICAgbWFjcm8o
ZXhlYykgXAogICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZXhpdEtpbmQp
IFwKKyAgICBtYWNybyhmbGFncykgXAogICAgIG1hY3JvKGZvY3VzKSBcCiAgICAgbWFjcm8oZm9y
RWFjaCkgXAogICAgIG1hY3JvKGZvcndhcmQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxNGEwYzFjZmE2ZWMyYWNkMzkzZTU0
M2Y0MjYwYzJjMzI2YmExOTM3Li40NTM1NjFjMzRkYjI3NzMwNDk2ZjBlNGE2OTYzNmM0MzliMjY3
ZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC0zMTYsOCArMzE2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2Nh
dGlvbltpXSA9IG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV07CiAK
ICAgICBSZWdFeHAqIGVtcHR5UmVnZXggPSBSZWdFeHA6OmNyZWF0ZSh2bSwgIiIsIE5vRmxhZ3Mp
OwotICAgIAotICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90
eXBlOjpjcmVhdGUodm0sIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIGVtcHR5UmVnZXgpKTsKKworICAgIG1fcmVnRXhw
UHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIFJlZ0V4
cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSksIGVtcHR5UmVnZXgsIHRoaXMpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKSkpOwogICAgIAogI2lmIEVOQUJMRShQUk9NSVNFUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IGU3MmUx
N2I4ZjIzMjM2Y2ZhNTk4NDcxZWE3ZWU4NzQzYzA2ZDg2MGYuLmIyOWRmMDE4NTkzOTdhZWVmMzlj
YTY5N2MzODA1YmJiM2JmYWZjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAi
QXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtNDEsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3Qo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0dldEZsYWdzKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKik7CiAKIH0KQEAgLTY1LDYgKzY3LDE0IEBAIFJlZ0V4cFByb3RvdHlw
ZTo6UmVnRXhwUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCog
cmVnRXhwKQogewogfQogCit2b2lkIFJlZ0V4cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTRnVuY3Rpb24qIGZs
YWdzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0u
cHJvcGVydHlOYW1lcy0+ZmxhZ3Muc3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY0dldEZsYWdzKTsK
KyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCk7CisgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBm
bGFnc0Z1bmN0aW9uKTsKKyAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5mbGFncywgYWNjZXNzb3IsIERvbnRFbnVtIHwgQWNjZXNzb3IpOworfQorCiBi
b29sIFJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8UmVnRXhwT2JqZWN0
PihleGVjLCByZWdFeHBQcm90b3R5cGVUYWJsZSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0xMjYsNiArMTM2LDI4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3Rh
dGljIGlubGluZSBTdHJpbmcgZmxhZ3NTdHJpbmcoRXhlY1N0YXRlICpleGVjLCBSZWdFeHBPYmpl
Y3QqIHJlZ2V4cCkKK3sKKyAgICBjaGFyIGZsYWdzWzRdID0geyAwLCAwLCAwLCAwIH07CisgICAg
aW50IGluZGV4ID0gMDsKKyAgICBpZiAocmVnZXhwLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmdsb2JhbCkudG9Cb29sZWFuKGV4ZWMpKQorICAgICAgICBmbGFnc1tpbmRleCsrXSA9
ICdnJzsKKyAgICBpZiAocmVnZXhwLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmln
bm9yZUNhc2UpLnRvQm9vbGVhbihleGVjKSkKKyAgICAgICAgZmxhZ3NbaW5kZXgrK10gPSAnaSc7
CisgICAgaWYgKHJlZ2V4cC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tdWx0aWxp
bmUpLnRvQm9vbGVhbihleGVjKSkKKyAgICAgICAgZmxhZ3NbaW5kZXhdID0gJ20nOworICAgIHJl
dHVybiBTdHJpbmcoZmxhZ3MpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvRnVuY0dldEZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KEpTT2JqZWN0OjppbmZvKCkpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICBKU1ZhbHVlIGZsYWdzID0ganNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCBmbGFn
c1N0cmluZyhleGVjLCBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShmbGFncyk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CkBAIC0xMzgsMTcgKzE3MCwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJs
eVJldHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1
cm5WYWx1ZSk7CiAKLSAgICBjaGFyIHBvc3RmaXhbNV0gPSB7ICcvJywgMCwgMCwgMCwgMCB9Owot
ICAgIGludCBpbmRleCA9IDE7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZ2xvYmFsKS50b0Jvb2xlYW4oZXhlYykpCi0gICAgICAgIHBvc3RmaXhb
aW5kZXgrK10gPSAnZyc7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuaWdub3JlQ2FzZSkudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICBwb3N0Zml4
W2luZGV4KytdID0gJ2knOwotICAgIGlmICh0aGlzT2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLm11bHRpbGluZSkudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICBwb3N0Zml4
W2luZGV4XSA9ICdtJzsKICAgICBTdHJpbmcgc291cmNlID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zb3VyY2UpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgZmxhZ3MgPSBmbGFnc1N0cmluZyhleGVjLCB0aGlzT2JqZWN0KTsKICAg
ICAvLyBJZiBzb3VyY2UgaXMgZW1wdHksIHVzZSAiLyg/OikvIiB0byBhdm9pZCBjb2xsaWRpbmcg
d2l0aCBjb21tZW50IHN5bnRheAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiLyIsIHNvdXJjZSwgcG9zdGZpeCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiLyIsIHNvdXJjZSwg
Ii8iLCBmbGFncykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKaW5kZXggY2I2ZWU2OTc0YTQ3Y2Vj
YmUxMDE5NzZhM2RkNGI4ZTczZmUzOTFiMy4uZTQ1YjI0MzRlZWM4Y2JkN2YxMDQ2OTI1NmIwNzAz
MDcwMjdmNmM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgKQEAgLTMxLDEwICszMSwxMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBSZWdF
eHBPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAot
ICAgIHN0YXRpYyBSZWdFeHBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKKyAgICBzdGF0aWMgUmVnRXhwUHJvdG90eXBlKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwKiByZWdFeHAsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBSZWdFeHBQcm90b3R5cGUqIHBy
b3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cFByb3RvdHlwZT4odm0u
aGVhcCkpIFJlZ0V4cFByb3RvdHlwZSh2bSwgc3RydWN0dXJlLCByZWdFeHApOwotICAgICAgICBw
cm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hD
cmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAg
ICB9CiAKQEAgLTUwLDYgKzUwLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYTZhZTQzNjQw
ODA2NWQyYzUxYTZiYTYyZGE3MWFkY2Y3NmM2MzhkLi43ODc0MGZmZGMyZTMzYzk0ODQ3YWY2OTE5
ODZiZTA4YmUxZjc5OTFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDYtMDMgIEpvcmRh
biBIYXJiYW5kICA8bGpoYXJiQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVnRXhw
LnByb3RvdHlwZS5mbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICoganMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvcmVnZXhwLWZsYWdzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMv
cmVnZXhwLWZsYWdzLmpzOiBBZGRlZC4KKyAgICAgICAgKC5nZXQgc2hvdWxkQmUpOgorCiAyMDE1
LTA2LTAyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg1MTI4IGFuZCByMTg1MTMyLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0
CmluZGV4IDQ1ZGRlMTJlN2UwYTNjYTZkZjZlYmVlN2IxYjUwMTQ3NDQzY2ExZTIuLjViNTdkMGUy
OWY2OGFjMzA5YWUwZmEzODhiZWQ1M2UwMGEwZTkyYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKQEAgLTU2LDcg
KzU2LDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE51bWJlci5wcm90b3R5cGUp
IGlzIFsnY29uc3RydWN0b3InLCAndG9FeHBvbmVudGkKIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVy
dHlOYW1lcyhEYXRlKSBpcyBbJ1VUQycsICdsZW5ndGgnLCAnbmFtZScsICdub3cnLCAncGFyc2Un
LCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhEYXRlLnByb3Rv
dHlwZSkgaXMgWydjb25zdHJ1Y3RvcicsICdnZXREYXRlJywgJ2dldERheScsICdnZXRGdWxsWWVh
cicsICdnZXRIb3VycycsICdnZXRNaWxsaXNlY29uZHMnLCAnZ2V0TWludXRlcycsICdnZXRNb250
aCcsICdnZXRTZWNvbmRzJywgJ2dldFRpbWUnLCAnZ2V0VGltZXpvbmVPZmZzZXQnLCAnZ2V0VVRD
RGF0ZScsICdnZXRVVENEYXknLCAnZ2V0VVRDRnVsbFllYXInLCAnZ2V0VVRDSG91cnMnLCAnZ2V0
VVRDTWlsbGlzZWNvbmRzJywgJ2dldFVUQ01pbnV0ZXMnLCAnZ2V0VVRDTW9udGgnLCAnZ2V0VVRD
U2Vjb25kcycsICdnZXRZZWFyJywgJ3NldERhdGUnLCAnc2V0RnVsbFllYXInLCAnc2V0SG91cnMn
LCAnc2V0TWlsbGlzZWNvbmRzJywgJ3NldE1pbnV0ZXMnLCAnc2V0TW9udGgnLCAnc2V0U2Vjb25k
cycsICdzZXRUaW1lJywgJ3NldFVUQ0RhdGUnLCAnc2V0VVRDRnVsbFllYXInLCAnc2V0VVRDSG91
cnMnLCAnc2V0VVRDTWlsbGlzZWNvbmRzJywgJ3NldFVUQ01pbnV0ZXMnLCAnc2V0VVRDTW9udGgn
LCAnc2V0VVRDU2Vjb25kcycsICdzZXRZZWFyJywgJ3RvRGF0ZVN0cmluZycsICd0b0dNVFN0cmlu
ZycsICd0b0lTT1N0cmluZycsICd0b0pTT04nLCAndG9Mb2NhbGVEYXRlU3RyaW5nJywgJ3RvTG9j
YWxlU3RyaW5nJywgJ3RvTG9jYWxlVGltZVN0cmluZycsICd0b1N0cmluZycsICd0b1RpbWVTdHJp
bmcnLCAndG9VVENTdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5
TmFtZXMoUmVnRXhwKSBpcyBbJyQmJywgIiQnIiwgJyQqJywgJyQrJywgJyQxJywgJyQyJywgJyQz
JywgJyQ0JywgJyQ1JywgJyQ2JywgJyQ3JywgJyQ4JywgJyQ5JywgJyRfJywgJyRgJywgJ2lucHV0
JywgJ2xhc3RNYXRjaCcsICdsYXN0UGFyZW4nLCAnbGVmdENvbnRleHQnLCAnbGVuZ3RoJywgJ211
bHRpbGluZScsICduYW1lJywgJ3Byb3RvdHlwZScsICdyaWdodENvbnRleHQnXQotUEFTUyBnZXRT
b3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpIGlzIFsnY29tcGlsZScsICdj
b25zdHJ1Y3RvcicsICdleGVjJywgJ2dsb2JhbCcsICdpZ25vcmVDYXNlJywgJ2xhc3RJbmRleCcs
ICdtdWx0aWxpbmUnLCAnc291cmNlJywgJ3Rlc3QnLCAndG9TdHJpbmcnXQorUEFTUyBnZXRTb3J0
ZWRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpIGlzIFsnY29tcGlsZScsICdjb25z
dHJ1Y3RvcicsICdleGVjJywgJ2ZsYWdzJywgJ2dsb2JhbCcsICdpZ25vcmVDYXNlJywgJ2xhc3RJ
bmRleCcsICdtdWx0aWxpbmUnLCAnc291cmNlJywgJ3Rlc3QnLCAndG9TdHJpbmcnXQogUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEVycm9yKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3By
b3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJyb3IucHJvdG90eXBl
KSBpcyBbJ2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScsICd0b1N0cmluZyddCiBQQVNT
IGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWF0aCkgaXMgWydFJywnTE4xMCcsJ0xOMicsJ0xP
RzEwRScsJ0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gn
LCdhc2luJywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6
MzInLCdjb3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90Jywn
aW11bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFu
ZG9tJywncm91bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1
bmMnXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL3JlZ2V4cC1mbGFncy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjRhZThiYjdmYjkyNWQ4MjQyMmNkZTNkZjYzMmZjZmE1YWQ4NWIwMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3JlZ2V4cC1mbGFncy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
OSBAQAorVGVzdCBSZWdFeHAjZmxhZ3MgYWNjZXNzb3IKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK3Byb3BlcnR5IGRlc2NyaXB0b3IKK1BBU1MgZGVzY3JpcHRvci5jb25maWd1cmFi
bGUgaXMgdHJ1ZQorUEFTUyBkZXNjcmlwdG9yLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgdHlw
ZW9mIGRlc2NyaXB0b3IuZ2V0IGlzICdmdW5jdGlvbicKK1BBU1MgZGVzY3JpcHRvci5zZXQgaXMg
dW5kZWZpbmVkCitQQVNTIC9hL2cuZmxhZ3MgaXMgJ2cnCitQQVNTIC9hLy5mbGFncyBpcyAnJwor
UEFTUyAvYS9nbWkuZmxhZ3MgaXMgJ2dpbScKK1BBU1MgbmV3IFJlZ0V4cCgnYScsICdnbWknKS5m
bGFncyBpcyAnZ2ltJworUEFTUyBmbGFncy5jYWxsKC9hL2lnKSBpcyAnZ2knCitub24tb2JqZWN0
IHJlY2VpdmVycworUEFTUyBmbGFncy5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgZmxhZ3MuY2FsbChudWxsKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBmbGFncy5jYWxsKGZhbHNlKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBmbGFncy5jYWxsKHRydWUpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitub24tcmVnZXggb2JqZWN0cwor
UEFTUyBmbGFncy5jYWxsKHt9KSBpcyAnJworUEFTUyBmbGFncy5jYWxsKHtnbG9iYWw6IHRydWUs
IG11bHRpbGluZTogdHJ1ZSwgaWdub3JlQ2FzZTogdHJ1ZX0pIGlzICdnaW0nCitQQVNTIGZsYWdz
LmNhbGwoe2dsb2JhbDogMSwgbXVsdGlsaW5lOiAwLCBpZ25vcmVDYXNlOiAyfSkgaXMgJ2dpJwor
UEFTUyBmbGFncy5jYWxsKHsgX19wcm90b19fOiB7IG11bHRpbGluZTogdHJ1ZSB9IH0pIGlzICdt
JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ2V4cC1mbGFncy5odG1sIGIvTGF5b3V0VGVzdHMv
anMvcmVnZXhwLWZsYWdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIxNzJjNDI4NzVkYjgzMTkzODk3YTE2
ZGIyOGI4NTdmMjg4MzlmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ2V4
cC1mbGFncy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAtZmxhZ3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRP
d25Qcm9wZXJ0eU5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1n
ZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCmluZGV4IGZmNDU5ZjE1MDkwMGIxNzUxYzc4NDdjNDk4Mjhl
MGU2YTVjYmE4YzcuLjg0M2M5ZTc2OTY0YmMyYzEwNzQxNjI2ZWNlYzAyYmQyYjE4NGE2NzQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93
blByb3BlcnR5TmFtZXMuanMKQEAgLTY1LDcgKzY1LDcgQEAgdmFyIGV4cGVjdGVkUHJvcGVydHlO
YW1lc1NldCA9IHsKICAgICAiRGF0ZSI6ICJbJ1VUQycsICdsZW5ndGgnLCAnbmFtZScsICdub3cn
LCAncGFyc2UnLCAncHJvdG90eXBlJ10iLAogICAgICJEYXRlLnByb3RvdHlwZSI6ICJbJ2NvbnN0
cnVjdG9yJywgJ2dldERhdGUnLCAnZ2V0RGF5JywgJ2dldEZ1bGxZZWFyJywgJ2dldEhvdXJzJywg
J2dldE1pbGxpc2Vjb25kcycsICdnZXRNaW51dGVzJywgJ2dldE1vbnRoJywgJ2dldFNlY29uZHMn
LCAnZ2V0VGltZScsICdnZXRUaW1lem9uZU9mZnNldCcsICdnZXRVVENEYXRlJywgJ2dldFVUQ0Rh
eScsICdnZXRVVENGdWxsWWVhcicsICdnZXRVVENIb3VycycsICdnZXRVVENNaWxsaXNlY29uZHMn
LCAnZ2V0VVRDTWludXRlcycsICdnZXRVVENNb250aCcsICdnZXRVVENTZWNvbmRzJywgJ2dldFll
YXInLCAnc2V0RGF0ZScsICdzZXRGdWxsWWVhcicsICdzZXRIb3VycycsICdzZXRNaWxsaXNlY29u
ZHMnLCAnc2V0TWludXRlcycsICdzZXRNb250aCcsICdzZXRTZWNvbmRzJywgJ3NldFRpbWUnLCAn
c2V0VVRDRGF0ZScsICdzZXRVVENGdWxsWWVhcicsICdzZXRVVENIb3VycycsICdzZXRVVENNaWxs
aXNlY29uZHMnLCAnc2V0VVRDTWludXRlcycsICdzZXRVVENNb250aCcsICdzZXRVVENTZWNvbmRz
JywgJ3NldFllYXInLCAndG9EYXRlU3RyaW5nJywgJ3RvR01UU3RyaW5nJywgJ3RvSVNPU3RyaW5n
JywgJ3RvSlNPTicsICd0b0xvY2FsZURhdGVTdHJpbmcnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9M
b2NhbGVUaW1lU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3RvVGltZVN0cmluZycsICd0b1VUQ1N0cmlu
ZycsICd2YWx1ZU9mJ10iLAogICAgICJSZWdFeHAiOiAiWyckJicsIFwiJCdcIiwgJyQqJywgJyQr
JywgJyQxJywgJyQyJywgJyQzJywgJyQ0JywgJyQ1JywgJyQ2JywgJyQ3JywgJyQ4JywgJyQ5Jywg
JyRfJywgJyRgJywgJ2lucHV0JywgJ2xhc3RNYXRjaCcsICdsYXN0UGFyZW4nLCAnbGVmdENvbnRl
eHQnLCAnbGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywgJ3Byb3RvdHlwZScsICdyaWdodENv
bnRleHQnXSIsCi0gICAgIlJlZ0V4cC5wcm90b3R5cGUiOiAiWydjb21waWxlJywgJ2NvbnN0cnVj
dG9yJywgJ2V4ZWMnLCAnZ2xvYmFsJywgJ2lnbm9yZUNhc2UnLCAnbGFzdEluZGV4JywgJ211bHRp
bGluZScsICdzb3VyY2UnLCAndGVzdCcsICd0b1N0cmluZyddIiwKKyAgICAiUmVnRXhwLnByb3Rv
dHlwZSI6ICJbJ2NvbXBpbGUnLCAnY29uc3RydWN0b3InLCAnZXhlYycsICdmbGFncycsICdnbG9i
YWwnLCAnaWdub3JlQ2FzZScsICdsYXN0SW5kZXgnLCAnbXVsdGlsaW5lJywgJ3NvdXJjZScsICd0
ZXN0JywgJ3RvU3RyaW5nJ10iLAogICAgICJFcnJvciI6ICJbJ2xlbmd0aCcsICduYW1lJywgJ3By
b3RvdHlwZSddIiwKICAgICAiRXJyb3IucHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAnbWVz
c2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10iLAogICAgICJNYXRoIjogIlsnRScsJ0xOMTAnLCdM
TjInLCdMT0cxMEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywnYWJzJywnYWNvcycs
J2Fjb3NoJywnYXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgnLCdjYnJ0JywnY2Vp
bCcsJ2NsejMyJywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3InLCdmcm91bmQnLCdo
eXBvdCcsJ2ltdWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21heCcsJ21pbicsJ3Bv
dycsJ3JhbmRvbScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0JywndGFuJywndGFu
aCcsJ3RydW5jJ10iLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Jl
Z2V4cC1mbGFncy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdleHAtZmxhZ3Mu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDQ1YWFkOTM5Njk0MTBhNGNhZjFmODZmOWU4OWM1MjNjZmE5NjA3Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdleHAtZmxh
Z3MuanMKQEAgLTAsMCArMSw0NiBAQAorZGVzY3JpcHRpb24oJ1Rlc3QgUmVnRXhwI2ZsYWdzIGFj
Y2Vzc29yJyk7CisKK2RlYnVnKCJwcm9wZXJ0eSBkZXNjcmlwdG9yIik7Cit2YXIgZGVzY3JpcHRv
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgJ2Zs
YWdzJyk7CitzaG91bGRCZSgiZGVzY3JpcHRvci5jb25maWd1cmFibGUiLCAidHJ1ZSIpOworc2hv
dWxkQmUoImRlc2NyaXB0b3IuZW51bWVyYWJsZSIsICJmYWxzZSIpOworc2hvdWxkQmUoInR5cGVv
ZiBkZXNjcmlwdG9yLmdldCIsICInZnVuY3Rpb24nIik7CitzaG91bGRCZSgiZGVzY3JpcHRvci5z
ZXQiLCAidW5kZWZpbmVkIik7CisKK3ZhciBmbGFncyA9IGRlc2NyaXB0b3IuZ2V0OworCitzaG91
bGRCZSgiL2EvZy5mbGFncyIsICInZyciKTsKK3Nob3VsZEJlKCIvYS8uZmxhZ3MiLCAiJyciKTsK
K3Nob3VsZEJlKCIvYS9nbWkuZmxhZ3MiLCAiJ2dpbSciKTsgLy8gb3JkZXIgaXMgc3BlY2lmaWVk
LCBoYXBwZW5zIHRvIGJlIGFscGhhYmV0aWMKK3Nob3VsZEJlKCJuZXcgUmVnRXhwKCdhJywgJ2dt
aScpLmZsYWdzIiwgIidnaW0nIik7CitzaG91bGRCZSgiZmxhZ3MuY2FsbCgvYS9pZykiLCAiJ2dp
JyIpOworCitkZWJ1Zygibm9uLW9iamVjdCByZWNlaXZlcnMiKTsKK3Nob3VsZFRocm93KCJmbGFn
cy5jYWxsKHVuZGVmaW5lZCkiLCAiJ1R5cGVFcnJvcjogVHlwZSBlcnJvciciKTsKK3Nob3VsZFRo
cm93KCJmbGFncy5jYWxsKG51bGwpIiwgIidUeXBlRXJyb3I6IFR5cGUgZXJyb3InIik7CitzaG91
bGRUaHJvdygiZmxhZ3MuY2FsbChmYWxzZSkiLCAiJ1R5cGVFcnJvcjogVHlwZSBlcnJvciciKTsK
K3Nob3VsZFRocm93KCJmbGFncy5jYWxsKHRydWUpIiwgIidUeXBlRXJyb3I6IFR5cGUgZXJyb3In
Iik7CisKK2RlYnVnKCJub24tcmVnZXggb2JqZWN0cyIpOworc2hvdWxkQmUoImZsYWdzLmNhbGwo
e30pIiwgIicnIik7CitzaG91bGRCZSgiZmxhZ3MuY2FsbCh7Z2xvYmFsOiB0cnVlLCBtdWx0aWxp
bmU6IHRydWUsIGlnbm9yZUNhc2U6IHRydWV9KSIsICInZ2ltJyIpOworc2hvdWxkQmUoImZsYWdz
LmNhbGwoe2dsb2JhbDogMSwgbXVsdGlsaW5lOiAwLCBpZ25vcmVDYXNlOiAyfSkiLCAiJ2dpJyIp
OworLy8gaW5oZXJpdGVkIHByb3BlcnRpZXMgY291bnQKK3Nob3VsZEJlKCJmbGFncy5jYWxsKHsg
X19wcm90b19fOiB7IG11bHRpbGluZTogdHJ1ZSB9IH0pIiwgIidtJyIpOworCitpZiAoUmVnRXhw
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnc3RpY2t5JykpIHsKKyAgZGVidWcoInN0aWNreSBm
bGFnIik7CisgIC8vIHdoZW4gdGhlIGVuZ2luZSBzdXBwb3J0cyAic3RpY2t5IiwgdGhlc2UgdGVz
dHMgd2lsbCBmYWlsIGJ5IGRlc2lnbi4KKyAgLy8gSG9wZWZ1bGx5LCBvbmx5IHRoZSBleHBlY3Rl
ZCBvdXRwdXQgd2lsbCBuZWVkIHVwZGF0aW5nLgorICBzaG91bGRCZSgiL2EveWltZy5mbGFncyIs
ICInZ2lteSciKTsKKyAgc2hvdWxkQmUoIm5ldyBSZWdFeHAoJ2EnLCAneWltZycpLmZsYWdzIiwg
IidnaW15JyIpOworICBzaG91bGRCZSgiZmxhZ3MuY2FsbCh7Z2xvYmFsOiB0cnVlLCBtdWx0aWxp
bmU6IHRydWUsIGlnbm9yZUNhc2U6IHRydWUsIHN0aWNreTogdHJ1ZX0pIiwgIidnaW15JyIpOwor
fQoraWYgKFJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ3VuaWNvZGUnKSkgeworICBk
ZWJ1ZygidW5pY29kZSBmbGFnIik7CisgIC8vIHdoZW4gdGhlIGVuZ2luZSBzdXBwb3J0cyAidW5p
Y29kZSIsIHRoZXNlIHRlc3RzIHdpbGwgZmFpbCBieSBkZXNpZ24uCisgIC8vIEhvcGVmdWxseSwg
b25seSB0aGUgZXhwZWN0ZWQgb3V0cHV0IHdpbGwgbmVlZCB1cGRhdGluZy4KKyAgc2hvdWxkQmUo
Ii9hL3VpbWcuZmxhZ3MiLCAiJ2dpbXUnIik7CisgIHNob3VsZEJlKCJuZXcgUmVnRXhwKCdhJywg
J3VpbWcnKS5mbGFncyIsICInZ2ltdSciKTsKKyAgc2hvdWxkQmUoImZsYWdzLmNhbGwoe2dsb2Jh
bDogdHJ1ZSwgbXVsdGlsaW5lOiB0cnVlLCBpZ25vcmVDYXNlOiB0cnVlLCB1bmljb2RlOiB0cnVl
fSkiLCAiJ2dpbXUnIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254633</attachid>
            <date>2015-06-10 00:36:48 -0700</date>
            <delta_ts>2015-06-10 10:39:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145599-20150610003621.patch</filename>
            <type>text/plain</type>
            <size>16248</size>
            <attacher name="Jordan Harband">ljharb</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MzhkNTMwODRiMzNhNTNiNTBmM2U0NGQwY2JmNzdjZDA2YzRmNjQ2Li5lNmU2ODBmZjUzZmU5Njgw
MTU5M2Y5Njc4MjcwMGUwNGU2YzNmNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wNi0xMCAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBSZWdFeHAucHJvdG90eXBlLmZsYWdzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1OTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgUGVyIGh0dHBzOi8vcGVvcGxlLm1v
emlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZXQtcmVnZXhwLnByb3Rv
dHlwZS5mbGFncworCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxhZ3NT
dHJpbmcpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9z
dGF0aWMtZ2V0dGVyLWluLW5hbWVzLmpzOgorCiAyMDE1LTA2LTA5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgb25lIHN5bmMgR0MgcGVyIGdjVGltZXIg
aW50ZXJ2YWwgb24gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIHdhcm5pbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDhkYWJl
MGNlZWM5ZWVhMzE2YjRmM2U2MmY5MzlmZmE5NTBlM2I1NzguLjJhMDVmMTlmZWFlNTczOWYzZTA4
MDk0MDM4MWI2Y2IwYzFlM2ExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBACiAgICAgbWFjcm8o
ZXhlYykgXAogICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZXhpdEtpbmQp
IFwKKyAgICBtYWNybyhmbGFncykgXAogICAgIG1hY3JvKGZvY3VzKSBcCiAgICAgbWFjcm8oZm9y
RWFjaCkgXAogICAgIG1hY3JvKGZvcndhcmQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IGEyNzg2OTdlZmRhMjg2Y2JlZjk5
NjI1ZjcxZTc0M2FmYzFjMDhkZTAuLjdhMjE2Y2MwNTZkNGUyM2ZiOTU4NjJmNTJmNWQ1MjNjODY2
MzJiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckdsb2JhbChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
R2V0dGVyTXVsdGlsaW5lKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEV4ZWNTdGF0
ZSopOwogCiB9CiAKQEAgLTY2LDYgKzY3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cFByb3Rv
dHlwZTo6c19pbmZvID0geyAiUmVnRXhwIiwgJlJlZ0V4cE9iamVjdDo6c19pbmZvLCAmcmUKICAg
aWdub3JlQ2FzZSAgICByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UgRG9udEVudW18QWNjZXNz
b3IKICAgbXVsdGlsaW5lICAgICByZWdFeHBQcm90b0dldHRlck11bHRpbGluZSAgRG9udEVudW18
QWNjZXNzb3IKICAgc291cmNlICAgICAgICByZWdFeHBQcm90b0dldHRlclNvdXJjZSAgICAgRG9u
dEVudW18QWNjZXNzb3IKKyAgZmxhZ3MgICAgICAgICByZWdFeHBQcm90b0dldHRlckZsYWdzICAg
ICAgRG9udEVudW18QWNjZXNzb3IKIEBlbmQKICovCiAKQEAgLTEzNSw2ICsxMzcsMzAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CitzdGF0aWMgaW5saW5lIFN0cmluZyBmbGFnc1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMsIEpTT2Jq
ZWN0KiByZWdleHApCit7CisgICAgY2hhciBmbGFnc1s0XSA9IHsgMCwgMCwgMCwgMCB9OworICAg
IGludCBpbmRleCA9IDA7CisKKyAgICBKU1ZhbHVlIGdsb2JhbFZhbHVlID0gcmVnZXhwLT5nZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdsb2JhbCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgSlNWYWx1ZSBpZ25vcmVD
YXNlVmFsdWUgPSByZWdleHAtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaWdub3Jl
Q2FzZSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgSlNWYWx1ZSBtdWx0aWxpbmVWYWx1ZSA9IHJlZ2V4cC0+Z2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5tdWx0aWxpbmUpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGdsb2JhbFZhbHVlLnRv
Qm9vbGVhbihleGVjKSkKKyAgICAgICAgZmxhZ3NbaW5kZXgrK10gPSAnZyc7CisgICAgaWYgKGln
bm9yZUNhc2VWYWx1ZS50b0Jvb2xlYW4oZXhlYykpCisgICAgICAgIGZsYWdzW2luZGV4KytdID0g
J2knOworICAgIGlmIChtdWx0aWxpbmVWYWx1ZS50b0Jvb2xlYW4oZXhlYykpCisgICAgICAgIGZs
YWdzW2luZGV4XSA9ICdtJzsKKyAgICByZXR1cm4gU3RyaW5nKGZsYWdzKTsKK30KKwogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKQEAg
LTE0NywxNyArMTczLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0
dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAotICAgIGNoYXIgcG9zdGZpeFs1XSA9
IHsgJy8nLCAwLCAwLCAwLCAwIH07Ci0gICAgaW50IGluZGV4ID0gMTsKLSAgICBpZiAodGhpc09i
amVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nbG9iYWwpLnRvQm9vbGVhbihl
eGVjKSkKLSAgICAgICAgcG9zdGZpeFtpbmRleCsrXSA9ICdnJzsKLSAgICBpZiAodGhpc09iamVj
dC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pZ25vcmVDYXNlKS50b0Jvb2xlYW4o
ZXhlYykpCi0gICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAnaSc7Ci0gICAgaWYgKHRoaXNPYmpl
Y3QtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubXVsdGlsaW5lKS50b0Jvb2xlYW4o
ZXhlYykpCi0gICAgICAgIHBvc3RmaXhbaW5kZXhdID0gJ20nOwotICAgIFN0cmluZyBzb3VyY2Ug
PSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNvdXJjZSkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIEpTVmFsdWUgc291cmNlVmFsdWUgPSB0aGlz
T2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNvdXJjZSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFN0cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgU3RyaW5nIGZs
YWdzID0gZmxhZ3NTdHJpbmcoZXhlYywgdGhpc09iamVjdCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworCiAgICAgLy8gSWYgc291cmNlIGlzIGVtcHR5LCB1c2UgIi8oPzopLyIgdG8gYXZvaWQgY29s
bGlkaW5nIHdpdGggY29tbWVudCBzeW50YXgKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIi8iLCBzb3VyY2UsIHBvc3RmaXgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIi8iLCBz
b3VyY2UsICIvIiwgZmxhZ3MpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlckdsb2JhbChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xODcsNiArMjE1LDE3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxp
bmUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5tdWx0aWxpbmUoKSkpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICBKU1ZhbHVlIGZsYWdzID0g
anNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCBmbGFnc1N0cmluZyhleGVjLCBhc09iamVjdCh0
aGlzVmFsdWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmbGFncyk7Cit9CisKKwog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIHZvaWQgYXBw
ZW5kTGluZVRlcm1pbmF0b3JFc2NhcGUoU3RyaW5nQnVpbGRlciYsIENoYXJhY3RlclR5cGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0YXRpYy1n
ZXR0ZXItaW4tbmFtZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0
YXRpYy1nZXR0ZXItaW4tbmFtZXMuanMKaW5kZXggZDdlM2JjMTMxYmNjZjIxMDM3YTI2OWY1MTI0
YTgyZDQ0ZTFhNWE5Yi4uODUyYTJlNTcwNjQ2N2QxMjhkNDVhYmU1NzdlNTFjODZkN2Y0NjFlMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdGF0aWMtZ2V0
dGVyLWluLW5hbWVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
c3RhdGljLWdldHRlci1pbi1uYW1lcy5qcwpAQCAtMyw1ICszLDUgQEAgZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgewogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7CiB9CiAKLXNob3VsZEJlKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpLnNvcnQoKSksICdbImNvbXBpbGUiLCJj
b25zdHJ1Y3RvciIsImV4ZWMiLCJnbG9iYWwiLCJpZ25vcmVDYXNlIiwibGFzdEluZGV4IiwibXVs
dGlsaW5lIiwic291cmNlIiwidGVzdCIsInRvU3RyaW5nIl0nKTsKK3Nob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpLnNvcnQo
KSksICdbImNvbXBpbGUiLCJjb25zdHJ1Y3RvciIsImV4ZWMiLCJmbGFncyIsImdsb2JhbCIsImln
bm9yZUNhc2UiLCJsYXN0SW5kZXgiLCJtdWx0aWxpbmUiLCJzb3VyY2UiLCJ0ZXN0IiwidG9TdHJp
bmciXScpOwogc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXMoL0NvY29hLykuc29ydCgpKSwgJ1sibGFzdEluZGV4Il0nKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZjY0YTllMzVh
MDQxNTAwNWE5NmZhMjVhY2FmOTFkNDc1OWVjMTgzLi5jOWMwOWI3NzJmNWQ5YTRlYmMzZGM0Yjc1
YTU4N2FlMTk0YzlkMWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDYtMTAgIEpvcmRh
biBIYXJiYW5kICA8bGpoYXJiQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVnRXhw
LnByb3RvdHlwZS5mbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICoganMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvcmVnZXhwLWZsYWdzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMv
cmVnZXhwLWZsYWdzLmpzOiBBZGRlZC4KKyAgICAgICAgKC5nZXQgc2hvdWxkQmUpOgorCiAyMDE1
LTA2LTA5ICBEYWVneXUgTGVlICA8ZGFlZ3l1LmxlZUBuYXZlcmNvcnAuY29tPgogCiAgICAgICAg
IDNELXRyYW5zZm9ybWVkIHZpZGVvIGRvZXMgbm90IGRpc3BsYXkgb24gcGxhdGZvcm1zIHdpdGhv
dXQgYWNjZWxlcmF0ZWQgdmlkZW8gcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKaW5kZXggMGNiMDI5NDQ0
ZGQyMTkwMjFlNTBmZDFmZTViODQzMDc0YmY0M2I1Zi4uYjA1NDRjZWZmNDk4ZTBkYjdlMmZjNjIy
NDA4ZTVkMGZiNWVhMWYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93
blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL09iamVjdC1n
ZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNTYsNyArNTYsNyBAQCBQQVNTIGdl
dFNvcnRlZE93blByb3BlcnR5TmFtZXMoTnVtYmVyLnByb3RvdHlwZSkgaXMgWydjb25zdHJ1Y3Rv
cicsICd0b0V4cG9uZW50aQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKERhdGUpIGlz
IFsnVVRDJywgJ2xlbmd0aCcsICduYW1lJywgJ25vdycsICdwYXJzZScsICdwcm90b3R5cGUnXQog
UEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKERhdGUucHJvdG90eXBlKSBpcyBbJ2NvbnN0
cnVjdG9yJywgJ2dldERhdGUnLCAnZ2V0RGF5JywgJ2dldEZ1bGxZZWFyJywgJ2dldEhvdXJzJywg
J2dldE1pbGxpc2Vjb25kcycsICdnZXRNaW51dGVzJywgJ2dldE1vbnRoJywgJ2dldFNlY29uZHMn
LCAnZ2V0VGltZScsICdnZXRUaW1lem9uZU9mZnNldCcsICdnZXRVVENEYXRlJywgJ2dldFVUQ0Rh
eScsICdnZXRVVENGdWxsWWVhcicsICdnZXRVVENIb3VycycsICdnZXRVVENNaWxsaXNlY29uZHMn
LCAnZ2V0VVRDTWludXRlcycsICdnZXRVVENNb250aCcsICdnZXRVVENTZWNvbmRzJywgJ2dldFll
YXInLCAnc2V0RGF0ZScsICdzZXRGdWxsWWVhcicsICdzZXRIb3VycycsICdzZXRNaWxsaXNlY29u
ZHMnLCAnc2V0TWludXRlcycsICdzZXRNb250aCcsICdzZXRTZWNvbmRzJywgJ3NldFRpbWUnLCAn
c2V0VVRDRGF0ZScsICdzZXRVVENGdWxsWWVhcicsICdzZXRVVENIb3VycycsICdzZXRVVENNaWxs
aXNlY29uZHMnLCAnc2V0VVRDTWludXRlcycsICdzZXRVVENNb250aCcsICdzZXRVVENTZWNvbmRz
JywgJ3NldFllYXInLCAndG9EYXRlU3RyaW5nJywgJ3RvR01UU3RyaW5nJywgJ3RvSVNPU3RyaW5n
JywgJ3RvSlNPTicsICd0b0xvY2FsZURhdGVTdHJpbmcnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9M
b2NhbGVUaW1lU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3RvVGltZVN0cmluZycsICd0b1VUQ1N0cmlu
ZycsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhSZWdFeHApIGlz
IFsnJCYnLCAiJCciLCAnJConLCAnJCsnLCAnJDEnLCAnJDInLCAnJDMnLCAnJDQnLCAnJDUnLCAn
JDYnLCAnJDcnLCAnJDgnLCAnJDknLCAnJF8nLCAnJGAnLCAnaW5wdXQnLCAnbGFzdE1hdGNoJywg
J2xhc3RQYXJlbicsICdsZWZ0Q29udGV4dCcsICdsZW5ndGgnLCAnbXVsdGlsaW5lJywgJ25hbWUn
LCAncHJvdG90eXBlJywgJ3JpZ2h0Q29udGV4dCddCi1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5
TmFtZXMoUmVnRXhwLnByb3RvdHlwZSkgaXMgWydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2V4
ZWMnLCAnZ2xvYmFsJywgJ2lnbm9yZUNhc2UnLCAnbGFzdEluZGV4JywgJ211bHRpbGluZScsICdz
b3VyY2UnLCAndGVzdCcsICd0b1N0cmluZyddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFt
ZXMoUmVnRXhwLnByb3RvdHlwZSkgaXMgWydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2V4ZWMn
LCAnZmxhZ3MnLCAnZ2xvYmFsJywgJ2lnbm9yZUNhc2UnLCAnbGFzdEluZGV4JywgJ211bHRpbGlu
ZScsICdzb3VyY2UnLCAndGVzdCcsICd0b1N0cmluZyddCiBQQVNTIGdldFNvcnRlZE93blByb3Bl
cnR5TmFtZXMoRXJyb3IpIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KIFBBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvci5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0
b3InLCAnbWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhNYXRoKSBpcyBbJ0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywnTE9HMkUnLCdQ
SScsJ1NRUlQxXzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4nLCdhc2luaCcs
J2F0YW4nLCdhdGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2NvcycsJ2Nvc2gn
LCdleHAnLCdleHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywnbG9nJywnbG9n
MTAnLCdsb2cxcCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdyb3VuZCcsJ3Np
Z24nLCdzaW4nLCdzaW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGFlOGJiN2ZiOTI1ZDgy
NDIyY2RlM2RmNjMyZmNmYTVhZDg1YjAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACitUZXN0IFJlZ0V4
cCNmbGFncyBhY2Nlc3NvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcHJvcGVy
dHkgZGVzY3JpcHRvcgorUEFTUyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNT
IGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyB0eXBlb2YgZGVzY3JpcHRvci5n
ZXQgaXMgJ2Z1bmN0aW9uJworUEFTUyBkZXNjcmlwdG9yLnNldCBpcyB1bmRlZmluZWQKK1BBU1Mg
L2EvZy5mbGFncyBpcyAnZycKK1BBU1MgL2EvLmZsYWdzIGlzICcnCitQQVNTIC9hL2dtaS5mbGFn
cyBpcyAnZ2ltJworUEFTUyBuZXcgUmVnRXhwKCdhJywgJ2dtaScpLmZsYWdzIGlzICdnaW0nCitQ
QVNTIGZsYWdzLmNhbGwoL2EvaWcpIGlzICdnaScKK25vbi1vYmplY3QgcmVjZWl2ZXJzCitQQVNT
IGZsYWdzLmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorUEFTUyBmbGFncy5jYWxsKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGZsYWdzLmNhbGwoZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitQQVNTIGZsYWdzLmNhbGwodHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK25vbi1yZWdleCBvYmplY3RzCitQQVNTIGZsYWdzLmNhbGwo
e30pIGlzICcnCitQQVNTIGZsYWdzLmNhbGwoe2dsb2JhbDogdHJ1ZSwgbXVsdGlsaW5lOiB0cnVl
LCBpZ25vcmVDYXNlOiB0cnVlfSkgaXMgJ2dpbScKK1BBU1MgZmxhZ3MuY2FsbCh7Z2xvYmFsOiAx
LCBtdWx0aWxpbmU6IDAsIGlnbm9yZUNhc2U6IDJ9KSBpcyAnZ2knCitQQVNTIGZsYWdzLmNhbGwo
eyBfX3Byb3RvX186IHsgbXVsdGlsaW5lOiB0cnVlIH0gfSkgaXMgJ20nCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvcmVnZXhwLWZsYWdzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3Mu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYjE3MmM0Mjg3NWRiODMxOTM4OTdhMTZkYjI4Yjg1N2YyODgzOWY1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVnZXhwLWZsYWdzLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL3JlZ2V4cC1mbGFncy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMu
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMKaW5kZXggZGJiMTY5MTJiNWE1ODMwZTVkOTNkNzAxNWUzMTRmNWU5OGUxNjc1Zi4uZjc5
ZGZhYjZhNmFmODI4YzQ4MzAyZDBhN2FlNWE0YjVjZTlkOTkyOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5q
cwpAQCAtNjUsNyArNjUsNyBAQCB2YXIgZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzU2V0ID0gewogICAg
ICJEYXRlIjogIlsnVVRDJywgJ2xlbmd0aCcsICduYW1lJywgJ25vdycsICdwYXJzZScsICdwcm90
b3R5cGUnXSIsCiAgICAgIkRhdGUucHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAnZ2V0RGF0
ZScsICdnZXREYXknLCAnZ2V0RnVsbFllYXInLCAnZ2V0SG91cnMnLCAnZ2V0TWlsbGlzZWNvbmRz
JywgJ2dldE1pbnV0ZXMnLCAnZ2V0TW9udGgnLCAnZ2V0U2Vjb25kcycsICdnZXRUaW1lJywgJ2dl
dFRpbWV6b25lT2Zmc2V0JywgJ2dldFVUQ0RhdGUnLCAnZ2V0VVRDRGF5JywgJ2dldFVUQ0Z1bGxZ
ZWFyJywgJ2dldFVUQ0hvdXJzJywgJ2dldFVUQ01pbGxpc2Vjb25kcycsICdnZXRVVENNaW51dGVz
JywgJ2dldFVUQ01vbnRoJywgJ2dldFVUQ1NlY29uZHMnLCAnZ2V0WWVhcicsICdzZXREYXRlJywg
J3NldEZ1bGxZZWFyJywgJ3NldEhvdXJzJywgJ3NldE1pbGxpc2Vjb25kcycsICdzZXRNaW51dGVz
JywgJ3NldE1vbnRoJywgJ3NldFNlY29uZHMnLCAnc2V0VGltZScsICdzZXRVVENEYXRlJywgJ3Nl
dFVUQ0Z1bGxZZWFyJywgJ3NldFVUQ0hvdXJzJywgJ3NldFVUQ01pbGxpc2Vjb25kcycsICdzZXRV
VENNaW51dGVzJywgJ3NldFVUQ01vbnRoJywgJ3NldFVUQ1NlY29uZHMnLCAnc2V0WWVhcicsICd0
b0RhdGVTdHJpbmcnLCAndG9HTVRTdHJpbmcnLCAndG9JU09TdHJpbmcnLCAndG9KU09OJywgJ3Rv
TG9jYWxlRGF0ZVN0cmluZycsICd0b0xvY2FsZVN0cmluZycsICd0b0xvY2FsZVRpbWVTdHJpbmcn
LCAndG9TdHJpbmcnLCAndG9UaW1lU3RyaW5nJywgJ3RvVVRDU3RyaW5nJywgJ3ZhbHVlT2YnXSIs
CiAgICAgIlJlZ0V4cCI6ICJbJyQmJywgXCIkJ1wiLCAnJConLCAnJCsnLCAnJDEnLCAnJDInLCAn
JDMnLCAnJDQnLCAnJDUnLCAnJDYnLCAnJDcnLCAnJDgnLCAnJDknLCAnJF8nLCAnJGAnLCAnaW5w
dXQnLCAnbGFzdE1hdGNoJywgJ2xhc3RQYXJlbicsICdsZWZ0Q29udGV4dCcsICdsZW5ndGgnLCAn
bXVsdGlsaW5lJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3JpZ2h0Q29udGV4dCddIiwKLSAgICAi
UmVnRXhwLnByb3RvdHlwZSI6ICJbJ2NvbXBpbGUnLCAnY29uc3RydWN0b3InLCAnZXhlYycsICdn
bG9iYWwnLCAnaWdub3JlQ2FzZScsICdsYXN0SW5kZXgnLCAnbXVsdGlsaW5lJywgJ3NvdXJjZScs
ICd0ZXN0JywgJ3RvU3RyaW5nJ10iLAorICAgICJSZWdFeHAucHJvdG90eXBlIjogIlsnY29tcGls
ZScsICdjb25zdHJ1Y3RvcicsICdleGVjJywgJ2ZsYWdzJywgJ2dsb2JhbCcsICdpZ25vcmVDYXNl
JywgJ2xhc3RJbmRleCcsICdtdWx0aWxpbmUnLCAnc291cmNlJywgJ3Rlc3QnLCAndG9TdHJpbmcn
XSIsCiAgICAgIkVycm9yIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAg
ICJFcnJvci5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICdtZXNzYWdlJywgJ25hbWUnLCAn
dG9TdHJpbmcnXSIsCiAgICAgIk1hdGgiOiAiWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEwRScsJ0xP
RzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdhc2luJywn
YXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzInLCdjb3Mn
LCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11bCcsJ2xv
ZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFuZG9tJywncm91
bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMnXSIsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLWZsYWdzLmpzIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1mbGFncy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NDVhYWQ5Mzk2OTQxMGE0Y2FmMWY4NmY5ZTg5YzUyM2NmYTk2MDc3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1mbGFncy5qcwpAQCAtMCwwICsx
LDQ2IEBACitkZXNjcmlwdGlvbignVGVzdCBSZWdFeHAjZmxhZ3MgYWNjZXNzb3InKTsKKworZGVi
dWcoInByb3BlcnR5IGRlc2NyaXB0b3IiKTsKK3ZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCAnZmxhZ3MnKTsKK3Nob3VsZEJl
KCJkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSIsICJ0cnVlIik7CitzaG91bGRCZSgiZGVzY3JpcHRv
ci5lbnVtZXJhYmxlIiwgImZhbHNlIik7CitzaG91bGRCZSgidHlwZW9mIGRlc2NyaXB0b3IuZ2V0
IiwgIidmdW5jdGlvbiciKTsKK3Nob3VsZEJlKCJkZXNjcmlwdG9yLnNldCIsICJ1bmRlZmluZWQi
KTsKKwordmFyIGZsYWdzID0gZGVzY3JpcHRvci5nZXQ7CisKK3Nob3VsZEJlKCIvYS9nLmZsYWdz
IiwgIidnJyIpOworc2hvdWxkQmUoIi9hLy5mbGFncyIsICInJyIpOworc2hvdWxkQmUoIi9hL2dt
aS5mbGFncyIsICInZ2ltJyIpOyAvLyBvcmRlciBpcyBzcGVjaWZpZWQsIGhhcHBlbnMgdG8gYmUg
YWxwaGFiZXRpYworc2hvdWxkQmUoIm5ldyBSZWdFeHAoJ2EnLCAnZ21pJykuZmxhZ3MiLCAiJ2dp
bSciKTsKK3Nob3VsZEJlKCJmbGFncy5jYWxsKC9hL2lnKSIsICInZ2knIik7CisKK2RlYnVnKCJu
b24tb2JqZWN0IHJlY2VpdmVycyIpOworc2hvdWxkVGhyb3coImZsYWdzLmNhbGwodW5kZWZpbmVk
KSIsICInVHlwZUVycm9yOiBUeXBlIGVycm9yJyIpOworc2hvdWxkVGhyb3coImZsYWdzLmNhbGwo
bnVsbCkiLCAiJ1R5cGVFcnJvcjogVHlwZSBlcnJvciciKTsKK3Nob3VsZFRocm93KCJmbGFncy5j
YWxsKGZhbHNlKSIsICInVHlwZUVycm9yOiBUeXBlIGVycm9yJyIpOworc2hvdWxkVGhyb3coImZs
YWdzLmNhbGwodHJ1ZSkiLCAiJ1R5cGVFcnJvcjogVHlwZSBlcnJvciciKTsKKworZGVidWcoIm5v
bi1yZWdleCBvYmplY3RzIik7CitzaG91bGRCZSgiZmxhZ3MuY2FsbCh7fSkiLCAiJyciKTsKK3No
b3VsZEJlKCJmbGFncy5jYWxsKHtnbG9iYWw6IHRydWUsIG11bHRpbGluZTogdHJ1ZSwgaWdub3Jl
Q2FzZTogdHJ1ZX0pIiwgIidnaW0nIik7CitzaG91bGRCZSgiZmxhZ3MuY2FsbCh7Z2xvYmFsOiAx
LCBtdWx0aWxpbmU6IDAsIGlnbm9yZUNhc2U6IDJ9KSIsICInZ2knIik7CisvLyBpbmhlcml0ZWQg
cHJvcGVydGllcyBjb3VudAorc2hvdWxkQmUoImZsYWdzLmNhbGwoeyBfX3Byb3RvX186IHsgbXVs
dGlsaW5lOiB0cnVlIH0gfSkiLCAiJ20nIik7CisKK2lmIChSZWdFeHAucHJvdG90eXBlLmhhc093
blByb3BlcnR5KCdzdGlja3knKSkgeworICBkZWJ1Zygic3RpY2t5IGZsYWciKTsKKyAgLy8gd2hl
biB0aGUgZW5naW5lIHN1cHBvcnRzICJzdGlja3kiLCB0aGVzZSB0ZXN0cyB3aWxsIGZhaWwgYnkg
ZGVzaWduLgorICAvLyBIb3BlZnVsbHksIG9ubHkgdGhlIGV4cGVjdGVkIG91dHB1dCB3aWxsIG5l
ZWQgdXBkYXRpbmcuCisgIHNob3VsZEJlKCIvYS95aW1nLmZsYWdzIiwgIidnaW15JyIpOworICBz
aG91bGRCZSgibmV3IFJlZ0V4cCgnYScsICd5aW1nJykuZmxhZ3MiLCAiJ2dpbXknIik7CisgIHNo
b3VsZEJlKCJmbGFncy5jYWxsKHtnbG9iYWw6IHRydWUsIG11bHRpbGluZTogdHJ1ZSwgaWdub3Jl
Q2FzZTogdHJ1ZSwgc3RpY2t5OiB0cnVlfSkiLCAiJ2dpbXknIik7Cit9CitpZiAoUmVnRXhwLnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgndW5pY29kZScpKSB7CisgIGRlYnVnKCJ1bmljb2RlIGZs
YWciKTsKKyAgLy8gd2hlbiB0aGUgZW5naW5lIHN1cHBvcnRzICJ1bmljb2RlIiwgdGhlc2UgdGVz
dHMgd2lsbCBmYWlsIGJ5IGRlc2lnbi4KKyAgLy8gSG9wZWZ1bGx5LCBvbmx5IHRoZSBleHBlY3Rl
ZCBvdXRwdXQgd2lsbCBuZWVkIHVwZGF0aW5nLgorICBzaG91bGRCZSgiL2EvdWltZy5mbGFncyIs
ICInZ2ltdSciKTsKKyAgc2hvdWxkQmUoIm5ldyBSZWdFeHAoJ2EnLCAndWltZycpLmZsYWdzIiwg
IidnaW11JyIpOworICBzaG91bGRCZSgiZmxhZ3MuY2FsbCh7Z2xvYmFsOiB0cnVlLCBtdWx0aWxp
bmU6IHRydWUsIGlnbm9yZUNhc2U6IHRydWUsIHVuaWNvZGU6IHRydWV9KSIsICInZ2ltdSciKTsK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254663</attachid>
            <date>2015-06-10 10:39:14 -0700</date>
            <delta_ts>2015-06-10 15:33:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145599-20150610103846.patch</filename>
            <type>text/plain</type>
            <size>16362</size>
            <attacher name="Jordan Harband">ljharb</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MzhkNTMwODRiMzNhNTNiNTBmM2U0NGQwY2JmNzdjZDA2YzRmNjQ2Li5lNmU2ODBmZjUzZmU5Njgw
MTU5M2Y5Njc4MjcwMGUwNGU2YzNmNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wNi0xMCAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBSZWdFeHAucHJvdG90eXBlLmZsYWdzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1OTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgUGVyIGh0dHBzOi8vcGVvcGxlLm1v
emlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZXQtcmVnZXhwLnByb3Rv
dHlwZS5mbGFncworCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZmxhZ3NT
dHJpbmcpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9z
dGF0aWMtZ2V0dGVyLWluLW5hbWVzLmpzOgorCiAyMDE1LTA2LTA5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgb25lIHN5bmMgR0MgcGVyIGdjVGltZXIg
aW50ZXJ2YWwgb24gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIHdhcm5pbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDhkYWJl
MGNlZWM5ZWVhMzE2YjRmM2U2MmY5MzlmZmE5NTBlM2I1NzguLjJhMDVmMTlmZWFlNTczOWYzZTA4
MDk0MDM4MWI2Y2IwYzFlM2ExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBACiAgICAgbWFjcm8o
ZXhlYykgXAogICAgIG1hY3JvKGV4ZWN1dGlvbkNvdW50KSBcCiAgICAgbWFjcm8oZXhpdEtpbmQp
IFwKKyAgICBtYWNybyhmbGFncykgXAogICAgIG1hY3JvKGZvY3VzKSBcCiAgICAgbWFjcm8oZm9y
RWFjaCkgXAogICAgIG1hY3JvKGZvcndhcmQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IGEyNzg2OTdlZmRhMjg2Y2JlZjk5
NjI1ZjcxZTc0M2FmYzFjMDhkZTAuLjE4MTJiODkyNmZkYmYxMGI0MjhiNWM5NjgwNDRkNGM2Zjc2
ZGRiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckdsb2JhbChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
R2V0dGVyTXVsdGlsaW5lKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEV4ZWNTdGF0
ZSopOwogCiB9CiAKQEAgLTY2LDYgKzY3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cFByb3Rv
dHlwZTo6c19pbmZvID0geyAiUmVnRXhwIiwgJlJlZ0V4cE9iamVjdDo6c19pbmZvLCAmcmUKICAg
aWdub3JlQ2FzZSAgICByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UgRG9udEVudW18QWNjZXNz
b3IKICAgbXVsdGlsaW5lICAgICByZWdFeHBQcm90b0dldHRlck11bHRpbGluZSAgRG9udEVudW18
QWNjZXNzb3IKICAgc291cmNlICAgICAgICByZWdFeHBQcm90b0dldHRlclNvdXJjZSAgICAgRG9u
dEVudW18QWNjZXNzb3IKKyAgZmxhZ3MgICAgICAgICByZWdFeHBQcm90b0dldHRlckZsYWdzICAg
ICAgRG9udEVudW18QWNjZXNzb3IKIEBlbmQKICovCiAKQEAgLTEzNSw2ICsxMzcsMzAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CitzdGF0aWMgaW5saW5lIFN0cmluZyBmbGFnc1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMsIEpTT2Jq
ZWN0KiByZWdleHApCit7CisgICAgY2hhciBmbGFnc1s0XSA9IHsgMCwgMCwgMCwgMCB9OworICAg
IGludCBpbmRleCA9IDA7CisKKyAgICBKU1ZhbHVlIGdsb2JhbFZhbHVlID0gcmVnZXhwLT5nZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdsb2JhbCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgSlNWYWx1ZSBpZ25vcmVD
YXNlVmFsdWUgPSByZWdleHAtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaWdub3Jl
Q2FzZSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgSlNWYWx1ZSBtdWx0aWxpbmVWYWx1ZSA9IHJlZ2V4cC0+Z2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5tdWx0aWxpbmUpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGdsb2JhbFZhbHVlLnRv
Qm9vbGVhbihleGVjKSkKKyAgICAgICAgZmxhZ3NbaW5kZXgrK10gPSAnZyc7CisgICAgaWYgKGln
bm9yZUNhc2VWYWx1ZS50b0Jvb2xlYW4oZXhlYykpCisgICAgICAgIGZsYWdzW2luZGV4KytdID0g
J2knOworICAgIGlmIChtdWx0aWxpbmVWYWx1ZS50b0Jvb2xlYW4oZXhlYykpCisgICAgICAgIGZs
YWdzW2luZGV4XSA9ICdtJzsKKyAgICByZXR1cm4gU3RyaW5nKGZsYWdzKTsKK30KKwogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKQEAg
LTE0NywxNyArMTczLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0
dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAotICAgIGNoYXIgcG9zdGZpeFs1XSA9
IHsgJy8nLCAwLCAwLCAwLCAwIH07Ci0gICAgaW50IGluZGV4ID0gMTsKLSAgICBpZiAodGhpc09i
amVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nbG9iYWwpLnRvQm9vbGVhbihl
eGVjKSkKLSAgICAgICAgcG9zdGZpeFtpbmRleCsrXSA9ICdnJzsKLSAgICBpZiAodGhpc09iamVj
dC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pZ25vcmVDYXNlKS50b0Jvb2xlYW4o
ZXhlYykpCi0gICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAnaSc7Ci0gICAgaWYgKHRoaXNPYmpl
Y3QtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubXVsdGlsaW5lKS50b0Jvb2xlYW4o
ZXhlYykpCi0gICAgICAgIHBvc3RmaXhbaW5kZXhdID0gJ20nOwotICAgIFN0cmluZyBzb3VyY2Ug
PSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNvdXJjZSkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIEpTVmFsdWUgc291cmNlVmFsdWUgPSB0aGlz
T2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNvdXJjZSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFN0cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgU3RyaW5nIGZs
YWdzID0gZmxhZ3NTdHJpbmcoZXhlYywgdGhpc09iamVjdCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworCiAgICAgLy8gSWYgc291cmNlIGlzIGVtcHR5LCB1c2UgIi8oPzopLyIgdG8gYXZvaWQgY29s
bGlkaW5nIHdpdGggY29tbWVudCBzeW50YXgKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIi8iLCBzb3VyY2UsIHBvc3RmaXgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIi8iLCBz
b3VyY2UsICIvIiwgZmxhZ3MpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlckdsb2JhbChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xODcsNiArMjE1LDIx
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxp
bmUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5tdWx0aWxpbmUoKSkpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICBTdHJpbmcgZmxhZ3NTdHIg
PSBmbGFnc1N0cmluZyhleGVjLCBhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisKKyAgICBKU1ZhbHVlIGZsYWdzID0ganNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVj
LCBmbGFnc1N0cik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmbGFncyk7Cit9CisKKwog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIHZvaWQgYXBw
ZW5kTGluZVRlcm1pbmF0b3JFc2NhcGUoU3RyaW5nQnVpbGRlciYsIENoYXJhY3RlclR5cGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0YXRpYy1n
ZXR0ZXItaW4tbmFtZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0
YXRpYy1nZXR0ZXItaW4tbmFtZXMuanMKaW5kZXggZDdlM2JjMTMxYmNjZjIxMDM3YTI2OWY1MTI0
YTgyZDQ0ZTFhNWE5Yi4uODUyYTJlNTcwNjQ2N2QxMjhkNDVhYmU1NzdlNTFjODZkN2Y0NjFlMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdGF0aWMtZ2V0
dGVyLWluLW5hbWVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
c3RhdGljLWdldHRlci1pbi1uYW1lcy5qcwpAQCAtMyw1ICszLDUgQEAgZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgewogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7CiB9CiAKLXNob3VsZEJlKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpLnNvcnQoKSksICdbImNvbXBpbGUiLCJj
b25zdHJ1Y3RvciIsImV4ZWMiLCJnbG9iYWwiLCJpZ25vcmVDYXNlIiwibGFzdEluZGV4IiwibXVs
dGlsaW5lIiwic291cmNlIiwidGVzdCIsInRvU3RyaW5nIl0nKTsKK3Nob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpLnNvcnQo
KSksICdbImNvbXBpbGUiLCJjb25zdHJ1Y3RvciIsImV4ZWMiLCJmbGFncyIsImdsb2JhbCIsImln
bm9yZUNhc2UiLCJsYXN0SW5kZXgiLCJtdWx0aWxpbmUiLCJzb3VyY2UiLCJ0ZXN0IiwidG9TdHJp
bmciXScpOwogc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXMoL0NvY29hLykuc29ydCgpKSwgJ1sibGFzdEluZGV4Il0nKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZjY0YTllMzVh
MDQxNTAwNWE5NmZhMjVhY2FmOTFkNDc1OWVjMTgzLi5jOWMwOWI3NzJmNWQ5YTRlYmMzZGM0Yjc1
YTU4N2FlMTk0YzlkMWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDYtMTAgIEpvcmRh
biBIYXJiYW5kICA8bGpoYXJiQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVnRXhw
LnByb3RvdHlwZS5mbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICoganMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvcmVnZXhwLWZsYWdzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMv
cmVnZXhwLWZsYWdzLmpzOiBBZGRlZC4KKyAgICAgICAgKC5nZXQgc2hvdWxkQmUpOgorCiAyMDE1
LTA2LTA5ICBEYWVneXUgTGVlICA8ZGFlZ3l1LmxlZUBuYXZlcmNvcnAuY29tPgogCiAgICAgICAg
IDNELXRyYW5zZm9ybWVkIHZpZGVvIGRvZXMgbm90IGRpc3BsYXkgb24gcGxhdGZvcm1zIHdpdGhv
dXQgYWNjZWxlcmF0ZWQgdmlkZW8gcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKaW5kZXggMGNiMDI5NDQ0
ZGQyMTkwMjFlNTBmZDFmZTViODQzMDc0YmY0M2I1Zi4uYjA1NDRjZWZmNDk4ZTBkYjdlMmZjNjIy
NDA4ZTVkMGZiNWVhMWYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93
blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL09iamVjdC1n
ZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNTYsNyArNTYsNyBAQCBQQVNTIGdl
dFNvcnRlZE93blByb3BlcnR5TmFtZXMoTnVtYmVyLnByb3RvdHlwZSkgaXMgWydjb25zdHJ1Y3Rv
cicsICd0b0V4cG9uZW50aQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKERhdGUpIGlz
IFsnVVRDJywgJ2xlbmd0aCcsICduYW1lJywgJ25vdycsICdwYXJzZScsICdwcm90b3R5cGUnXQog
UEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKERhdGUucHJvdG90eXBlKSBpcyBbJ2NvbnN0
cnVjdG9yJywgJ2dldERhdGUnLCAnZ2V0RGF5JywgJ2dldEZ1bGxZZWFyJywgJ2dldEhvdXJzJywg
J2dldE1pbGxpc2Vjb25kcycsICdnZXRNaW51dGVzJywgJ2dldE1vbnRoJywgJ2dldFNlY29uZHMn
LCAnZ2V0VGltZScsICdnZXRUaW1lem9uZU9mZnNldCcsICdnZXRVVENEYXRlJywgJ2dldFVUQ0Rh
eScsICdnZXRVVENGdWxsWWVhcicsICdnZXRVVENIb3VycycsICdnZXRVVENNaWxsaXNlY29uZHMn
LCAnZ2V0VVRDTWludXRlcycsICdnZXRVVENNb250aCcsICdnZXRVVENTZWNvbmRzJywgJ2dldFll
YXInLCAnc2V0RGF0ZScsICdzZXRGdWxsWWVhcicsICdzZXRIb3VycycsICdzZXRNaWxsaXNlY29u
ZHMnLCAnc2V0TWludXRlcycsICdzZXRNb250aCcsICdzZXRTZWNvbmRzJywgJ3NldFRpbWUnLCAn
c2V0VVRDRGF0ZScsICdzZXRVVENGdWxsWWVhcicsICdzZXRVVENIb3VycycsICdzZXRVVENNaWxs
aXNlY29uZHMnLCAnc2V0VVRDTWludXRlcycsICdzZXRVVENNb250aCcsICdzZXRVVENTZWNvbmRz
JywgJ3NldFllYXInLCAndG9EYXRlU3RyaW5nJywgJ3RvR01UU3RyaW5nJywgJ3RvSVNPU3RyaW5n
JywgJ3RvSlNPTicsICd0b0xvY2FsZURhdGVTdHJpbmcnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9M
b2NhbGVUaW1lU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3RvVGltZVN0cmluZycsICd0b1VUQ1N0cmlu
ZycsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhSZWdFeHApIGlz
IFsnJCYnLCAiJCciLCAnJConLCAnJCsnLCAnJDEnLCAnJDInLCAnJDMnLCAnJDQnLCAnJDUnLCAn
JDYnLCAnJDcnLCAnJDgnLCAnJDknLCAnJF8nLCAnJGAnLCAnaW5wdXQnLCAnbGFzdE1hdGNoJywg
J2xhc3RQYXJlbicsICdsZWZ0Q29udGV4dCcsICdsZW5ndGgnLCAnbXVsdGlsaW5lJywgJ25hbWUn
LCAncHJvdG90eXBlJywgJ3JpZ2h0Q29udGV4dCddCi1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5
TmFtZXMoUmVnRXhwLnByb3RvdHlwZSkgaXMgWydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2V4
ZWMnLCAnZ2xvYmFsJywgJ2lnbm9yZUNhc2UnLCAnbGFzdEluZGV4JywgJ211bHRpbGluZScsICdz
b3VyY2UnLCAndGVzdCcsICd0b1N0cmluZyddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFt
ZXMoUmVnRXhwLnByb3RvdHlwZSkgaXMgWydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2V4ZWMn
LCAnZmxhZ3MnLCAnZ2xvYmFsJywgJ2lnbm9yZUNhc2UnLCAnbGFzdEluZGV4JywgJ211bHRpbGlu
ZScsICdzb3VyY2UnLCAndGVzdCcsICd0b1N0cmluZyddCiBQQVNTIGdldFNvcnRlZE93blByb3Bl
cnR5TmFtZXMoRXJyb3IpIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KIFBBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvci5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0
b3InLCAnbWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhNYXRoKSBpcyBbJ0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywnTE9HMkUnLCdQ
SScsJ1NRUlQxXzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4nLCdhc2luaCcs
J2F0YW4nLCdhdGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2NvcycsJ2Nvc2gn
LCdleHAnLCdleHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywnbG9nJywnbG9n
MTAnLCdsb2cxcCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdyb3VuZCcsJ3Np
Z24nLCdzaW4nLCdzaW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGFlOGJiN2ZiOTI1ZDgy
NDIyY2RlM2RmNjMyZmNmYTVhZDg1YjAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACitUZXN0IFJlZ0V4
cCNmbGFncyBhY2Nlc3NvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcHJvcGVy
dHkgZGVzY3JpcHRvcgorUEFTUyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNT
IGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyB0eXBlb2YgZGVzY3JpcHRvci5n
ZXQgaXMgJ2Z1bmN0aW9uJworUEFTUyBkZXNjcmlwdG9yLnNldCBpcyB1bmRlZmluZWQKK1BBU1Mg
L2EvZy5mbGFncyBpcyAnZycKK1BBU1MgL2EvLmZsYWdzIGlzICcnCitQQVNTIC9hL2dtaS5mbGFn
cyBpcyAnZ2ltJworUEFTUyBuZXcgUmVnRXhwKCdhJywgJ2dtaScpLmZsYWdzIGlzICdnaW0nCitQ
QVNTIGZsYWdzLmNhbGwoL2EvaWcpIGlzICdnaScKK25vbi1vYmplY3QgcmVjZWl2ZXJzCitQQVNT
IGZsYWdzLmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorUEFTUyBmbGFncy5jYWxsKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGZsYWdzLmNhbGwoZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitQQVNTIGZsYWdzLmNhbGwodHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK25vbi1yZWdleCBvYmplY3RzCitQQVNTIGZsYWdzLmNhbGwo
e30pIGlzICcnCitQQVNTIGZsYWdzLmNhbGwoe2dsb2JhbDogdHJ1ZSwgbXVsdGlsaW5lOiB0cnVl
LCBpZ25vcmVDYXNlOiB0cnVlfSkgaXMgJ2dpbScKK1BBU1MgZmxhZ3MuY2FsbCh7Z2xvYmFsOiAx
LCBtdWx0aWxpbmU6IDAsIGlnbm9yZUNhc2U6IDJ9KSBpcyAnZ2knCitQQVNTIGZsYWdzLmNhbGwo
eyBfX3Byb3RvX186IHsgbXVsdGlsaW5lOiB0cnVlIH0gfSkgaXMgJ20nCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvcmVnZXhwLWZsYWdzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3Mu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYjE3MmM0Mjg3NWRiODMxOTM4OTdhMTZkYjI4Yjg1N2YyODgzOWY1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVnZXhwLWZsYWdzLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL3JlZ2V4cC1mbGFncy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMu
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMKaW5kZXggZGJiMTY5MTJiNWE1ODMwZTVkOTNkNzAxNWUzMTRmNWU5OGUxNjc1Zi4uZjc5
ZGZhYjZhNmFmODI4YzQ4MzAyZDBhN2FlNWE0YjVjZTlkOTkyOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5q
cwpAQCAtNjUsNyArNjUsNyBAQCB2YXIgZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzU2V0ID0gewogICAg
ICJEYXRlIjogIlsnVVRDJywgJ2xlbmd0aCcsICduYW1lJywgJ25vdycsICdwYXJzZScsICdwcm90
b3R5cGUnXSIsCiAgICAgIkRhdGUucHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAnZ2V0RGF0
ZScsICdnZXREYXknLCAnZ2V0RnVsbFllYXInLCAnZ2V0SG91cnMnLCAnZ2V0TWlsbGlzZWNvbmRz
JywgJ2dldE1pbnV0ZXMnLCAnZ2V0TW9udGgnLCAnZ2V0U2Vjb25kcycsICdnZXRUaW1lJywgJ2dl
dFRpbWV6b25lT2Zmc2V0JywgJ2dldFVUQ0RhdGUnLCAnZ2V0VVRDRGF5JywgJ2dldFVUQ0Z1bGxZ
ZWFyJywgJ2dldFVUQ0hvdXJzJywgJ2dldFVUQ01pbGxpc2Vjb25kcycsICdnZXRVVENNaW51dGVz
JywgJ2dldFVUQ01vbnRoJywgJ2dldFVUQ1NlY29uZHMnLCAnZ2V0WWVhcicsICdzZXREYXRlJywg
J3NldEZ1bGxZZWFyJywgJ3NldEhvdXJzJywgJ3NldE1pbGxpc2Vjb25kcycsICdzZXRNaW51dGVz
JywgJ3NldE1vbnRoJywgJ3NldFNlY29uZHMnLCAnc2V0VGltZScsICdzZXRVVENEYXRlJywgJ3Nl
dFVUQ0Z1bGxZZWFyJywgJ3NldFVUQ0hvdXJzJywgJ3NldFVUQ01pbGxpc2Vjb25kcycsICdzZXRV
VENNaW51dGVzJywgJ3NldFVUQ01vbnRoJywgJ3NldFVUQ1NlY29uZHMnLCAnc2V0WWVhcicsICd0
b0RhdGVTdHJpbmcnLCAndG9HTVRTdHJpbmcnLCAndG9JU09TdHJpbmcnLCAndG9KU09OJywgJ3Rv
TG9jYWxlRGF0ZVN0cmluZycsICd0b0xvY2FsZVN0cmluZycsICd0b0xvY2FsZVRpbWVTdHJpbmcn
LCAndG9TdHJpbmcnLCAndG9UaW1lU3RyaW5nJywgJ3RvVVRDU3RyaW5nJywgJ3ZhbHVlT2YnXSIs
CiAgICAgIlJlZ0V4cCI6ICJbJyQmJywgXCIkJ1wiLCAnJConLCAnJCsnLCAnJDEnLCAnJDInLCAn
JDMnLCAnJDQnLCAnJDUnLCAnJDYnLCAnJDcnLCAnJDgnLCAnJDknLCAnJF8nLCAnJGAnLCAnaW5w
dXQnLCAnbGFzdE1hdGNoJywgJ2xhc3RQYXJlbicsICdsZWZ0Q29udGV4dCcsICdsZW5ndGgnLCAn
bXVsdGlsaW5lJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3JpZ2h0Q29udGV4dCddIiwKLSAgICAi
UmVnRXhwLnByb3RvdHlwZSI6ICJbJ2NvbXBpbGUnLCAnY29uc3RydWN0b3InLCAnZXhlYycsICdn
bG9iYWwnLCAnaWdub3JlQ2FzZScsICdsYXN0SW5kZXgnLCAnbXVsdGlsaW5lJywgJ3NvdXJjZScs
ICd0ZXN0JywgJ3RvU3RyaW5nJ10iLAorICAgICJSZWdFeHAucHJvdG90eXBlIjogIlsnY29tcGls
ZScsICdjb25zdHJ1Y3RvcicsICdleGVjJywgJ2ZsYWdzJywgJ2dsb2JhbCcsICdpZ25vcmVDYXNl
JywgJ2xhc3RJbmRleCcsICdtdWx0aWxpbmUnLCAnc291cmNlJywgJ3Rlc3QnLCAndG9TdHJpbmcn
XSIsCiAgICAgIkVycm9yIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAg
ICJFcnJvci5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICdtZXNzYWdlJywgJ25hbWUnLCAn
dG9TdHJpbmcnXSIsCiAgICAgIk1hdGgiOiAiWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEwRScsJ0xP
RzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdhc2luJywn
YXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzInLCdjb3Mn
LCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11bCcsJ2xv
ZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFuZG9tJywncm91
bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMnXSIsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLWZsYWdzLmpzIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1mbGFncy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NDVhYWQ5Mzk2OTQxMGE0Y2FmMWY4NmY5ZTg5YzUyM2NmYTk2MDc3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1mbGFncy5qcwpAQCAtMCwwICsx
LDQ2IEBACitkZXNjcmlwdGlvbignVGVzdCBSZWdFeHAjZmxhZ3MgYWNjZXNzb3InKTsKKworZGVi
dWcoInByb3BlcnR5IGRlc2NyaXB0b3IiKTsKK3ZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCAnZmxhZ3MnKTsKK3Nob3VsZEJl
KCJkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSIsICJ0cnVlIik7CitzaG91bGRCZSgiZGVzY3JpcHRv
ci5lbnVtZXJhYmxlIiwgImZhbHNlIik7CitzaG91bGRCZSgidHlwZW9mIGRlc2NyaXB0b3IuZ2V0
IiwgIidmdW5jdGlvbiciKTsKK3Nob3VsZEJlKCJkZXNjcmlwdG9yLnNldCIsICJ1bmRlZmluZWQi
KTsKKwordmFyIGZsYWdzID0gZGVzY3JpcHRvci5nZXQ7CisKK3Nob3VsZEJlKCIvYS9nLmZsYWdz
IiwgIidnJyIpOworc2hvdWxkQmUoIi9hLy5mbGFncyIsICInJyIpOworc2hvdWxkQmUoIi9hL2dt
aS5mbGFncyIsICInZ2ltJyIpOyAvLyBvcmRlciBpcyBzcGVjaWZpZWQsIGhhcHBlbnMgdG8gYmUg
YWxwaGFiZXRpYworc2hvdWxkQmUoIm5ldyBSZWdFeHAoJ2EnLCAnZ21pJykuZmxhZ3MiLCAiJ2dp
bSciKTsKK3Nob3VsZEJlKCJmbGFncy5jYWxsKC9hL2lnKSIsICInZ2knIik7CisKK2RlYnVnKCJu
b24tb2JqZWN0IHJlY2VpdmVycyIpOworc2hvdWxkVGhyb3coImZsYWdzLmNhbGwodW5kZWZpbmVk
KSIsICInVHlwZUVycm9yOiBUeXBlIGVycm9yJyIpOworc2hvdWxkVGhyb3coImZsYWdzLmNhbGwo
bnVsbCkiLCAiJ1R5cGVFcnJvcjogVHlwZSBlcnJvciciKTsKK3Nob3VsZFRocm93KCJmbGFncy5j
YWxsKGZhbHNlKSIsICInVHlwZUVycm9yOiBUeXBlIGVycm9yJyIpOworc2hvdWxkVGhyb3coImZs
YWdzLmNhbGwodHJ1ZSkiLCAiJ1R5cGVFcnJvcjogVHlwZSBlcnJvciciKTsKKworZGVidWcoIm5v
bi1yZWdleCBvYmplY3RzIik7CitzaG91bGRCZSgiZmxhZ3MuY2FsbCh7fSkiLCAiJyciKTsKK3No
b3VsZEJlKCJmbGFncy5jYWxsKHtnbG9iYWw6IHRydWUsIG11bHRpbGluZTogdHJ1ZSwgaWdub3Jl
Q2FzZTogdHJ1ZX0pIiwgIidnaW0nIik7CitzaG91bGRCZSgiZmxhZ3MuY2FsbCh7Z2xvYmFsOiAx
LCBtdWx0aWxpbmU6IDAsIGlnbm9yZUNhc2U6IDJ9KSIsICInZ2knIik7CisvLyBpbmhlcml0ZWQg
cHJvcGVydGllcyBjb3VudAorc2hvdWxkQmUoImZsYWdzLmNhbGwoeyBfX3Byb3RvX186IHsgbXVs
dGlsaW5lOiB0cnVlIH0gfSkiLCAiJ20nIik7CisKK2lmIChSZWdFeHAucHJvdG90eXBlLmhhc093
blByb3BlcnR5KCdzdGlja3knKSkgeworICBkZWJ1Zygic3RpY2t5IGZsYWciKTsKKyAgLy8gd2hl
biB0aGUgZW5naW5lIHN1cHBvcnRzICJzdGlja3kiLCB0aGVzZSB0ZXN0cyB3aWxsIGZhaWwgYnkg
ZGVzaWduLgorICAvLyBIb3BlZnVsbHksIG9ubHkgdGhlIGV4cGVjdGVkIG91dHB1dCB3aWxsIG5l
ZWQgdXBkYXRpbmcuCisgIHNob3VsZEJlKCIvYS95aW1nLmZsYWdzIiwgIidnaW15JyIpOworICBz
aG91bGRCZSgibmV3IFJlZ0V4cCgnYScsICd5aW1nJykuZmxhZ3MiLCAiJ2dpbXknIik7CisgIHNo
b3VsZEJlKCJmbGFncy5jYWxsKHtnbG9iYWw6IHRydWUsIG11bHRpbGluZTogdHJ1ZSwgaWdub3Jl
Q2FzZTogdHJ1ZSwgc3RpY2t5OiB0cnVlfSkiLCAiJ2dpbXknIik7Cit9CitpZiAoUmVnRXhwLnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgndW5pY29kZScpKSB7CisgIGRlYnVnKCJ1bmljb2RlIGZs
YWciKTsKKyAgLy8gd2hlbiB0aGUgZW5naW5lIHN1cHBvcnRzICJ1bmljb2RlIiwgdGhlc2UgdGVz
dHMgd2lsbCBmYWlsIGJ5IGRlc2lnbi4KKyAgLy8gSG9wZWZ1bGx5LCBvbmx5IHRoZSBleHBlY3Rl
ZCBvdXRwdXQgd2lsbCBuZWVkIHVwZGF0aW5nLgorICBzaG91bGRCZSgiL2EvdWltZy5mbGFncyIs
ICInZ2ltdSciKTsKKyAgc2hvdWxkQmUoIm5ldyBSZWdFeHAoJ2EnLCAndWltZycpLmZsYWdzIiwg
IidnaW11JyIpOworICBzaG91bGRCZSgiZmxhZ3MuY2FsbCh7Z2xvYmFsOiB0cnVlLCBtdWx0aWxp
bmU6IHRydWUsIGlnbm9yZUNhc2U6IHRydWUsIHVuaWNvZGU6IHRydWV9KSIsICInZ2ltdSciKTsK
K30K
</data>

          </attachment>
      

    </bug>

</bugzilla>