<?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>157023</bug_id>
          
          <creation_ts>2016-04-25 21:46:16 -0700</creation_ts>
          <short_desc>Drop Dictionary from CanUseWTFOptionalForParameter()</short_desc>
          <delta_ts>2016-04-26 11:22:19 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://heycam.github.io/webidl/#dfn-optional-argument</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187253</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 21:46:16 -0700</bug_when>
    <thetext>As per Web IDL, optional dictionary parameters are always considered to have a default value of an empty dictionary, unless otherwise specified. There is therefore never any need to use Optional&lt;&gt; for it. Just implement this behavior in the bindings generator and drop blacklisting of Dictionary from CanUseWTFOptionalForParameter().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187254</commentid>
    <comment_count>1</comment_count>
      <attachid>277332</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 21:48:53 -0700</bug_when>
    <thetext>Created attachment 277332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187259</commentid>
    <comment_count>2</comment_count>
      <attachid>277335</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 21:59:57 -0700</bug_when>
    <thetext>Created attachment 277335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187261</commentid>
    <comment_count>3</comment_count>
      <attachid>277335</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 22:05:33 -0700</bug_when>
    <thetext>Comment on attachment 277335
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4279
&gt;      }

Got the following error otherwise:
/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSEventSource.cpp:107:67: error: initializer list cannot be used on the right hand side of operator &apos;?&apos;
    Dictionary eventSourceInit = state-&gt;argument(1).isUndefined() ? Dictionary() : { state, state-&gt;uncheckedArgument(1) };
                                                                  ^                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187365</commentid>
    <comment_count>4</comment_count>
      <attachid>277335</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-26 08:28:44 -0700</bug_when>
    <thetext>Comment on attachment 277335
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4279
&gt;&gt;      }
&gt; 
&gt; Got the following error otherwise:
&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSEventSource.cpp:107:67: error: initializer list cannot be used on the right hand side of operator &apos;?&apos;
&gt;     Dictionary eventSourceInit = state-&gt;argument(1).isUndefined() ? Dictionary() : { state, state-&gt;uncheckedArgument(1) };
&gt;                                                                   ^                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; 1 error generated.

OK, but this will conflict with my patch that replaces Dictionary with JSDictionary. No big deal I guess. I can wait for this to land and then rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187367</commentid>
    <comment_count>5</comment_count>
      <attachid>277335</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-26 08:29:36 -0700</bug_when>
    <thetext>Comment on attachment 277335
Patch

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

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:3726
&gt; -    Dictionary ooo = { state, state-&gt;argument(1) };
&gt; +    Dictionary ooo = state-&gt;argument(1).isUndefined() ? Dictionary() : Dictionary(state, state-&gt;uncheckedArgument(1));

We really don’t need this check for isUndefined at all. Dictionary will do this if it’s passed an undefined value. Clearing commit-queue so you can consider a version that takes advantage of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187395</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-26 09:04:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 277335 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277335&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:3726
&gt; &gt; -    Dictionary ooo = { state, state-&gt;argument(1) };
&gt; &gt; +    Dictionary ooo = state-&gt;argument(1).isUndefined() ? Dictionary() : Dictionary(state, state-&gt;uncheckedArgument(1));
&gt; 
&gt; We really don’t need this check for isUndefined at all. Dictionary will do
&gt; this if it’s passed an undefined value. Clearing commit-queue so you can
&gt; consider a version that takes advantage of that.

I understand that. However, special casing some types like this does make the bindings generator a bit more complicated. Also note that even though it looks like I am adding one branch, I am also removing one by calling uncheckedArgument() instead of argument().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187420</commentid>
    <comment_count>7</comment_count>
      <attachid>277335</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-26 09:35:20 -0700</bug_when>
    <thetext>Comment on attachment 277335
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:3726
&gt;&gt;&gt; +    Dictionary ooo = state-&gt;argument(1).isUndefined() ? Dictionary() : Dictionary(state, state-&gt;uncheckedArgument(1));
&gt;&gt; 
&gt;&gt; We really don’t need this check for isUndefined at all. Dictionary will do this if it’s passed an undefined value. Clearing commit-queue so you can consider a version that takes advantage of that.
&gt; 
&gt; I understand that. However, special casing some types like this does make the bindings generator a bit more complicated. Also note that even though it looks like I am adding one branch, I am also removing one by calling uncheckedArgument() instead of argument().

Yes, agreed.

The point remains that we are generating redundant code here. Inside the Dictionary constructor is a second check for undefined, identical to the extra one we generated here. And all the work in the call to uncheckedArgument is redundant with part of what argument already did, although perhaps the compiler will optimize out the common subexpression. And also, the entire call to the second Dictionary constructor will make the code larger.

I think it’s good to make an optimization for a case like this even if the code generator ends up *slightly* more complicated. And the complication here is quite minor. We just need it to generate the same code it does for non-optional dictionaries. See the code a couple lines above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187424</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-26 09:38:01 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 277335 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277335&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:3726
&gt; &gt;&gt;&gt; +    Dictionary ooo = state-&gt;argument(1).isUndefined() ? Dictionary() : Dictionary(state, state-&gt;uncheckedArgument(1));
&gt; &gt;&gt; 
&gt; &gt;&gt; We really don’t need this check for isUndefined at all. Dictionary will do this if it’s passed an undefined value. Clearing commit-queue so you can consider a version that takes advantage of that.
&gt; &gt; 
&gt; &gt; I understand that. However, special casing some types like this does make the bindings generator a bit more complicated. Also note that even though it looks like I am adding one branch, I am also removing one by calling uncheckedArgument() instead of argument().
&gt; 
&gt; Yes, agreed.
&gt; 
&gt; The point remains that we are generating redundant code here. Inside the
&gt; Dictionary constructor is a second check for undefined, identical to the
&gt; extra one we generated here. And all the work in the call to
&gt; uncheckedArgument is redundant with part of what argument already did,
&gt; although perhaps the compiler will optimize out the common subexpression.
&gt; And also, the entire call to the second Dictionary constructor will make the
&gt; code larger.
&gt; 
&gt; I think it’s good to make an optimization for a case like this even if the
&gt; code generator ends up *slightly* more complicated. And the complication
&gt; here is quite minor. We just need it to generate the same code it does for
&gt; non-optional dictionaries. See the code a couple lines above.

