<?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>158942</bug_id>
          
          <creation_ts>2016-06-20 10:04:21 -0700</creation_ts>
          <short_desc>[GTK] Add support for variadic parameters to GObject DOM bindings</short_desc>
          <delta_ts>2016-06-22 01:59:53 -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>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>158529</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nael Ouedraogo">nael.ouedp</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>nael.ouedp</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1203768</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-06-20 10:04:21 -0700</bug_when>
    <thetext>webkit_dom_dom_token_list_remove has disappeared from our unstable API. It&apos;s not technically a WebKit bug as this was unstable API, but it&apos;s required by Epiphany, so GNOME will be stuck on old WebKit until this gets sorted out.

I&apos;ve attempted to track which commit is to blame with a quick wiki search for &quot;DOMTokenList&quot; but couldn&apos;t find any suspicious commit. The change is quite recent (since 2.13.1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203773</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-20 10:14:35 -0700</bug_when>
    <thetext>Chris, any idea why this is no longer generated? I guess it&apos;s using a new idl thing that we don&apos;t support in the gobject bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203784</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-20 10:28:08 -0700</bug_when>
    <thetext>Looks like a regression from Bug 158529. Changelog says:
&quot;Functions with variadic parameters are skipped for ObjC and GObject code generators.&quot;

DOMTokenList.remove() is variadic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203785</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-20 10:31:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Looks like a regression from Bug 158529. Changelog says:
&gt; &quot;Functions with variadic parameters are skipped for ObjC and GObject code
&gt; generators.&quot;
&gt; 
&gt; DOMTokenList.remove() is variadic.

Indeed, thank you. I&apos;ll try to find some time to fix then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203867</commentid>
    <comment_count>4</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-20 13:26:39 -0700</bug_when>
    <thetext>I skipped variadic functions in Bug 158529 for GObject bindings because I thought variadic parameters were not correctly handled.

&quot;return 1 if $param-&gt;isVariadic;&quot; line from CodeGeneratorGObject.pm can be removed to restore webkit_dom_dom_token_list_remove and webkit_dom_dom_token_list_add functions. I can upload a patch if needed.

However, the generated code seems to process only the first token passed in argument of the function.

Which tests should be run to test such kinds of regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203906</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-06-20 14:41:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I skipped variadic functions in Bug 158529 for GObject bindings because I
&gt; thought variadic parameters were not correctly handled.
&gt; 
&gt; &quot;return 1 if $param-&gt;isVariadic;&quot; line from CodeGeneratorGObject.pm can be
&gt; removed to restore webkit_dom_dom_token_list_remove and
&gt; webkit_dom_dom_token_list_add functions. I can upload a patch if needed.
&gt; 
&gt; However, the generated code seems to process only the first token passed in
&gt; argument of the function.

Yeah, the generated functions were not variadic. I guess you would have to call the function once for each argument to get the desired effect. The original declaration, present in 2.12, was this:

/**
 * webkit_dom_dom_token_list_remove:
 * @self: A #WebKitDOMDOMTokenList
 * @tokens: A #gchar
 * @error: #GError
 *
 * Stability: Unstable
**/
WEBKIT_API void
webkit_dom_dom_token_list_remove(WebKitDOMDOMTokenList* self, const gchar* tokens, GError** error);

The GError parameter disappeared in trunk a month or two ago. Not a problem, it&apos;s unstable API, after all.

Of course, it would be best to generate real variadic functions, but reverting to this form would suffice for Epiphany.

&gt; Which tests should be run to test such kinds of regression?

We have GObject API break tests that would have caught this if it was stable API. We intentionally don&apos;t run the tests for the unstable API, because we don&apos;t guarantee this API will continue to exist. The problem is that we have two GNOME applications -- Epiphany and Yelp -- that are unfortunately using the unstable API, and Epiphany used this function in particular. The ideal solution would be for them to use only the stable API, but I&apos;m not sure if it&apos;s possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203907</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-06-20 14:43:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Which tests should be run to test such kinds of regression?

It&apos;s Tools/gtk/check-for-webkitdom-api-breaks, but again, it would not have caught this, because this was not stable API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204118</commentid>
    <comment_count>7</comment_count>
      <attachid>281736</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-21 06:18:52 -0700</bug_when>
    <thetext>Created attachment 281736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204120</commentid>
    <comment_count>8</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-21 06:27:04 -0700</bug_when>
    <thetext>GObject code generator is modified in uploaded patch to skip functions with variadic parameters except webkit_dom_dom_token_list_remove and webkit_dom_dom_token_list_add.

The signatures of the generated functions match signature of v2.12. A follow-up bug may be added to implement a correct support of variadics parameters in GObject bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204124</commentid>
    <comment_count>9</comment_count>
      <attachid>281736</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-21 06:49:15 -0700</bug_when>
    <thetext>Comment on attachment 281736
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:334
&gt; +            return 1 if $param-&gt;isVariadic;

In terms of style, I would do:
return 0 if ($functionName...)
Return 1 if (variadic...)

But also, can we define not-variadic add() and remove() methods only for GObject, using something like #if defined(LANGUAGE_GOBJECT)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204166</commentid>
    <comment_count>10</comment_count>
      <attachid>281753</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-21 09:20:07 -0700</bug_when>
    <thetext>Created attachment 281753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204168</commentid>
    <comment_count>11</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-21 09:27:07 -0700</bug_when>
    <thetext>Thanks Youenn for the review.

Add() and remove() functions have been defined (only for GObject) without variadic parameters in the uploaded patch as proposed in your comment. 

I checked that webkit_dom_dom_token_list_remove and webkit_dom_dom_token_list_add are correctly generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204169</commentid>
    <comment_count>12</comment_count>
      <attachid>281753</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-21 09:29:12 -0700</bug_when>
    <thetext>Comment on attachment 281753
Patch

Thanks for the patch, but the unstable API is expected to be broken so it&apos;s not a problem at all. Apps should be updated, the actual problem is that there&apos;s no replacement, so I think we should add support for variadic args to GObject bindings and update the apps to use the new API. I have a wip patch to do that, I&apos;ll submit it as soon as I finish it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204183</commentid>
    <comment_count>13</comment_count>
      <attachid>281756</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-21 09:56:43 -0700</bug_when>
    <thetext>Created attachment 281756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204351</commentid>
    <comment_count>14</comment_count>
      <attachid>281756</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-06-21 16:42:54 -0700</bug_when>
    <thetext>Comment on attachment 281756
Patch

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

&gt; Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:905
&gt; + * @...: list of #gchar ended by %NULL.

A small part of me wants to say &quot;no! you must cast the NULL pointer when using it in a variadic function call!&quot; But I know platforms where the width of NULL is not the same as the width of a pointer are never going to be able to run WebKit or maybe even GObject, so OK.

&gt; Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:922
&gt; +webkit_dom_test_obj_variadic_double_method(WebKitDOMTestObj* self, gdouble head, guint n_tail, ...);

You prefer this way to putting n_tail before head? So that you can pass 0 for n_tail and that be the final argument to the function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204440</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-21 23:00:06 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 281756 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281756&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:905
&gt; &gt; + * @...: list of #gchar ended by %NULL.
&gt; 
&gt; A small part of me wants to say &quot;no! you must cast the NULL pointer when
&gt; using it in a variadic function call!&quot; But I know platforms where the width
&gt; of NULL is not the same as the width of a pointer are never going to be able
&gt; to run WebKit or maybe even GObject, so OK.
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:922
&gt; &gt; +webkit_dom_test_obj_variadic_double_method(WebKitDOMTestObj* self, gdouble head, guint n_tail, ...);
&gt; 
&gt; You prefer this way to putting n_tail before head? So that you can pass 0
&gt; for n_tail and that be the final argument to the function?

This is generated code, we don&apos;t really know what the other parameters are, we just need to ensure ... is the last one, and in case it&apos;s not a pointer type, also include a n_params parameter to know how many params will be provided. In that case, yes, of course, n_params and ... should be together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204474</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-22 01:59:53 -0700</bug_when>
    <thetext>Committed r202328: &lt;http://trac.webkit.org/changeset/202328&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281736</attachid>
            <date>2016-06-21 06:18:52 -0700</date>
            <delta_ts>2016-06-21 09:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158942-20160621151844.patch</filename>
            <type>text/plain</type>
            <size>2536</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY2OGQ2MzNjNWZjNGVl
MWNiNDQxOWJmN2VkMjQ0YzkxMzQyN2E3MC4uM2RmMzZkZmViYzYyODZjNWQyNWViZTRiY2QyNTNj
NTA5M2Y4ZWIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA2LTIxICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbR1RL
XSBSZXN0b3JlIHdlYmtpdF9kb21fZG9tX3Rva2VuX2xpc3RfcmVtb3ZlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5NDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBSZWdyZXNzaW9uIGFmdGVy
IHIyMDE5ODg6IG1pc3NpbmcgYmluZGluZ3MgY29kZSBpbiAgV2Via2l0CisgICAgICAgIEdUSyB1
bnN0YWJsZSBBUEkuCisgICAgICAgIFJlc3RvcmVkIG1pc3NpbmcgdmFyaWFkaWMgZnVuY3Rpb25z
IGluIEdPYmplY3QgYmluZGluZ3MgY29kZS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAgICAgIChTa2lwRnVuY3Rpb24pOgorCiAyMDE2
LTA2LTIwICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBVc2Ug
dGhlIE1hdGhPcGVyYXRvciB0byBoYW5kbGUgc29tZSBub24tc3RyZXRjaHkgb3BlcmF0b3JzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JH
T2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
R09iamVjdC5wbQppbmRleCBkZjRkZGRhNTQzNDYyZDg1YWJmZjRlZDgyNTU4OWE5MzczMzA5NTJk
Li4wYWVkZjcxMmJlYzE2ZjkwYWE5OGVjMWM5ZjAwMjczMTUwZmNlNWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3Qu
cG0KQEAgLTMyMCwxNCArMzIwLDE5IEBAIHN1YiBTa2lwRnVuY3Rpb24gewogICAgICMgaG93IHRv
IGF1dG8tZ2VuZXJhdGUgY2FsbGJhY2tzLiAgU2tpcCBmdW5jdGlvbnMgdGhhdCBoYXZlICJNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyIiBvcgogICAgICMgc2VxdWVuY2U8VD4gcGFyYW1ldGVycywgYmVj
YXVzZSB0aGlzIGNvZGUgZ2VuZXJhdG9yIGRvZXNuJ3Qga25vdyBob3cgdG8gYXV0by1nZW5lcmF0
ZQogICAgICMgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciBvciBzZXF1ZW5jZTxUPi4gU2tpcCBFdmVu
dExpc3RlbmVycyBiZWNhdXNlIHRoZXkgYXJlIGhhbmRsZWQgZWxzZXdoZXJlLgotICAgICMgU2tp
cCBmdW5jdGlvbnMgdGhhdCBoYXZlIHZhcmlhZGljIHBhcmFtZXRlcnMgYmVjYXVzZSBub3Qgc3Vw
cG9ydGVkIHlldC4KKyAgICAjIFNraXAgZnVuY3Rpb25zIHRoYXQgaGF2ZSB2YXJpYWRpYyBwYXJh
bWV0ZXJzIGJlY2F1c2Ugbm90IHN1cHBvcnRlZCB5ZXQuIEV4Y2VwdCBmb3IKKyAgICAjIHdlYmtp
dF9kb21fZG9tX3Rva2VuX2xpc3RfcmVtb3ZlL2FkZCBmdW5jdGlvbnMgd2hpY2ggYXJlIHJlcXVp
cmVkIGluIEdUSyB1bnN0YWJsZSBBUEkuIFNlZSBhbHNvCisgICAgIyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4OTQyCiAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7
JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVy
YXRvci0+SXNGdW5jdGlvbk9ubHlDYWxsYmFja0ludGVyZmFjZSgkcGFyYW0tPnR5cGUpOwogICAg
ICAgICByZXR1cm4gMSBpZiAkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFtcCJ9Owog
ICAgICAgICByZXR1cm4gMSBpZiAkcGFyYW0tPnR5cGUgZXEgIk1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIiOwogICAgICAgICByZXR1cm4gMSBpZiAkcGFyYW0tPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIi
OwogICAgICAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBlKCRw
YXJhbS0+dHlwZSk7Ci0gICAgICAgIHJldHVybiAxIGlmICRwYXJhbS0+aXNWYXJpYWRpYzsKKyAg
ICAgICAgaWYgKCRmdW5jdGlvbk5hbWUgbmUgIndlYmtpdF9kb21fZG9tX3Rva2VuX2xpc3RfcmVt
b3ZlIiAmJgorICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSBuZSAid2Via2l0X2RvbV9kb21fdG9r
ZW5fbGlzdF9hZGQiKSB7CisgICAgICAgICAgICByZXR1cm4gMSBpZiAkcGFyYW0tPmlzVmFyaWFk
aWM7CisgICAgICAgIH0KICAgICB9CiAKICAgICAjIFRoaXMgaXMgZm9yIERhdGFUcmFuc2Zlckl0
ZW1MaXN0LmlkbCBhZGQoRmlsZSkgbWV0aG9kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281753</attachid>
            <date>2016-06-21 09:20:07 -0700</date>
            <delta_ts>2016-06-21 09:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158942-20160621181959.patch</filename>
            <type>text/plain</type>
            <size>2070</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY2OGQ2MzNjNWZjNGVl
MWNiNDQxOWJmN2VkMjQ0YzkxMzQyN2E3MC4uZTI5Y2VmODdmODllZmVhN2NmNmUzMWI1ZDg5MWQz
MGM0YjE3ZjIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA2LTIxICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbR1RL
XSBSZXN0b3JlIHdlYmtpdF9kb21fZG9tX3Rva2VuX2xpc3RfcmVtb3ZlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5NDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBSZWdyZXNzaW9uIGFmdGVy
IHIyMDE5ODg6IG1pc3NpbmcgYmluZGluZ3MgY29kZSBpbiBXZWJraXQgR1RLIHVuc3RhYmxlIEFQ
SS4gSURMIGRlZmluaXRpb25zIG9mIG1pc3NpbmcKKyAgICAgICAgZnVuY3Rpb25zIGNvbnRhaW4g
dmFyaWFkaWNzIHBhcmFtZXRlcnMgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBpbiBHT2JqZWN0IGJp
bmRpbmcgY29kZS4gSURMIGRlZmluaXRpb25zIGhhdmUgYmVlbgorICAgICAgICBtb2RpZmllZCAo
b25seSBmb3IgR09iamVjdCkgd2l0aG91dCB2YXJpYWRpYyBwYXJhbWV0ZXJzIHRvIHJlc3RvcmUg
dGhlIG1pc3NpbmcgZnVuY3Rpb25zLiBUaGlzIElETCBtb2RpZmljYXRpb24KKyAgICAgICAgc2hv
dWxkIGJlIHJlbW92ZWQgb25jZSB2YXJpYWRpYyBwYXJhbWV0ZXJzIGFyZSBjb3JyZWN0bHkgaGFu
ZGxlZCBpbiBHT2JqZWN0IGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yLgorCisgICAgICAgICogaHRt
bC9ET01Ub2tlbkxpc3QuaWRsOgorCiAyMDE2LTA2LTIwICBGcmVkZXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICBVc2UgdGhlIE1hdGhPcGVyYXRvciB0byBoYW5kbGUgc29t
ZSBub24tc3RyZXRjaHkgb3BlcmF0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVRva2VuTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwK
aW5kZXggM2E1YjFiYjYzMmUzMGIxZTEwYWM4ODI0YjAwN2RkN2FlODQ2NmQwNS4uZmI2YzlkNzFl
YzY1YTllODRmZGE1YmQwZWE5Njc3NzQ3Nzc0MDJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9r
ZW5MaXN0LmlkbApAQCAtMzAsOCArMzAsMTUgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERPTVN0cmluZz8gaXRlbSh1bnNpZ25lZCBs
b25nIGluZGV4KTsKICAgICBib29sZWFuIGNvbnRhaW5zKERPTVN0cmluZyB0b2tlbik7CisjaWYg
ZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSAmJiBMQU5HVUFHRV9HT0JKRUNUCisgICAgLy8gTm90
IGNvbmZvcm0gdG8gc3BlY2lmaWNhdGlvbiB0byBhdm9pZCByZWdyZXNzaW9uIGluIFdlYmtpdCBH
VEsgdW5zdGFibGUgQVBJLgorICAgIC8vIFNlZSBhbHNvIGJ1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU4OTQyLgorICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgYWRkKERPTVN0cmlu
ZyB0b2tlbik7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoRE9NU3RyaW5nIHRv
a2VuKTsKKyNlbHNlCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhZGQoRE9NU3RyaW5nLi4u
IHRva2Vucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoRE9NU3RyaW5nLi4u
IHRva2Vucyk7CisjZW5kaWYKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIHRvZ2dsZShE
T01TdHJpbmcgdG9rZW4sIG9wdGlvbmFsIGJvb2xlYW4gZm9yY2UpOwogCiAgICAgYXR0cmlidXRl
IERPTVN0cmluZyB2YWx1ZTsK
</data>
<flag name="review"
          id="305569"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281756</attachid>
            <date>2016-06-21 09:56:43 -0700</date>
            <delta_ts>2016-06-21 16:42:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkdom-variadic.diff</filename>
            <type>text/plain</type>
            <size>13912</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MmU5ZjFmLi43NDFkNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTYtMDYtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB2YXJpYWRpYyBwYXJhbWV0ZXJzIHRv
IEdPYmplY3QgRE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTg5NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBHZW5lcmF0ZSBjb2RlIGZvciBmdW5jdGlvbnMgaGF2aW5nIHZhcmlhZGlj
IHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JH
T2JqZWN0LnBtOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbik6CisgICAgICAgIChTa2lwRnVu
Y3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJp
bmdfbWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmg6CisKIDIwMTYtMDYtMjEgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSB2aWRlbyBvcmllbnRhdGlvbiBzdXBwb3J0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yR09iamVjdC5wbQppbmRleCBkZjRkZGRhLi45ZDgzNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAg
LTMyMCwxNCArMzIwLDEyIEBAIHN1YiBTa2lwRnVuY3Rpb24gewogICAgICMgaG93IHRvIGF1dG8t
Z2VuZXJhdGUgY2FsbGJhY2tzLiAgU2tpcCBmdW5jdGlvbnMgdGhhdCBoYXZlICJNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyIiBvcgogICAgICMgc2VxdWVuY2U8VD4gcGFyYW1ldGVycywgYmVjYXVzZSB0
aGlzIGNvZGUgZ2VuZXJhdG9yIGRvZXNuJ3Qga25vdyBob3cgdG8gYXV0by1nZW5lcmF0ZQogICAg
ICMgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciBvciBzZXF1ZW5jZTxUPi4gU2tpcCBFdmVudExpc3Rl
bmVycyBiZWNhdXNlIHRoZXkgYXJlIGhhbmRsZWQgZWxzZXdoZXJlLgotICAgICMgU2tpcCBmdW5j
dGlvbnMgdGhhdCBoYXZlIHZhcmlhZGljIHBhcmFtZXRlcnMgYmVjYXVzZSBub3Qgc3VwcG9ydGVk
IHlldC4KICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7
CiAgICAgICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0Z1bmN0aW9uT25seUNhbGxi
YWNrSW50ZXJmYWNlKCRwYXJhbS0+dHlwZSk7CiAgICAgICAgIHJldHVybiAxIGlmICRwYXJhbS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNsYW1wIn07CiAgICAgICAgIHJldHVybiAxIGlmICRwYXJh
bS0+dHlwZSBlcSAiTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciI7CiAgICAgICAgIHJldHVybiAxIGlm
ICRwYXJhbS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciI7CiAgICAgICAgIHJldHVybiAxIGlmICRj
b2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHBhcmFtLT50eXBlKTsKLSAgICAgICAgcmV0
dXJuIDEgaWYgJHBhcmFtLT5pc1ZhcmlhZGljOwogICAgIH0KIAogICAgICMgVGhpcyBpcyBmb3Ig
RGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsIGFkZChGaWxlKSBtZXRob2QKQEAgLTEwOTEsNiArMTA4
OSw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICBteSAkZnVuY3Rpb25TaWcgPSAiJHtj
bGFzc05hbWV9KiBzZWxmIjsKICAgICBteSAkc3ltYm9sU2lnID0gIiR7Y2xhc3NOYW1lfSoiOwog
CisgICAgbXkgJGhhc1ZhcmlhZGljID0gMDsKICAgICBteSBAY2FsbEltcGxQYXJhbXM7CiAgICAg
Zm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBt
eSAkcGFyYW1JRExUeXBlID0gJHBhcmFtLT50eXBlOwpAQCAtMTEwMCw4ICsxMDk5LDEyIEBAIHN1
YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgbXkgJGNvbnN0ID0gJHBhcmFtVHlwZSBlcSAi
Z2NoYXIqIiA/ICJjb25zdCAiIDogIiI7CiAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkcGFyYW0t
Pm5hbWU7CiAKLSAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICIsICR7Y29uc3R9JHBhcmFtVHlwZSAk
cGFyYW1OYW1lIjsKLSAgICAgICAgJHN5bWJvbFNpZyAuPSAiLCAke2NvbnN0fSRwYXJhbVR5cGUi
OworICAgICAgICBpZiAoJHBhcmFtLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICAkaGFzVmFy
aWFkaWMgPSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGZ1bmN0aW9uU2lnIC49
ICIsICR7Y29uc3R9JHBhcmFtVHlwZSAkcGFyYW1OYW1lIjsKKyAgICAgICAgICAgICRzeW1ib2xT
aWcgLj0gIiwgJHtjb25zdH0kcGFyYW1UeXBlIjsKKyAgICAgICAgfQogCiAgICAgICAgIG15ICRw
YXJhbUlzR0RPTVR5cGUgPSBJc0dET01DbGFzc1R5cGUoJHBhcmFtSURMVHlwZSk7CiAgICAgICAg
IGlmICgkcGFyYW1Jc0dET01UeXBlKSB7CkBAIC0xMTA5LDkgKzExMTIsMTAgQEAgc3ViIEdlbmVy
YXRlRnVuY3Rpb24gewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IldlYktpdERPTSR7
cGFyYW1JRExUeXBlfVByaXZhdGUuaCJ9ID0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICBpZiAoJHBhcmFtSXNHRE9NVHlwZSB8fCAoJHBhcmFtSURMVHlwZSBlcSAiRE9NU3Ry
aW5nIikpIHsKKyAgICAgICAgaWYgKCRwYXJhbUlzR0RPTVR5cGUgfHwgKCRwYXJhbUlETFR5cGUg
ZXEgIkRPTVN0cmluZyIpIHx8ICRwYXJhbS0+aXNWYXJpYWRpYykgewogICAgICAgICAgICAgJHBh
cmFtTmFtZSA9ICJjb252ZXJ0ZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJHBhcmFt
TmFtZSk7CiAgICAgICAgICAgICAkcGFyYW1OYW1lID0gIiokcGFyYW1OYW1lIiBpZiAkY29kZUdl
bmVyYXRvci0+U2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFyYW0sICRwYXJlbnROb2Rl
KTsKKyAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiV1RGTW92ZSgkcGFyYW1OYW1lKSIgaWYgJHBh
cmFtLT5pc1ZhcmlhZGljOwogICAgICAgICB9CiAgICAgICAgIGlmICgkcGFyYW1JRExUeXBlIGVx
ICJOb2RlRmlsdGVyIiB8fCAkcGFyYW1JRExUeXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CiAg
ICAgICAgICAgICAkcGFyYW1OYW1lID0gIldURjo6Z2V0UHRyKCIgLiAkcGFyYW1OYW1lIC4gIiki
OwpAQCAtMTEzMCw2ICsxMTM0LDE3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAkZnVu
Y3Rpb25TaWcgLj0gIiwgR0Vycm9yKiogZXJyb3IiIGlmICRyYWlzZXNFeGNlcHRpb24gfHwgJHVz
ZWRUb1JhaXNlRXhjZXB0aW9uOwogICAgICRzeW1ib2xTaWcgLj0gIiwgR0Vycm9yKioiIGlmICRy
YWlzZXNFeGNlcHRpb24gfHwgJHVzZWRUb1JhaXNlRXhjZXB0aW9uOwogCisgICAgaWYgKCRoYXNW
YXJpYWRpYykgeworICAgICAgICBteSAkcGFyYW0gPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc31b
LTFdOworICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzTm9uUG9pbnRlclR5cGUoJHBhcmFt
LT50eXBlKSkgeworICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKKyAg
ICAgICAgICAgICRmdW5jdGlvblNpZyAuPSAiLCBndWludCBuXyRwYXJhbU5hbWUiOworICAgICAg
ICAgICAgJHN5bWJvbFNpZyAuPSAiLCBndWludCI7CisgICAgICAgIH0KKyAgICAgICAgJGZ1bmN0
aW9uU2lnIC49ICIsIC4uLiI7CisgICAgICAgICRzeW1ib2xTaWcgLj0gIiwgLi4uIjsKKyAgICB9
CisKICAgICBteSAkc3ltYm9sID0gIiRyZXR1cm5UeXBlICRmdW5jdGlvbk5hbWUoJHN5bWJvbFNp
ZykiOwogICAgIG15ICRpc1N0YWJsZUNsYXNzID0gc2NhbGFyKEBzdGFibGVTeW1ib2xzKTsKICAg
ICBteSAoJHN0YWJsZVN5bWJvbCkgPSBncmVwIHskXyA9fiAvXlxRJHN5bWJvbC99IEBzdGFibGVT
eW1ib2xzOwpAQCAtMTE0Niw2ICsxMTYxLDkgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAg
IHB1c2goQGZ1bmN0aW9uSGVhZGVyLCAiICogXEBzZWxmOiBBICMke2NsYXNzTmFtZX0iKTsKIAog
ICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAg
ICAgaWYgKCRwYXJhbS0+aXNWYXJpYWRpYykgeworICAgICAgICAgICAgbGFzdDsKKyAgICAgICAg
fQogICAgICAgICBteSAkcGFyYW1JRExUeXBlID0gJHBhcmFtLT50eXBlOwogICAgICAgICBteSAk
YXJyYXlPclNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheU9yU2VxdWVuY2VU
eXBlKCRwYXJhbUlETFR5cGUpOwogICAgICAgICAkcGFyYW1JRExUeXBlID0gJGFycmF5T3JTZXF1
ZW5jZVR5cGUgaWYgJGFycmF5T3JTZXF1ZW5jZVR5cGUgbmUgIiI7CkBAIC0xMTYwLDYgKzExNzgs
MTggQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAgICAgICBwdXNoKEBmdW5jdGlvbkhlYWRl
ciwgIiAqIFxAJHtwYXJhbU5hbWV9OiR7cGFyYW1Bbm5vdGF0aW9uc30gQSAjJHtwYXJhbVR5cGV9
Iik7CiAgICAgfQogICAgIHB1c2goQGZ1bmN0aW9uSGVhZGVyLCAiICogXEBlcnJvcjogI0dFcnJv
ciIpIGlmICRyYWlzZXNFeGNlcHRpb24gfHwgJHVzZWRUb1JhaXNlRXhjZXB0aW9uOworICAgIGlm
ICgkaGFzVmFyaWFkaWMpIHsKKyAgICAgICAgbXkgJHBhcmFtID0gQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9Wy0xXTsKKyAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKKyAgICAg
ICAgbXkgJHBhcmFtVHlwZSA9IEdldEdsaWJUeXBlTmFtZSgkcGFyYW0tPnR5cGUpOworICAgICAg
ICAkcGFyYW1UeXBlID1+IHMvXCokLy87CisgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNO
b25Qb2ludGVyVHlwZSgkcGFyYW0tPnR5cGUpKSB7CisgICAgICAgICAgICBwdXNoKEBmdW5jdGlv
bkhlYWRlciwgIiAqIFxAbl8ke3BhcmFtTmFtZX06IG51bWJlciBvZiAke3BhcmFtTmFtZX0gdGhh
dCB3aWxsIGJlIHBhc3NlZCIpOworICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25IZWFkZXIsICIg
KiBcQC4uLjogbGlzdCBvZiAjJHtwYXJhbVR5cGV9Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBwdXNoKEBmdW5jdGlvbkhlYWRlciwgIiAqIFxALi4uOiBsaXN0IG9mICMke3BhcmFt
VHlwZX0gZW5kZWQgYnkgJU5VTEwuIik7CisgICAgICAgIH0KKyAgICB9CiAgICAgcHVzaChAZnVu
Y3Rpb25IZWFkZXIsICIgKiIpOwogICAgIG15ICRyZXR1cm5UeXBlTmFtZSA9ICRyZXR1cm5UeXBl
OwogICAgIG15ICRoYXNSZXR1cm5UYWcgPSAwOwpAQCAtMTIwNyw3ICsxMjM3LDcgQEAgc3ViIEdl
bmVyYXRlRnVuY3Rpb24gewogICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOwog
ICAgICAgICBteSAkcGFyYW1JRExUeXBlID0gJHBhcmFtLT50eXBlOwogICAgICAgICBteSAkcGFy
YW1UeXBlSXNQb2ludGVyID0gISRjb2RlR2VuZXJhdG9yLT5Jc05vblBvaW50ZXJUeXBlKCRwYXJh
bUlETFR5cGUpOwotICAgICAgICBpZiAoJHBhcmFtVHlwZUlzUG9pbnRlcikgeworICAgICAgICBp
ZiAoJHBhcmFtVHlwZUlzUG9pbnRlciAmJiAhJHBhcmFtLT5pc1ZhcmlhZGljKSB7CiAgICAgICAg
ICAgICAkZ1JldHVybk1hY3JvID0gR2V0R1JldHVybk1hY3JvKCRwYXJhbU5hbWUsICRwYXJhbUlE
TFR5cGUsICRyZXR1cm5UeXBlLCAkZnVuY3Rpb25OYW1lKTsKICAgICAgICAgICAgIHB1c2goQGNC
b2R5LCAkZ1JldHVybk1hY3JvKTsKICAgICAgICAgfQpAQCAtMTIyNCwyMCArMTI1NCw1NCBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgcHVzaChAY0JvZHksICIgICAgV2ViQ29yZTo6JHtp
bnRlcmZhY2VOYW1lfSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTtcbiIpOwogCiAgICAgJHJl
dHVyblBhcmFtTmFtZSA9ICIiOworICAgIG15ICRjdXJyZW50UGFyYW1ldGVySW5kZXggPSAwOwog
ICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAg
ICAgbXkgJHBhcmFtSURMVHlwZSA9ICRwYXJhbS0+dHlwZTsKICAgICAgICAgbXkgJHBhcmFtTmFt
ZSA9ICRwYXJhbS0+bmFtZTsKLQorICAgICAgICBteSAkcGFyYW1UeXBlID0gR2V0R2xpYlR5cGVO
YW1lKCRwYXJhbUlETFR5cGUpOwogICAgICAgICBteSAkcGFyYW1Jc0dET01UeXBlID0gSXNHRE9N
Q2xhc3NUeXBlKCRwYXJhbUlETFR5cGUpOwotICAgICAgICAkY29udmVydGVkUGFyYW1OYW1lID0g
ImNvbnZlcnRlZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkcGFyYW1OYW1lKTsKKyAg
ICAgICAgbXkgJHBhcmFtVHlwZUlzUG9pbnRlciA9ICEkY29kZUdlbmVyYXRvci0+SXNOb25Qb2lu
dGVyVHlwZSgkcGFyYW1JRExUeXBlKTsKKyAgICAgICAgbXkgJGNvbnZlcnRlZFBhcmFtTmFtZSA9
ICJjb252ZXJ0ZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJHBhcmFtTmFtZSk7CisK
KyAgICAgICAgbXkgJHBhcmFtQ29yZVR5cGUgPSAkcGFyYW1UeXBlOworICAgICAgICBteSAkcGFy
YW1Db252ZXJzaW9uRnVuY3Rpb24gPSAiIjsKICAgICAgICAgaWYgKCRwYXJhbUlETFR5cGUgZXEg
IkRPTVN0cmluZyIpIHsKLSAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIFdURjo6U3RyaW5n
ICR7Y29udmVydGVkUGFyYW1OYW1lfSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCgkcGFyYW1OYW1l
KTtcbiIpOworICAgICAgICAgICAgJHBhcmFtQ29yZVR5cGUgPSAiV1RGOjpTdHJpbmciOworICAg
ICAgICAgICAgJHBhcmFtQ29udmVyc2lvbkZ1bmN0aW9uID0gIldURjo6U3RyaW5nOjpmcm9tVVRG
OCI7CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbUlETFR5cGUgZXEgIk5vZGVGaWx0ZXIiIHx8ICRw
YXJhbUlETFR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKLSAgICAgICAgICAgIHB1c2goQGNC
b2R5LCAiICAgIFJlZlB0cjxXZWJDb3JlOjokcGFyYW1JRExUeXBlPiAke2NvbnZlcnRlZFBhcmFt
TmFtZX0gPSBXZWJLaXQ6OmNvcmUoJHBhcmFtTmFtZSk7XG4iKTsKKyAgICAgICAgICAgICRwYXJh
bUNvcmVUeXBlID0gIlJlZlB0cjxXZWJDb3JlOjokcGFyYW1JRExUeXBlPiI7CisgICAgICAgICAg
ICAkcGFyYW1Db252ZXJzaW9uRnVuY3Rpb24gPSAiV2ViS2l0Ojpjb3JlIgogICAgICAgICB9IGVs
c2lmICgkcGFyYW1Jc0dET01UeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBX
ZWJDb3JlOjoke3BhcmFtSURMVHlwZX0qICR7Y29udmVydGVkUGFyYW1OYW1lfSA9IFdlYktpdDo6
Y29yZSgkcGFyYW1OYW1lKTtcbiIpOworICAgICAgICAgICAgJHBhcmFtQ29yZVR5cGUgPSAiV2Vi
Q29yZTo6JHtwYXJhbUlETFR5cGV9KiI7CisgICAgICAgICAgICAkcGFyYW1Db252ZXJzaW9uRnVu
Y3Rpb24gPSAiV2ViS2l0Ojpjb3JlIgorICAgICAgICB9CisKKyAgICAgICAgaWYgKCRwYXJhbS0+
aXNWYXJpYWRpYykgeworICAgICAgICAgICAgbXkgJHByZXZpb3VzUGFyYW1OYW1lOworICAgICAg
ICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAkcHJldmlvdXNQ
YXJhbU5hbWUgPSAiZXJyb3IiOworICAgICAgICAgICAgfSBlbHNpZiAoJGN1cnJlbnRQYXJhbWV0
ZXJJbmRleCA9PSAwKSB7CisgICAgICAgICAgICAgICAgJHByZXZpb3VzUGFyYW1OYW1lID0gInNl
bGYiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkcHJldmlvdXNQYXJh
bU5hbWUgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc31bJGN1cnJlbnRQYXJhbWV0ZXJJbmRleCAt
IDFdLT5uYW1lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAg
dmFfbGlzdCB2YXJpYWRpY1BhcmFtZXRlckxpc3Q7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNC
b2R5LCAiICAgIFZlY3RvcjwkcGFyYW1Db3JlVHlwZT4gJGNvbnZlcnRlZFBhcmFtTmFtZTtcbiIp
OworICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgdmFfc3RhcnQodmFyaWFkaWNQYXJhbWV0
ZXJMaXN0LCAkcHJldmlvdXNQYXJhbU5hbWUpO1xuIik7CisgICAgICAgICAgICBpZiAoJHBhcmFt
VHlwZUlzUG9pbnRlcikgeworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHdoaWxl
ICgkcGFyYW1UeXBlIHZhcmlhZGljUGFyYW1ldGVyID0gdmFfYXJnKHZhcmlhZGljUGFyYW1ldGVy
TGlzdCwgJHBhcmFtVHlwZSkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAg
ICAgICAgJHtjb252ZXJ0ZWRQYXJhbU5hbWV9LmFwcGVuZCgke3BhcmFtQ29udmVyc2lvbkZ1bmN0
aW9ufSh2YXJpYWRpY1BhcmFtZXRlcikpO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgICR7Y29udmVydGVkUGFyYW1OYW1lfS5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG5fJHBhcmFtTmFtZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBjQm9keSwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbl8kcGFyYW1OYW1lOyAr
K2kpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgICAgICAke2NvbnZl
cnRlZFBhcmFtTmFtZX0udW5jaGVja2VkQXBwZW5kKHZhX2FyZyh2YXJpYWRpY1BhcmFtZXRlckxp
c3QsICRwYXJhbVR5cGUpKTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChA
Y0JvZHksICIgICAgdmFfZW5kKHZhcmlhZGljUGFyYW1ldGVyTGlzdCk7XG4iKTsKKyAgICAgICAg
fSBlbHNpZiAoJHBhcmFtQ29yZVR5cGUgbmUgJHBhcmFtVHlwZSkgeworICAgICAgICAgICAgcHVz
aChAY0JvZHksICIgICAgJHBhcmFtQ29yZVR5cGUgJGNvbnZlcnRlZFBhcmFtTmFtZSA9ICR7cGFy
YW1Db252ZXJzaW9uRnVuY3Rpb259KCRwYXJhbU5hbWUpO1xuIik7CiAgICAgICAgIH0KICAgICAg
ICAgJHJldHVyblBhcmFtTmFtZSA9ICRjb252ZXJ0ZWRQYXJhbU5hbWUgaWYgJHBhcmFtLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUmV0dXJuIn07CisgICAgICAgICRjdXJyZW50UGFyYW1l
dGVySW5kZXgrKzsKICAgICB9CiAKICAgICBteSAkYXNzaWduID0gIiI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPYmouY3BwCmluZGV4IGUyNTU4YzguLjM4ZTQ0N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NRGljdGlvbmFyeVByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRET01Ob2RlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRET01TVkdQb2ludFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01UZXN0
RGljdGlvbmFyeVByaXZhdGUuaCIKQEAgLTE5OTEsNiArMTk5Miw1MyBAQCBnYm9vbGVhbiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3N0cmljdF9mdW5jdGlvbl93aXRoX2FycmF5KFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3ZhcmlhZGljX3N0cmluZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3Qg
Z2NoYXIqIGhlYWQsIC4uLikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYp
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGhlYWQpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkSGVhZCA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOChoZWFkKTsKKyAgICB2YV9saXN0IHZhcmlhZGljUGFyYW1l
dGVyTGlzdDsKKyAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGNvbnZlcnRlZFRhaWw7CisgICAgdmFf
c3RhcnQodmFyaWFkaWNQYXJhbWV0ZXJMaXN0LCBoZWFkKTsKKyAgICB3aGlsZSAoZ2NoYXIqIHZh
cmlhZGljUGFyYW1ldGVyID0gdmFfYXJnKHZhcmlhZGljUGFyYW1ldGVyTGlzdCwgZ2NoYXIqKSkK
KyAgICAgICAgY29udmVydGVkVGFpbC5hcHBlbmQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhcmlh
ZGljUGFyYW1ldGVyKSk7CisgICAgdmFfZW5kKHZhcmlhZGljUGFyYW1ldGVyTGlzdCk7CisgICAg
aXRlbS0+dmFyaWFkaWNTdHJpbmdNZXRob2QoY29udmVydGVkSGVhZCwgV1RGTW92ZShjb252ZXJ0
ZWRUYWlsKSk7Cit9CisKK3ZvaWQgd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19kb3VibGVf
bWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdkb3VibGUgaGVhZCwgZ3VpbnQgbl90YWls
LCAuLi4pCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICB2YV9saXN0IHZh
cmlhZGljUGFyYW1ldGVyTGlzdDsKKyAgICBWZWN0b3I8Z2RvdWJsZT4gY29udmVydGVkVGFpbDsK
KyAgICB2YV9zdGFydCh2YXJpYWRpY1BhcmFtZXRlckxpc3QsIGhlYWQpOworICAgIGNvbnZlcnRl
ZFRhaWwucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuX3RhaWwpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBuX3RhaWw7ICsraSkgeworICAgICAgICBjb252ZXJ0ZWRUYWlsLnVuY2hlY2tl
ZEFwcGVuZCh2YV9hcmcodmFyaWFkaWNQYXJhbWV0ZXJMaXN0LCBnZG91YmxlKSk7CisgICAgdmFf
ZW5kKHZhcmlhZGljUGFyYW1ldGVyTGlzdCk7CisgICAgaXRlbS0+dmFyaWFkaWNEb3VibGVNZXRo
b2QoaGVhZCwgV1RGTW92ZShjb252ZXJ0ZWRUYWlsKSk7Cit9CisKK3ZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial92YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJL
aXRET01Ob2RlKiBoZWFkLCAuLi4pCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihz
ZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX05PREUoaGVhZCkpOwor
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2Vi
Q29yZTo6Tm9kZSogY29udmVydGVkSGVhZCA9IFdlYktpdDo6Y29yZShoZWFkKTsKKyAgICB2YV9s
aXN0IHZhcmlhZGljUGFyYW1ldGVyTGlzdDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6Tm9kZSo+IGNv
bnZlcnRlZFRhaWw7CisgICAgdmFfc3RhcnQodmFyaWFkaWNQYXJhbWV0ZXJMaXN0LCBoZWFkKTsK
KyAgICB3aGlsZSAoV2ViS2l0RE9NTm9kZSogdmFyaWFkaWNQYXJhbWV0ZXIgPSB2YV9hcmcodmFy
aWFkaWNQYXJhbWV0ZXJMaXN0LCBXZWJLaXRET01Ob2RlKikpCisgICAgICAgIGNvbnZlcnRlZFRh
aWwuYXBwZW5kKFdlYktpdDo6Y29yZSh2YXJpYWRpY1BhcmFtZXRlcikpOworICAgIHZhX2VuZCh2
YXJpYWRpY1BhcmFtZXRlckxpc3QpOworICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhvZCgqY29u
dmVydGVkSGVhZCwgV1RGTW92ZShjb252ZXJ0ZWRUYWlsKSk7Cit9CisKIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X29ial9hbnkoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2Zsb2F0IGEsIGdsb25nIGIp
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE9iai5oCmluZGV4IDhiMDU2NjIuLjgwOGZjODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RP
YmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLmgKQEAgLTg5OSw2ICs4OTksNDAgQEAgV0VCS0lUX0FQSSBnYm9vbGVh
bgogd2Via2l0X2RvbV90ZXN0X29ial9zdHJpY3RfZnVuY3Rpb25fd2l0aF9hcnJheShXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcsIGdsb25nIGFycmF5LCBH
RXJyb3IqKiBlcnJvcik7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19z
dHJpbmdfbWV0aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBoZWFkOiBB
ICNnY2hhcgorICogQC4uLjogbGlzdCBvZiAjZ2NoYXIgZW5kZWQgYnkgJU5VTEwuCisgKgorICog
U3RhYmlsaXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVz
dF9vYmpfdmFyaWFkaWNfc3RyaW5nX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25z
dCBnY2hhciogaGVhZCwgLi4uKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Zhcmlh
ZGljX2RvdWJsZV9tZXRob2Q6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGhl
YWQ6IEEgI2dkb3VibGUKKyAqIEBuX3RhaWw6IG51bWJlciBvZiB0YWlsIHRoYXQgd2lsbCBiZSBw
YXNzZWQKKyAqIEAuLi46IGxpc3Qgb2YgI2dkb3VibGUKKyAqCisgKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19k
b3VibGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdkb3VibGUgaGVhZCwgZ3VpbnQg
bl90YWlsLCAuLi4pOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfbm9k
ZV9tZXRob2Q6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGhlYWQ6IEEgI1dl
YktpdERPTU5vZGUKKyAqIEAuLi46IGxpc3Qgb2YgI1dlYktpdERPTU5vZGUgZW5kZWQgYnkgJU5V
TEwuCisgKgorICogU3RhYmlsaXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfbm9kZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgV2ViS2l0RE9NTm9kZSogaGVhZCwgLi4uKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2FueToKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCiAgKiBAYTogQSAjZ2Zs
b2F0Cg==
</data>
<flag name="review"
          id="305574"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>