<?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>93897</bug_id>
          
          <creation_ts>2012-08-13 13:59:29 -0700</creation_ts>
          <short_desc>[Qt] REGRESSION(r125428): fast/profiler/nested-start-and-stop-profiler.html fails</short_desc>
          <delta_ts>2012-08-29 03:15:45 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>94606</dependson>
    
    <dependson>94708</dependson>
          <blocked>60842</blocked>
    
    <blocked>79666</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>kenneth</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694051</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 13:59:29 -0700</bug_when>
    <thetext>The test fails because it relies on the name of runtime methods to be set properly. r125428 regressed this.

This might require re-introducing the per-method JSClassRef unless setting the name property directly works. I&apos;m working on a fix for this, so skipping the test for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694752</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-14 03:29:08 -0700</bug_when>
    <thetext>This also affects numerous unit tests that do someQObject.someMethod.toString() and expect function someMethod() {
    [ native code ]
}

instead of [Callback object] :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694784</commentid>
    <comment_count>2</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-14 03:58:26 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; This also affects numerous unit tests that do someQObject.someMethod.toString() and expect function someMethod() {
&gt;     [ native code ]
&gt; }
&gt; 
&gt; instead of [Callback object] :)

You mean our Qt API tests? If so, regardless the fix here, IMHO those API tests are &quot;over-detailed&quot;, I don&apos;t think people are/should be relying on the string representation of these methods. I remember Noam pointing this out recently too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694803</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-14 04:29:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; This also affects numerous unit tests that do someQObject.someMethod.toString() and expect function someMethod() {
&gt; &gt;     [ native code ]
&gt; &gt; }
&gt; &gt; 
&gt; &gt; instead of [Callback object] :)
&gt; 
&gt; You mean our Qt API tests? If so, regardless the fix here, IMHO those API tests are &quot;over-detailed&quot;, I don&apos;t think people are/should be relying on the string representation of these methods. I remember Noam pointing this out recently too.

I agree about that. But the fix will automatically fix this, too :)

I&apos;m working on a change to make the functions actual JS functions again instead of JSClass instances with a callAsFunction callback set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694890</commentid>
    <comment_count>4</comment_count>
      <attachid>158309</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-14 06:00:41 -0700</bug_when>
    <thetext>Created attachment 158309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694894</commentid>
    <comment_count>5</comment_count>
      <attachid>158309</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-14 06:09:51 -0700</bug_when>
    <thetext>Comment on attachment 158309
Patch

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

&gt; Source/WebCore/ChangeLog:21
&gt; +        The length property on a function signifies the number of arguments, but in all three cases that number is

which three cases?

&gt; Source/WebCore/ChangeLog:22
&gt; +        actually variable, because of overloading.

so as it is variable you just dont expose it?

I think this part of the changelog could be more clear

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1384
&gt; +    JSObjectRef proto = JSValueToObject(context, JSObjectGetPrototype(context, object), 0);
&gt; +    if (!proto)
&gt; +        return 0;
&gt; +    if (!JSValueIsObjectOfClass(context, proto, prototypeForSignalsAndSlots()))
&gt; +        return 0;

Are these valid cases? or should you add asserts as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694904</commentid>
    <comment_count>6</comment_count>
      <attachid>158309</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-14 06:18:31 -0700</bug_when>
    <thetext>Comment on attachment 158309
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:21
&gt;&gt; +        The length property on a function signifies the number of arguments, but in all three cases that number is
&gt; 
&gt; which three cases?

run-time method itself, connect and disconnect. All three are JS objects that had a length property.

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        actually variable, because of overloading.
&gt; 
&gt; so as it is variable you just dont expose it?
&gt; 
&gt; I think this part of the changelog could be more clear

I can make a separate paragraph explaining this change of behaviour (that I also briefly discussed with Kent).

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1384
&gt;&gt; +        return 0;
&gt; 
&gt; Are these valid cases? or should you add asserts as well?

They are valid cases, people can do stuff like this:

myQObject = ...

connectFunction = myQObject.mySignal.disconnect;

myObject = new Object;
myObject.connect = connectFunction;
myObject.connect(someOtherStuff);

This should not assert but gracefully fail at run-time. The caller of toRuntimeMethod will throw an exception in fact (in JS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696840</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-16 00:33:43 -0700</bug_when>
    <thetext>Caio, any thoughts? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697165</commentid>
    <comment_count>8</comment_count>
      <attachid>158309</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-16 08:22:40 -0700</bug_when>
    <thetext>Comment on attachment 158309
Patch

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

The approach looks good to me.

&gt; Source/WebCore/ChangeLog:16
&gt; +        This patch changes run-time methods back to being real function objects that have a correct name and
&gt; +        have Function.prototype in their prototype change. Injected right before the Function.prototype prototype
&gt; +        is however our own prototype, which uses private data (JSObjectGetPrivate) to store a pointer to our
&gt; +        C++ QtRuntimeMethod object. This complicates the retrieval of the pointer to that instance slightly, which

I think some explanation why we need one proto object per function would be nice. From my understanding the main motivation is that you can&apos;t use JSObject{Set,Get}Private with real function objects.

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1285
&gt; +    static JSClassRef cls = JSClassCreate(&amp;kJSClassDefinitionEmpty);

Minor nit: you could use kJSClassAttributeNoAutomaticPrototype inside the class definition since we&apos;ll always set the prototype for objects like this. But this is really minor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698111</commentid>
    <comment_count>9</comment_count>
      <attachid>158309</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 02:51:56 -0700</bug_when>
    <thetext>Comment on attachment 158309
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:16
&gt;&gt; +        C++ QtRuntimeMethod object. This complicates the retrieval of the pointer to that instance slightly, which
&gt; 
&gt; I think some explanation why we need one proto object per function would be nice. From my understanding the main motivation is that you can&apos;t use JSObject{Set,Get}Private with real function objects.

That&apos;s right. Ok, I&apos;ll reword this :)

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1285
&gt;&gt; +    static JSClassRef cls = JSClassCreate(&amp;kJSClassDefinitionEmpty);
&gt; 
&gt; Minor nit: you could use kJSClassAttributeNoAutomaticPrototype inside the class definition since we&apos;ll always set the prototype for objects like this. But this is really minor.

Good idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698112</commentid>
    <comment_count>10</comment_count>
      <attachid>158309</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 02:52:51 -0700</bug_when>
    <thetext>Comment on attachment 158309
Patch

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

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1437
&gt;              if (JSValueIsObjectOfClass(context, targetFunction, prototypeForSignalsAndSlots())) {
&gt;                  // object.signal.connect(otherObject.slot);
&gt; -                if (QtRuntimeMethod* targetMethod = static_cast&lt;QtRuntimeMethod*&gt;(JSObjectGetPrivate(targetFunction)))
&gt; +                if (QtRuntimeMethod* targetMethod = toRuntimeMethod(context, targetFunction))
&gt;                      targetObject = toRef(QtInstance::getQtInstance(targetMethod-&gt;m_object.data(), d-&gt;m_instance-&gt;rootObject(), QtInstance::QtOwnership)-&gt;createRuntimeObject(toJS(context)));
&gt;              }

As it turns out, the two nested if()&apos;s can be combined into one, since toRuntimeMethod() does the same JSValueIsObjectOfClass check (on the prototype). I&apos;ll do that in the next version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698123</commentid>
    <comment_count>11</comment_count>
      <attachid>159066</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 02:59:39 -0700</bug_when>
    <thetext>Created attachment 159066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698133</commentid>
    <comment_count>12</comment_count>
      <attachid>159068</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-17 03:13:10 -0700</bug_when>
    <thetext>Created attachment 159068
Patch

Updated patch without debug output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699422</commentid>
    <comment_count>13</comment_count>
      <attachid>159068</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-20 05:26:27 -0700</bug_when>
    <thetext>Comment on attachment 159068
Patch

LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700593</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-21 03:52:46 -0700</bug_when>
    <thetext>Committed r126146: &lt;http://trac.webkit.org/changeset/126146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700809</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-21 09:01:53 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Committed r126146: &lt;http://trac.webkit.org/changeset/126146&gt;