Ok, Fair enough. Dictionary is not the only type we unnecessarily check of undefined either. I&apos;ll rework the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187427</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-26 09:42:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Ok, Fair enough. Dictionary is not the only type we unnecessarily check of
&gt; undefined either. I&apos;ll rework the patch.

I don’t think you need to do this immediately, may not be worth your time right now, but eventually it seems better to generate the more efficient code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187441</commentid>
    <comment_count>10</comment_count>
      <attachid>277393</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-26 10:13:10 -0700</bug_when>
    <thetext>Created attachment 277393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187443</commentid>
    <comment_count>11</comment_count>
      <attachid>277393</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-26 10:13:39 -0700</bug_when>
    <thetext>Comment on attachment 277393
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3392
&gt; +sub WillConvertUndefinedToDefaultParameterValue

Darin, can you please take another look since I added the optimization you suggested?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187451</commentid>
    <comment_count>12</comment_count>
      <attachid>277393</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-26 10:28:39 -0700</bug_when>
    <thetext>Comment on attachment 277393
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4310
&gt; -        return &quot;{ state, $value }&quot;;
&gt; +        return &quot;Dictionary(state, $value)&quot;;

I don’t think you need this change any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187453</commentid>
    <comment_count>13</comment_count>
      <attachid>277395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-26 10:30:49 -0700</bug_when>
    <thetext>Created attachment 277395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187454</commentid>
    <comment_count>14</comment_count>
      <attachid>277395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-26 10:31:09 -0700</bug_when>
    <thetext>Comment on attachment 277395
Patch

Yes, reverted that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187478</commentid>
    <comment_count>15</comment_count>
      <attachid>277395</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-26 11:22:13 -0700</bug_when>
    <thetext>Comment on attachment 277395
Patch

Clearing flags on attachment: 277395

Committed r200099: &lt;http://trac.webkit.org/changeset/200099&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187480</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-26 11:22:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277332</attachid>
            <date>2016-04-25 21:48:53 -0700</date>
            <delta_ts>2016-04-25 21:59:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157023-20160425214921.patch</filename>
            <type>text/plain</type>
            <size>4174</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzllODFkMzZkYzQ1Y2Vi
ZjJiZGZhYWRlZTJiZjc2MjMwYmYwNTJkMS4uOWZjZDNlMjAwN2JiMTJkNGExYjkyYTIxYjU4Yjk3
ODg5NDZmZTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA0LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBEaWN0aW9uYXJ5IGZy
b20gQ2FuVXNlV1RGT3B0aW9uYWxGb3JQYXJhbWV0ZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rp
b25hcnkgcGFyYW1ldGVycyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZQorICAgICAgICBh
IGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkgZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBz
cGVjaWZpZWQuIFRoZXJlIGlzCisgICAgICAgIHRoZXJlZm9yZSBuZXZlciBhbnkgbmVlZCB0byB1
c2UgT3B0aW9uYWw8PiBmb3IgaXQuIEp1c3QgaW1wbGVtZW50IHRoaXMKKyAgICAgICAgYmVoYXZp
b3IgaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvciBhbmQgZHJvcCBibGFja2xpc3Rpbmcgb2YgRGlj
dGlvbmFyeSBmcm9tCisgICAgICAgIENhblVzZVdURk9wdGlvbmFsRm9yUGFyYW1ldGVyKCkuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKENhblVzZVdURk9wdGlvbmFsRm9y
UGFyYW1ldGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3B0aW9uc09iamVjdCk6CisKIDIwMTYtMDQtMjUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEd1YXJhbnRlZSBGb250UGxhdGZv
cm1EYXRhJ3MgbV9jZ0ZvbnQgaXMgbmV2ZXIgbnVsbHB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4MDYzMzAyYWExMmIw
NDhiMTZmZmUzZmIzODczZTg1OGM4MGU4NWRjLi5iZjkzY2MwMTQ5NGVmYmVkNmIzNjcwZmNlN2Ey
NWI5Y2RhZGI1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzM4NCw3ICszMzg0LDYgQEAgc3ViIENhblVzZVdURk9w
dGlvbmFsRm9yUGFyYW1ldGVyCiAgICAgcmV0dXJuIDAgaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlw
ZWRBcnJheVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1dy
YXBwZXJUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nIjsK
LSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRGljdGlvbmFyeSI7CiAgICAgcmV0dXJuIDAgaWYg
JHR5cGUgZXEgImFueSI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImxvbmciOwogICAgIHJl
dHVybiAwIGlmICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZG91YmxlIjsKQEAgLTM0MzcsMTIgKzM0
MzYsMTQgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgJGltcGxJbmNsdWRlc3si
SlNET01CaW5kaW5nLmgifSA9IDE7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5j
dGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJGFyZ1R5cGUgPSAkcGFyYW1ldGVyLT50
eXBlOworICAgICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5pc09wdGlvbmFsOworCisg
ICAgICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25hcnkgcGFyYW1ldGVycyBh
cmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkg
ZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCisgICAgICAgICRwYXJhbWV0
ZXItPmRlZmF1bHQoIltdIikgaWYgKCRvcHRpb25hbCAmJiAhZGVmaW5lZCgkcGFyYW1ldGVyLT5k
ZWZhdWx0KSAmJiAkYXJnVHlwZSBlcSAiRGljdGlvbmFyeSIpOwogCiAgICAgICAgICMgT3B0aW9u
YWwgYXJndW1lbnRzIHdpdGggW09wdGlvbmFsXSBzaG91bGQgZ2VuZXJhdGUgYW4gZWFybHkgY2Fs
bCB3aXRoIGZld2VyIGFyZ3VtZW50cy4KICAgICAgICAgIyBPcHRpb25hbCBhcmd1bWVudHMgd2l0
aCBbT3B0aW9uYWw9Li4uXSBzaG91bGQgbm90IGdlbmVyYXRlIHRoZSBlYXJseSBjYWxsLgotICAg
ICAgICAjIE9wdGlvbmFsIERpY3Rpb25hcnkgYXJndW1lbnRzIGFsd2F5cyBjb25zaWRlcmVkIHRv
IGhhdmUgZGVmYXVsdCBvZiBlbXB0eSBkaWN0aW9uYXJ5LgotICAgICAgICBteSAkb3B0aW9uYWwg
PSAkcGFyYW1ldGVyLT5pc09wdGlvbmFsOwotICAgICAgICBpZiAoJG9wdGlvbmFsICYmICFkZWZp
bmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFDYW5Vc2VXVEZPcHRpb25hbEZvclBhcmFtZXRl
cigkcGFyYW1ldGVyKSAmJiAkYXJnVHlwZSBuZSAiRGljdGlvbmFyeSIgJiYgISRjb2RlR2VuZXJh
dG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCRhcmdUeXBlKSkgeworICAgICAgICBpZiAoJG9wdGlv
bmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFDYW5Vc2VXVEZPcHRpb25h
bEZvclBhcmFtZXRlcigkcGFyYW1ldGVyKSAmJiAhJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJhY2tJ
bnRlcmZhY2UoJGFyZ1R5cGUpKSB7CiAgICAgICAgICAgICAjIEdlbmVyYXRlIGVhcmx5IGNhbGwg
aWYgdGhlcmUgYXJlIGVub3VnaCBwYXJhbWV0ZXJzLgogICAgICAgICAgICAgaWYgKCEkaGFzT3B0
aW9uYWxBcmd1bWVudHMpIHsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJc
biAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTtcbiIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAppbmRleCA5YTlkZDQxNmVkMzBjY2I4MDEyMTBiYjQ1NzQ5OTUzNjA1ODIyMjMwLi4xMTQy
N2NjYWMzYjNjN2Q1ZTczYjM0ZWVmY2IwNDM2MGMwZTY1YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMzcy
Myw3ICszNzIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhlY1N0YXRlKgogICAgIERpY3Rpb25hcnkgb28g
PSB7IHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkgfTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICBEaWN0aW9uYXJ5IG9vbyA9IHsgc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgx
KSB9OworICAgIERpY3Rpb25hcnkgb29vID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVk
KCkgPyBEaWN0aW9uYXJ5KCkgOiB7IHN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkg
fTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm9wdGlvbnNPYmpl
Y3Qob28sIG9vbyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277335</attachid>
            <date>2016-04-25 21:59:57 -0700</date>
            <delta_ts>2016-04-26 10:13:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157023-20160425220025.patch</filename>
            <type>text/plain</type>
            <size>4672</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzllODFkMzZkYzQ1Y2Vi
ZjJiZGZhYWRlZTJiZjc2MjMwYmYwNTJkMS4uOWZjZDNlMjAwN2JiMTJkNGExYjkyYTIxYjU4Yjk3
ODg5NDZmZTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA0LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBEaWN0aW9uYXJ5IGZy
b20gQ2FuVXNlV1RGT3B0aW9uYWxGb3JQYXJhbWV0ZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rp
b25hcnkgcGFyYW1ldGVycyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZQorICAgICAgICBh
IGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkgZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBz
cGVjaWZpZWQuIFRoZXJlIGlzCisgICAgICAgIHRoZXJlZm9yZSBuZXZlciBhbnkgbmVlZCB0byB1
c2UgT3B0aW9uYWw8PiBmb3IgaXQuIEp1c3QgaW1wbGVtZW50IHRoaXMKKyAgICAgICAgYmVoYXZp
b3IgaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvciBhbmQgZHJvcCBibGFja2xpc3Rpbmcgb2YgRGlj
dGlvbmFyeSBmcm9tCisgICAgICAgIENhblVzZVdURk9wdGlvbmFsRm9yUGFyYW1ldGVyKCkuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKENhblVzZVdURk9wdGlvbmFsRm9y
UGFyYW1ldGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3B0aW9uc09iamVjdCk6CisKIDIwMTYtMDQtMjUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEd1YXJhbnRlZSBGb250UGxhdGZv
cm1EYXRhJ3MgbV9jZ0ZvbnQgaXMgbmV2ZXIgbnVsbHB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4MDYzMzAyYWExMmIw
NDhiMTZmZmUzZmIzODczZTg1OGM4MGU4NWRjLi4xNThjYjRhOWIxMDA1YTRiNmY1NzAxNmNkMTVj
NmZmOGZiZTAxYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzM4NCw3ICszMzg0LDYgQEAgc3ViIENhblVzZVdURk9w
dGlvbmFsRm9yUGFyYW1ldGVyCiAgICAgcmV0dXJuIDAgaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlw
ZWRBcnJheVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1dy
YXBwZXJUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nIjsK
LSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRGljdGlvbmFyeSI7CiAgICAgcmV0dXJuIDAgaWYg
JHR5cGUgZXEgImFueSI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImxvbmciOwogICAgIHJl
dHVybiAwIGlmICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZG91YmxlIjsKQEAgLTM0MzcsMTIgKzM0
MzYsMTQgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgJGltcGxJbmNsdWRlc3si
SlNET01CaW5kaW5nLmgifSA9IDE7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5j
dGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJGFyZ1R5cGUgPSAkcGFyYW1ldGVyLT50
eXBlOworICAgICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5pc09wdGlvbmFsOworCisg
ICAgICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25hcnkgcGFyYW1ldGVycyBh
cmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkg
ZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCisgICAgICAgICRwYXJhbWV0
ZXItPmRlZmF1bHQoIltdIikgaWYgKCRvcHRpb25hbCAmJiAhZGVmaW5lZCgkcGFyYW1ldGVyLT5k
ZWZhdWx0KSAmJiAkYXJnVHlwZSBlcSAiRGljdGlvbmFyeSIpOwogCiAgICAgICAgICMgT3B0aW9u
YWwgYXJndW1lbnRzIHdpdGggW09wdGlvbmFsXSBzaG91bGQgZ2VuZXJhdGUgYW4gZWFybHkgY2Fs
bCB3aXRoIGZld2VyIGFyZ3VtZW50cy4KICAgICAgICAgIyBPcHRpb25hbCBhcmd1bWVudHMgd2l0
aCBbT3B0aW9uYWw9Li4uXSBzaG91bGQgbm90IGdlbmVyYXRlIHRoZSBlYXJseSBjYWxsLgotICAg
ICAgICAjIE9wdGlvbmFsIERpY3Rpb25hcnkgYXJndW1lbnRzIGFsd2F5cyBjb25zaWRlcmVkIHRv
IGhhdmUgZGVmYXVsdCBvZiBlbXB0eSBkaWN0aW9uYXJ5LgotICAgICAgICBteSAkb3B0aW9uYWwg
PSAkcGFyYW1ldGVyLT5pc09wdGlvbmFsOwotICAgICAgICBpZiAoJG9wdGlvbmFsICYmICFkZWZp
bmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFDYW5Vc2VXVEZPcHRpb25hbEZvclBhcmFtZXRl
cigkcGFyYW1ldGVyKSAmJiAkYXJnVHlwZSBuZSAiRGljdGlvbmFyeSIgJiYgISRjb2RlR2VuZXJh
dG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCRhcmdUeXBlKSkgeworICAgICAgICBpZiAoJG9wdGlv
bmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFDYW5Vc2VXVEZPcHRpb25h
bEZvclBhcmFtZXRlcigkcGFyYW1ldGVyKSAmJiAhJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJhY2tJ
bnRlcmZhY2UoJGFyZ1R5cGUpKSB7CiAgICAgICAgICAgICAjIEdlbmVyYXRlIGVhcmx5IGNhbGwg
aWYgdGhlcmUgYXJlIGVub3VnaCBwYXJhbWV0ZXJzLgogICAgICAgICAgICAgaWYgKCEkaGFzT3B0
aW9uYWxBcmd1bWVudHMpIHsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJc
biAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTtcbiIpOwpAQCAt
NDI3NCw3ICs0Mjc1LDcgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgaWYgKCR0eXBlIGVx
ICJEaWN0aW9uYXJ5IikgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRGljdGlvbmFyeS5o
IiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgcmV0dXJuICJ7IHN0YXRlLCAkdmFsdWUgfSI7Cisg
ICAgICAgIHJldHVybiAiRGljdGlvbmFyeShzdGF0ZSwgJHZhbHVlKSI7CiAgICAgfQogCiAgICAg
aWYgKCR0eXBlIGVxICJET01TdHJpbmdMaXN0IiApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggOWE5ZGQ0MTZl
ZDMwY2NiODAxMjEwYmI0NTc0OTk1MzYwNTgyMjIzMC4uMjU0NDNkMGFkMWIxNDI3NTA1MzBiMjMy
MGQ1MTU1NzljOGFkYjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTM3MjAsMTAgKzM3MjAsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlv
bnNPYmplY3QoRXhlY1N0YXRlKgogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKLSAgICBEaWN0aW9uYXJ5IG9vID0geyBzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApIH07CisgICAgRGljdGlvbmFyeSBvbyA9IERpY3Rpb25hcnkoc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgRGljdGlvbmFy
eSBvb28gPSB7IHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkgfTsKKyAgICBEaWN0aW9uYXJ5IG9v
byA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gRGljdGlvbmFyeSgpIDogRGlj
dGlvbmFyeShzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm9wdGlvbnNPYmplY3Qob28sIG9vbyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277393</attachid>
            <date>2016-04-26 10:13:10 -0700</date>
            <delta_ts>2016-04-26 10:30:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157023-20160426101338.patch</filename>
            <type>text/plain</type>
            <size>12142</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5YjlhMzg4YmYxNDll