It made all tests assert in debug mode:
STDERR: ASSERTION FAILED: obj-&gt;inherits(&amp;JSCallbackObject&lt;JSGlobalObject&gt;::s_info) || obj-&gt;inherits(&amp;JSCallbackObject&lt;JSNonFinalObject&gt;::s_info)
STDERR: /home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp(60) : void JSWeakObjectMapSet(const OpaqueJSContext*, OpaqueJSWeakObjectMap*, void*, OpaqueJSValue*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700821</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 09:14:24 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 94606</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701695</commentid>
    <comment_count>17</comment_count>
      <attachid>159884</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-22 02:06:11 -0700</bug_when>
    <thetext>Created attachment 159884
Patch

Updated patch that re-introduces internal Weak&lt;&gt; API usage until the rest of the bindings are re-written</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701744</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-22 03:41:59 -0700</bug_when>
    <thetext>Committed r126287: &lt;http://trac.webkit.org/changeset/126287&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701859</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-22 06:54:09 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Committed r126287: &lt;http://trac.webkit.org/changeset/126287&gt;

Unfortunately we have problems with this patch again. :(
It made WK1 layout testing time 5x slower 
r126286 - http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release/builds/41584 - ( 18 mins, 8 secs )
r126287 - http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release/builds/41582 - ( 1 hrs, 8 mins, 5 secs )

Have you got any idea what this problem is? (WK2 works fine without performance regression) Have you got a quick fix or should we roll it out again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701861</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-22 06:55:34 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Committed r126287: &lt;http://trac.webkit.org/changeset/126287&gt;

&gt; It made WK1 layout testing time 5x slower 
I meant 3.8x slower. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701872</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 07:09:24 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 94708</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702847</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-23 03:24:31 -0700</bug_when>
    <thetext>I experimented with this slowdown a little bit, and I got the following results:

r126286
-------
$ Tools/Scripts/run-webkit-tests
21m20.883s

$ Tools/Scripts/run-webkit-tests http
3m50.175s

$ Tools/Scripts/run-webkit-tests --no-http
17m1.279s

r126287
-------
$ Tools/Scripts/run-webkit-tests
&gt; 1 hour (I stopped after 15000 tests and 1 hour runtime)

$ Tools/Scripts/run-webkit-tests http
5m34.990s

$ Tools/Scripts/run-webkit-tests --no-http
24m49.050s

The runtime without http tests become &quot;only&quot; 1.5x, but with http tests 
is non-usable sloooow. It seems something wrong happens during running
https tests ... It can explain why we can&apos;t see this slowdown with
parallel NRWT. (But unfortunately we can&apos;t run parallel NRWT on the
bots until https://bugs.webkit.org/show_bug.cgi?id=77730 is fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702848</commentid>
    <comment_count>23</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-23 03:26:56 -0700</bug_when>
    <thetext>+info for slowndown:
The original http://trac.webkit.org/changeset/126146 didn&apos;t cause slowdown 
in release mode, &quot;only&quot; the zillion assertion in debug mode.

But the new http://trac.webkit.org/changeset/126287 fixed the assertions,
but caused this slowdown in release and debug mode too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702916</commentid>
    <comment_count>24</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-23 06:00:35 -0700</bug_when>
    <thetext>Ok, I can reproduce the slowdown on my machine, for http tests the slowdown is about ~1 minute (difference), a little here and there.

I&apos;ll take a look and see if I can find the culprit(s) in a profile. I&apos;d really like to see the patch go in again soon, because while it unskips only one layout tests, it actually fixes a whole bunch of unit tests that are currently failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707243</commentid>
    <comment_count>25</comment_count>
      <attachid>159884</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-29 02:47:33 -0700</bug_when>
    <thetext>Comment on attachment 159884
Patch

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

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:1358
&gt; +    JSValueProtect(context, object);

This stray JSValueProtect call caused the methods to always remain on the heap and slowly accumulate. That would also explain why it

    a) require a bigger set of tests to actually notice the regression

and

    b) the regression is more visibile on the bot than on my machine (different amounts of memory available)

I&apos;ll go and land the change again without this call (that is obviously buggy because it&apos;s lacking a JSValueUnprotect but not actually needed in the first place).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707261</commentid>
    <comment_count>26</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-29 03:15:45 -0700</bug_when>
    <thetext>Committed r126976: &lt;http://trac.webkit.org/changeset/126976&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158309</attachid>
            <date>2012-08-14 06:00:41 -0700</date>
            <delta_ts>2012-08-17 02:59:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93897-20120814150120.patch</filename>
            <type>text/plain</type>
            <size>15351</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJmMDgxNzEwMDhiZWNm
YTBjMDVlM2Y3MTVjY2I3OWU0ZDIwYzA2Zi4uOWFkNGE3MGM4ZTBmYzJiNDkxNzc4MWY1ZTZiZDY3
MWYxYWU0YzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA4LTE0ICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFJF
R1JFU1NJT04ocjEyNTQyOCk6IGZhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXBy
b2ZpbGVyLmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzODk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQmVmb3JlIHIxMjU0MjggcnVuLXRpbWUgbWV0aG9kcyAod3JhcHBlZCBzaWduYWxz
LCBzbG90cyBvciBpbnZva2FibGUgZnVuY3Rpb25zKSB3ZXJlIHN1YmNsYXNzZXMgb2YKKyAgICAg
ICAgSlNJbnRlcm5hbEZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgcmVhbCBmdW5jdGlvbiBvYmplY3Rz
IGluIHRoZSBKYXZhU2NyaXB0IHNlbnNlLiByMTI1NDI4IGNoYW5nZWQgdGhlbQorICAgICAgICB0
byBiZSBqdXN0IGNhbGxhYmxlIG9iamVjdHMsIGJ1dCB0aGV5IGRpZCBub3QgaGF2ZSBGdW5jdGlv
bi5wcm90b3R5cGUgYXMgcHJvdG90eXBlIGFueW1vcmUgZm9yIGV4YW1wbGUKKyAgICAgICAgbm9y
IHdhcyB0aGVpciBuYW1lIGNvcnJlY3QgKHJlc3VsdGluZyBpbiBhIGxheW91dCB0ZXN0IGZhaWx1
cmUpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBydW4tdGltZSBtZXRob2RzIGJhY2sg
dG8gYmVpbmcgcmVhbCBmdW5jdGlvbiBvYmplY3RzIHRoYXQgaGF2ZSBhIGNvcnJlY3QgbmFtZSBh
bmQKKyAgICAgICAgaGF2ZSBGdW5jdGlvbi5wcm90b3R5cGUgaW4gdGhlaXIgcHJvdG90eXBlIGNo
YW5nZS4gSW5qZWN0ZWQgcmlnaHQgYmVmb3JlIHRoZSBGdW5jdGlvbi5wcm90b3R5cGUgcHJvdG90
eXBlCisgICAgICAgIGlzIGhvd2V2ZXIgb3VyIG93biBwcm90b3R5cGUsIHdoaWNoIHVzZXMgcHJp
dmF0ZSBkYXRhIChKU09iamVjdEdldFByaXZhdGUpIHRvIHN0b3JlIGEgcG9pbnRlciB0byBvdXIK
KyAgICAgICAgQysrIFF0UnVudGltZU1ldGhvZCBvYmplY3QuIFRoaXMgY29tcGxpY2F0ZXMgdGhl
IHJldHJpZXZhbCBvZiB0aGUgcG9pbnRlciB0byB0aGF0IGluc3RhbmNlIHNsaWdodGx5LCB3aGlj
aAorICAgICAgICBpcyB3aHkgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgdGhlIHRvUnVudGltZU1ldGhv
ZCBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGxvb2tzIHVwIG91ciBwcm90b3R5cGUgZmlyc3Qg
YW5kCisgICAgICAgIGRvZXMgYSBjaGVjayBmb3IgdHlwZS1zYWZldHkuCisKKyAgICAgICAgQXQg
dGhlIHNhbWUgdGltZSB0aGUgcGF0Y2ggcmVtb3ZlcyB0aGUgbGVuZ3RoIHByb3BlcnRpZXMgZnJv
bSB0aGUgcnVuLXRpbWUgbWV0aG9kIGl0c2VsZiBhcyB3ZWxsIGFzIGNvbm5lY3QvZGlzY29ubmVj
dC4KKyAgICAgICAgVGhlIGxlbmd0aCBwcm9wZXJ0eSBvbiBhIGZ1bmN0aW9uIHNpZ25pZmllcyB0
aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aHJlZSBjYXNlcyB0aGF0IG51bWJl
ciBpcworICAgICAgICBhY3R1YWxseSB2YXJpYWJsZSwgYmVjYXVzZSBvZiBvdmVybG9hZGluZy4K
KworICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OnByb3RvdHlwZUZvclNpZ25hbHNBbmRTbG90cyk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmNhbGwpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRS
dW50aW1lTWV0aG9kOjpqc09iamVjdFJlZik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1
bnRpbWVNZXRob2Q6OnRvUnVudGltZU1ldGhvZCk6CisgICAgICAgIChCaW5kaW5ncyk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmNvbm5lY3RPckRpc2Nvbm5lY3Qp
OgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmg6CisgICAgICAgIChRdFJ1bnRpbWVN
ZXRob2QpOiBSZW1vdmUgdW51c2VkIG1lbWJlciB2YXJpYWJsZXMuCisKIDIwMTItMDgtMTQgIENo
cmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBy
ZWdyZXNzaW9uKHIxMjQ1MTApIHdlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9y
Lmh0bWwgaXMgY3Jhc2hpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZDYzNDdkOWY1MmIxNzU4M2JlNDRj
YTcyMzM4ODc5NWQyODJjNDMzMi4uMmVkNjVmMDgwZDIxNDJhMzgwNGU4NjdhMzgyODM5MjRjMGY2
NjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0xNCAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSRUdS
RVNTSU9OKHIxMjU0MjgpOiBmYXN0L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9m
aWxlci5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05Mzg5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeGVkIHNvbWUgdGVzdCBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgKiB0ZXN0cy9x
b2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcDoKKyAgICAgICAgKHRzdF9RT2JqZWN0
QnJpZGdlOjpvYmplY3REZWxldGVkKTogU2luY2UgcnVudGltZSBtZXRob2RzIGFyZSByZWFsIGZ1
bmN0aW9uIG9iamVjdHMgYWdhaW4sIHdlCisgICAgICAgIGNhbiBnbyBiYWNrIHRvIHRlc3Rpbmcg
RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIGFzIGl0IHdhcyBkb25lIGJlZm9yZSByMTI1NDI4Lgor
ICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6OmludHJvc3BlY3RRdE1ldGhvZHNfZGF0YSk6IFJl
bW92ZWQgdGVzdHMgZm9yIHRoZSBsZW5ndGggcHJvcGVydHkuCisgICAgICAgICh0c3RfUU9iamVj
dEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kcyk6IENoYW5nZWQgdGVzdCBleHBlY3RhdGlvbiBv
ZiB0aGUgcHJvcGVydGllcyBvZgorICAgICAgICBydW4tdGltZSBtZXRob2RzIGJhY2sgdG8gYmVp
bmcgbm9uLWNvbmZpZ3VyYWJsZSwgYXMgYmVmb3JlIHIxMjU0MjguCisKIDIwMTItMDgtMTMgIFRv
bSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSByZWxl
YXNlIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6bV9wbHVnaW5XaWRnZXQgcmVmcHRyIHVwb24gUGx1
Z2luIERvY3VtZW50IGRldGFjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNw
cAppbmRleCAyY2QyZjU4MzlhMDY3OWY5ZWM1MzFhNDU4ZGQ3NGFmZWQwNGFhMmViLi44YWM1ZTdm
NjVkOTJmNjhkMzllNjBiMzE1NTA0MjEyOWQ1ZTk1MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xMjgyLDExICsxMjgyLDcgQEAgc3RhdGljIGludCBmaW5k
U2lnbmFsSW5kZXgoY29uc3QgUU1ldGFPYmplY3QqIG1ldGEsIGludCBpbml0aWFsSW5kZXgsIFFC
eXRlQXJyYXkKIAogc3RhdGljIEpTQ2xhc3NSZWYgcHJvdG90eXBlRm9yU2lnbmFsc0FuZFNsb3Rz
KCkKIHsKLSAgICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWYgPSB7Ci0gICAgICAg
IDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIFF0UnVudGlt
ZU1ldGhvZDo6Y2FsbCwgMCwgMCwgMAotICAgIH07Ci0gICAgc3RhdGljIEpTQ2xhc3NSZWYgY2xz
ID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWYpOworICAgIHN0YXRpYyBKU0NsYXNzUmVmIGNscyA9
IEpTQ2xhc3NDcmVhdGUoJmtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5KTsKICAgICByZXR1cm4gY2xz
OwogfQogCkBAIC0xMzA3LDcgKzEzMDMsNyBAQCBRdFJ1bnRpbWVNZXRob2Q6On5RdFJ1bnRpbWVN
ZXRob2QoKQogCiBKU1ZhbHVlUmVmIFF0UnVudGltZU1ldGhvZDo6Y2FsbChKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIC8qdGhpc09iamVjdCov
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFF0UnVudGltZU1ldGhvZCogZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKGZ1bmN0aW9uKSk7
CisgICAgUXRSdW50aW1lTWV0aG9kKiBkID0gdG9SdW50aW1lTWV0aG9kKGNvbnRleHQsIGZ1bmN0
aW9uKTsKICAgICBpZiAoIWQpIHsKICAgICAgICAgc2V0RXhjZXB0aW9uKGNvbnRleHQsIGV4Y2Vw
dGlvbiwgUVN0cmluZ0xpdGVyYWwoImNhbm5vdCBjYWxsIGZ1bmN0aW9uIG9mIGRlbGV0ZWQgcnVu
dGltZSBtZXRob2QiKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKQEAgLTEzNTMsNDkgKzEzNDksNTIgQEAgSlNPYmplY3RSZWYgUXRSdW50aW1lTWV0aG9k
Ojpqc09iamVjdFJlZihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXAKICAg
ICBpZiAobV9qc09iamVjdCkKICAgICAgICAgcmV0dXJuIHRvUmVmKG1fanNPYmplY3QuZ2V0KCkp
OwogCi0gICAgc3RhdGljIGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmRm9yQ29ubmVj
dCA9IHsKLSAgICAgICAgMCwgMCwgImNvbm5lY3QiLCAwLCAwLCAwLAotICAgICAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCBjb25uZWN0LCAwLCAwLCAwCi0gICAgfTsKLQotICAgIHN0YXRpYyBjb25z
dCBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZkZvckRpc2Nvbm5lY3QgPSB7Ci0gICAgICAgIDAs
IDAsICJkaXNjb25uZWN0IiwgMCwgMCwgMCwKLSAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
ZGlzY29ubmVjdCwgMCwgMCwgMAotICAgIH07Ci0KLSAgICBzdGF0aWMgSlNDbGFzc1JlZiBjbGFz
c1JlZkNvbm5lY3QgPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZkZvckNvbm5lY3QpOwotICAgIHN0
YXRpYyBKU0NsYXNzUmVmIGNsYXNzUmVmRGlzY29ubmVjdCA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNz
RGVmRm9yRGlzY29ubmVjdCk7Ci0gICAgYm9vbCBpc1NpZ25hbCA9IG1fZmxhZ3MgJiBNZXRob2RJ
c1NpZ25hbDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU09iamVjdE1ha2UoY29udGV4dCwg
cHJvdG90eXBlRm9yU2lnbmFsc0FuZFNsb3RzKCksIHRoaXMpOwotICAgIEpTT2JqZWN0UmVmIGNv
bm5lY3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBjbGFzc1JlZkNvbm5lY3QsIHRo
aXMpOwotICAgIEpTT2JqZWN0UmVmIGRpc2Nvbm5lY3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZShj
b250ZXh0LCBjbGFzc1JlZkRpc2Nvbm5lY3QsIHRoaXMpOwotICAgIEpTUHJvcGVydHlBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMgPSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtIHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlOwotCiAgICAgc3RhdGljIEpTU3RyaW5nUmVmIGNvbm5lY3RT
dHIgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiY29ubmVjdCIpOwogICAgIHN0YXRp
YyBKU1N0cmluZ1JlZiBkaXNjb25uZWN0U3RyID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoImRpc2Nvbm5lY3QiKTsKLSAgICBzdGF0aWMgSlNTdHJpbmdSZWYgbGVuZ3RoU3RyID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpOwotICAgIHN0YXRpYyBKU1N0cmlu
Z1JlZiBuYW1lU3RyID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIm5hbWUiKTsKICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYWN0dWFsTmFtZVN0cihBZG9wdCwgSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcobV9pZGVudGlmaWVyLmNvbnN0RGF0YSgpKSk7CiAKLSAgICBK
U09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIGNvbm5lY3RGdW5jdGlvbiwgbGVuZ3RoU3RyLCBK
U1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBpc1NpZ25hbCA/IDEgOiAwKSwgYXR0cmlidXRlcywg
ZXhjZXB0aW9uKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIGNvbm5lY3RGdW5j
dGlvbiwgbmFtZVN0ciwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgY29ubmVjdFN0ciksIGF0
dHJpYnV0ZXMsIGV4Y2VwdGlvbik7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBk
aXNjb25uZWN0RnVuY3Rpb24sIGxlbmd0aFN0ciwgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwg
aXNTaWduYWwgPyAxIDogMCksIGF0dHJpYnV0ZXMsIGV4Y2VwdGlvbik7Ci0gICAgSlNPYmplY3RT
ZXRQcm9wZXJ0eShjb250ZXh0LCBkaXNjb25uZWN0RnVuY3Rpb24sIG5hbWVTdHIsIEpTVmFsdWVN
YWtlU3RyaW5nKGNvbnRleHQsIGRpc2Nvbm5lY3RTdHIpLCBhdHRyaWJ1dGVzLCBleGNlcHRpb24p
OworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKGNvbnRleHQsIGFjdHVhbE5hbWVTdHIuZ2V0KCksIGNhbGwpOworCisgICAgSlNPYmplY3RS
ZWYgZ2VuZXJhbEZ1bmN0aW9uUHJvdG8gPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmpl
Y3RHZXRQcm90b3R5cGUoY29udGV4dCwgb2JqZWN0KSwgMCk7CisgICAgSlNPYmplY3RSZWYgcnVu
dGltZU1ldGhvZFByb3RvID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIHByb3RvdHlwZUZvclNpZ25h
bHNBbmRTbG90cygpLCB0aGlzKTsKKyAgICBKU09iamVjdFNldFByb3RvdHlwZShjb250ZXh0LCBy
dW50aW1lTWV0aG9kUHJvdG8sIGdlbmVyYWxGdW5jdGlvblByb3RvKTsKKworICAgIEpTT2JqZWN0
U2V0UHJvdG90eXBlKGNvbnRleHQsIG9iamVjdCwgcnVudGltZU1ldGhvZFByb3RvKTsKKworICAg
IEpTT2JqZWN0UmVmIGNvbm5lY3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENh
bGxiYWNrKGNvbnRleHQsIGNvbm5lY3RTdHIsIGNvbm5lY3QpOworICAgIEpTT2JqZWN0U2V0UHJv
dG90eXBlKGNvbnRleHQsIGNvbm5lY3RGdW5jdGlvbiwgcnVudGltZU1ldGhvZFByb3RvKTsKIAor
ICAgIEpTT2JqZWN0UmVmIGRpc2Nvbm5lY3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9u
V2l0aENhbGxiYWNrKGNvbnRleHQsIGRpc2Nvbm5lY3RTdHIsIGRpc2Nvbm5lY3QpOworICAgIEpT
T2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQsIGRpc2Nvbm5lY3RGdW5jdGlvbiwgcnVudGltZU1l
dGhvZFByb3RvKTsKKworICAgIGNvbnN0IEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMg
PSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlOwogICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBjb25uZWN0
U3RyLCBjb25uZWN0RnVuY3Rpb24sIGF0dHJpYnV0ZXMsIGV4Y2VwdGlvbik7CiAgICAgSlNPYmpl
Y3RTZXRQcm9wZXJ0eShjb250ZXh0LCBvYmplY3QsIGRpc2Nvbm5lY3RTdHIsIGRpc2Nvbm5lY3RG
dW5jdGlvbiwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5
KGNvbnRleHQsIG9iamVjdCwgbGVuZ3RoU3RyLCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCAw
KSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRl
eHQsIG9iamVjdCwgbmFtZVN0ciwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgYWN0dWFsTmFt
ZVN0ci5nZXQoKSksIGF0dHJpYnV0ZXMsIGV4Y2VwdGlvbik7CiAKICAgICBtX2pzT2JqZWN0ID0g
UGFzc1dlYWs8SlNPYmplY3Q+KHRvSlMob2JqZWN0KSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0K
IAorUXRSdW50aW1lTWV0aG9kKiBRdFJ1bnRpbWVNZXRob2Q6OnRvUnVudGltZU1ldGhvZChKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIEpTT2JqZWN0UmVm
IHByb3RvID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvdG90eXBlKGNv
bnRleHQsIG9iamVjdCksIDApOworICAgIGlmICghcHJvdG8pCisgICAgICAgIHJldHVybiAwOwor
ICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjb250ZXh0LCBwcm90bywgcHJvdG90eXBl
Rm9yU2lnbmFsc0FuZFNsb3RzKCkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKHByb3RvKSk7Cit9
CisKIEpTVmFsdWVSZWYgUXRSdW50aW1lTWV0aG9kOjpjb25uZWN0T3JEaXNjb25uZWN0KEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgYm9vbCBjb25uZWN0KQogewotICAgIFF0UnVudGltZU1l
dGhvZCogZCA9IHN0YXRpY19jYXN0PFF0UnVudGltZU1ldGhvZCo+KEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KSk7CisgICAgUXRSdW50aW1lTWV0aG9kKiBkID0gdG9SdW50aW1lTWV0aG9k
KGNvbnRleHQsIHRoaXNPYmplY3QpOwogICAgIGlmICghZCkKLSAgICAgICAgZCA9IHN0YXRpY19j
YXN0PFF0UnVudGltZU1ldGhvZCo+KEpTT2JqZWN0R2V0UHJpdmF0ZShmdW5jdGlvbikpOworICAg
ICAgICBkID0gdG9SdW50aW1lTWV0aG9kKGNvbnRleHQsIGZ1bmN0aW9uKTsKKyAgICBpZiAoIWQp
IHsKKyAgICAgICAgUVN0cmluZyBlcnJvclN0ciA9IFFTdHJpbmdMaXRlcmFsKCJRdE1ldGFNZXRo
b2QuJTE6IENhbm5vdCBjb25uZWN0IHRvL2Zyb20gZGVsZXRlZCBRT2JqZWN0IikuYXJnKGNvbm5l
Y3QgPyAgUVN0cmluZ0xpdGVyYWwoImNvbm5lY3QiKSA6IFFTdHJpbmdMaXRlcmFsKCJkaXNjb25u
ZWN0IikpOworICAgICAgICBzZXRFeGNlcHRpb24oY29udGV4dCwgZXhjZXB0aW9uLCBlcnJvclN0
cik7CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9
CiAKICAgICBRU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IGNvbm5lY3QgPyBRU3RyaW5nTGl0ZXJhbCgi
Y29ubmVjdCIpIDogUVN0cmluZ0xpdGVyYWwoImRpc2Nvbm5lY3QiKTsKIApAQCAtMTQzMyw3ICsx
NDMyLDcgQEAgSlNWYWx1ZVJlZiBRdFJ1bnRpbWVNZXRob2Q6OmNvbm5lY3RPckRpc2Nvbm5lY3Qo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmUKICAgICAgICAgaWYgKEpTT2JqZWN0SXNG
dW5jdGlvbihjb250ZXh0LCB0YXJnZXRGdW5jdGlvbikpIHsKICAgICAgICAgICAgIGlmIChKU1Zh
bHVlSXNPYmplY3RPZkNsYXNzKGNvbnRleHQsIHRhcmdldEZ1bmN0aW9uLCBwcm90b3R5cGVGb3JT
aWduYWxzQW5kU2xvdHMoKSkpIHsKICAgICAgICAgICAgICAgICAvLyBvYmplY3Quc2lnbmFsLmNv
bm5lY3Qob3RoZXJPYmplY3Quc2xvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKFF0UnVudGltZU1l
dGhvZCogdGFyZ2V0TWV0aG9kID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRhcmdldEZ1bmN0aW9uKSkpCisgICAgICAgICAgICAgICAgaWYgKFF0UnVu
dGltZU1ldGhvZCogdGFyZ2V0TWV0aG9kID0gdG9SdW50aW1lTWV0aG9kKGNvbnRleHQsIHRhcmdl
dEZ1bmN0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0T2JqZWN0ID0gdG9SZWYoUXRJ
bnN0YW5jZTo6Z2V0UXRJbnN0YW5jZSh0YXJnZXRNZXRob2QtPm1fb2JqZWN0LmRhdGEoKSwgZC0+
bV9pbnN0YW5jZS0+cm9vdE9iamVjdCgpLCBRdEluc3RhbmNlOjpRdE93bmVyc2hpcCktPmNyZWF0
ZVJ1bnRpbWVPYmplY3QodG9KUyhjb250ZXh0KSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCmluZGV4IDk4NzU2ZDEzMzJj
M2JkMTNlZmI0ODIxODRiMDBkNmFmZGE0NjBhNTUuLjNhZDg5ZTU1MDhiYTBmN2U3ZmI5NThkZGJj
MzI1OTRiZmNmNTM3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaApAQCAt
MTE0LDggKzExNCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBRQnl0ZUFycmF5JiBuYW1lKCkgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IEpTU3Rh
dGljRnVuY3Rpb24gY29ubmVjdEZ1bmN0aW9uOwotICAgIHN0YXRpYyBjb25zdCBKU1N0YXRpY0Z1
bmN0aW9uIGRpc2Nvbm5lY3RGdW5jdGlvbjsKKyAgICBzdGF0aWMgUXRSdW50aW1lTWV0aG9kKiB0
b1J1bnRpbWVNZXRob2QoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZik7CiAKICAgICBzdGF0aWMg
SlNWYWx1ZVJlZiBjb25uZWN0T3JEaXNjb25uZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBi
b29sIGNvbm5lY3QpOwogICAgIFFQb2ludGVyPFFPYmplY3Q+IG1fb2JqZWN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcW9iamVjdGJyaWRnZS90c3RfcW9iamVjdGJy
aWRnZS5jcHAKaW5kZXggMGU2NDQxOGI1NDU4YzhiYjJiMzRmODdlNzk0OTE5NzNmMmE1ZGIzNy4u
ZmZjMGE3OWJjZDdkODQ0NWI3NTVjMDQxN2M5YzJlN2Q3M2FmYmMwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3Ricmlk
Z2UuY3BwCkBAIC0xODc5LDcgKzE4NzksNyBAQCB2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjpvYmpl
Y3REZWxldGVkKCkKICAgICBldmFsSlMoImJhci5pbnRQcm9wZXJ0eSA9IDEyMzsiKTsKICAgICBR
Q09NUEFSRShxb2JqLT5pbnRQcm9wZXJ0eSgpLCAxMjMpOwogICAgIHFvYmotPnJlc2V0UXRGdW5j
dGlvbkludm9rZWQoKTsKLSAgICBldmFsSlMoImJhci5teUludm9rYWJsZShiYXIpOyIpOworICAg
IGV2YWxKUygiYmFyLm15SW52b2thYmxlLmNhbGwoYmFyKTsiKTsKICAgICBRQ09NUEFSRShxb2Jq
LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAwKTsKIAogICAgIC8vIGRvIHRoaXMsIHRvIGVuc3VyZSB0
aGF0IHdlIGNhY2hlIHRoYXQgaXQgaW1wbGVtZW50cyBjYWxsCkBAIC0yMTQ4LDE1ICsyMTQ4LDE1
IEBAIHZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6OmludHJvc3BlY3RRdE1ldGhvZHNfZGF0YSgpCiAg
ICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nTGlzdD4oImV4cGVjdGVkUHJvcGVydHlOYW1lcyIp
OwogCiAgICAgUVRlc3Q6Om5ld1JvdygibXlPYmplY3QubXlTaWduYWwiKQotICAgICAgICA8PCAi
bXlPYmplY3QiIDw8ICJteVNpZ25hbCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImNvbm5lY3QiIDw8
ICJkaXNjb25uZWN0IiA8PCAibGVuZ3RoIiA8PCAibmFtZSIpOworICAgICAgICA8PCAibXlPYmpl
Y3QiIDw8ICJteVNpZ25hbCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImNvbm5lY3QiIDw8ICJkaXNj
b25uZWN0IiA8PCAibmFtZSIpOwogICAgIFFUZXN0OjpuZXdSb3coIm15T2JqZWN0Lm15U2xvdCIp
Ci0gICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15U2xvdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwg
ImNvbm5lY3QiIDw8ICJkaXNjb25uZWN0IiA8PCAibGVuZ3RoIiA8PCAibmFtZSIpOworICAgICAg
ICA8PCAibXlPYmplY3QiIDw8ICJteVNsb3QiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJjb25uZWN0
IiA8PCAiZGlzY29ubmVjdCIgPDwgIm5hbWUiKTsKICAgICBRVGVzdDo6bmV3Um93KCJteU9iamVj
dC5teUludm9rYWJsZSIpCi0gICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15SW52b2thYmxlIiA8
PCAoUVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nvbm5lY3QiIDw8ICJsZW5ndGgi
IDw8ICJuYW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15SW52b2thYmxlIiA8PCAo
UVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nvbm5lY3QiIDw8ICJuYW1lIik7CiAg
ICAgUVRlc3Q6Om5ld1JvdygibXlPYmplY3QubXlTaWduYWwuY29ubmVjdCIpCi0gICAgICAgIDw8
ICJteU9iamVjdC5teVNpZ25hbCIgPDwgImNvbm5lY3QiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJs
ZW5ndGgiIDw8ICJuYW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdC5teVNpZ25hbCIgPDwgImNv
bm5lY3QiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJuYW1lIik7CiAgICAgUVRlc3Q6Om5ld1Jvdygi
bXlPYmplY3QubXlTaWduYWwuZGlzY29ubmVjdCIpCi0gICAgICAgIDw8ICJteU9iamVjdC5teVNp
Z25hbCIgPDwgImRpc2Nvbm5lY3QiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJsZW5ndGgiIDw8ICJu
YW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdC5teVNpZ25hbCIgPDwgImRpc2Nvbm5lY3QiIDw8
IChRU3RyaW5nTGlzdCgpIDw8ICJuYW1lIik7CiB9CiAKIHZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6
OmludHJvc3BlY3RRdE1ldGhvZHMoKQpAQCAtMjE3Niw4ICsyMTc2LDkgQEAgdm9pZCB0c3RfUU9i
amVjdEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kcygpCiAgICAgICAgIFFDT01QQVJFKGV2YWxK
UygiZGVzY3JpcHRvci5nZXQiKSwgc1VuZGVmaW5lZCk7CiAgICAgICAgIFFDT01QQVJFKGV2YWxK
UygiZGVzY3JpcHRvci5zZXQiKSwgc1VuZGVmaW5lZCk7CiAgICAgICAgIFFDT01QQVJFKGV2YWxK
UyhRU3RyaW5nOjpmcm9tTGF0aW4xKCJkZXNjcmlwdG9yLnZhbHVlID09PSAlMFsnJTEnXSIpLmFy
ZyhtZXRob2RMb29rdXApLmFyZyhuYW1lKSksIHNUcnVlKTsKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICJjaGVja2luZyBwcm9wICVzXG4iLCBxUHJpbnRhYmxlKG5hbWUpKTsKICAgICAgICAgUUNP
TVBBUkUoZXZhbEpTKFFTdHJpbmc6OmZyb21MYXRpbjEoImRlc2NyaXB0b3IuZW51bWVyYWJsZSIp
KSwgc0ZhbHNlKTsKLSAgICAgICAgUUNPTVBBUkUoZXZhbEpTKFFTdHJpbmc6OmZyb21MYXRpbjEo
ImRlc2NyaXB0b3IuY29uZmlndXJhYmxlIikpLCBzVHJ1ZSk7CisgICAgICAgIFFDT01QQVJFKGV2
YWxKUyhRU3RyaW5nOjpmcm9tTGF0aW4xKCJkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSIpKSwgc0Zh
bHNlKTsKICAgICB9CiAKICAgICBRVkVSSUZZKGV2YWxKU1YoInZhciBwcm9wcz1bXTsgZm9yICh2
YXIgcCBpbiBteU9iamVjdC5kZWxldGVMYXRlcikge3Byb3BzLnB1c2gocCk7fTsgcHJvcHMuc29y
dCgpIikudG9TdHJpbmdMaXN0KCkuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzY3ODc1OGY2YzE0OGRl
OWFiNjAxMTVmOTBjN2Q5MTZhYjhjMTJjLi5jNjUwZDY1NmExOGJhOGE4NjM1ZmVlMDIwMGE1MDBl
YTZhMGQ5YjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDgtMTQgIFNpbW9uIEhhdXNt
YW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gUkVHUkVTU0lP
TihyMTI1NDI4KTogZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIu
aHRtbCBmYWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTM4OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IFVuc2tpcCB0ZXN0IHRoYXQgaXMgbm93IHBhc3Npbmcu
CisKIDIwMTItMDgtMTQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAogICAgICAgICByZWdyZXNzaW9uKHIxMjQ1MTApIHdlYmludGVudHMvd2ViLWludGVu
dHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgaXMgY3Jhc2hpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CmluZGV4IDBjZTE0NTE5M2M4NDFjYmFjOWIxYmJjYzE0ZmNiMDQ5YjUwYmJmY2UuLmE5YmYzZjEx
YmM1ZjZmODI1OTU4OTc5MDJmOTg0MGMzNjQ1MzBmOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZApAQCAtMjczMiw2ICsyNzMyLDMgQEAgZmFzdC9qcy9kZmctY29tcGFyZS1maW5hbC1vYmplY3Qt
dG8tZmluYWwtb2JqZWN0LW9yLW90aGVyLXdoZW4tYm90aC1wcm92ZW4tZmluYWwKICMgW1F0XVtH
VEtdIFJFR1JFU1NJT04ocjEyNTI1MSk6IEl0IG1hZGUgc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VS
b290LWFzLWV2ZW50LXRhcmdldC54aHRtbCBhc3NlcnQgYW5kIGZsYWtleQogIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4MTIKIHN2Zy9jdXN0b20vdXNlLWluc3Rh
bmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKLQotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTM4OTcKLWZhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1z
dG9wLXByb2ZpbGVyLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159066</attachid>
            <date>2012-08-17 02:59:39 -0700</date>
            <delta_ts>2012-08-17 03:13:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93897-20120817120020.patch</filename>
            <type>text/plain</type>
            <size>16023</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNhZmYwNjg4NjBlNDU0
OTI2Yjc0NThhMWRjYjdiZTcyZDA5NjcwMS4uZDE5NTMyYmUwMDA5ZWJlNWY0YzI0MzI0Mzk4YzI0
Yjg1NDhhMzI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA4LTE3ICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFJF
R1JFU1NJT04ocjEyNTQyOCk6IGZhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXBy
b2ZpbGVyLmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzODk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQmVmb3JlIHIxMjU0MjggcnVuLXRpbWUgbWV0aG9kcyAod3JhcHBlZCBzaWduYWxz
LCBzbG90cyBvciBpbnZva2FibGUgZnVuY3Rpb25zKSB3ZXJlIHN1YmNsYXNzZXMgb2YKKyAgICAg
ICAgSlNJbnRlcm5hbEZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgcmVhbCBmdW5jdGlvbiBvYmplY3Rz
IGluIHRoZSBKYXZhU2NyaXB0IHNlbnNlLiByMTI1NDI4IGNoYW5nZWQgdGhlbQorICAgICAgICB0
byBiZSBqdXN0IGNhbGxhYmxlIG9iamVjdHMsIGJ1dCB0aGV5IGRpZCBub3QgaGF2ZSBGdW5jdGlv
bi5wcm90b3R5cGUgYXMgcHJvdG90eXBlIGFueW1vcmUgZm9yIGV4YW1wbGUKKyAgICAgICAgbm9y
IHdhcyB0aGVpciBuYW1lIGNvcnJlY3QgKHJlc3VsdGluZyBpbiBhIGxheW91dCB0ZXN0IGZhaWx1
cmUpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBydW4tdGltZSBtZXRob2RzIGJhY2sg
dG8gYmVpbmcgcmVhbCBmdW5jdGlvbiBvYmplY3RzIHRoYXQgaGF2ZSBhIGNvcnJlY3QgbmFtZSBh
bmQKKyAgICAgICAgaGF2ZSBGdW5jdGlvbi5wcm90b3R5cGUgaW4gdGhlaXIgcHJvdG90eXBlIGNo
YW5nZQorCisgICAgICAgIFRoZSBvYmplY3RzIHJldHVybmVkIGJ5IEpTT2JqZWN0TWFrZUZ1bmN0
aW9uV2l0aENhbGxiYWNrSW5qZWN0ZWQgYXJlIGxpZ2h0LXdlaWdodCBpbnRlcm5hbCBmdW5jdGlv
biBvYmplY3RzCisgICAgICAgIHRoYXQgZG8gbm90IHN1cHBvcnQgSlNPYmplY3R7U2V0L0dldH1Q
cml2YXRlLiBUaGVyZWZvcmUgd2UgaW5qZWN0IG91ciBvd24gcHJvdG90eXBlIHJpZ2h0IGJlZm9y
ZSB0aGUKKyAgICAgICAgRnVuY3Rpb24ucHJvdG90eXBlIHByb3RvdHlwZSwgd2hpY2ggdXNlcyBw
cml2YXRlIGRhdGEgdG8gc3RvcmUgYSBwb2ludGVyIHRvIG91ciBDKysgUXRSdW50aW1lTWV0aG9k
IG9iamVjdC4KKyAgICAgICAgVGhpcyBjb21wbGljYXRlcyB0aGUgcmV0cmlldmFsIG9mIHRoZSBw
b2ludGVyIHRvIHRoYXQgaW5zdGFuY2Ugc2xpZ2h0bHksIHdoaWNoIGlzIHdoeSB0aGlzIHBhdGNo
IGludHJvZHVjZXMKKyAgICAgICAgdGhlIHRvUnVudGltZU1ldGhvZCBjb252ZW5pZW5jZSBmdW5j
dGlvbiB0aGF0IGxvb2tzIHVwIG91ciBwcm90b3R5cGUgZmlyc3QgYW5kIGRvZXMgYSBjaGVjayBm
b3IgdHlwZS1zYWZldHkuCisKKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSB0aGUgcGF0Y2ggcmVt
b3ZlcyB0aGUgbGVuZ3RoIHByb3BlcnRpZXMgZnJvbSB0aGUgcnVuLXRpbWUgbWV0aG9kIGl0c2Vs
ZiBhcyB3ZWxsIGFzIGNvbm5lY3QvZGlzY29ubmVjdC4KKyAgICAgICAgVGhlIGxlbmd0aCBwcm9w
ZXJ0eSBvbiBhIGZ1bmN0aW9uIHNpZ25pZmllcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgYnV0
IGluIGFsbCB0aHJlZSBjYXNlcyB0aGF0IG51bWJlciBpcworICAgICAgICBhY3R1YWxseSB2YXJp
YWJsZSwgYmVjYXVzZSBvZiBvdmVybG9hZGluZy4gVGhhdCBpcyB3aHkgd2UgY2hvb3NlIG5vdCB0
byBleHBvc2UgaXQgaW4gdGhlIGZpcnN0IHBsYWNlLgorCisgICAgICAgICogYnJpZGdlL3F0L3F0
X3J1bnRpbWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6cHJvdG90eXBlRm9yU2lnbmFs
c0FuZFNsb3RzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGhvZDo6Y2Fs
bCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVm
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGhvZDo6dG9SdW50aW1lTWV0
aG9kKToKKyAgICAgICAgKEJpbmRpbmdzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVu
dGltZU1ldGhvZDo6Y29ubmVjdE9yRGlzY29ubmVjdCk6CisgICAgICAgICogYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaDoKKyAgICAgICAgKFF0UnVudGltZU1ldGhvZCk6IFJlbW92ZSB1bnVzZWQgbWVt
YmVyIHZhcmlhYmxlcy4KKwogMjAxMi0wOC0xNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBX
ZWFrIHNtYXJ0IHBvaW50ZXIgd2l0aCBKU1dlYWtPYmplY3RNYXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
NjkzYTY5ZGYwYjc4NTU3OTRkOGJjZDg4NGEzZjgyYzdjM2E5MThkNy4uZWQ1MWZjNGQxOGFiZTk4
MjU0NTRjZWQ5NGY2NjViZjMwMzI2ZWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMi0wOC0xNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CisKKyAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjU0MjgpOiBmYXN0L3Byb2ZpbGVyL25lc3Rl
ZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIHNvbWUgdGVzdCBleHBlY3RhdGlvbnMu
CisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcDoK
KyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjpvYmplY3REZWxldGVkKTogU2luY2UgcnVudGlt
ZSBtZXRob2RzIGFyZSByZWFsIGZ1bmN0aW9uIG9iamVjdHMgYWdhaW4sIHdlCisgICAgICAgIGNh
biBnbyBiYWNrIHRvIHRlc3RpbmcgRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIGFzIGl0IHdhcyBk
b25lIGJlZm9yZSByMTI1NDI4LgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6OmludHJvc3Bl
Y3RRdE1ldGhvZHNfZGF0YSk6IFJlbW92ZWQgdGVzdHMgZm9yIHRoZSBsZW5ndGggcHJvcGVydHku
CisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kcyk6IENoYW5n
ZWQgdGVzdCBleHBlY3RhdGlvbiBvZiB0aGUgcHJvcGVydGllcyBvZgorICAgICAgICBydW4tdGlt
ZSBtZXRob2RzIGJhY2sgdG8gYmVpbmcgbm9uLWNvbmZpZ3VyYWJsZSwgYXMgYmVmb3JlIHIxMjU0
MjguCisKIDIwMTItMDgtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVXBkYXRlIG1hbnVhbCB0ZXN0cyBhbmQgY29tbWVudHMgdG8gcmVmZXIgdG8gVGVzdFJ1
bm5lciBpbnN0ZWFkIG9mIExheW91dFRlc3RDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcnVudGltZS5jcHAKaW5kZXggYWQ1MDdiNDc3NzM1ZTIyYmJmYzdiZmQyODRmNWIwMGY2
NzE1N2I3ZS4uMWRkNzliYTg4OWVkYWFkNzNlODk2OGJjODFlMTBiMDFhN2ZkN2YzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtMTI4Myw4ICsxMjgzLDggQEAg
c3RhdGljIGludCBmaW5kU2lnbmFsSW5kZXgoY29uc3QgUU1ldGFPYmplY3QqIG1ldGEsIGludCBp
bml0aWFsSW5kZXgsIFFCeXRlQXJyYXkKIHN0YXRpYyBKU0NsYXNzUmVmIHByb3RvdHlwZUZvclNp
Z25hbHNBbmRTbG90cygpCiB7CiAgICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVm
ID0gewotICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLAotICAgICAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCBRdFJ1bnRpbWVNZXRob2Q6OmNhbGwsIDAsIDAsIDAKKyAgICAgICAgMCwga0pTQ2xhc3NB
dHRyaWJ1dGVOb0F1dG9tYXRpY1Byb3RvdHlwZSwgMCwgMCwgMCwgMCwKKyAgICAgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAogICAgIH07CiAgICAgc3RhdGljIEpTQ2xhc3NSZWYg
Y2xzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWYpOwogICAgIHJldHVybiBjbHM7CkBAIC0xMzA4
LDcgKzEzMDgsNyBAQCBRdFJ1bnRpbWVNZXRob2Q6On5RdFJ1bnRpbWVNZXRob2QoKQogCiBKU1Zh
bHVlUmVmIFF0UnVudGltZU1ldGhvZDo6Y2FsbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIC8qdGhpc09iamVjdCovLCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewotICAgIFF0UnVudGltZU1ldGhvZCogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50
aW1lTWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKGZ1bmN0aW9uKSk7CisgICAgUXRSdW50aW1l
TWV0aG9kKiBkID0gdG9SdW50aW1lTWV0aG9kKGNvbnRleHQsIGZ1bmN0aW9uKTsKICAgICBpZiAo
IWQpIHsKICAgICAgICAgc2V0RXhjZXB0aW9uKGNvbnRleHQsIGV4Y2VwdGlvbiwgUVN0cmluZ0xp
dGVyYWwoImNhbm5vdCBjYWxsIGZ1bmN0aW9uIG9mIGRlbGV0ZWQgcnVudGltZSBtZXRob2QiKSk7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTEzNTQs
NTAgKzEzNTQsNTMgQEAgSlNPYmplY3RSZWYgUXRSdW50aW1lTWV0aG9kOjpqc09iamVjdFJlZihK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXAKICAgICBpZiAoSlNPYmplY3RS
ZWYgY2FjaGVkV3JhcHBlciA9IG1faW5zdGFuY2UtPm1fY2FjaGVkTWV0aG9kcy5nZXQodGhpcykp
CiAgICAgICAgIHJldHVybiBjYWNoZWRXcmFwcGVyOwogCi0gICAgc3RhdGljIGNvbnN0IEpTQ2xh
c3NEZWZpbml0aW9uIGNsYXNzRGVmRm9yQ29ubmVjdCA9IHsKLSAgICAgICAgMCwgMCwgImNvbm5l
Y3QiLCAwLCAwLCAwLAotICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCBjb25uZWN0LCAwLCAw
LCAwCi0gICAgfTsKLQotICAgIHN0YXRpYyBjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0Rl
ZkZvckRpc2Nvbm5lY3QgPSB7Ci0gICAgICAgIDAsIDAsICJkaXNjb25uZWN0IiwgMCwgMCwgMCwK
LSAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZGlzY29ubmVjdCwgMCwgMCwgMAotICAgIH07
Ci0KLSAgICBzdGF0aWMgSlNDbGFzc1JlZiBjbGFzc1JlZkNvbm5lY3QgPSBKU0NsYXNzQ3JlYXRl
KCZjbGFzc0RlZkZvckNvbm5lY3QpOwotICAgIHN0YXRpYyBKU0NsYXNzUmVmIGNsYXNzUmVmRGlz
Y29ubmVjdCA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmRm9yRGlzY29ubmVjdCk7Ci0gICAgYm9v
bCBpc1NpZ25hbCA9IG1fZmxhZ3MgJiBNZXRob2RJc1NpZ25hbDsKLSAgICBKU09iamVjdFJlZiBv
YmplY3QgPSBKU09iamVjdE1ha2UoY29udGV4dCwgcHJvdG90eXBlRm9yU2lnbmFsc0FuZFNsb3Rz
KCksIHRoaXMpOwotICAgIEpTT2JqZWN0UmVmIGNvbm5lY3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFr
ZShjb250ZXh0LCBjbGFzc1JlZkNvbm5lY3QsIHRoaXMpOwotICAgIEpTT2JqZWN0UmVmIGRpc2Nv
bm5lY3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBjbGFzc1JlZkRpc2Nvbm5lY3Qs
IHRoaXMpOwotICAgIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnRFbnVtIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlOwotCiAg
ICAgc3RhdGljIEpTU3RyaW5nUmVmIGNvbm5lY3RTdHIgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiY29ubmVjdCIpOwogICAgIHN0YXRpYyBKU1N0cmluZ1JlZiBkaXNjb25uZWN0U3Ry
ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRpc2Nvbm5lY3QiKTsKLSAgICBzdGF0
aWMgSlNTdHJpbmdSZWYgbGVuZ3RoU3RyID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
Imxlbmd0aCIpOwotICAgIHN0YXRpYyBKU1N0cmluZ1JlZiBuYW1lU3RyID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIm5hbWUiKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
YWN0dWFsTmFtZVN0cihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobV9pZGVu
dGlmaWVyLmNvbnN0RGF0YSgpKSk7CiAKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQs
IGNvbm5lY3RGdW5jdGlvbiwgbGVuZ3RoU3RyLCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBp
c1NpZ25hbCA/IDEgOiAwKSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsKLSAgICBKU09iamVjdFNl
dFByb3BlcnR5KGNvbnRleHQsIGNvbm5lY3RGdW5jdGlvbiwgbmFtZVN0ciwgSlNWYWx1ZU1ha2VT
dHJpbmcoY29udGV4dCwgY29ubmVjdFN0ciksIGF0dHJpYnV0ZXMsIGV4Y2VwdGlvbik7Ci0gICAg
SlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBkaXNjb25uZWN0RnVuY3Rpb24sIGxlbmd0aFN0
ciwgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgaXNTaWduYWwgPyAxIDogMCksIGF0dHJpYnV0
ZXMsIGV4Y2VwdGlvbik7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBkaXNjb25u
ZWN0RnVuY3Rpb24sIG5hbWVTdHIsIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGRpc2Nvbm5l
Y3RTdHIpLCBhdHRyaWJ1dGVzLCBleGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9
IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGFjdHVhbE5hbWVTdHIu
Z2V0KCksIGNhbGwpOworCisgICAgSlNPYmplY3RSZWYgZ2VuZXJhbEZ1bmN0aW9uUHJvdG8gPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm90b3R5cGUoY29udGV4dCwgb2Jq
ZWN0KSwgMCk7CisgICAgSlNPYmplY3RSZWYgcnVudGltZU1ldGhvZFByb3RvID0gSlNPYmplY3RN
YWtlKGNvbnRleHQsIHByb3RvdHlwZUZvclNpZ25hbHNBbmRTbG90cygpLCB0aGlzKTsKKyAgICBK
U09iamVjdFNldFByb3RvdHlwZShjb250ZXh0LCBydW50aW1lTWV0aG9kUHJvdG8sIGdlbmVyYWxG
dW5jdGlvblByb3RvKTsKKworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQsIG9iamVj
dCwgcnVudGltZU1ldGhvZFByb3RvKTsKKworICAgIEpTT2JqZWN0UmVmIGNvbm5lY3RGdW5jdGlv
biA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGNvbm5lY3RTdHIs
IGNvbm5lY3QpOworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQsIGNvbm5lY3RGdW5j
dGlvbiwgcnVudGltZU1ldGhvZFByb3RvKTsKKworICAgIEpTT2JqZWN0UmVmIGRpc2Nvbm5lY3RG
dW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGRpc2Nv
bm5lY3RTdHIsIGRpc2Nvbm5lY3QpOworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQs
IGRpc2Nvbm5lY3RGdW5jdGlvbiwgcnVudGltZU1ldGhvZFByb3RvKTsKIAorICAgIGNvbnN0IEpT
UHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRF
bnVtIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlOwogICAgIEpTT2JqZWN0U2V0UHJv
cGVydHkoY29udGV4dCwgb2JqZWN0LCBjb25uZWN0U3RyLCBjb25uZWN0RnVuY3Rpb24sIGF0dHJp
YnV0ZXMsIGV4Y2VwdGlvbik7CiAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBvYmpl
Y3QsIGRpc2Nvbm5lY3RTdHIsIGRpc2Nvbm5lY3RGdW5jdGlvbiwgYXR0cmlidXRlcywgZXhjZXB0
aW9uKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbGVuZ3RoU3Ry
LCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCAwKSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsK
LSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbmFtZVN0ciwgSlNWYWx1
ZU1ha2VTdHJpbmcoY29udGV4dCwgYWN0dWFsTmFtZVN0ci5nZXQoKSksIGF0dHJpYnV0ZXMsIGV4
Y2VwdGlvbik7CiAKICAgICBtX2luc3RhbmNlLT5tX2NhY2hlZE1ldGhvZHMuc2V0KGNvbnRleHQs
IHRoaXMsIG9iamVjdCk7CiAKICAgICByZXR1cm4gb2JqZWN0OwogfQogCitRdFJ1bnRpbWVNZXRo
b2QqIFF0UnVudGltZU1ldGhvZDo6dG9SdW50aW1lTWV0aG9kKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgSlNPYmplY3RSZWYgcHJvdG8gPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm90b3R5cGUoY29udGV4dCwgb2JqZWN0KSwg
MCk7CisgICAgaWYgKCFwcm90bykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFKU1ZhbHVl
SXNPYmplY3RPZkNsYXNzKGNvbnRleHQsIHByb3RvLCBwcm90b3R5cGVGb3JTaWduYWxzQW5kU2xv
dHMoKSkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxRdFJ1bnRp
bWVNZXRob2QqPihKU09iamVjdEdldFByaXZhdGUocHJvdG8pKTsKK30KKwogSlNWYWx1ZVJlZiBR
dFJ1bnRpbWVNZXRob2Q6OmNvbm5lY3RPckRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uLCBib29sIGNvbm5lY3QpCiB7Ci0gICAgUXRSdW50aW1lTWV0aG9kKiBkID0gc3RhdGlj
X2Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
KyAgICBRdFJ1bnRpbWVNZXRob2QqIGQgPSB0b1J1bnRpbWVNZXRob2QoY29udGV4dCwgdGhpc09i
amVjdCk7CiAgICAgaWYgKCFkKQotICAgICAgICBkID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0
aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKGZ1bmN0aW9uKSk7CisgICAgICAgIGQgPSB0b1J1bnRp
bWVNZXRob2QoY29udGV4dCwgZnVuY3Rpb24pOworICAgIGlmICghZCkgeworICAgICAgICBRU3Ry
aW5nIGVycm9yU3RyID0gUVN0cmluZ0xpdGVyYWwoIlF0TWV0YU1ldGhvZC4lMTogQ2Fubm90IGNv
bm5lY3QgdG8vZnJvbSBkZWxldGVkIFFPYmplY3QiKS5hcmcoY29ubmVjdCA/ICBRU3RyaW5nTGl0
ZXJhbCgiY29ubmVjdCIpIDogUVN0cmluZ0xpdGVyYWwoImRpc2Nvbm5lY3QiKSk7CisgICAgICAg
IHNldEV4Y2VwdGlvbihjb250ZXh0LCBleGNlcHRpb24sIGVycm9yU3RyKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIH0KIAogICAgIFFTdHJpbmcg
ZnVuY3Rpb25OYW1lID0gY29ubmVjdCA/IFFTdHJpbmdMaXRlcmFsKCJjb25uZWN0IikgOiBRU3Ry
aW5nTGl0ZXJhbCgiZGlzY29ubmVjdCIpOwogCkBAIC0xNDMzLDExICsxNDM2LDkgQEAgSlNWYWx1
ZVJlZiBRdFJ1bnRpbWVNZXRob2Q6OmNvbm5lY3RPckRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmUKIAogICAgICAgICAvLyBvYmplY3Quc2lnbmFsLmNvbm5lY3Qoc29t
ZUZ1bmN0aW9uKTsKICAgICAgICAgaWYgKEpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCB0YXJn
ZXRGdW5jdGlvbikpIHsKLSAgICAgICAgICAgIGlmIChKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGNv
bnRleHQsIHRhcmdldEZ1bmN0aW9uLCBwcm90b3R5cGVGb3JTaWduYWxzQW5kU2xvdHMoKSkpIHsK
LSAgICAgICAgICAgICAgICAvLyBvYmplY3Quc2lnbmFsLmNvbm5lY3Qob3RoZXJPYmplY3Quc2xv
dCk7Ci0gICAgICAgICAgICAgICAgaWYgKFF0UnVudGltZU1ldGhvZCogdGFyZ2V0TWV0aG9kID0g
c3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKHRhcmdldEZ1
bmN0aW9uKSkpCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldE9iamVjdCA9IHRvUmVmKFF0SW5z
dGFuY2U6OmdldFF0SW5zdGFuY2UodGFyZ2V0TWV0aG9kLT5tX29iamVjdC5kYXRhKCksIGQtPm1f
aW5zdGFuY2UtPnJvb3RPYmplY3QoKSwgUXRJbnN0YW5jZTo6UXRPd25lcnNoaXApLT5jcmVhdGVS
dW50aW1lT2JqZWN0KHRvSlMoY29udGV4dCkpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC8vIG9iamVjdC5zaWduYWwuY29ubmVjdChvdGhlck9iamVjdC5zbG90KTsKKyAgICAgICAgICAg
IGlmIChRdFJ1bnRpbWVNZXRob2QqIHRhcmdldE1ldGhvZCA9IHRvUnVudGltZU1ldGhvZChjb250
ZXh0LCB0YXJnZXRGdW5jdGlvbikpCisgICAgICAgICAgICAgICAgdGFyZ2V0T2JqZWN0ID0gdG9S
ZWYoUXRJbnN0YW5jZTo6Z2V0UXRJbnN0YW5jZSh0YXJnZXRNZXRob2QtPm1fb2JqZWN0LmRhdGEo
KSwgZC0+bV9pbnN0YW5jZS0+cm9vdE9iamVjdCgpLCBRdEluc3RhbmNlOjpRdE93bmVyc2hpcCkt
PmNyZWF0ZVJ1bnRpbWVPYmplY3QodG9KUyhjb250ZXh0KSkpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIHRhcmdldEZ1bmN0aW9uID0gMDsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggYTkxZTRmNTEzZWRlNGQ1MmM2ZDY4ZWJiMWZkZjVm
ZDI4NGNiNzhiMC4uMjQ1MGZjNTZlMzdlN2FmY2U3OWJhMzM2ZmVlYWFmNzE4ZDkwYmJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xMTQsOCArMTE0LDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFFCeXRlQXJyYXkmIG5hbWUoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiBjb25uZWN0
RnVuY3Rpb247Ci0gICAgc3RhdGljIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24gZGlzY29ubmVjdEZ1
bmN0aW9uOworICAgIHN0YXRpYyBRdFJ1bnRpbWVNZXRob2QqIHRvUnVudGltZU1ldGhvZChKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKIAogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbm5lY3RP
ckRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIGJvb2wgY29ubmVjdCk7CiAgICAg
UVBvaW50ZXI8UU9iamVjdD4gbV9vYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9xdC90ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcAppbmRleCAyY2U3
OTFkODk5M2QxMWVjNDlkOTc0ZjUyZWNjNjBjOTk5Yjg2ZWFiLi40ODczNjIxNTcyZjZlMDY3ZjI4
NzJjNjE4YTRmMDA3YmM5Yzg3YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3Rz
L3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvcW9iamVjdGJyaWRnZS90c3RfcW9iamVjdGJyaWRnZS5jcHAKQEAgLTE4NzksNyAr
MTg3OSw3IEBAIHZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6Om9iamVjdERlbGV0ZWQoKQogICAgIGV2
YWxKUygiYmFyLmludFByb3BlcnR5ID0gMTIzOyIpOwogICAgIFFDT01QQVJFKHFvYmotPmludFBy
b3BlcnR5KCksIDEyMyk7CiAgICAgcW9iai0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOwotICAg
IGV2YWxKUygiYmFyLm15SW52b2thYmxlKGJhcik7Iik7CisgICAgZXZhbEpTKCJiYXIubXlJbnZv
a2FibGUuY2FsbChiYXIpOyIpOwogICAgIFFDT01QQVJFKHFvYmotPnF0RnVuY3Rpb25JbnZva2Vk
KCksIDApOwogCiAgICAgLy8gZG8gdGhpcywgdG8gZW5zdXJlIHRoYXQgd2UgY2FjaGUgdGhhdCBp
dCBpbXBsZW1lbnRzIGNhbGwKQEAgLTIxNDgsMTUgKzIxNDgsMTUgQEAgdm9pZCB0c3RfUU9iamVj
dEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kc19kYXRhKCkKICAgICBRVGVzdDo6YWRkQ29sdW1u
PFFTdHJpbmdMaXN0PigiZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzIik7CiAKICAgICBRVGVzdDo6bmV3
Um93KCJteU9iamVjdC5teVNpZ25hbCIpCi0gICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15U2ln
bmFsIiA8PCAoUVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nvbm5lY3QiIDw8ICJs
ZW5ndGgiIDw8ICJuYW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15U2lnbmFsIiA8
PCAoUVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nvbm5lY3QiIDw8ICJuYW1lIik7
CiAgICAgUVRlc3Q6Om5ld1JvdygibXlPYmplY3QubXlTbG90IikKLSAgICAgICAgPDwgIm15T2Jq
ZWN0IiA8PCAibXlTbG90IiA8PCAoUVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nv
bm5lY3QiIDw8ICJsZW5ndGgiIDw8ICJuYW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdCIgPDwg
Im15U2xvdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImNvbm5lY3QiIDw8ICJkaXNjb25uZWN0IiA8
PCAibmFtZSIpOwogICAgIFFUZXN0OjpuZXdSb3coIm15T2JqZWN0Lm15SW52b2thYmxlIikKLSAg
ICAgICAgPDwgIm15T2JqZWN0IiA8PCAibXlJbnZva2FibGUiIDw8IChRU3RyaW5nTGlzdCgpIDw8
ICJjb25uZWN0IiA8PCAiZGlzY29ubmVjdCIgPDwgImxlbmd0aCIgPDwgIm5hbWUiKTsKKyAgICAg
ICAgPDwgIm15T2JqZWN0IiA8PCAibXlJbnZva2FibGUiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJj
b25uZWN0IiA8PCAiZGlzY29ubmVjdCIgPDwgIm5hbWUiKTsKICAgICBRVGVzdDo6bmV3Um93KCJt
eU9iamVjdC5teVNpZ25hbC5jb25uZWN0IikKLSAgICAgICAgPDwgIm15T2JqZWN0Lm15U2lnbmFs
IiA8PCAiY29ubmVjdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImxlbmd0aCIgPDwgIm5hbWUiKTsK
KyAgICAgICAgPDwgIm15T2JqZWN0Lm15U2lnbmFsIiA8PCAiY29ubmVjdCIgPDwgKFFTdHJpbmdM
aXN0KCkgPDwgIm5hbWUiKTsKICAgICBRVGVzdDo6bmV3Um93KCJteU9iamVjdC5teVNpZ25hbC5k
aXNjb25uZWN0IikKLSAgICAgICAgPDwgIm15T2JqZWN0Lm15U2lnbmFsIiA8PCAiZGlzY29ubmVj
dCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImxlbmd0aCIgPDwgIm5hbWUiKTsKKyAgICAgICAgPDwg
Im15T2JqZWN0Lm15U2lnbmFsIiA8PCAiZGlzY29ubmVjdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwg
Im5hbWUiKTsKIH0KIAogdm9pZCB0c3RfUU9iamVjdEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9k
cygpCkBAIC0yMTc2LDggKzIxNzYsOSBAQCB2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjppbnRyb3Nw
ZWN0UXRNZXRob2RzKCkKICAgICAgICAgUUNPTVBBUkUoZXZhbEpTKCJkZXNjcmlwdG9yLmdldCIp
LCBzVW5kZWZpbmVkKTsKICAgICAgICAgUUNPTVBBUkUoZXZhbEpTKCJkZXNjcmlwdG9yLnNldCIp
LCBzVW5kZWZpbmVkKTsKICAgICAgICAgUUNPTVBBUkUoZXZhbEpTKFFTdHJpbmc6OmZyb21MYXRp
bjEoImRlc2NyaXB0b3IudmFsdWUgPT09ICUwWyclMSddIikuYXJnKG1ldGhvZExvb2t1cCkuYXJn
KG5hbWUpKSwgc1RydWUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNoZWNraW5nIHByb3Ag
JXNcbiIsIHFQcmludGFibGUobmFtZSkpOwogICAgICAgICBRQ09NUEFSRShldmFsSlMoUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiZGVzY3JpcHRvci5lbnVtZXJhYmxlIikpLCBzRmFsc2UpOwotICAgICAg
ICBRQ09NUEFSRShldmFsSlMoUVN0cmluZzo6ZnJvbUxhdGluMSgiZGVzY3JpcHRvci5jb25maWd1
cmFibGUiKSksIHNUcnVlKTsKKyAgICAgICAgUUNPTVBBUkUoZXZhbEpTKFFTdHJpbmc6OmZyb21M
YXRpbjEoImRlc2NyaXB0b3IuY29uZmlndXJhYmxlIikpLCBzRmFsc2UpOwogICAgIH0KIAogICAg
IFFWRVJJRlkoZXZhbEpTVigidmFyIHByb3BzPVtdOyBmb3IgKHZhciBwIGluIG15T2JqZWN0LmRl
bGV0ZUxhdGVyKSB7cHJvcHMucHVzaChwKTt9OyBwcm9wcy5zb3J0KCkiKS50b1N0cmluZ0xpc3Qo
KS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhjNTZhYTI2MDhkZjRlMjQ0YTBiYzVmOGE3Y2IxODQyZDdj
ZTQ0NDIuLmE4OGM2ZGJkMDllNDcyZTI5OGI4OGNjOTU5MDk3Mjc2MTcwYjc4NGUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxMi0wOC0xNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFu
bkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjU0MjgpOiBmYXN0L3By
b2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIGZhaWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDogVW5za2lwIHRlc3QgdGhhdCBpcyBub3cgcGFzc2luZy4KKwogMjAxMi0wOC0xNiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBidWlsZCBFbGVtZW50cywgUmVzb3VyY2VzLCBUaW1lbGluZSwgQXVkaXRzIGFuZCBDb25z
b2xlIHBhbmVscyBsYXppbHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBhOGI0MTYwMmI4
ZTMxMDUyMDMwOTdkYjRhNTY2YTJmYjI2ODM4MWVmLi44ZTYxYjExMmZhODkyNzQyOGU1MjM0YjU5
NWEzNGM5MmI1NDFmMjRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTI3MjgsOSArMjcy
OCw2IEBAIGZhc3QvanMvZGZnLWNvbXBhcmUtZmluYWwtb2JqZWN0LXRvLWZpbmFsLW9iamVjdC1v
ci1vdGhlci13aGVuLWJvdGgtcHJvdmVuLWZpbmFsCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MzgxMgogc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2
ZW50LXRhcmdldC54aHRtbAogCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05Mzg5NwotZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIu
aHRtbAotCiAjIE5ldyB0ZXN0IGludHJvZHVjZWQgaW4gcjEyNTY0OCBmYXN0L2V2ZW50cy9hdXRv
c2Nyb2xsLWluLXRleHRhcmVhLmh0bWwgZmFpbHMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk0MDc2CiBmYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLWluLXRleHRhcmVh
Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159068</attachid>
            <date>2012-08-17 03:13:10 -0700</date>
            <delta_ts>2012-08-22 02:06:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93897-20120817121351.patch</filename>
            <type>text/plain</type>
            <size>15900</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNhZmYwNjg4NjBlNDU0
OTI2Yjc0NThhMWRjYjdiZTcyZDA5NjcwMS4uZDE5NTMyYmUwMDA5ZWJlNWY0YzI0MzI0Mzk4YzI0
Yjg1NDhhMzI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA4LTE3ICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFJF
R1JFU1NJT04ocjEyNTQyOCk6IGZhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXBy
b2ZpbGVyLmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzODk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQmVmb3JlIHIxMjU0MjggcnVuLXRpbWUgbWV0aG9kcyAod3JhcHBlZCBzaWduYWxz
LCBzbG90cyBvciBpbnZva2FibGUgZnVuY3Rpb25zKSB3ZXJlIHN1YmNsYXNzZXMgb2YKKyAgICAg
ICAgSlNJbnRlcm5hbEZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgcmVhbCBmdW5jdGlvbiBvYmplY3Rz
IGluIHRoZSBKYXZhU2NyaXB0IHNlbnNlLiByMTI1NDI4IGNoYW5nZWQgdGhlbQorICAgICAgICB0
byBiZSBqdXN0IGNhbGxhYmxlIG9iamVjdHMsIGJ1dCB0aGV5IGRpZCBub3QgaGF2ZSBGdW5jdGlv
bi5wcm90b3R5cGUgYXMgcHJvdG90eXBlIGFueW1vcmUgZm9yIGV4YW1wbGUKKyAgICAgICAgbm9y
IHdhcyB0aGVpciBuYW1lIGNvcnJlY3QgKHJlc3VsdGluZyBpbiBhIGxheW91dCB0ZXN0IGZhaWx1
cmUpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBydW4tdGltZSBtZXRob2RzIGJhY2sg
dG8gYmVpbmcgcmVhbCBmdW5jdGlvbiBvYmplY3RzIHRoYXQgaGF2ZSBhIGNvcnJlY3QgbmFtZSBh
bmQKKyAgICAgICAgaGF2ZSBGdW5jdGlvbi5wcm90b3R5cGUgaW4gdGhlaXIgcHJvdG90eXBlIGNo
YW5nZQorCisgICAgICAgIFRoZSBvYmplY3RzIHJldHVybmVkIGJ5IEpTT2JqZWN0TWFrZUZ1bmN0
aW9uV2l0aENhbGxiYWNrSW5qZWN0ZWQgYXJlIGxpZ2h0LXdlaWdodCBpbnRlcm5hbCBmdW5jdGlv
biBvYmplY3RzCisgICAgICAgIHRoYXQgZG8gbm90IHN1cHBvcnQgSlNPYmplY3R7U2V0L0dldH1Q
cml2YXRlLiBUaGVyZWZvcmUgd2UgaW5qZWN0IG91ciBvd24gcHJvdG90eXBlIHJpZ2h0IGJlZm9y
ZSB0aGUKKyAgICAgICAgRnVuY3Rpb24ucHJvdG90eXBlIHByb3RvdHlwZSwgd2hpY2ggdXNlcyBw
cml2YXRlIGRhdGEgdG8gc3RvcmUgYSBwb2ludGVyIHRvIG91ciBDKysgUXRSdW50aW1lTWV0aG9k
IG9iamVjdC4KKyAgICAgICAgVGhpcyBjb21wbGljYXRlcyB0aGUgcmV0cmlldmFsIG9mIHRoZSBw
b2ludGVyIHRvIHRoYXQgaW5zdGFuY2Ugc2xpZ2h0bHksIHdoaWNoIGlzIHdoeSB0aGlzIHBhdGNo
IGludHJvZHVjZXMKKyAgICAgICAgdGhlIHRvUnVudGltZU1ldGhvZCBjb252ZW5pZW5jZSBmdW5j
dGlvbiB0aGF0IGxvb2tzIHVwIG91ciBwcm90b3R5cGUgZmlyc3QgYW5kIGRvZXMgYSBjaGVjayBm
b3IgdHlwZS1zYWZldHkuCisKKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSB0aGUgcGF0Y2ggcmVt
b3ZlcyB0aGUgbGVuZ3RoIHByb3BlcnRpZXMgZnJvbSB0aGUgcnVuLXRpbWUgbWV0aG9kIGl0c2Vs
ZiBhcyB3ZWxsIGFzIGNvbm5lY3QvZGlzY29ubmVjdC4KKyAgICAgICAgVGhlIGxlbmd0aCBwcm9w
ZXJ0eSBvbiBhIGZ1bmN0aW9uIHNpZ25pZmllcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgYnV0
IGluIGFsbCB0aHJlZSBjYXNlcyB0aGF0IG51bWJlciBpcworICAgICAgICBhY3R1YWxseSB2YXJp
YWJsZSwgYmVjYXVzZSBvZiBvdmVybG9hZGluZy4gVGhhdCBpcyB3aHkgd2UgY2hvb3NlIG5vdCB0
byBleHBvc2UgaXQgaW4gdGhlIGZpcnN0IHBsYWNlLgorCisgICAgICAgICogYnJpZGdlL3F0L3F0
X3J1bnRpbWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6cHJvdG90eXBlRm9yU2lnbmFs
c0FuZFNsb3RzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGhvZDo6Y2Fs
bCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVm
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGhvZDo6dG9SdW50aW1lTWV0
aG9kKToKKyAgICAgICAgKEJpbmRpbmdzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVu
dGltZU1ldGhvZDo6Y29ubmVjdE9yRGlzY29ubmVjdCk6CisgICAgICAgICogYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaDoKKyAgICAgICAgKFF0UnVudGltZU1ldGhvZCk6IFJlbW92ZSB1bnVzZWQgbWVt
YmVyIHZhcmlhYmxlcy4KKwogMjAxMi0wOC0xNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZXBsYWNlIHVzZSBvZiBpbnRlcm5hbCBX
ZWFrIHNtYXJ0IHBvaW50ZXIgd2l0aCBKU1dlYWtPYmplY3RNYXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
NjkzYTY5ZGYwYjc4NTU3OTRkOGJjZDg4NGEzZjgyYzdjM2E5MThkNy4uZWQ1MWZjNGQxOGFiZTk4
MjU0NTRjZWQ5NGY2NjViZjMwMzI2ZWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMi0wOC0xNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CisKKyAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjU0MjgpOiBmYXN0L3Byb2ZpbGVyL25lc3Rl
ZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIHNvbWUgdGVzdCBleHBlY3RhdGlvbnMu
CisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcDoK
KyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjpvYmplY3REZWxldGVkKTogU2luY2UgcnVudGlt
ZSBtZXRob2RzIGFyZSByZWFsIGZ1bmN0aW9uIG9iamVjdHMgYWdhaW4sIHdlCisgICAgICAgIGNh
biBnbyBiYWNrIHRvIHRlc3RpbmcgRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIGFzIGl0IHdhcyBk
b25lIGJlZm9yZSByMTI1NDI4LgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6OmludHJvc3Bl
Y3RRdE1ldGhvZHNfZGF0YSk6IFJlbW92ZWQgdGVzdHMgZm9yIHRoZSBsZW5ndGggcHJvcGVydHku
CisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kcyk6IENoYW5n
ZWQgdGVzdCBleHBlY3RhdGlvbiBvZiB0aGUgcHJvcGVydGllcyBvZgorICAgICAgICBydW4tdGlt
ZSBtZXRob2RzIGJhY2sgdG8gYmVpbmcgbm9uLWNvbmZpZ3VyYWJsZSwgYXMgYmVmb3JlIHIxMjU0
MjguCisKIDIwMTItMDgtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVXBkYXRlIG1hbnVhbCB0ZXN0cyBhbmQgY29tbWVudHMgdG8gcmVmZXIgdG8gVGVzdFJ1
bm5lciBpbnN0ZWFkIG9mIExheW91dFRlc3RDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcnVudGltZS5jcHAKaW5kZXggYWQ1MDdiNDc3NzM1ZTIyYmJmYzdiZmQyODRmNWIwMGY2
NzE1N2I3ZS4uMWRkNzliYTg4OWVkYWFkNzNlODk2OGJjODFlMTBiMDFhN2ZkN2YzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtMTI4Myw4ICsxMjgzLDggQEAg
c3RhdGljIGludCBmaW5kU2lnbmFsSW5kZXgoY29uc3QgUU1ldGFPYmplY3QqIG1ldGEsIGludCBp
bml0aWFsSW5kZXgsIFFCeXRlQXJyYXkKIHN0YXRpYyBKU0NsYXNzUmVmIHByb3RvdHlwZUZvclNp
Z25hbHNBbmRTbG90cygpCiB7CiAgICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVm
ID0gewotICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLAotICAgICAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCBRdFJ1bnRpbWVNZXRob2Q6OmNhbGwsIDAsIDAsIDAKKyAgICAgICAgMCwga0pTQ2xhc3NB
dHRyaWJ1dGVOb0F1dG9tYXRpY1Byb3RvdHlwZSwgMCwgMCwgMCwgMCwKKyAgICAgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAogICAgIH07CiAgICAgc3RhdGljIEpTQ2xhc3NSZWYg
Y2xzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWYpOwogICAgIHJldHVybiBjbHM7CkBAIC0xMzA4
LDcgKzEzMDgsNyBAQCBRdFJ1bnRpbWVNZXRob2Q6On5RdFJ1bnRpbWVNZXRob2QoKQogCiBKU1Zh
bHVlUmVmIFF0UnVudGltZU1ldGhvZDo6Y2FsbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIC8qdGhpc09iamVjdCovLCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewotICAgIFF0UnVudGltZU1ldGhvZCogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50
aW1lTWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKGZ1bmN0aW9uKSk7CisgICAgUXRSdW50aW1l
TWV0aG9kKiBkID0gdG9SdW50aW1lTWV0aG9kKGNvbnRleHQsIGZ1bmN0aW9uKTsKICAgICBpZiAo
IWQpIHsKICAgICAgICAgc2V0RXhjZXB0aW9uKGNvbnRleHQsIGV4Y2VwdGlvbiwgUVN0cmluZ0xp
dGVyYWwoImNhbm5vdCBjYWxsIGZ1bmN0aW9uIG9mIGRlbGV0ZWQgcnVudGltZSBtZXRob2QiKSk7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTEzNTQs
NTAgKzEzNTQsNTMgQEAgSlNPYmplY3RSZWYgUXRSdW50aW1lTWV0aG9kOjpqc09iamVjdFJlZihK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXAKICAgICBpZiAoSlNPYmplY3RS
ZWYgY2FjaGVkV3JhcHBlciA9IG1faW5zdGFuY2UtPm1fY2FjaGVkTWV0aG9kcy5nZXQodGhpcykp
CiAgICAgICAgIHJldHVybiBjYWNoZWRXcmFwcGVyOwogCi0gICAgc3RhdGljIGNvbnN0IEpTQ2xh
c3NEZWZpbml0aW9uIGNsYXNzRGVmRm9yQ29ubmVjdCA9IHsKLSAgICAgICAgMCwgMCwgImNvbm5l
Y3QiLCAwLCAwLCAwLAotICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCBjb25uZWN0LCAwLCAw
LCAwCi0gICAgfTsKLQotICAgIHN0YXRpYyBjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0Rl
ZkZvckRpc2Nvbm5lY3QgPSB7Ci0gICAgICAgIDAsIDAsICJkaXNjb25uZWN0IiwgMCwgMCwgMCwK
LSAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZGlzY29ubmVjdCwgMCwgMCwgMAotICAgIH07
Ci0KLSAgICBzdGF0aWMgSlNDbGFzc1JlZiBjbGFzc1JlZkNvbm5lY3QgPSBKU0NsYXNzQ3JlYXRl
KCZjbGFzc0RlZkZvckNvbm5lY3QpOwotICAgIHN0YXRpYyBKU0NsYXNzUmVmIGNsYXNzUmVmRGlz
Y29ubmVjdCA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmRm9yRGlzY29ubmVjdCk7Ci0gICAgYm9v
bCBpc1NpZ25hbCA9IG1fZmxhZ3MgJiBNZXRob2RJc1NpZ25hbDsKLSAgICBKU09iamVjdFJlZiBv
YmplY3QgPSBKU09iamVjdE1ha2UoY29udGV4dCwgcHJvdG90eXBlRm9yU2lnbmFsc0FuZFNsb3Rz
KCksIHRoaXMpOwotICAgIEpTT2JqZWN0UmVmIGNvbm5lY3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFr
ZShjb250ZXh0LCBjbGFzc1JlZkNvbm5lY3QsIHRoaXMpOwotICAgIEpTT2JqZWN0UmVmIGRpc2Nv
bm5lY3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBjbGFzc1JlZkRpc2Nvbm5lY3Qs
IHRoaXMpOwotICAgIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnRFbnVtIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlOwotCiAg
ICAgc3RhdGljIEpTU3RyaW5nUmVmIGNvbm5lY3RTdHIgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiY29ubmVjdCIpOwogICAgIHN0YXRpYyBKU1N0cmluZ1JlZiBkaXNjb25uZWN0U3Ry
ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRpc2Nvbm5lY3QiKTsKLSAgICBzdGF0
aWMgSlNTdHJpbmdSZWYgbGVuZ3RoU3RyID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
Imxlbmd0aCIpOwotICAgIHN0YXRpYyBKU1N0cmluZ1JlZiBuYW1lU3RyID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIm5hbWUiKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
YWN0dWFsTmFtZVN0cihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobV9pZGVu
dGlmaWVyLmNvbnN0RGF0YSgpKSk7CiAKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQs
IGNvbm5lY3RGdW5jdGlvbiwgbGVuZ3RoU3RyLCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBp
c1NpZ25hbCA/IDEgOiAwKSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsKLSAgICBKU09iamVjdFNl
dFByb3BlcnR5KGNvbnRleHQsIGNvbm5lY3RGdW5jdGlvbiwgbmFtZVN0ciwgSlNWYWx1ZU1ha2VT
dHJpbmcoY29udGV4dCwgY29ubmVjdFN0ciksIGF0dHJpYnV0ZXMsIGV4Y2VwdGlvbik7Ci0gICAg
SlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBkaXNjb25uZWN0RnVuY3Rpb24sIGxlbmd0aFN0
ciwgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgaXNTaWduYWwgPyAxIDogMCksIGF0dHJpYnV0
ZXMsIGV4Y2VwdGlvbik7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBkaXNjb25u
ZWN0RnVuY3Rpb24sIG5hbWVTdHIsIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGRpc2Nvbm5l
Y3RTdHIpLCBhdHRyaWJ1dGVzLCBleGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9
IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGFjdHVhbE5hbWVTdHIu
Z2V0KCksIGNhbGwpOworCisgICAgSlNPYmplY3RSZWYgZ2VuZXJhbEZ1bmN0aW9uUHJvdG8gPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm90b3R5cGUoY29udGV4dCwgb2Jq
ZWN0KSwgMCk7CisgICAgSlNPYmplY3RSZWYgcnVudGltZU1ldGhvZFByb3RvID0gSlNPYmplY3RN
YWtlKGNvbnRleHQsIHByb3RvdHlwZUZvclNpZ25hbHNBbmRTbG90cygpLCB0aGlzKTsKKyAgICBK
U09iamVjdFNldFByb3RvdHlwZShjb250ZXh0LCBydW50aW1lTWV0aG9kUHJvdG8sIGdlbmVyYWxG
dW5jdGlvblByb3RvKTsKKworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQsIG9iamVj
dCwgcnVudGltZU1ldGhvZFByb3RvKTsKKworICAgIEpTT2JqZWN0UmVmIGNvbm5lY3RGdW5jdGlv
biA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGNvbm5lY3RTdHIs
IGNvbm5lY3QpOworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQsIGNvbm5lY3RGdW5j
dGlvbiwgcnVudGltZU1ldGhvZFByb3RvKTsKKworICAgIEpTT2JqZWN0UmVmIGRpc2Nvbm5lY3RG
dW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGRpc2Nv
bm5lY3RTdHIsIGRpc2Nvbm5lY3QpOworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQs
IGRpc2Nvbm5lY3RGdW5jdGlvbiwgcnVudGltZU1ldGhvZFByb3RvKTsKIAorICAgIGNvbnN0IEpT
UHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRF
bnVtIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlOwogICAgIEpTT2JqZWN0U2V0UHJv
cGVydHkoY29udGV4dCwgb2JqZWN0LCBjb25uZWN0U3RyLCBjb25uZWN0RnVuY3Rpb24sIGF0dHJp
YnV0ZXMsIGV4Y2VwdGlvbik7CiAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBvYmpl
Y3QsIGRpc2Nvbm5lY3RTdHIsIGRpc2Nvbm5lY3RGdW5jdGlvbiwgYXR0cmlidXRlcywgZXhjZXB0
aW9uKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbGVuZ3RoU3Ry
LCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCAwKSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsK
LSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbmFtZVN0ciwgSlNWYWx1
ZU1ha2VTdHJpbmcoY29udGV4dCwgYWN0dWFsTmFtZVN0ci5nZXQoKSksIGF0dHJpYnV0ZXMsIGV4
Y2VwdGlvbik7CiAKICAgICBtX2luc3RhbmNlLT5tX2NhY2hlZE1ldGhvZHMuc2V0KGNvbnRleHQs
IHRoaXMsIG9iamVjdCk7CiAKICAgICByZXR1cm4gb2JqZWN0OwogfQogCitRdFJ1bnRpbWVNZXRo
b2QqIFF0UnVudGltZU1ldGhvZDo6dG9SdW50aW1lTWV0aG9kKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgSlNPYmplY3RSZWYgcHJvdG8gPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm90b3R5cGUoY29udGV4dCwgb2JqZWN0KSwg
MCk7CisgICAgaWYgKCFwcm90bykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFKU1ZhbHVl
SXNPYmplY3RPZkNsYXNzKGNvbnRleHQsIHByb3RvLCBwcm90b3R5cGVGb3JTaWduYWxzQW5kU2xv
dHMoKSkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxRdFJ1bnRp
bWVNZXRob2QqPihKU09iamVjdEdldFByaXZhdGUocHJvdG8pKTsKK30KKwogSlNWYWx1ZVJlZiBR
dFJ1bnRpbWVNZXRob2Q6OmNvbm5lY3RPckRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uLCBib29sIGNvbm5lY3QpCiB7Ci0gICAgUXRSdW50aW1lTWV0aG9kKiBkID0gc3RhdGlj
X2Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
KyAgICBRdFJ1bnRpbWVNZXRob2QqIGQgPSB0b1J1bnRpbWVNZXRob2QoY29udGV4dCwgdGhpc09i
amVjdCk7CiAgICAgaWYgKCFkKQotICAgICAgICBkID0gc3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0
aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKGZ1bmN0aW9uKSk7CisgICAgICAgIGQgPSB0b1J1bnRp
bWVNZXRob2QoY29udGV4dCwgZnVuY3Rpb24pOworICAgIGlmICghZCkgeworICAgICAgICBRU3Ry
aW5nIGVycm9yU3RyID0gUVN0cmluZ0xpdGVyYWwoIlF0TWV0YU1ldGhvZC4lMTogQ2Fubm90IGNv
bm5lY3QgdG8vZnJvbSBkZWxldGVkIFFPYmplY3QiKS5hcmcoY29ubmVjdCA/ICBRU3RyaW5nTGl0
ZXJhbCgiY29ubmVjdCIpIDogUVN0cmluZ0xpdGVyYWwoImRpc2Nvbm5lY3QiKSk7CisgICAgICAg
IHNldEV4Y2VwdGlvbihjb250ZXh0LCBleGNlcHRpb24sIGVycm9yU3RyKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIH0KIAogICAgIFFTdHJpbmcg
ZnVuY3Rpb25OYW1lID0gY29ubmVjdCA/IFFTdHJpbmdMaXRlcmFsKCJjb25uZWN0IikgOiBRU3Ry
aW5nTGl0ZXJhbCgiZGlzY29ubmVjdCIpOwogCkBAIC0xNDMzLDExICsxNDM2LDkgQEAgSlNWYWx1
ZVJlZiBRdFJ1bnRpbWVNZXRob2Q6OmNvbm5lY3RPckRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmUKIAogICAgICAgICAvLyBvYmplY3Quc2lnbmFsLmNvbm5lY3Qoc29t
ZUZ1bmN0aW9uKTsKICAgICAgICAgaWYgKEpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCB0YXJn
ZXRGdW5jdGlvbikpIHsKLSAgICAgICAgICAgIGlmIChKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGNv
bnRleHQsIHRhcmdldEZ1bmN0aW9uLCBwcm90b3R5cGVGb3JTaWduYWxzQW5kU2xvdHMoKSkpIHsK
LSAgICAgICAgICAgICAgICAvLyBvYmplY3Quc2lnbmFsLmNvbm5lY3Qob3RoZXJPYmplY3Quc2xv
dCk7Ci0gICAgICAgICAgICAgICAgaWYgKFF0UnVudGltZU1ldGhvZCogdGFyZ2V0TWV0aG9kID0g
c3RhdGljX2Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKHRhcmdldEZ1
bmN0aW9uKSkpCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldE9iamVjdCA9IHRvUmVmKFF0SW5z
dGFuY2U6OmdldFF0SW5zdGFuY2UodGFyZ2V0TWV0aG9kLT5tX29iamVjdC5kYXRhKCksIGQtPm1f
aW5zdGFuY2UtPnJvb3RPYmplY3QoKSwgUXRJbnN0YW5jZTo6UXRPd25lcnNoaXApLT5jcmVhdGVS
dW50aW1lT2JqZWN0KHRvSlMoY29udGV4dCkpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC8vIG9iamVjdC5zaWduYWwuY29ubmVjdChvdGhlck9iamVjdC5zbG90KTsKKyAgICAgICAgICAg
IGlmIChRdFJ1bnRpbWVNZXRob2QqIHRhcmdldE1ldGhvZCA9IHRvUnVudGltZU1ldGhvZChjb250
ZXh0LCB0YXJnZXRGdW5jdGlvbikpCisgICAgICAgICAgICAgICAgdGFyZ2V0T2JqZWN0ID0gdG9S
ZWYoUXRJbnN0YW5jZTo6Z2V0UXRJbnN0YW5jZSh0YXJnZXRNZXRob2QtPm1fb2JqZWN0LmRhdGEo
KSwgZC0+bV9pbnN0YW5jZS0+cm9vdE9iamVjdCgpLCBRdEluc3RhbmNlOjpRdE93bmVyc2hpcCkt
PmNyZWF0ZVJ1bnRpbWVPYmplY3QodG9KUyhjb250ZXh0KSkpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIHRhcmdldEZ1bmN0aW9uID0gMDsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggYTkxZTRmNTEzZWRlNGQ1MmM2ZDY4ZWJiMWZkZjVm
ZDI4NGNiNzhiMC4uMjQ1MGZjNTZlMzdlN2FmY2U3OWJhMzM2ZmVlYWFmNzE4ZDkwYmJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xMTQsOCArMTE0LDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFFCeXRlQXJyYXkmIG5hbWUoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiBjb25uZWN0
RnVuY3Rpb247Ci0gICAgc3RhdGljIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24gZGlzY29ubmVjdEZ1
bmN0aW9uOworICAgIHN0YXRpYyBRdFJ1bnRpbWVNZXRob2QqIHRvUnVudGltZU1ldGhvZChKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKIAogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbm5lY3RP
ckRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIGJvb2wgY29ubmVjdCk7CiAgICAg
UVBvaW50ZXI8UU9iamVjdD4gbV9vYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9xdC90ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcAppbmRleCAyY2U3
OTFkODk5M2QxMWVjNDlkOTc0ZjUyZWNjNjBjOTk5Yjg2ZWFiLi4xM2Q5OGFmOTNmMDJhZGQ3ODNk
NzkwNjRlNDNjMTE4NzI1MDY1M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3Rz
L3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvcW9iamVjdGJyaWRnZS90c3RfcW9iamVjdGJyaWRnZS5jcHAKQEAgLTE4NzksNyAr
MTg3OSw3IEBAIHZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6Om9iamVjdERlbGV0ZWQoKQogICAgIGV2
YWxKUygiYmFyLmludFByb3BlcnR5ID0gMTIzOyIpOwogICAgIFFDT01QQVJFKHFvYmotPmludFBy
b3BlcnR5KCksIDEyMyk7CiAgICAgcW9iai0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOwotICAg
IGV2YWxKUygiYmFyLm15SW52b2thYmxlKGJhcik7Iik7CisgICAgZXZhbEpTKCJiYXIubXlJbnZv
a2FibGUuY2FsbChiYXIpOyIpOwogICAgIFFDT01QQVJFKHFvYmotPnF0RnVuY3Rpb25JbnZva2Vk
KCksIDApOwogCiAgICAgLy8gZG8gdGhpcywgdG8gZW5zdXJlIHRoYXQgd2UgY2FjaGUgdGhhdCBp
dCBpbXBsZW1lbnRzIGNhbGwKQEAgLTIxNDgsMTUgKzIxNDgsMTUgQEAgdm9pZCB0c3RfUU9iamVj
dEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kc19kYXRhKCkKICAgICBRVGVzdDo6YWRkQ29sdW1u
PFFTdHJpbmdMaXN0PigiZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzIik7CiAKICAgICBRVGVzdDo6bmV3
Um93KCJteU9iamVjdC5teVNpZ25hbCIpCi0gICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15U2ln
bmFsIiA8PCAoUVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nvbm5lY3QiIDw8ICJs
ZW5ndGgiIDw8ICJuYW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15U2lnbmFsIiA8
PCAoUVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nvbm5lY3QiIDw8ICJuYW1lIik7
CiAgICAgUVRlc3Q6Om5ld1JvdygibXlPYmplY3QubXlTbG90IikKLSAgICAgICAgPDwgIm15T2Jq
ZWN0IiA8PCAibXlTbG90IiA8PCAoUVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nv
bm5lY3QiIDw8ICJsZW5ndGgiIDw8ICJuYW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdCIgPDwg
Im15U2xvdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImNvbm5lY3QiIDw8ICJkaXNjb25uZWN0IiA8
PCAibmFtZSIpOwogICAgIFFUZXN0OjpuZXdSb3coIm15T2JqZWN0Lm15SW52b2thYmxlIikKLSAg
ICAgICAgPDwgIm15T2JqZWN0IiA8PCAibXlJbnZva2FibGUiIDw8IChRU3RyaW5nTGlzdCgpIDw8
ICJjb25uZWN0IiA8PCAiZGlzY29ubmVjdCIgPDwgImxlbmd0aCIgPDwgIm5hbWUiKTsKKyAgICAg
ICAgPDwgIm15T2JqZWN0IiA8PCAibXlJbnZva2FibGUiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJj
b25uZWN0IiA8PCAiZGlzY29ubmVjdCIgPDwgIm5hbWUiKTsKICAgICBRVGVzdDo6bmV3Um93KCJt
eU9iamVjdC5teVNpZ25hbC5jb25uZWN0IikKLSAgICAgICAgPDwgIm15T2JqZWN0Lm15U2lnbmFs
IiA8PCAiY29ubmVjdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImxlbmd0aCIgPDwgIm5hbWUiKTsK
KyAgICAgICAgPDwgIm15T2JqZWN0Lm15U2lnbmFsIiA8PCAiY29ubmVjdCIgPDwgKFFTdHJpbmdM
aXN0KCkgPDwgIm5hbWUiKTsKICAgICBRVGVzdDo6bmV3Um93KCJteU9iamVjdC5teVNpZ25hbC5k
aXNjb25uZWN0IikKLSAgICAgICAgPDwgIm15T2JqZWN0Lm15U2lnbmFsIiA8PCAiZGlzY29ubmVj
dCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImxlbmd0aCIgPDwgIm5hbWUiKTsKKyAgICAgICAgPDwg
Im15T2JqZWN0Lm15U2lnbmFsIiA8PCAiZGlzY29ubmVjdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwg
Im5hbWUiKTsKIH0KIAogdm9pZCB0c3RfUU9iamVjdEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9k
cygpCkBAIC0yMTc3LDcgKzIxNzcsNyBAQCB2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjppbnRyb3Nw
ZWN0UXRNZXRob2RzKCkKICAgICAgICAgUUNPTVBBUkUoZXZhbEpTKCJkZXNjcmlwdG9yLnNldCIp
LCBzVW5kZWZpbmVkKTsKICAgICAgICAgUUNPTVBBUkUoZXZhbEpTKFFTdHJpbmc6OmZyb21MYXRp
bjEoImRlc2NyaXB0b3IudmFsdWUgPT09ICUwWyclMSddIikuYXJnKG1ldGhvZExvb2t1cCkuYXJn
KG5hbWUpKSwgc1RydWUpOwogICAgICAgICBRQ09NUEFSRShldmFsSlMoUVN0cmluZzo6ZnJvbUxh
dGluMSgiZGVzY3JpcHRvci5lbnVtZXJhYmxlIikpLCBzRmFsc2UpOwotICAgICAgICBRQ09NUEFS
RShldmFsSlMoUVN0cmluZzo6ZnJvbUxhdGluMSgiZGVzY3JpcHRvci5jb25maWd1cmFibGUiKSks
IHNUcnVlKTsKKyAgICAgICAgUUNPTVBBUkUoZXZhbEpTKFFTdHJpbmc6OmZyb21MYXRpbjEoImRl
c2NyaXB0b3IuY29uZmlndXJhYmxlIikpLCBzRmFsc2UpOwogICAgIH0KIAogICAgIFFWRVJJRlko
ZXZhbEpTVigidmFyIHByb3BzPVtdOyBmb3IgKHZhciBwIGluIG15T2JqZWN0LmRlbGV0ZUxhdGVy
KSB7cHJvcHMucHVzaChwKTt9OyBwcm9wcy5zb3J0KCkiKS50b1N0cmluZ0xpc3QoKS5pc0VtcHR5
KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDhjNTZhYTI2MDhkZjRlMjQ0YTBiYzVmOGE3Y2IxODQyZDdjZTQ0NDIuLmE4
OGM2ZGJkMDllNDcyZTI5OGI4OGNjOTU5MDk3Mjc2MTcwYjc4NGUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMi0wOC0xNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CisKKyAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjU0MjgpOiBmYXN0L3Byb2ZpbGVyL25l
c3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogVW5z
a2lwIHRlc3QgdGhhdCBpcyBub3cgcGFzc2luZy4KKwogMjAxMi0wOC0xNiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBidWls
ZCBFbGVtZW50cywgUmVzb3VyY2VzLCBUaW1lbGluZSwgQXVkaXRzIGFuZCBDb25zb2xlIHBhbmVs
cyBsYXppbHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBhOGI0MTYwMmI4ZTMxMDUyMDMw
OTdkYjRhNTY2YTJmYjI2ODM4MWVmLi44ZTYxYjExMmZhODkyNzQyOGU1MjM0YjU5NWEzNGM5MmI1
NDFmMjRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTI3MjgsOSArMjcyOCw2IEBAIGZh
c3QvanMvZGZnLWNvbXBhcmUtZmluYWwtb2JqZWN0LXRvLWZpbmFsLW9iamVjdC1vci1vdGhlci13
aGVuLWJvdGgtcHJvdmVuLWZpbmFsCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MzgxMgogc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdl
dC54aHRtbAogCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5
NwotZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbAotCiAj
IE5ldyB0ZXN0IGludHJvZHVjZWQgaW4gcjEyNTY0OCBmYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLWlu
LXRleHRhcmVhLmh0bWwgZmFpbHMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk0MDc2CiBmYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLWluLXRleHRhcmVhLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159884</attachid>
            <date>2012-08-22 02:06:11 -0700</date>
            <delta_ts>2012-08-29 02:47:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93897-20120822110737.patch</filename>
            <type>text/plain</type>
            <size>20154</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViNDllM2Q1ZjI2ZWRm
OTYzNDUyMDJlZmU5NWUxOWM2MmJmNTdjZi4uY2NkMTBmOWQ3YjgyZDcxOTU2NmFhMjgxZWQ4ZDFh
MmY2NDEyMmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTA4LTIyICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFJF
R1JFU1NJT04ocjEyNTQyOCk6IGZhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXBy
b2ZpbGVyLmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzODk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgQmVmb3JlIHIxMjU0MjggcnVuLXRpbWUgbWV0aG9kcyAod3Jh
cHBlZCBzaWduYWxzLCBzbG90cyBvciBpbnZva2FibGUKKyAgICAgICAgZnVuY3Rpb25zKSB3ZXJl
IHN1YmNsYXNzZXMgb2YgSlNJbnRlcm5hbEZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgcmVhbAorICAg
ICAgICBmdW5jdGlvbiBvYmplY3RzIGluIHRoZSBKYXZhU2NyaXB0IHNlbnNlLiByMTI1NDI4IGNo
YW5nZWQgdGhlbSB0byBiZQorICAgICAgICBqdXN0IGNhbGxhYmxlIG9iamVjdHMsIGJ1dCB0aGV5
IGRpZCBub3QgaGF2ZSBGdW5jdGlvbi5wcm90b3R5cGUgYXMKKyAgICAgICAgcHJvdG90eXBlIGFu
eW1vcmUgZm9yIGV4YW1wbGUgbm9yIHdhcyB0aGVpciBuYW1lIGNvcnJlY3QgKHJlc3VsdGluZyBp
bgorICAgICAgICBhIGxheW91dCB0ZXN0IGZhaWx1cmUpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBydW4tdGltZSBtZXRob2RzIGJhY2sgdG8gYmVpbmcgcmVhbCBmdW5jdGlvbiBvYmpl
Y3RzCisgICAgICAgIHRoYXQgaGF2ZSBhIGNvcnJlY3QgbmFtZSBhbmQgaGF2ZSBGdW5jdGlvbi5w
cm90b3R5cGUgaW4gdGhlaXIgcHJvdG90eXBlCisgICAgICAgIGNoYW5nZQorCisgICAgICAgIFRo
ZSBvYmplY3RzIHJldHVybmVkIGJ5IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrSW5q
ZWN0ZWQgYXJlCisgICAgICAgIGxpZ2h0LXdlaWdodCBpbnRlcm5hbCBmdW5jdGlvbiBvYmplY3Rz
IHRoYXQgZG8gbm90IHN1cHBvcnQKKyAgICAgICAgSlNPYmplY3R7U2V0L0dldH1Qcml2YXRlLiBU
aGVyZWZvcmUgd2UgaW5qZWN0IG91ciBvd24gcHJvdG90eXBlIHJpZ2h0CisgICAgICAgIGJlZm9y
ZSB0aGUgRnVuY3Rpb24ucHJvdG90eXBlIHByb3RvdHlwZSwgd2hpY2ggdXNlcyBwcml2YXRlIGRh
dGEgdG8KKyAgICAgICAgc3RvcmUgYSBwb2ludGVyIHRvIG91ciBDKysgUXRSdW50aW1lTWV0aG9k
IG9iamVjdC4gIFRoaXMgY29tcGxpY2F0ZXMKKyAgICAgICAgdGhlIHJldHJpZXZhbCBvZiB0aGUg
cG9pbnRlciB0byB0aGF0IGluc3RhbmNlIHNsaWdodGx5LCB3aGljaCBpcyB3aHkKKyAgICAgICAg
dGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSB0b1J1bnRpbWVNZXRob2QgY29udmVuaWVuY2UgZnVu
Y3Rpb24gdGhhdAorICAgICAgICBsb29rcyB1cCBvdXIgcHJvdG90eXBlIGZpcnN0IGFuZCBkb2Vz
IGEgY2hlY2sgZm9yIHR5cGUtc2FmZXR5LgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUgdGhl
IHBhdGNoIHJlbW92ZXMgdGhlIGxlbmd0aCBwcm9wZXJ0aWVzIGZyb20gdGhlCisgICAgICAgIHJ1
bi10aW1lIG1ldGhvZCBpdHNlbGYgYXMgd2VsbCBhcyBjb25uZWN0L2Rpc2Nvbm5lY3QuICBUaGUg
bGVuZ3RoCisgICAgICAgIHByb3BlcnR5IG9uIGEgZnVuY3Rpb24gc2lnbmlmaWVzIHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzLCBidXQgaW4gYWxsCisgICAgICAgIHRocmVlIGNhc2VzIHRoYXQgbnVt
YmVyIGlzIGFjdHVhbGx5IHZhcmlhYmxlLCBiZWNhdXNlIG9mIG92ZXJsb2FkaW5nLgorICAgICAg
ICBUaGF0IGlzIHdoeSB3ZSBjaG9vc2Ugbm90IHRvIGV4cG9zZSBpdCBpbiB0aGUgZmlyc3QgcGxh
Y2UuCisKKyAgICAgICAgSW4gUXRJbnN0YW5jZSB3ZSBjYWNoZSB0aGUgSlMgd3JhcHBlciBvYmpl
Y3RzIGZvciBRdFJ1bnRpbWVNZXRob2QgaW4gYQorICAgICAgICBKU1dlYWtPYmplY3RNYXAuIEpT
V2Vha09iamVjdE1hcCByZXF1aXJlcyB0aGUgc3RvcmVkIG9iamVjdHMgdG8gYmUKKyAgICAgICAg
ZWl0aGVyIHRoZSByZXN1bHQgb2YgSlNPYmplY3RNYWtlIG9yIHRoZSBnbG9iYWwgb2JqZWN0IG9m
IGEgY29udGV4dCByZWYKKyAgICAgICAgKEFGQUlDUyksIHdoaWNoIGlzIGVuc3VyZWQgdXNpbmcg
YW4gQVNTRVJULiBPYmplY3RzIGNyZWF0ZWQgdmlhCisgICAgICAgIEpTT2JqZWN0TWFrZUZ1bmN0
aW9uV2l0aENhbGxsYmFjayBkbyBub3QgZmFsbCBpbnRvIHRoZSByZXF1aXJlZAorICAgICAgICBj
YXRlZ29yeSwgY2F1c2UgYSBmYWlsaW5nIGFzc2VydGlvbiBhbmQgY2FuIHRoZXJlZm9yZSBub3Qg
YmUgc3RvcmVkIGluCisgICAgICAgIHRoZSB3ZWFrIG9iamVjdCBtYXAuCisKKyAgICAgICAgQ29u
c2VxdWVudGx5IHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdXNlIG9mIEpTV2Vha09iamVjdE1hcCBh
Z2FpbiBhbmQKKyAgICAgICAgZ29lcyBiYWNrIHRvIHRoZSBvbGQgd2F5IG9mIHVzaW5nIHRoZSBp
bnRlcm5hbCBXZWFrPD4gQVBJLCBmb3IgdGhlIHRpbWUKKyAgICAgICAgYmVpbmcuIEluIGEgZnV0
dXJlIHBhdGNoIHRoZSBzdG9yYWdlIHdpbGwgYmUgc2ltcGxpZmllZCB0byBub3QgcmVxdWlyZQor
ICAgICAgICB0aGUgdXNlIG9mIGEgd2VhayBvYmplY3QgbWFwIGNhY2hlIGZvciB0aGUgcnVuLXRp
bWUgbWV0aG9kcyBhbnltb3JlLgorCisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNw
cDogUmVtb3ZlIHVudXNlZCBXZWFrTWFwIGNvZGUuCisgICAgICAgICogYnJpZGdlL3F0L3F0X2lu
c3RhbmNlLmg6IFJlbW92ZSBtZXRob2QgY2FjaGUuCisgICAgICAgIChRdEluc3RhbmNlKToKKyAg
ICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
Ojpwcm90b3R5cGVGb3JTaWduYWxzQW5kU2xvdHMpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
UXRSdW50aW1lTWV0aG9kOjpjYWxsKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGlt
ZU1ldGhvZDo6anNPYmplY3RSZWYpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1l
TWV0aG9kOjp0b1J1bnRpbWVNZXRob2QpOgorICAgICAgICAoQmluZGluZ3MpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0aG9kOjpjb25uZWN0T3JEaXNjb25uZWN0KToKKyAg
ICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAoUXRSdW50aW1lTWV0aG9k
KTogUmVtb3ZlIHVudXNlZCBtZW1iZXIgdmFyaWFibGVzLgorCiAyMDEyLTA4LTIyICBUYWlqdSBU
c3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQg
ZGVsZXRlRW50cnkgY29tbWFuZCBhbmQgZGVsZXRpb25Db21wbGV0ZWQgZXZlbnQgdG8gRmlsZVN5
c3RlbUFnZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJiNWNlYjMwN2I1NmI1NjRlOWQwZjYxY2VlZTc4
NTQ3YTU5ODA1ZjMuLmU1YzFhZTg0MGU3ZTI4NWM0NzkyNjU5ZDBhYzJkY2E5OWRlZDNlYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMjIgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gUkVHUkVTU0lPTihy
MTI1NDI4KTogZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRt
bCBmYWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTM4OTcKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBGaXhlZCBzb21lIHRlc3QgZXhwZWN0YXRpb25zLgorCisgICAgICAgICogdGVz
dHMvcW9iamVjdGJyaWRnZS90c3RfcW9iamVjdGJyaWRnZS5jcHA6CisgICAgICAgICh0c3RfUU9i
amVjdEJyaWRnZTo6b2JqZWN0RGVsZXRlZCk6IFNpbmNlIHJ1bnRpbWUgbWV0aG9kcyBhcmUgcmVh
bCBmdW5jdGlvbiBvYmplY3RzIGFnYWluLCB3ZQorICAgICAgICBjYW4gZ28gYmFjayB0byB0ZXN0
aW5nIEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLCBhcyBpdCB3YXMgZG9uZSBiZWZvcmUgcjEyNTQy
OC4KKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjppbnRyb3NwZWN0UXRNZXRob2RzX2RhdGEp
OiBSZW1vdmVkIHRlc3RzIGZvciB0aGUgbGVuZ3RoIHByb3BlcnR5LgorICAgICAgICAodHN0X1FP
YmplY3RCcmlkZ2U6OmludHJvc3BlY3RRdE1ldGhvZHMpOiBDaGFuZ2VkIHRlc3QgZXhwZWN0YXRp
b24gb2YgdGhlIHByb3BlcnRpZXMgb2YKKyAgICAgICAgcnVuLXRpbWUgbWV0aG9kcyBiYWNrIHRv
IGJlaW5nIG5vbi1jb25maWd1cmFibGUsIGFzIGJlZm9yZSByMTI1NDI4LgorCiAyMDEyLTA4LTIx
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2MTQ2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9pbnN0YW5jZS5jcHAKaW5kZXggZDM2Y2YxY2RiYmFhMmYzY2Y2YTBiZmUxM2Q5YTRmNDJhMjVh
NjY0ZC4uNTEzZDcxMWRiNTY1OTEyOGQwZGY0N2JhNjA0NjY0ZDNhOGVkNDgzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCkBAIC00MCw2MyArNDAsNiBAQAogbmFt
ZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi1zdGF0aWMgdm9pZCB1bnVzZWRX
ZWFrT2JqZWN0TWFwQ2FsbGJhY2soSlNXZWFrT2JqZWN0TWFwUmVmLCB2b2lkKikKLXsKLX0KLQot
V2Vha01hcEltcGw6OldlYWtNYXBJbXBsKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKQotewotICAg
IG1fY29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoZ3JvdXAsIDApOwotICAg
IC8vIERlbGV0ZWQgYnkgR0Mgd2hlbiBtX2NvbnRleHQncyBnbG9iYWxPYmplY3QgZ2V0cyBjb2xs
ZWN0ZWQuCi0gICAgbV9tYXAgPSBKU1dlYWtPYmplY3RNYXBDcmVhdGUobV9jb250ZXh0LCAwLCB1
bnVzZWRXZWFrT2JqZWN0TWFwQ2FsbGJhY2spOwotfQotCi1XZWFrTWFwSW1wbDo6fldlYWtNYXBJ
bXBsKCkKLXsKLSAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKG1fY29udGV4dCk7Ci0gICAgbV9j
b250ZXh0ID0gMDsKLSAgICBtX21hcCA9IDA7Ci19Ci0KLXR5cGVkZWYgSGFzaE1hcDxKU0NvbnRl
eHRHcm91cFJlZiwgUmVmUHRyPFdlYWtNYXBJbXBsPiA+IFdlYWtNYXBTZXQ7Ci1zdGF0aWMgV2Vh
a01hcFNldCB3ZWFrTWFwczsKLQotV2Vha01hcDo6fldlYWtNYXAoKQotewotICAgIC8vIElmIHRo
aXMgaXMgdGhlIGxhc3QgV2Vha01hcCBpbnN0YW5jZSBsZWZ0LCB0aGVuIHdlIHNob3VsZCByZW1v
dmUKLSAgICAvLyB0aGUgY2FjaGVkIFdlYWtNYXBJbXBsIGZyb20gdGhlIGdsb2JhbCB3ZWFrTWFw
cywgdG9vLgotICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5yZWZDb3VudCgpID09IDIpIHsKLSAg
ICAgICAgd2Vha01hcHMucmVtb3ZlKEpTQ29udGV4dEdldEdyb3VwKG1faW1wbC0+bV9jb250ZXh0
KSk7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmhhc09uZVJlZigpKTsKLSAgICB9Ci19Ci0KLXZv
aWQgV2Vha01hcDo6c2V0KEpTQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICprZXksIEpTT2JqZWN0
UmVmIG9iamVjdCkKLXsKLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBKU0NvbnRleHRHcm91
cFJlZiBncm91cCA9IEpTQ29udGV4dEdldEdyb3VwKGNvbnRleHQpOwotICAgICAgICBXZWFrTWFw
U2V0OjpBZGRSZXN1bHQgZW50cnkgPSB3ZWFrTWFwcy5hZGQoZ3JvdXAsIDApOwotICAgICAgICBp
ZiAoZW50cnkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQg
PSBhZG9wdFJlZihuZXcgV2Vha01hcEltcGwoZ3JvdXApKTsKLSAgICAgICAgbV9pbXBsID0gZW50
cnkuaXRlcmF0b3ItPnNlY29uZDsKLSAgICB9Ci0gICAgSlNXZWFrT2JqZWN0TWFwU2V0KG1faW1w
bC0+bV9jb250ZXh0LCBtX2ltcGwtPm1fbWFwLCBrZXksIG9iamVjdCk7Ci19Ci0KLUpTT2JqZWN0
UmVmIFdlYWtNYXA6OmdldCh2b2lkKiBrZXkpCi17Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBKU1dlYWtPYmplY3RNYXBHZXQobV9pbXBsLT5tX2NvbnRl
eHQsIG1faW1wbC0+bV9tYXAsIGtleSk7Ci19Ci0KLXZvaWQgV2Vha01hcDo6cmVtb3ZlKHZvaWQg
KmtleSkKLXsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuOwotICAgIEpTV2Vha09i
amVjdE1hcFJlbW92ZShtX2ltcGwtPm1fY29udGV4dCwgbV9pbXBsLT5tX21hcCwga2V5KTsKLX0K
LQogLy8gQ2FjaGUgUXRJbnN0YW5jZXMKIHR5cGVkZWYgUU11bHRpSGFzaDx2b2lkKiwgUXRJbnN0
YW5jZSo+IFFPYmplY3RJbnN0YW5jZU1hcDsKIHN0YXRpYyBRT2JqZWN0SW5zdGFuY2VNYXAgY2Fj
aGVkSW5zdGFuY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2lu
c3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAppbmRleCBl
NWQyYTkzYWE4NTRmYWIwYzNkOGE2OTA0ZDJiZjJiYWI0YTQ1ZjQ2Li41NGRmMzRiYjBlNWU5MzA2
YjFmM2Q0YTVmNTNmYjk3NWY3MDYwODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfaW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5z
dGFuY2UuaApAQCAtMTA5LDcgKzEwOSw2IEBAIHByaXZhdGU6CiAgICAgUVBvaW50ZXI8UU9iamVj
dD4gbV9vYmplY3Q7CiAgICAgUU9iamVjdCogbV9oYXNoa2V5OwogICAgIG11dGFibGUgUUhhc2g8
UUJ5dGVBcnJheSwgUXRSdW50aW1lTWV0aG9kKj4gbV9tZXRob2RzOwotICAgIFdlYWtNYXAgbV9j
YWNoZWRNZXRob2RzOwogICAgIG11dGFibGUgUUhhc2g8UVN0cmluZywgUXRGaWVsZCo+IG1fZmll
bGRzOwogICAgIFZhbHVlT3duZXJzaGlwIG1fb3duZXJzaGlwOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCA1MGY2ZGI2NDUwZmIzZGE5ZDk3ODY2NTUxOThm
ZTdiOWQxZjUzNWMyLi41MTI0ZWM0MTUzYTk3ODMwMjQ0MTFmYjEwOTRiMWQ0NTAyOTU3YzRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xMjgyLDggKzEyODIs
OCBAQCBzdGF0aWMgaW50IGZpbmRTaWduYWxJbmRleChjb25zdCBRTWV0YU9iamVjdCogbWV0YSwg
aW50IGluaXRpYWxJbmRleCwgUUJ5dGVBcnJheQogc3RhdGljIEpTQ2xhc3NSZWYgcHJvdG90eXBl
Rm9yU2lnbmFsc0FuZFNsb3RzKCkKIHsKICAgICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24gY2xh
c3NEZWYgPSB7Ci0gICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIFF0UnVudGltZU1ldGhvZDo6Y2FsbCwgMCwgMCwgMAorICAgICAgICAwLCBrSlND
bGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJvdG90eXBlLCAwLCAwLCAwLCAwLAorICAgICAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiAgICAgfTsKICAgICBzdGF0aWMgSlNDbGFz
c1JlZiBjbHMgPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZik7CiAgICAgcmV0dXJuIGNsczsKQEAg
LTEzMDAsMTQgKzEzMDAsMTEgQEAgUXRSdW50aW1lTWV0aG9kOjpRdFJ1bnRpbWVNZXRob2QoSlND
b250ZXh0UmVmIGN0eCwgUU9iamVjdCogb2JqZWN0LCBjb25zdCBRQnl0ZUEKIAogUXRSdW50aW1l
TWV0aG9kOjp+UXRSdW50aW1lTWV0aG9kKCkKIHsKLSAgICBpZiAoSlNPYmplY3RSZWYgY2FjaGVk
V3JhcHBlciA9IG1faW5zdGFuY2UtPm1fY2FjaGVkTWV0aG9kcy5nZXQodGhpcykpCi0gICAgICAg
IEpTT2JqZWN0U2V0UHJpdmF0ZShjYWNoZWRXcmFwcGVyLCAwKTsKLSAgICBtX2luc3RhbmNlLT5t
X2NhY2hlZE1ldGhvZHMucmVtb3ZlKHRoaXMpOwogfQogCiBKU1ZhbHVlUmVmIFF0UnVudGltZU1l
dGhvZDo6Y2FsbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIC8qdGhpc09iamVjdCovLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFF0UnVu
dGltZU1ldGhvZCogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50aW1lTWV0aG9kKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKGZ1bmN0aW9uKSk7CisgICAgUXRSdW50aW1lTWV0aG9kKiBkID0gdG9SdW50
aW1lTWV0aG9kKGNvbnRleHQsIGZ1bmN0aW9uKTsKICAgICBpZiAoIWQpIHsKICAgICAgICAgc2V0
RXhjZXB0aW9uKGNvbnRleHQsIGV4Y2VwdGlvbiwgUVN0cmluZ0xpdGVyYWwoImNhbm5vdCBjYWxs
IGZ1bmN0aW9uIG9mIGRlbGV0ZWQgcnVudGltZSBtZXRob2QiKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTEzNTAsNTMgKzEzNDcsNTcgQEAgSlNW
YWx1ZVJlZiBRdFJ1bnRpbWVNZXRob2Q6OmRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW8KIAogSlNPYmplY3RSZWYgUXRSdW50aW1lTWV0aG9kOjpqc09i
amVjdFJlZihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewot
ICAgIGlmIChKU09iamVjdFJlZiBjYWNoZWRXcmFwcGVyID0gbV9pbnN0YW5jZS0+bV9jYWNoZWRN
ZXRob2RzLmdldCh0aGlzKSkKLSAgICAgICAgcmV0dXJuIGNhY2hlZFdyYXBwZXI7Ci0KLSAgICBz
dGF0aWMgY29uc3QgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZGb3JDb25uZWN0ID0gewotICAg
ICAgICAwLCAwLCAiY29ubmVjdCIsIDAsIDAsIDAsCi0gICAgICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIGNvbm5lY3QsIDAsIDAsIDAKLSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0IEpTQ2xhc3NE
ZWZpbml0aW9uIGNsYXNzRGVmRm9yRGlzY29ubmVjdCA9IHsKLSAgICAgICAgMCwgMCwgImRpc2Nv
bm5lY3QiLCAwLCAwLCAwLAotICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCBkaXNjb25uZWN0
LCAwLCAwLCAwCi0gICAgfTsKLQotICAgIHN0YXRpYyBKU0NsYXNzUmVmIGNsYXNzUmVmQ29ubmVj
dCA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmRm9yQ29ubmVjdCk7Ci0gICAgc3RhdGljIEpTQ2xh
c3NSZWYgY2xhc3NSZWZEaXNjb25uZWN0ID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWZGb3JEaXNj
b25uZWN0KTsKLSAgICBib29sIGlzU2lnbmFsID0gbV9mbGFncyAmIE1ldGhvZElzU2lnbmFsOwot
ICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBwcm90b3R5cGVG
b3JTaWduYWxzQW5kU2xvdHMoKSwgdGhpcyk7Ci0gICAgSlNPYmplY3RSZWYgY29ubmVjdEZ1bmN0
aW9uID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNsYXNzUmVmQ29ubmVjdCwgdGhpcyk7Ci0gICAg
SlNPYmplY3RSZWYgZGlzY29ubmVjdEZ1bmN0aW9uID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNs
YXNzUmVmRGlzY29ubmVjdCwgdGhpcyk7Ci0gICAgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmli
dXRlcyA9IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0gfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGU7CisgICAgaWYgKG1fanNPYmplY3QpCisgICAgICAgIHJldHVybiB0b1JlZiht
X2pzT2JqZWN0LmdldCgpKTsKIAogICAgIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25uZWN0U3RyID0g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNvbm5lY3QiKTsKICAgICBzdGF0aWMgSlNT
dHJpbmdSZWYgZGlzY29ubmVjdFN0ciA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJk
aXNjb25uZWN0Iik7Ci0gICAgc3RhdGljIEpTU3RyaW5nUmVmIGxlbmd0aFN0ciA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKTsKLSAgICBzdGF0aWMgSlNTdHJpbmdSZWYg
bmFtZVN0ciA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJuYW1lIik7CiAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFjdHVhbE5hbWVTdHIoQWRvcHQsIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKG1faWRlbnRpZmllci5jb25zdERhdGEoKSkpOwogCi0gICAgSlNPYmpl
Y3RTZXRQcm9wZXJ0eShjb250ZXh0LCBjb25uZWN0RnVuY3Rpb24sIGxlbmd0aFN0ciwgSlNWYWx1
ZU1ha2VOdW1iZXIoY29udGV4dCwgaXNTaWduYWwgPyAxIDogMCksIGF0dHJpYnV0ZXMsIGV4Y2Vw
dGlvbik7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBjb25uZWN0RnVuY3Rpb24s
IG5hbWVTdHIsIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGNvbm5lY3RTdHIpLCBhdHRyaWJ1
dGVzLCBleGNlcHRpb24pOwotICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgZGlzY29u
bmVjdEZ1bmN0aW9uLCBsZW5ndGhTdHIsIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGlzU2ln
bmFsID8gMSA6IDApLCBhdHRyaWJ1dGVzLCBleGNlcHRpb24pOwotICAgIEpTT2JqZWN0U2V0UHJv
cGVydHkoY29udGV4dCwgZGlzY29ubmVjdEZ1bmN0aW9uLCBuYW1lU3RyLCBKU1ZhbHVlTWFrZVN0
cmluZyhjb250ZXh0LCBkaXNjb25uZWN0U3RyKSwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsKKyAg
ICBKU09iamVjdFJlZiBvYmplY3QgPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhj
b250ZXh0LCBhY3R1YWxOYW1lU3RyLmdldCgpLCBjYWxsKTsKKyAgICBKU1ZhbHVlUHJvdGVjdChj
b250ZXh0LCBvYmplY3QpOworCisgICAgSlNPYmplY3RSZWYgZ2VuZXJhbEZ1bmN0aW9uUHJvdG8g
PSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm90b3R5cGUoY29udGV4dCwg
b2JqZWN0KSwgMCk7CisgICAgSlNPYmplY3RSZWYgcnVudGltZU1ldGhvZFByb3RvID0gSlNPYmpl
Y3RNYWtlKGNvbnRleHQsIHByb3RvdHlwZUZvclNpZ25hbHNBbmRTbG90cygpLCB0aGlzKTsKKyAg
ICBKU09iamVjdFNldFByb3RvdHlwZShjb250ZXh0LCBydW50aW1lTWV0aG9kUHJvdG8sIGdlbmVy
YWxGdW5jdGlvblByb3RvKTsKKworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQsIG9i
amVjdCwgcnVudGltZU1ldGhvZFByb3RvKTsKKworICAgIEpTT2JqZWN0UmVmIGNvbm5lY3RGdW5j
dGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGNvbm5lY3RT
dHIsIGNvbm5lY3QpOworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRleHQsIGNvbm5lY3RG
dW5jdGlvbiwgcnVudGltZU1ldGhvZFByb3RvKTsKKworICAgIEpTT2JqZWN0UmVmIGRpc2Nvbm5l
Y3RGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIGRp
c2Nvbm5lY3RTdHIsIGRpc2Nvbm5lY3QpOworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNvbnRl
eHQsIGRpc2Nvbm5lY3RGdW5jdGlvbiwgcnVudGltZU1ldGhvZFByb3RvKTsKIAorICAgIGNvbnN0
IEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnRFbnVtIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlOwogICAgIEpTT2JqZWN0U2V0
UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBjb25uZWN0U3RyLCBjb25uZWN0RnVuY3Rpb24sIGF0
dHJpYnV0ZXMsIGV4Y2VwdGlvbik7CiAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBv
YmplY3QsIGRpc2Nvbm5lY3RTdHIsIGRpc2Nvbm5lY3RGdW5jdGlvbiwgYXR0cmlidXRlcywgZXhj
ZXB0aW9uKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbGVuZ3Ro
U3RyLCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCAwKSwgYXR0cmlidXRlcywgZXhjZXB0aW9u
KTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbmFtZVN0ciwgSlNW
YWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgYWN0dWFsTmFtZVN0ci5nZXQoKSksIGF0dHJpYnV0ZXMs
IGV4Y2VwdGlvbik7CiAKLSAgICBtX2luc3RhbmNlLT5tX2NhY2hlZE1ldGhvZHMuc2V0KGNvbnRl
eHQsIHRoaXMsIG9iamVjdCk7CisgICAgbV9qc09iamVjdCA9IFBhc3NXZWFrPEpTT2JqZWN0Pih0
b0pTKG9iamVjdCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAorUXRSdW50aW1lTWV0aG9k
KiBRdFJ1bnRpbWVNZXRob2Q6OnRvUnVudGltZU1ldGhvZChKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIEpTT2JqZWN0UmVmIHByb3RvID0gSlNWYWx1ZVRv
T2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvdG90eXBlKGNvbnRleHQsIG9iamVjdCksIDAp
OworICAgIGlmICghcHJvdG8pCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghSlNWYWx1ZUlz
T2JqZWN0T2ZDbGFzcyhjb250ZXh0LCBwcm90bywgcHJvdG90eXBlRm9yU2lnbmFsc0FuZFNsb3Rz
KCkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UXRSdW50aW1l
TWV0aG9kKj4oSlNPYmplY3RHZXRQcml2YXRlKHByb3RvKSk7Cit9CisKIEpTVmFsdWVSZWYgUXRS
dW50aW1lTWV0aG9kOjpjb25uZWN0T3JEaXNjb25uZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbiwgYm9vbCBjb25uZWN0KQogewotICAgIFF0UnVudGltZU1ldGhvZCogZCA9IHN0YXRpY19j
YXN0PFF0UnVudGltZU1ldGhvZCo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgUXRSdW50aW1lTWV0aG9kKiBkID0gdG9SdW50aW1lTWV0aG9kKGNvbnRleHQsIHRoaXNPYmpl
Y3QpOwogICAgIGlmICghZCkKLSAgICAgICAgZCA9IHN0YXRpY19jYXN0PFF0UnVudGltZU1ldGhv
ZCo+KEpTT2JqZWN0R2V0UHJpdmF0ZShmdW5jdGlvbikpOworICAgICAgICBkID0gdG9SdW50aW1l
TWV0aG9kKGNvbnRleHQsIGZ1bmN0aW9uKTsKKyAgICBpZiAoIWQpIHsKKyAgICAgICAgUVN0cmlu
ZyBlcnJvclN0ciA9IFFTdHJpbmdMaXRlcmFsKCJRdE1ldGFNZXRob2QuJTE6IENhbm5vdCBjb25u
ZWN0IHRvL2Zyb20gZGVsZXRlZCBRT2JqZWN0IikuYXJnKGNvbm5lY3QgPyAgUVN0cmluZ0xpdGVy
YWwoImNvbm5lY3QiKSA6IFFTdHJpbmdMaXRlcmFsKCJkaXNjb25uZWN0IikpOworICAgICAgICBz
ZXRFeGNlcHRpb24oY29udGV4dCwgZXhjZXB0aW9uLCBlcnJvclN0cik7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CiAKICAgICBRU3RyaW5nIGZ1
bmN0aW9uTmFtZSA9IGNvbm5lY3QgPyBRU3RyaW5nTGl0ZXJhbCgiY29ubmVjdCIpIDogUVN0cmlu
Z0xpdGVyYWwoImRpc2Nvbm5lY3QiKTsKIApAQCAtMTQzMiwxMSArMTQzMyw5IEBAIEpTVmFsdWVS
ZWYgUXRSdW50aW1lTWV0aG9kOjpjb25uZWN0T3JEaXNjb25uZWN0KEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlCiAKICAgICAgICAgLy8gb2JqZWN0LnNpZ25hbC5jb25uZWN0KHNvbWVG
dW5jdGlvbik7CiAgICAgICAgIGlmIChKU09iamVjdElzRnVuY3Rpb24oY29udGV4dCwgdGFyZ2V0
RnVuY3Rpb24pKSB7Ci0gICAgICAgICAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjb250
ZXh0LCB0YXJnZXRGdW5jdGlvbiwgcHJvdG90eXBlRm9yU2lnbmFsc0FuZFNsb3RzKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gb2JqZWN0LnNpZ25hbC5jb25uZWN0KG90aGVyT2JqZWN0LnNsb3Qp
OwotICAgICAgICAgICAgICAgIGlmIChRdFJ1bnRpbWVNZXRob2QqIHRhcmdldE1ldGhvZCA9IHN0
YXRpY19jYXN0PFF0UnVudGltZU1ldGhvZCo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0YXJnZXRGdW5j
dGlvbikpKQotICAgICAgICAgICAgICAgICAgICB0YXJnZXRPYmplY3QgPSB0b1JlZihRdEluc3Rh
bmNlOjpnZXRRdEluc3RhbmNlKHRhcmdldE1ldGhvZC0+bV9vYmplY3QuZGF0YSgpLCBkLT5tX2lu
c3RhbmNlLT5yb290T2JqZWN0KCksIFF0SW5zdGFuY2U6OlF0T3duZXJzaGlwKS0+Y3JlYXRlUnVu
dGltZU9iamVjdCh0b0pTKGNvbnRleHQpKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAv
LyBvYmplY3Quc2lnbmFsLmNvbm5lY3Qob3RoZXJPYmplY3Quc2xvdCk7CisgICAgICAgICAgICBp
ZiAoUXRSdW50aW1lTWV0aG9kKiB0YXJnZXRNZXRob2QgPSB0b1J1bnRpbWVNZXRob2QoY29udGV4
dCwgdGFyZ2V0RnVuY3Rpb24pKQorICAgICAgICAgICAgICAgIHRhcmdldE9iamVjdCA9IHRvUmVm
KFF0SW5zdGFuY2U6OmdldFF0SW5zdGFuY2UodGFyZ2V0TWV0aG9kLT5tX29iamVjdC5kYXRhKCks
IGQtPm1faW5zdGFuY2UtPnJvb3RPYmplY3QoKSwgUXRJbnN0YW5jZTo6UXRPd25lcnNoaXApLT5j
cmVhdGVSdW50aW1lT2JqZWN0KHRvSlMoY29udGV4dCkpKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICB0YXJnZXRGdW5jdGlvbiA9IDA7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfcnVudGltZS5oCmluZGV4IGE5MWU0ZjUxM2VkZTRkNTJjNmQ2OGViYjFmZGY1ZmQy
ODRjYjc4YjAuLjNhZDg5ZTU1MDhiYTBmN2U3ZmI5NThkZGJjMzI1OTRiZmNmNTM3YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaApAQCAtMTE0LDE0ICsxMTQsMTQgQEAgcHVi
bGljOgogICAgIGNvbnN0IFFCeXRlQXJyYXkmIG5hbWUoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiBjb25uZWN0
RnVuY3Rpb247Ci0gICAgc3RhdGljIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24gZGlzY29ubmVjdEZ1
bmN0aW9uOworICAgIHN0YXRpYyBRdFJ1bnRpbWVNZXRob2QqIHRvUnVudGltZU1ldGhvZChKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKIAogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbm5lY3RP
ckRpc2Nvbm5lY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIGJvb2wgY29ubmVjdCk7CiAgICAg
UVBvaW50ZXI8UU9iamVjdD4gbV9vYmplY3Q7CiAgICAgUUJ5dGVBcnJheSBtX2lkZW50aWZpZXI7
CiAgICAgaW50IG1faW5kZXg7CiAgICAgaW50IG1fZmxhZ3M7CisgICAgV2VhazxKU09iamVjdD4g
bV9qc09iamVjdDsKICAgICBRdEluc3RhbmNlKiBtX2luc3RhbmNlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcW9iamVjdGJyaWRnZS90c3RfcW9iamVjdGJy
aWRnZS5jcHAKaW5kZXggMmNlNzkxZDg5OTNkMTFlYzQ5ZDk3NGY1MmVjYzYwYzk5OWI4NmVhYi4u
MTNkOThhZjkzZjAyYWRkNzgzZDc5MDY0ZTQzYzExODcyNTA2NTNmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3Ricmlk
Z2UuY3BwCkBAIC0xODc5LDcgKzE4NzksNyBAQCB2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjpvYmpl
Y3REZWxldGVkKCkKICAgICBldmFsSlMoImJhci5pbnRQcm9wZXJ0eSA9IDEyMzsiKTsKICAgICBR
Q09NUEFSRShxb2JqLT5pbnRQcm9wZXJ0eSgpLCAxMjMpOwogICAgIHFvYmotPnJlc2V0UXRGdW5j
dGlvbkludm9rZWQoKTsKLSAgICBldmFsSlMoImJhci5teUludm9rYWJsZShiYXIpOyIpOworICAg
IGV2YWxKUygiYmFyLm15SW52b2thYmxlLmNhbGwoYmFyKTsiKTsKICAgICBRQ09NUEFSRShxb2Jq
LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAwKTsKIAogICAgIC8vIGRvIHRoaXMsIHRvIGVuc3VyZSB0
aGF0IHdlIGNhY2hlIHRoYXQgaXQgaW1wbGVtZW50cyBjYWxsCkBAIC0yMTQ4LDE1ICsyMTQ4LDE1
IEBAIHZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6OmludHJvc3BlY3RRdE1ldGhvZHNfZGF0YSgpCiAg
ICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nTGlzdD4oImV4cGVjdGVkUHJvcGVydHlOYW1lcyIp
OwogCiAgICAgUVRlc3Q6Om5ld1JvdygibXlPYmplY3QubXlTaWduYWwiKQotICAgICAgICA8PCAi
bXlPYmplY3QiIDw8ICJteVNpZ25hbCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImNvbm5lY3QiIDw8
ICJkaXNjb25uZWN0IiA8PCAibGVuZ3RoIiA8PCAibmFtZSIpOworICAgICAgICA8PCAibXlPYmpl
Y3QiIDw8ICJteVNpZ25hbCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImNvbm5lY3QiIDw8ICJkaXNj
b25uZWN0IiA8PCAibmFtZSIpOwogICAgIFFUZXN0OjpuZXdSb3coIm15T2JqZWN0Lm15U2xvdCIp
Ci0gICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15U2xvdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwg
ImNvbm5lY3QiIDw8ICJkaXNjb25uZWN0IiA8PCAibGVuZ3RoIiA8PCAibmFtZSIpOworICAgICAg
ICA8PCAibXlPYmplY3QiIDw8ICJteVNsb3QiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJjb25uZWN0
IiA8PCAiZGlzY29ubmVjdCIgPDwgIm5hbWUiKTsKICAgICBRVGVzdDo6bmV3Um93KCJteU9iamVj
dC5teUludm9rYWJsZSIpCi0gICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15SW52b2thYmxlIiA8
PCAoUVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nvbm5lY3QiIDw8ICJsZW5ndGgi
IDw8ICJuYW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15SW52b2thYmxlIiA8PCAo
UVN0cmluZ0xpc3QoKSA8PCAiY29ubmVjdCIgPDwgImRpc2Nvbm5lY3QiIDw8ICJuYW1lIik7CiAg
ICAgUVRlc3Q6Om5ld1JvdygibXlPYmplY3QubXlTaWduYWwuY29ubmVjdCIpCi0gICAgICAgIDw8
ICJteU9iamVjdC5teVNpZ25hbCIgPDwgImNvbm5lY3QiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJs
ZW5ndGgiIDw8ICJuYW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdC5teVNpZ25hbCIgPDwgImNv
bm5lY3QiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJuYW1lIik7CiAgICAgUVRlc3Q6Om5ld1Jvdygi
bXlPYmplY3QubXlTaWduYWwuZGlzY29ubmVjdCIpCi0gICAgICAgIDw8ICJteU9iamVjdC5teVNp
Z25hbCIgPDwgImRpc2Nvbm5lY3QiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJsZW5ndGgiIDw8ICJu
YW1lIik7CisgICAgICAgIDw8ICJteU9iamVjdC5teVNpZ25hbCIgPDwgImRpc2Nvbm5lY3QiIDw8
IChRU3RyaW5nTGlzdCgpIDw8ICJuYW1lIik7CiB9CiAKIHZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6
OmludHJvc3BlY3RRdE1ldGhvZHMoKQpAQCAtMjE3Nyw3ICsyMTc3LDcgQEAgdm9pZCB0c3RfUU9i
amVjdEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kcygpCiAgICAgICAgIFFDT01QQVJFKGV2YWxK
UygiZGVzY3JpcHRvci5zZXQiKSwgc1VuZGVmaW5lZCk7CiAgICAgICAgIFFDT01QQVJFKGV2YWxK
UyhRU3RyaW5nOjpmcm9tTGF0aW4xKCJkZXNjcmlwdG9yLnZhbHVlID09PSAlMFsnJTEnXSIpLmFy
ZyhtZXRob2RMb29rdXApLmFyZyhuYW1lKSksIHNUcnVlKTsKICAgICAgICAgUUNPTVBBUkUoZXZh
bEpTKFFTdHJpbmc6OmZyb21MYXRpbjEoImRlc2NyaXB0b3IuZW51bWVyYWJsZSIpKSwgc0ZhbHNl
KTsKLSAgICAgICAgUUNPTVBBUkUoZXZhbEpTKFFTdHJpbmc6OmZyb21MYXRpbjEoImRlc2NyaXB0
b3IuY29uZmlndXJhYmxlIikpLCBzVHJ1ZSk7CisgICAgICAgIFFDT01QQVJFKGV2YWxKUyhRU3Ry
aW5nOjpmcm9tTGF0aW4xKCJkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSIpKSwgc0ZhbHNlKTsKICAg
ICB9CiAKICAgICBRVkVSSUZZKGV2YWxKU1YoInZhciBwcm9wcz1bXTsgZm9yICh2YXIgcCBpbiBt
eU9iamVjdC5kZWxldGVMYXRlcikge3Byb3BzLnB1c2gocCk7fTsgcHJvcHMuc29ydCgpIikudG9T
dHJpbmdMaXN0KCkuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ODk0ZTZkOTMxYTU1ZDA1ZjY3ZjQyMzc3
NGViM2Q0NDU2Zjc0Njg5Li44NTYxMWQ4MGI3YTcyYzA2OTIyODM2ZmRhNWU1N2ZiNWU0ZGNkYTJi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDgtMjIgIFNpbW9uIEhhdXNtYW5uICA8c2lt
b24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gUkVHUkVTU0lPTihyMTI1NDI4
KTogZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCBmYWls
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4OTcK
KworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAg
ICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IFVuc2tpcCB0ZXN0IHRoYXQgaXMgbm93IHBhc3Np
bmcuCisKIDIwMTItMDgtMjIgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZAppbmRleCAwOGM5YmQwODNkNGNiZGQ5ZWNiNTJjYWYwZjAzZmVmMWFiMjYzMDE3
Li5lZWUwNTcxOWQ3OGU3ZDJjNDExZmNhMTY4YTk3NTZhNmM4YzRkOTk4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKQEAgLTI3MjQsOSArMjcyNCw2IEBAIGZhc3QvanMvZGZnLWNvbXBhcmUtZmlu
YWwtb2JqZWN0LXRvLWZpbmFsLW9iamVjdC1vci1vdGhlci13aGVuLWJvdGgtcHJvdmVuLWZpbmFs
CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzgxMgogc3ZnL2N1
c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAogCi0jIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NwotZmFzdC9wcm9maWxlci9uZXN0
ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbAotCiAjIE5ldyB0ZXN0IGludHJvZHVjZWQg
aW4gcjEyNTY0OCBmYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLWluLXRleHRhcmVhLmh0bWwgZmFpbHMK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MDc2CiBmYXN0L2V2
ZW50cy9hdXRvc2Nyb2xsLWluLXRleHRhcmVhLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>