YmU0YWU3NGQ0YTc0MjUxY2RkZGNiMjlkNC4uNWNjZTUxMjcxYjY2NjZkZGE2ZDMwY2ZkYjBhM2Jj
M2UyZjA3YjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA0LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBEaWN0aW9uYXJ5IGZy
b20gQ2FuVXNlV1RGT3B0aW9uYWxGb3JQYXJhbWV0ZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25h
cnkgcGFyYW1ldGVycyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZQorICAgICAgICBhIGRl
ZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkgZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVj
aWZpZWQuIFRoZXJlIGlzCisgICAgICAgIHRoZXJlZm9yZSBuZXZlciBhbnkgbmVlZCB0byB1c2Ug
T3B0aW9uYWw8PiBmb3IgaXQuIEp1c3QgaW1wbGVtZW50IHRoaXMKKyAgICAgICAgYmVoYXZpb3Ig
aW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvciBhbmQgZHJvcCBibGFja2xpc3Rpbmcgb2YgRGljdGlv
bmFyeSBmcm9tCisgICAgICAgIENhblVzZVdURk9wdGlvbmFsRm9yUGFyYW1ldGVyKCkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKENhblVzZVdURk9wdGlvbmFsRm9yUGFy
YW1ldGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3B0aW9uc09iamVjdCk6CisKIDIwMTYtMDQtMjUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJDb3JlIG9uIE1hYyBpZ25vcmVzIHRoZSB1c2VyJ3MgcHJlZmVy
cmVkIHJlZ2lvbiAoY291bnRyeSkgd2hpbGUgZ2V0dGluZyB0aGUgbGFuZ3VhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
Y2U0YTYzNDNjNjE4ZDY3ZjAyZDRmMzc0NjliZWNmZjUyMmQxMjNmMS4uMzAxYTI4OTExNGI5NTdj
NDJiM2M1NThiOTJiNWY2Mzg5ZmNhMjY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMzODMsMTMgKzMzODMsNDggQEAg
c3ViIENhblVzZVdURk9wdGlvbmFsRm9yUGFyYW1ldGVyCiAgICAgcmV0dXJuIDAgaWYgJGNvZGVH
ZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJh
dG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRE9N
U3RyaW5nIjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRGljdGlvbmFyeSI7CiAgICAgcmV0
dXJuIDAgaWYgJHR5cGUgZXEgImFueSI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2ln
bmVkIGxvbmciOwogCiAgICAgcmV0dXJuIDE7CiB9CiAKK3N1YiBXaWxsQ29udmVydFVuZGVmaW5l
ZFRvRGVmYXVsdFBhcmFtZXRlclZhbHVlCit7CisgICAgbXkgJHBhcmFtZXRlclR5cGUgPSBzaGlm
dDsKKyAgICBteSAkZGVmYXVsdFZhbHVlID0gc2hpZnQ7CisKKyAgICBpZiAoJGRlZmF1bHRWYWx1
ZSBlcSAiW10iKSB7CisgICAgICAgICMgRGljdGlvbmFyeShzdGF0ZSwgdW5kZWZpbmVkKSB3aWxs
IGNvbnN0cnVjdCBhbiBlbXB0eSBEaWN0aW9uYXJ5LgorICAgICAgICByZXR1cm4gMSBpZiAkcGFy
YW1ldGVyVHlwZSBlcSAiRGljdGlvbmFyeSI7CisKKyAgICAgICAgIyB0b1JlZlB0ck5hdGl2ZUFy
cmF5KCkgd2lsbCBjb252ZXJ0IHVuZGVmaW5lZCB0byBhbiBlbXB0eSBWZWN0b3IuCisgICAgICAg
IHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHBhcmFtZXRlclR5cGUp
IG9yICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHBhcmFtZXRlclR5cGUpOworICAg
IH0KKworICAgICMgdG9TdHJpbmcoKSB3aWxsIGNvbnZlcnQgdW5kZWZpbmVkIHRvIHRoZSBzdHJp
bmcgInVuZGVmaW5lZCI7CisgICAgcmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgIkRPTVN0
cmluZyIgYW5kICRkZWZhdWx0VmFsdWUgZXEgInVuZGVmaW5lZCI7CisKKyAgICAjIEpTVmFsdWU6
OnRvQm9vbGVhbigpIHdpbGwgY29udmVydCB1bmRlZmluZWQgdG8gZmFsc2UuCisgICAgcmV0dXJu
IDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgImJvb2xlYW4iIGFuZCAkZGVmYXVsdFZhbHVlIGVxICJm
YWxzZSI7CisKKyAgICAjIEpTVmFsdWU6OnRvSW50KigpIC8gSlNWYWx1ZTo6dG9VaW50KigpIHdp
bGwgY29udmVydCB1bmRlZmluZWQgdG8gMC4KKyAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAiMCIp
IHsKKyAgICAgICAgcmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgImJ5dGUiIG9yICRwYXJh
bWV0ZXJUeXBlIGVxICJvY3RldCI7CisgICAgICAgIHJldHVybiAxIGlmICRwYXJhbWV0ZXJUeXBl
IGVxICJzaG9ydCIgb3IgJHBhcmFtZXRlclR5cGUgZXEgInVuc2lnbmVkIHNob3J0IjsKKyAgICAg
ICAgcmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgImxvbmciIG9yICRwYXJhbWV0ZXJUeXBl
IGVxICJ1bnNpZ25lZCBsb25nIjsKKyAgICAgICAgcmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUg
ZXEgImxvbmcgbG9uZyIgb3IgJHBhcmFtZXRlclR5cGUgZXEgInVuc2lnbmVkIGxvbmcgbG9uZyI7
CisgICAgfQorCisgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIk5hTiIpIHsKKyAgICAgICAgIyB0
b051bWJlcigpIC8gdG9GbG9hdCgpIGNvbnZlcnQgdW5kZWZpbmVkIHRvIE5hTi4KKyAgICAgICAg
cmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgImRvdWJsZSIgb3IgJHBhcmFtZXRlclR5cGUg
ZXEgInVucmVzdHJpY3RlZCBkb3VibGUiOworICAgICAgICByZXR1cm4gMSBpZiAkcGFyYW1ldGVy
VHlwZSBlcSAiZmxvYXQiIG9yICRwYXJhbWV0ZXJUeXBlIGVxICJ1bnJlc3RyaWN0ZWQgZmxvYXQi
OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKIHsKICAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKQEAgLTM0MzQsMTIgKzM0NjksMTMg
QEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgJGltcGxJbmNsdWRlc3siSlNET01C
aW5kaW5nLmgifSA9IDE7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJGFyZ1R5cGUgPSAkcGFyYW1ldGVyLT50eXBlOwot
Ci0gICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggW09wdGlvbmFsXSBzaG91bGQgZ2Vu
ZXJhdGUgYW4gZWFybHkgY2FsbCB3aXRoIGZld2VyIGFyZ3VtZW50cy4KLSAgICAgICAgIyBPcHRp
b25hbCBhcmd1bWVudHMgd2l0aCBbT3B0aW9uYWw9Li4uXSBzaG91bGQgbm90IGdlbmVyYXRlIHRo
ZSBlYXJseSBjYWxsLgotICAgICAgICAjIE9wdGlvbmFsIERpY3Rpb25hcnkgYXJndW1lbnRzIGFs
d2F5cyBjb25zaWRlcmVkIHRvIGhhdmUgZGVmYXVsdCBvZiBlbXB0eSBkaWN0aW9uYXJ5LgogICAg
ICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5pc09wdGlvbmFsOwotICAgICAgICBpZiAo
JG9wdGlvbmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFDYW5Vc2VXVEZP
cHRpb25hbEZvclBhcmFtZXRlcigkcGFyYW1ldGVyKSAmJiAkYXJnVHlwZSBuZSAiRGljdGlvbmFy
eSIgJiYgISRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCRhcmdUeXBlKSkgewor
CisgICAgICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25hcnkgcGFyYW1ldGVy
cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1w
dHkgZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCisgICAgICAgICRwYXJh
bWV0ZXItPmRlZmF1bHQoIltdIikgaWYgKCRvcHRpb25hbCAmJiAhZGVmaW5lZCgkcGFyYW1ldGVy
LT5kZWZhdWx0KSAmJiAkYXJnVHlwZSBlcSAiRGljdGlvbmFyeSIpOworCisgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZCBldmVudHVhbGx5IHN0b3AgZ2VuZXJhdGluZyBhbnkgZWFybHkgY2FsbHMs
IGFuZCBpbnN0ZWFkIHVzZSBlaXRoZXIgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIG9yIFdURjo6
T3B0aW9uYWw8Pi4KKyAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAhZGVmaW5lZCgkcGFyYW1ldGVy
LT5kZWZhdWx0KSAmJiAhQ2FuVXNlV1RGT3B0aW9uYWxGb3JQYXJhbWV0ZXIoJHBhcmFtZXRlcikg
JiYgISRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCRhcmdUeXBlKSkgewogICAg
ICAgICAgICAgIyBHZW5lcmF0ZSBlYXJseSBjYWxsIGlmIHRoZXJlIGFyZSBlbm91Z2ggcGFyYW1l
dGVycy4KICAgICAgICAgICAgIGlmICghJGhhc09wdGlvbmFsQXJndW1lbnRzKSB7CiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4gICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0
YXRlLT5hcmd1bWVudENvdW50KCk7XG4iKTsKQEAgLTM1OTgsNyArMzYzNCw3IEBAIHN1YiBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIG15ICRpbm5lcjsKICAgICAgICAg
ICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRwYXJh
bWV0ZXIpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiBkZWZpbmVkKCRwYXJh
bWV0ZXItPmRlZmF1bHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiBkZWZp
bmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFXaWxsQ29udmVydFVuZGVmaW5lZFRvRGVmYXVs
dFBhcmFtZXRlclZhbHVlKCRwYXJhbWV0ZXItPnR5cGUsICRwYXJhbWV0ZXItPmRlZmF1bHQpKSB7
CiAgICAgICAgICAgICAgICAgICAgIG15ICRkZWZhdWx0VmFsdWUgPSAkcGFyYW1ldGVyLT5kZWZh
dWx0OwogCiAgICAgICAgICAgICAgICAgICAgICMgU3RyaW5nLXJlbGF0ZWQgb3B0aW1pemF0aW9u
cy4KQEAgLTQyNzEsNyArNDMwNyw3IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKIAogICAgIGlmICgk
dHlwZSBlcSAiRGljdGlvbmFyeSIpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRpY3Rp
b25hcnkuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIHJldHVybiAieyBzdGF0ZSwgJHZhbHVl
IH0iOworICAgICAgICByZXR1cm4gIkRpY3Rpb25hcnkoc3RhdGUsICR2YWx1ZSkiOwogICAgIH0K
IAogICAgIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDgz
NDIwMjMxNDc1Y2ZmZGQzZDBhMGVjZjU4YmU2N2YyMDZhYmNiNWMuLmI1MmQ0MzViN2JkNGVjZGNk
NDFiNDllZTA5MTljNDU3NzVkNjAwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0zNzIwLDEwICszNzIwLDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSoKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7Ci0gICAgRGljdGlvbmFyeSBvbyA9IHsgc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSB9OworICAgIERpY3Rpb25hcnkgb28gPSBEaWN0aW9uYXJ5KHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIERp
Y3Rpb25hcnkgb29vID0geyBzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpIH07CisgICAgRGljdGlv
bmFyeSBvb28gPSBEaWN0aW9uYXJ5KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwub3B0aW9uc09iamVjdChvbywgb29v
KTsKQEAgLTQxOTQsNyArNDE5NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
T3B0aW9uYWxEb3VibGVJc05hTiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgZG91YmxlIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZCgpID8gUE5hTiA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihz
dGF0ZSk7CisgICAgZG91YmxlIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RX
aXRoT3B0aW9uYWxEb3VibGVJc05hTihudW1iZXIpOwpAQCAtNDIwOSw3ICs0MjA5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEZsb2F0SXMKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4iKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGZsb2F0IG51bWJl
ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gUE5hTiA6IHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKS50b0Zsb2F0KHN0YXRlKTsKKyAgICBmbG9hdCBudW1iZXIgPSBzdGF0
ZS0+YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKG51bWJlcik7CkBA
IC00MjI0LDcgKzQyMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuYwogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIFZlY3RvcjxTdHJpbmc+IHNlcXVlbmNlID0gc3RhdGUtPmFyZ3VtZW50KDApLmlz
VW5kZWZpbmVkKCkgPyBWZWN0b3I8U3RyaW5nPigpIDogdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHNl
cXVlbmNlID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsU2VxdWVuY2Uoc2VxdWVuY2UpOwpAQCAtNDI1NCw3ICs0MjU0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbExvbmdMb24KICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBsb25nIGxvbmcgbnVt
YmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyAwIDogdG9JbnQ2NChzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICBs
b25nIGxvbmcgbnVtYmVyID0gdG9JbnQ2NChzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKG51bWJlcik7CkBAIC00Mjg0LDcgKzQy
ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRM
b25nTG9uZ0lzWmVybyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgw
KS5pc1VuZGVmaW5lZCgpID8gMCA6IHRvVUludDY0KHN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBudW1i
ZXIgPSB0b1VJbnQ2NChzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8obnVtYmVyKTsKQEAgLTQzMTQsNyArNDMxNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBcnJheUlzCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxBcnJheUlzRW1wdHki
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFZl
Y3RvcjxTdHJpbmc+IGFycmF5ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBW
ZWN0b3I8U3RyaW5nPigpIDogdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5ID0gdG9OYXRpdmVB
cnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJyYXlJc0VtcHR5
KGFycmF5KTsKQEAgLTQzNDQsNyArNDM0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRo
b2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYm9vbCBiID0gc3RhdGUtPmFyZ3VtZW50KDApLmlz
VW5kZWZpbmVkKCkgPyBmYWxzZSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b0Jvb2xl
YW4oc3RhdGUpOworICAgIGJvb2wgYiA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0
aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCBmOTUw
ODEwMzQ2MGYyZjA2OTlkYTcwMzNiN2ZhNTYyNDEwMTZjOWU2Li43NmVkOTViNzBjNjY1NzBhMzA5
ZWI1ODEwZjI2MGVjYTIyNjM1NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ2Myw3ICs0
NjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFZlY3RvcjxpbnQ+IHgg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFZlY3RvcjxpbnQ+KCkgOiB0b05h
dGl2ZUFycmF5PGludD4oc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAg
VmVjdG9yPGludD4geCA9IHRvTmF0aXZlQXJyYXk8aW50PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLmZ1bmMoeCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277395</attachid>
            <date>2016-04-26 10:30:49 -0700</date>
            <delta_ts>2016-04-26 11:22:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157023-20160426103118.patch</filename>
            <type>text/plain</type>
            <size>11170</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5YjlhMzg4YmYxNDll
YmU0YWU3NGQ0YTc0MjUxY2RkZGNiMjlkNC4uNWNjZTUxMjcxYjY2NjZkZGE2ZDMwY2ZkYjBhM2Jj
M2UyZjA3YjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA0LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBEaWN0aW9uYXJ5IGZy
b20gQ2FuVXNlV1RGT3B0aW9uYWxGb3JQYXJhbWV0ZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25h
cnkgcGFyYW1ldGVycyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZQorICAgICAgICBhIGRl
ZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkgZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVj
aWZpZWQuIFRoZXJlIGlzCisgICAgICAgIHRoZXJlZm9yZSBuZXZlciBhbnkgbmVlZCB0byB1c2Ug
T3B0aW9uYWw8PiBmb3IgaXQuIEp1c3QgaW1wbGVtZW50IHRoaXMKKyAgICAgICAgYmVoYXZpb3Ig
aW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvciBhbmQgZHJvcCBibGFja2xpc3Rpbmcgb2YgRGljdGlv
bmFyeSBmcm9tCisgICAgICAgIENhblVzZVdURk9wdGlvbmFsRm9yUGFyYW1ldGVyKCkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKENhblVzZVdURk9wdGlvbmFsRm9yUGFy
YW1ldGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3B0aW9uc09iamVjdCk6CisKIDIwMTYtMDQtMjUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJDb3JlIG9uIE1hYyBpZ25vcmVzIHRoZSB1c2VyJ3MgcHJlZmVy
cmVkIHJlZ2lvbiAoY291bnRyeSkgd2hpbGUgZ2V0dGluZyB0aGUgbGFuZ3VhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
Y2U0YTYzNDNjNjE4ZDY3ZjAyZDRmMzc0NjliZWNmZjUyMmQxMjNmMS4uNDEwYjRjZGE4MmZhNjY4
YWE2NDQ4MDdhM2IxYjg1ODNiZjkwNTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMzODMsMTMgKzMzODMsNDggQEAg
c3ViIENhblVzZVdURk9wdGlvbmFsRm9yUGFyYW1ldGVyCiAgICAgcmV0dXJuIDAgaWYgJGNvZGVH
ZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJh
dG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRE9N
U3RyaW5nIjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRGljdGlvbmFyeSI7CiAgICAgcmV0
dXJuIDAgaWYgJHR5cGUgZXEgImFueSI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2ln
bmVkIGxvbmciOwogCiAgICAgcmV0dXJuIDE7CiB9CiAKK3N1YiBXaWxsQ29udmVydFVuZGVmaW5l
ZFRvRGVmYXVsdFBhcmFtZXRlclZhbHVlCit7CisgICAgbXkgJHBhcmFtZXRlclR5cGUgPSBzaGlm
dDsKKyAgICBteSAkZGVmYXVsdFZhbHVlID0gc2hpZnQ7CisKKyAgICBpZiAoJGRlZmF1bHRWYWx1
ZSBlcSAiW10iKSB7CisgICAgICAgICMgRGljdGlvbmFyeShzdGF0ZSwgdW5kZWZpbmVkKSB3aWxs
IGNvbnN0cnVjdCBhbiBlbXB0eSBEaWN0aW9uYXJ5LgorICAgICAgICByZXR1cm4gMSBpZiAkcGFy
YW1ldGVyVHlwZSBlcSAiRGljdGlvbmFyeSI7CisKKyAgICAgICAgIyB0b1JlZlB0ck5hdGl2ZUFy
cmF5KCkgd2lsbCBjb252ZXJ0IHVuZGVmaW5lZCB0byBhbiBlbXB0eSBWZWN0b3IuCisgICAgICAg
IHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHBhcmFtZXRlclR5cGUp
IG9yICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHBhcmFtZXRlclR5cGUpOworICAg
IH0KKworICAgICMgdG9TdHJpbmcoKSB3aWxsIGNvbnZlcnQgdW5kZWZpbmVkIHRvIHRoZSBzdHJp
bmcgInVuZGVmaW5lZCI7CisgICAgcmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgIkRPTVN0
cmluZyIgYW5kICRkZWZhdWx0VmFsdWUgZXEgInVuZGVmaW5lZCI7CisKKyAgICAjIEpTVmFsdWU6
OnRvQm9vbGVhbigpIHdpbGwgY29udmVydCB1bmRlZmluZWQgdG8gZmFsc2UuCisgICAgcmV0dXJu
IDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgImJvb2xlYW4iIGFuZCAkZGVmYXVsdFZhbHVlIGVxICJm
YWxzZSI7CisKKyAgICAjIEpTVmFsdWU6OnRvSW50KigpIC8gSlNWYWx1ZTo6dG9VaW50KigpIHdp
bGwgY29udmVydCB1bmRlZmluZWQgdG8gMC4KKyAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAiMCIp
IHsKKyAgICAgICAgcmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgImJ5dGUiIG9yICRwYXJh
bWV0ZXJUeXBlIGVxICJvY3RldCI7CisgICAgICAgIHJldHVybiAxIGlmICRwYXJhbWV0ZXJUeXBl
IGVxICJzaG9ydCIgb3IgJHBhcmFtZXRlclR5cGUgZXEgInVuc2lnbmVkIHNob3J0IjsKKyAgICAg
ICAgcmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgImxvbmciIG9yICRwYXJhbWV0ZXJUeXBl
IGVxICJ1bnNpZ25lZCBsb25nIjsKKyAgICAgICAgcmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUg
ZXEgImxvbmcgbG9uZyIgb3IgJHBhcmFtZXRlclR5cGUgZXEgInVuc2lnbmVkIGxvbmcgbG9uZyI7
CisgICAgfQorCisgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIk5hTiIpIHsKKyAgICAgICAgIyB0
b051bWJlcigpIC8gdG9GbG9hdCgpIGNvbnZlcnQgdW5kZWZpbmVkIHRvIE5hTi4KKyAgICAgICAg
cmV0dXJuIDEgaWYgJHBhcmFtZXRlclR5cGUgZXEgImRvdWJsZSIgb3IgJHBhcmFtZXRlclR5cGUg
ZXEgInVucmVzdHJpY3RlZCBkb3VibGUiOworICAgICAgICByZXR1cm4gMSBpZiAkcGFyYW1ldGVy
VHlwZSBlcSAiZmxvYXQiIG9yICRwYXJhbWV0ZXJUeXBlIGVxICJ1bnJlc3RyaWN0ZWQgZmxvYXQi
OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKIHsKICAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKQEAgLTM0MzQsMTIgKzM0NjksMTMg
QEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgJGltcGxJbmNsdWRlc3siSlNET01C
aW5kaW5nLmgifSA9IDE7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJGFyZ1R5cGUgPSAkcGFyYW1ldGVyLT50eXBlOwot
Ci0gICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggW09wdGlvbmFsXSBzaG91bGQgZ2Vu
ZXJhdGUgYW4gZWFybHkgY2FsbCB3aXRoIGZld2VyIGFyZ3VtZW50cy4KLSAgICAgICAgIyBPcHRp
b25hbCBhcmd1bWVudHMgd2l0aCBbT3B0aW9uYWw9Li4uXSBzaG91bGQgbm90IGdlbmVyYXRlIHRo
ZSBlYXJseSBjYWxsLgotICAgICAgICAjIE9wdGlvbmFsIERpY3Rpb25hcnkgYXJndW1lbnRzIGFs
d2F5cyBjb25zaWRlcmVkIHRvIGhhdmUgZGVmYXVsdCBvZiBlbXB0eSBkaWN0aW9uYXJ5LgogICAg
ICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5pc09wdGlvbmFsOwotICAgICAgICBpZiAo
JG9wdGlvbmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFDYW5Vc2VXVEZP
cHRpb25hbEZvclBhcmFtZXRlcigkcGFyYW1ldGVyKSAmJiAkYXJnVHlwZSBuZSAiRGljdGlvbmFy
eSIgJiYgISRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCRhcmdUeXBlKSkgewor
CisgICAgICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25hcnkgcGFyYW1ldGVy
cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1w
dHkgZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCisgICAgICAgICRwYXJh
bWV0ZXItPmRlZmF1bHQoIltdIikgaWYgKCRvcHRpb25hbCAmJiAhZGVmaW5lZCgkcGFyYW1ldGVy
LT5kZWZhdWx0KSAmJiAkYXJnVHlwZSBlcSAiRGljdGlvbmFyeSIpOworCisgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZCBldmVudHVhbGx5IHN0b3AgZ2VuZXJhdGluZyBhbnkgZWFybHkgY2FsbHMs
IGFuZCBpbnN0ZWFkIHVzZSBlaXRoZXIgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIG9yIFdURjo6
T3B0aW9uYWw8Pi4KKyAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAhZGVmaW5lZCgkcGFyYW1ldGVy
LT5kZWZhdWx0KSAmJiAhQ2FuVXNlV1RGT3B0aW9uYWxGb3JQYXJhbWV0ZXIoJHBhcmFtZXRlcikg
JiYgISRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCRhcmdUeXBlKSkgewogICAg
ICAgICAgICAgIyBHZW5lcmF0ZSBlYXJseSBjYWxsIGlmIHRoZXJlIGFyZSBlbm91Z2ggcGFyYW1l
dGVycy4KICAgICAgICAgICAgIGlmICghJGhhc09wdGlvbmFsQXJndW1lbnRzKSB7CiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4gICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0
YXRlLT5hcmd1bWVudENvdW50KCk7XG4iKTsKQEAgLTM1OTgsNyArMzYzNCw3IEBAIHN1YiBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIG15ICRpbm5lcjsKICAgICAgICAg
ICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRwYXJh
bWV0ZXIpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiBkZWZpbmVkKCRwYXJh
bWV0ZXItPmRlZmF1bHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiBkZWZp
bmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFXaWxsQ29udmVydFVuZGVmaW5lZFRvRGVmYXVs
dFBhcmFtZXRlclZhbHVlKCRwYXJhbWV0ZXItPnR5cGUsICRwYXJhbWV0ZXItPmRlZmF1bHQpKSB7
CiAgICAgICAgICAgICAgICAgICAgIG15ICRkZWZhdWx0VmFsdWUgPSAkcGFyYW1ldGVyLT5kZWZh
dWx0OwogCiAgICAgICAgICAgICAgICAgICAgICMgU3RyaW5nLXJlbGF0ZWQgb3B0aW1pemF0aW9u
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKaW5kZXggODM0MjAyMzE0NzVjZmZkZDNkMGEwZWNmNThiZTY3ZjIwNmFiY2I1
Yy4uNWJmY2ZhY2M2ODVjZjE0OTk5Zjc5ZTNkNTg4OTI3MDhiOGE4MGI0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
QEAgLTQxOTQsNyArNDE5NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0
aW9uYWxEb3VibGVJc05hTiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgZG91YmxlIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZCgpID8gUE5hTiA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihzdGF0
ZSk7CisgICAgZG91YmxlIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxEb3VibGVJc05hTihudW1iZXIpOwpAQCAtNDIwOSw3ICs0MjA5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEZsb2F0SXMKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4iKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGZsb2F0IG51bWJlciA9
IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gUE5hTiA6IHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b0Zsb2F0KHN0YXRlKTsKKyAgICBmbG9hdCBudW1iZXIgPSBzdGF0ZS0+
YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKG51bWJlcik7CkBAIC00
MjI0LDcgKzQyMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuYwogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFs
U2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIFZlY3RvcjxTdHJpbmc+IHNlcXVlbmNlID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkKCkgPyBWZWN0b3I8U3RyaW5nPigpIDogdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHNlcXVl
bmNlID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2Uoc2VxdWVuY2UpOwpAQCAtNDI1NCw3ICs0MjU0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbExvbmdMb24KICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBsb25nIGxvbmcgbnVtYmVy
ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyAwIDogdG9JbnQ2NChzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICBsb25n
IGxvbmcgbnVtYmVyID0gdG9JbnQ2NChzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxD
b252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKG51bWJlcik7CkBAIC00Mjg0LDcgKzQyODQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25n
TG9uZ0lzWmVybyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gMCA6IHRvVUludDY0KHN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCksIE5vcm1hbENvbnZlcnNpb24pOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIg
PSB0b1VJbnQ2NChzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8obnVtYmVyKTsKQEAgLTQzMTQsNyArNDMxNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxBcnJheUlzCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxBcnJheUlzRW1wdHkiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFZlY3Rv
cjxTdHJpbmc+IGFycmF5ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBWZWN0
b3I8U3RyaW5nPigpIDogdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5ID0gdG9OYXRpdmVBcnJh
eTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJyYXlJc0VtcHR5KGFy
cmF5KTsKQEAgLTQzNDQsNyArNDM0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RX
aXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYm9vbCBiID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkKCkgPyBmYWxzZSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b0Jvb2xlYW4o
c3RhdGUpOworICAgIGJvb2wgYiA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oc3RhdGUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbklzRmFsc2UoYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCBmOTUwODEw
MzQ2MGYyZjA2OTlkYTcwMzNiN2ZhNTYyNDEwMTZjOWU2Li43NmVkOTViNzBjNjY1NzBhMzA5ZWI1
ODEwZjI2MGVjYTIyNjM1NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ2Myw3ICs0NjMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFZlY3RvcjxpbnQ+IHggPSBz
dGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFZlY3RvcjxpbnQ+KCkgOiB0b05hdGl2
ZUFycmF5PGludD4oc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgVmVj
dG9yPGludD4geCA9IHRvTmF0aXZlQXJyYXk8aW50PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDAp
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLmZ1bmMoeCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>