<?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>223646</bug_id>
          
          <creation_ts>2021-03-23 10:39:01 -0700</creation_ts>
          <short_desc>[GTK][WPE] JSC crashes if a function expects a parameter but doesn&apos;t receive any</short_desc>
          <delta_ts>2021-03-25 07:36:47 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alberto Garcia">berto</reporter>
          <assigned_to name="Carlos Garcia Campos">cgarcia</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1742905</commentid>
    <comment_count>0</comment_count>
      <attachid>424039</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-23 10:39:01 -0700</bug_when>
    <thetext>Created attachment 424039
Test case

The attached test case uses the JSC API to create a function named &quot;foo()&quot; that receives a parameter of type JSCValue:

    	jsc_value_new_function(ctx,
    		&quot;foo&quot;,
                G_CALLBACK(foo_cb),
                NULL,            // user_data
    		NULL,            // destroy_notify
    		G_TYPE_NONE,     // return_type
    		1,               // n_params
                JSC_TYPE_VALUE)

The callback foo_cb() simply prints the value to the standard output, you can see it with ./test &apos;foo(4)&apos; or ./test &apos;foo(&quot;Hello world&quot;)&apos;

However if you call foo() without any parameters the process crashes before foo_cb() even gets called.

   GLib-GObject:ERROR:../../../gobject/gclosure.c:1169:value_to_ffi_type: assertion failed: (type != G_TYPE_INVALID)
   Aborted

This should produce an exception that the program can handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743293</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-03-24 06:54:24 -0700</bug_when>
    <thetext>We need to fix the crash, but I don&apos;t think we should throw a exception, it should just receive undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743296</commentid>
    <comment_count>2</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-24 07:05:11 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #1)
&gt; We need to fix the crash, but I don&apos;t think we should throw a exception, it
&gt; should just receive undefined.

I had a patch half done which would raise TypeError. I don&apos;t know if we
can reliably pass “undefined” to C functions... What would “undefined”
be e.g. for an “int32_t” or a “char*”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743303</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-03-24 07:26:33 -0700</bug_when>
    <thetext>We would pass undefined for the case of parameters expecting JSCValue, otherwise we will throw an exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743371</commentid>
    <comment_count>4</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-24 10:08:20 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; We would pass undefined for the case of parameters expecting JSCValue,
&gt; otherwise we will throw an exception.

This sounds perfect to me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743743</commentid>
    <comment_count>5</comment_count>
      <attachid>424236</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-03-25 05:38:02 -0700</bug_when>
    <thetext>Created attachment 424236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743766</commentid>
    <comment_count>6</comment_count>
      <attachid>424236</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-25 07:29:09 -0700</bug_when>
    <thetext>Comment on attachment 424236
Patch

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

&gt; Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:131
&gt; +            jscContextJSValueToGValue(context.get(), argumentIndex &lt; argumentCount ? arguments[argumentIndex] : JSValueMakeUndefined(jsContext),

This is calling JSValueMakeUndefined() for each missing parameter. I suppose it&apos;s fast
anyway because “undefined” is a singleton.

We could use two loops, one for the parameters which were passed to the function call,
and a second one for the missing parameters, and call JSMakeUndefined only once. That
would also allow the conditional with the ternary operator in each iteration of the
loop 🤔️

&gt; Source/JavaScriptCore/API/glib/JSCContext.cpp:465
&gt; +static gpointer jscContextJSValueToWrappedObject(JSCContext* context, JSValueRef jsValue)

static inline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743767</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-03-25 07:36:29 -0700</bug_when>
    <thetext>Committed r275031 (235752@main): &lt;https://commits.webkit.org/235752@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743768</commentid>
    <comment_count>8</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-25 07:36:47 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #6)
&gt; Comment on attachment 424236 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424236&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:131
&gt; &gt; +            jscContextJSValueToGValue(context.get(), argumentIndex &lt; argumentCount ? arguments[argumentIndex] : JSValueMakeUndefined(jsContext),
&gt; 
&gt; This is calling JSValueMakeUndefined() for each missing parameter. I suppose
&gt; it&apos;s fast
&gt; anyway because “undefined” is a singleton.
&gt; 
&gt; We could use two loops, one for the parameters which were passed to the
&gt; function call,
&gt; and a second one for the missing parameters, and call JSMakeUndefined only
&gt; once. That
&gt; would also allow the conditional with the ternary operator in each iteration
&gt; of the
&gt; loop 🤔️
&gt; 
&gt; &gt; Source/JavaScriptCore/API/glib/JSCContext.cpp:465
&gt; &gt; +static gpointer jscContextJSValueToWrappedObject(JSCContext* context, JSValueRef jsValue)
&gt; 
&gt; static inline?

Forgot to say in the overall comment, to be clear: let&apos;s merge this
as-is, because anyway it is not worth it to optimize without profiling;
I was only throwing ideas around :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>424039</attachid>
            <date>2021-03-23 10:39:01 -0700</date>
            <delta_ts>2021-03-23 10:39:01 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>test.c</filename>
            <type>text/x-csrc</type>
            <size>905</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">CiNpbmNsdWRlIDxqc2MvanNjLmg+CiNpbmNsdWRlIDxnbGliLmg+CiNpbmNsdWRlIDxzdGRpby5o
PgoKc3RhdGljIHZvaWQKZm9vX2NiIChKU0NWYWx1ZSAqdmFsKQp7CiAgICBwcmludGYoIiVzXG4i
LCBqc2NfdmFsdWVfdG9fanNvbih2YWwsIDApKTsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KQp7CiAgICBpZiAoYXJnYyAhPSAyKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJV
c2FnZTogdGVzdCA8anMtY29kZT5cbiIpOwogICAgICAgIHJldHVybiAxOwogICAgfQogICAgSlND
Q29udGV4dCAqY3R4ID0ganNjX2NvbnRleHRfbmV3KCk7CiAgICBKU0NWYWx1ZSAqZm9vX2ZuID0K
ICAgIAlqc2NfdmFsdWVfbmV3X2Z1bmN0aW9uKGN0eCwKICAgIAkJImZvbyIsCiAgICAgICAgICAg
ICAgICBHX0NBTExCQUNLKGZvb19jYiksCiAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAg
IC8vIHVzZXJfZGF0YQogICAgCQlOVUxMLCAgICAgICAgICAgIC8vIGRlc3Ryb3lfbm90aWZ5CiAg
ICAJCUdfVFlQRV9OT05FLCAgICAgLy8gcmV0dXJuX3R5cGUKICAgIAkJMSwgICAgICAgICAgICAg
ICAvLyBuX3BhcmFtcwogICAgICAgICAgICAgICAgSlNDX1RZUEVfVkFMVUUpOwogICAganNjX2Nv
bnRleHRfc2V0X3ZhbHVlKGN0eCwgImZvbyIsIGZvb19mbik7CiAgICBKU0NWYWx1ZSAqcmVzdWx0
ID0ganNjX2NvbnRleHRfZXZhbHVhdGUgKGN0eCwgYXJndlsxXSwgLTEpOwogICAgSlNDRXhjZXB0
aW9uICpleGMgPSBqc2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGN0eCk7CiAgICBpZiAoZXhjKSB7
CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUjogJXMiLCBqc2NfZXhjZXB0aW9uX3JlcG9y
dChleGMpKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424236</attachid>
            <date>2021-03-25 05:38:02 -0700</date>
            <delta_ts>2021-03-25 07:29:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>jsc-no-param.diff</filename>
            <type>text/plain</type>
            <size>14591</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1
bmN0aW9uLmNwcAppbmRleCAyMGYxNzIyZjQ2ZTAuLjE4MDRiZmU5ZjNlOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNw
cApAQCAtMTEzLDcgKzExMyw3IEBAIEpTVmFsdWVSZWYgSlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y2Fs
bChKU0NvbnRleHRSZWYgY2FsbGVyQ29udGV4dCwgSlNPYmplY3RSZWYgdGhpCiAgICAgLy8gR0Ns
b3N1cmUgYWx3YXlzIGV4cGVjdCB0byBoYXZlIGF0IGxlYXN0IHRoZSBpbnN0YW5jZSBwYXJhbWV0
ZXIuCiAgICAgYm9vbCBhZGRJbnN0YW5jZSA9IGluc3RhbmNlIHx8IChtX3BhcmFtZXRlcnMgJiYg
bV9wYXJhbWV0ZXJzLT5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBwYXJhbWV0ZXJDb3VudCA9IG1f
cGFyYW1ldGVycyA/IHN0ZDo6bWluKG1fcGFyYW1ldGVycy0+c2l6ZSgpLCBhcmd1bWVudENvdW50
KSA6IDE7CisgICAgYXV0byBwYXJhbWV0ZXJDb3VudCA9IG1fcGFyYW1ldGVycyA/IG1fcGFyYW1l
dGVycy0+c2l6ZSgpIDogMTsKICAgICBpZiAoYWRkSW5zdGFuY2UpCiAgICAgICAgIHBhcmFtZXRl
ckNvdW50Kys7CiAgICAgYXV0byogdmFsdWVzID0gc3RhdGljX2Nhc3Q8R1ZhbHVlKj4oZ19hbGxv
Y2Eoc2l6ZW9mKEdWYWx1ZSkgKiBwYXJhbWV0ZXJDb3VudCkpOwpAQCAtMTI2LDggKzEyNiwxMSBA
QCBKU1ZhbHVlUmVmIEpTQ0NhbGxiYWNrRnVuY3Rpb246OmNhbGwoSlNDb250ZXh0UmVmIGNhbGxl
ckNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaQogICAgICAgICBmaXJzdFBhcmFtZXRlciA9IDE7CiAg
ICAgfQogICAgIGlmIChtX3BhcmFtZXRlcnMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IGZp
cnN0UGFyYW1ldGVyOyBpIDwgcGFyYW1ldGVyQ291bnQgJiYgISpleGNlcHRpb247ICsraSkKLSAg
ICAgICAgICAgIGpzY0NvbnRleHRKU1ZhbHVlVG9HVmFsdWUoY29udGV4dC5nZXQoKSwgYXJndW1l
bnRzW2kgLSBmaXJzdFBhcmFtZXRlcl0sIG1fcGFyYW1ldGVycy52YWx1ZSgpW2kgLSBmaXJzdFBh
cmFtZXRlcl0sICZ2YWx1ZXNbaV0sIGV4Y2VwdGlvbik7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBmaXJzdFBhcmFtZXRlcjsgaSA8IHBhcmFtZXRlckNvdW50ICYmICEqZXhjZXB0aW9uOyArK2kp
IHsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRJbmRleCA9IGkgLSBmaXJzdFBhcmFtZXRlcjsK
KyAgICAgICAgICAgIGpzY0NvbnRleHRKU1ZhbHVlVG9HVmFsdWUoY29udGV4dC5nZXQoKSwgYXJn
dW1lbnRJbmRleCA8IGFyZ3VtZW50Q291bnQgPyBhcmd1bWVudHNbYXJndW1lbnRJbmRleF0gOiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChqc0NvbnRleHQpLAorICAgICAgICAgICAgICAgIG1fcGFyYW1l
dGVycy52YWx1ZSgpW2FyZ3VtZW50SW5kZXhdLCAmdmFsdWVzW2ldLCBleGNlcHRpb24pOworICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byogcGFyYW1ldGVycyA9IGdfcHRyX2Fy
cmF5X25ld19mdWxsKGFyZ3VtZW50Q291bnQsIGdfb2JqZWN0X3VucmVmKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCkBAIC0xODIsMTMgKzE4NSwx
MyBAQCBKU09iamVjdFJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoSlNDb250ZXh0
UmVmIGNhbGxlckNvbnRleHQsIHNpemVfdCBhcgogICAgICAgICBnX2Nsb3N1cmVfaW52b2tlKG1f
Y2xvc3VyZS5nZXQoKSwgJnJldHVyblZhbHVlLCAxLCAmZHVtbXlWYWx1ZSwgbnVsbHB0cik7CiAg
ICAgICAgIGdfdmFsdWVfdW5zZXQoJmR1bW15VmFsdWUpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGF1dG8gcGFyYW1ldGVyQ291bnQgPSBtX3BhcmFtZXRlcnMgPyBzdGQ6Om1pbihtX3BhcmFtZXRl
cnMtPnNpemUoKSwgYXJndW1lbnRDb3VudCkgOiAxOworICAgICAgICBhdXRvIHBhcmFtZXRlckNv
dW50ID0gbV9wYXJhbWV0ZXJzID8gbV9wYXJhbWV0ZXJzLT5zaXplKCkgOiAxOwogICAgICAgICBh
dXRvKiB2YWx1ZXMgPSBzdGF0aWNfY2FzdDxHVmFsdWUqPihnX2FsbG9jYShzaXplb2YoR1ZhbHVl
KSAqIHBhcmFtZXRlckNvdW50KSk7CiAgICAgICAgIG1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZihH
VmFsdWUpICogcGFyYW1ldGVyQ291bnQpOwogCiAgICAgICAgIGlmIChtX3BhcmFtZXRlcnMpIHsK
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVyQ291bnQgJiYgISpl
eGNlcHRpb247ICsraSkKLSAgICAgICAgICAgICAgICBqc2NDb250ZXh0SlNWYWx1ZVRvR1ZhbHVl
KGNvbnRleHQuZ2V0KCksIGFyZ3VtZW50c1tpXSwgbV9wYXJhbWV0ZXJzLnZhbHVlKClbaV0sICZ2
YWx1ZXNbaV0sIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAganNjQ29udGV4dEpTVmFsdWVU
b0dWYWx1ZShjb250ZXh0LmdldCgpLCBpIDwgYXJndW1lbnRDb3VudCA/IGFyZ3VtZW50c1tpXSA6
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGpzQ29udGV4dCksIG1fcGFyYW1ldGVycy52YWx1ZSgpW2ld
LCAmdmFsdWVzW2ldLCBleGNlcHRpb24pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
YXV0byogcGFyYW1ldGVycyA9IGdfcHRyX2FycmF5X25ld19mdWxsKGFyZ3VtZW50Q291bnQsIGdf
b2JqZWN0X3VucmVmKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1l
bnRDb3VudDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCmluZGV4IGFkOGI3YTBlMDg4NC4uOTNmMmM5MTE2NjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCkBAIC00NjIsNiArNDYyLDEyIEBA
IEpTVmFsdWVSZWYganNjQ29udGV4dEdWYWx1ZVRvSlNWYWx1ZShKU0NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBKCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KHByaXYtPmpzQ29udGV4dC5nZXQoKSk7CiB9CiAKK3N0YXRpYyBncG9pbnRlciBqc2NDb250ZXh0
SlNWYWx1ZVRvV3JhcHBlZE9iamVjdChKU0NDb250ZXh0KiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpz
VmFsdWUpCit7CisgICAgYXV0byBqc09iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LT5w
cml2LT5qc0NvbnRleHQuZ2V0KCksIGpzVmFsdWUsIG51bGxwdHIpOworICAgIHJldHVybiBqc09i
amVjdCA/IGpzY0NvbnRleHRXcmFwcGVkT2JqZWN0KGNvbnRleHQsIGpzT2JqZWN0KSA6IG51bGxw
dHI7Cit9CisKIHZvaWQganNjQ29udGV4dEpTVmFsdWVUb0dWYWx1ZShKU0NDb250ZXh0KiBjb250
ZXh0LCBKU1ZhbHVlUmVmIGpzVmFsdWUsIEdUeXBlIHR5cGUsIEdWYWx1ZSogdmFsdWUsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBKU0NDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRl
eHQtPnByaXY7CkBAIC00NzIsNyArNDc4LDcgQEAgdm9pZCBqc2NDb250ZXh0SlNWYWx1ZVRvR1Zh
bHVlKEpTQ0NvbnRleHQqIGNvbnRleHQsIEpTVmFsdWVSZWYganNWYWx1ZSwgR1R5cGUgdHkKICAg
ICBhdXRvIGZ1bmRhbWVudGFsVHlwZSA9IGdfdHlwZV9mdW5kYW1lbnRhbChHX1ZBTFVFX1RZUEUo
dmFsdWUpKTsKICAgICBzd2l0Y2ggKGZ1bmRhbWVudGFsVHlwZSkgewogICAgIGNhc2UgR19UWVBF
X0lOVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBKU1ZhbHVlVG9OdW1iZXIocHJp
di0+anNDb250ZXh0LmdldCgpLCBqc1ZhbHVlLCBleGNlcHRpb24pKTsKKyAgICAgICAgZ192YWx1
ZV9zZXRfaW50KHZhbHVlLCBKU0M6OnRvSW50MzIoSlNWYWx1ZVRvTnVtYmVyKHByaXYtPmpzQ29u
dGV4dC5nZXQoKSwganNWYWx1ZSwgZXhjZXB0aW9uKSkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEdfVFlQRV9GTE9BVDoKICAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQodmFsdWUsIEpTVmFs
dWVUb051bWJlcihwcml2LT5qc0NvbnRleHQuZ2V0KCksIGpzVmFsdWUsIGV4Y2VwdGlvbikpOwpA
QCAtNDk2LDU2ICs1MDIsNTAgQEAgdm9pZCBqc2NDb250ZXh0SlNWYWx1ZVRvR1ZhbHVlKEpTQ0Nv
bnRleHQqIGNvbnRleHQsIEpTVmFsdWVSZWYganNWYWx1ZSwgR1R5cGUgdHkKICAgICAgICAgICAg
IGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgR19UWVBFX0NIQVI6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3NjaGFyKHZhbHVlLCBKU1Zh
bHVlVG9OdW1iZXIocHJpdi0+anNDb250ZXh0LmdldCgpLCBqc1ZhbHVlLCBleGNlcHRpb24pKTsK
KyAgICAgICAgZ192YWx1ZV9zZXRfc2NoYXIodmFsdWUsIEpTQzo6dG9JbnQzMihKU1ZhbHVlVG9O
dW1iZXIocHJpdi0+anNDb250ZXh0LmdldCgpLCBqc1ZhbHVlLCBleGNlcHRpb24pKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgR19UWVBFX1VDSEFSOgotICAgICAgICBnX3ZhbHVlX3NldF91
Y2hhcih2YWx1ZSwgSlNWYWx1ZVRvTnVtYmVyKHByaXYtPmpzQ29udGV4dC5nZXQoKSwganNWYWx1
ZSwgZXhjZXB0aW9uKSk7CisgICAgICAgIGdfdmFsdWVfc2V0X3VjaGFyKHZhbHVlLCBKU0M6OnRv
VUludDMyKEpTVmFsdWVUb051bWJlcihwcml2LT5qc0NvbnRleHQuZ2V0KCksIGpzVmFsdWUsIGV4
Y2VwdGlvbikpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHX1RZUEVfVUlOVDoKLSAgICAg
ICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgSlNWYWx1ZVRvTnVtYmVyKHByaXYtPmpzQ29udGV4
dC5nZXQoKSwganNWYWx1ZSwgZXhjZXB0aW9uKSk7CisgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQo
dmFsdWUsIEpTQzo6dG9VSW50MzIoSlNWYWx1ZVRvTnVtYmVyKHByaXYtPmpzQ29udGV4dC5nZXQo
KSwganNWYWx1ZSwgZXhjZXB0aW9uKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfVFlQ
RV9QT0lOVEVSOgogICAgIGNhc2UgR19UWVBFX09CSkVDVDoKICAgICBjYXNlIEdfVFlQRV9CT1hF
RDogewotICAgICAgICBncG9pbnRlciB3cmFwcGVkT2JqZWN0ID0gbnVsbHB0cjsKKyAgICAgICAg
Z3BvaW50ZXIgd3JhcHBlZE9iamVjdCA9IGpzY0NvbnRleHRKU1ZhbHVlVG9XcmFwcGVkT2JqZWN0
KGNvbnRleHQsIGpzVmFsdWUpOwogCi0gICAgICAgIGlmICghSlNWYWx1ZUlzTnVsbChwcml2LT5q
c0NvbnRleHQuZ2V0KCksIGpzVmFsdWUpKSB7Ci0gICAgICAgICAgICBhdXRvIGpzT2JqZWN0ID0g
SlNWYWx1ZVRvT2JqZWN0KHByaXYtPmpzQ29udGV4dC5nZXQoKSwganNWYWx1ZSwgZXhjZXB0aW9u
KTsKLSAgICAgICAgICAgIGlmICgqZXhjZXB0aW9uKQorICAgICAgICBpZiAoIXdyYXBwZWRPYmpl
Y3QpIHsKKyAgICAgICAgICAgIGlmIChnX3R5cGVfaXNfYShHX1ZBTFVFX1RZUEUodmFsdWUpLCBK
U0NfVFlQRV9WQUxVRSkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGpzY1ZhbHVlID0ganNjQ29u
dGV4dEdldE9yQ3JlYXRlVmFsdWUoY29udGV4dCwganNWYWx1ZSk7CisgICAgICAgICAgICAgICAg
Z192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBqc2NWYWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB3cmFwcGVkT2JqZWN0ID0g
anNjQ29udGV4dFdyYXBwZWRPYmplY3QoY29udGV4dCwganNPYmplY3QpOwotICAgICAgICAgICAg
aWYgKCF3cmFwcGVkT2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdfdHlwZV9pc19hKEdf
VkFMVUVfVFlQRSh2YWx1ZSksIEpTQ19UWVBFX1ZBTFVFKSkgewotICAgICAgICAgICAgICAgICAg
ICBhdXRvIGpzY1ZhbHVlID0ganNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoY29udGV4dCwganNW
YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwganNj
VmFsdWUuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGdfdHlwZV9pc19hKEdfVkFMVUVfVFlQRSh2YWx1
ZSksIEpTQ19UWVBFX0VYQ0VQVElPTikpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBleGNl
cHRpb24gPSBqc2NFeGNlcHRpb25DcmVhdGUoY29udGV4dCwganNWYWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgZXhjZXB0aW9uLmdldCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGlmIChnX3R5cGVfaXNfYShHX1ZBTFVFX1RZUEUodmFsdWUpLCBHX1RZUEVfUFRSX0FS
UkFZKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGdBcnJheSA9IGpzY0NvbnRleHRKU0Fy
cmF5VG9HQXJyYXkoY29udGV4dCwganNWYWx1ZSwgZXhjZXB0aW9uKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCEqZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgZ192YWx1ZV90
YWtlX2JveGVkKHZhbHVlLCBnQXJyYXkubGVha1JlZigpKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChnX3R5cGVf
aXNfYShHX1ZBTFVFX1RZUEUodmFsdWUpLCBHX1RZUEVfU1RSVikpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byBzdHJ2ID0ganNjQ29udGV4dEpTQXJyYXlUb0dTdHJ2KGNvbnRleHQsIGpzVmFs
dWUsIGV4Y2VwdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKmV4Y2VwdGlvbikKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdfdmFsdWVfdGFrZV9ib3hlZCh2YWx1ZSwgc3Rydi5yZWxl
YXNlKCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgImludmFsaWQgcG9pbnRlciB0eXBlIl9zKSk7CisgICAgICAgICAgICBp
ZiAoZ190eXBlX2lzX2EoR19WQUxVRV9UWVBFKHZhbHVlKSwgSlNDX1RZUEVfRVhDRVBUSU9OKSkg
eworICAgICAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uID0ganNjRXhjZXB0aW9uQ3JlYXRlKGNv
bnRleHQsIGpzVmFsdWUpOworICAgICAgICAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1
ZSwgZXhjZXB0aW9uLmdldCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChnX3R5cGVfaXNfYShHX1ZBTFVFX1RZUEUodmFsdWUpLCBH
X1RZUEVfUFRSX0FSUkFZKSkgeworICAgICAgICAgICAgICAgIGF1dG8gZ0FycmF5ID0ganNjQ29u
dGV4dEpTQXJyYXlUb0dBcnJheShjb250ZXh0LCBqc1ZhbHVlLCBleGNlcHRpb24pOworICAgICAg
ICAgICAgICAgIGlmICghKmV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICAgICAgZ192YWx1ZV90
YWtlX2JveGVkKHZhbHVlLCBnQXJyYXkubGVha1JlZigpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChnX3R5cGVfaXNfYShHX1ZBTFVF
X1RZUEUodmFsdWUpLCBHX1RZUEVfU1RSVikpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHN0cnYg
PSBqc2NDb250ZXh0SlNBcnJheVRvR1N0cnYoY29udGV4dCwganNWYWx1ZSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgICAgICAgICBpZiAoISpleGNlcHRpb24pCisgICAgICAgICAgICAgICAgICAgIGdf
dmFsdWVfdGFrZV9ib3hlZCh2YWx1ZSwgc3Rydi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVm
KEpTQzo6Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgImludmFsaWQgcG9pbnRlciB0eXBl
Il9zKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoZnVu
ZGFtZW50YWxUeXBlID09IEdfVFlQRV9QT0lOVEVSKQogICAgICAgICAgICAgZ192YWx1ZV9zZXRf
cG9pbnRlcih2YWx1ZSwgd3JhcHBlZE9iamVjdCk7CiAgICAgICAgIGVsc2UgaWYgKGZ1bmRhbWVu
dGFsVHlwZSA9PSBHX1RZUEVfQk9YRUQpCkBAIC01NjksMTAgKzU2OSwxMCBAQCB2b2lkIGpzY0Nv
bnRleHRKU1ZhbHVlVG9HVmFsdWUoSlNDQ29udGV4dCogY29udGV4dCwgSlNWYWx1ZVJlZiBqc1Zh
bHVlLCBHVHlwZSB0eQogICAgICAgICBnX3ZhbHVlX3NldF91aW50NjQodmFsdWUsIEpTVmFsdWVU
b051bWJlcihwcml2LT5qc0NvbnRleHQuZ2V0KCksIGpzVmFsdWUsIGV4Y2VwdGlvbikpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEdfVFlQRV9FTlVNOgotICAgICAgICBnX3ZhbHVlX3NldF9l
bnVtKHZhbHVlLCBKU1ZhbHVlVG9OdW1iZXIocHJpdi0+anNDb250ZXh0LmdldCgpLCBqc1ZhbHVl
LCBleGNlcHRpb24pKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgSlNDOjp0b0lu
dDMyKEpTVmFsdWVUb051bWJlcihwcml2LT5qc0NvbnRleHQuZ2V0KCksIGpzVmFsdWUsIGV4Y2Vw
dGlvbikpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHX1RZUEVfRkxBR1M6Ci0gICAgICAg
IGdfdmFsdWVfc2V0X2ZsYWdzKHZhbHVlLCBKU1ZhbHVlVG9OdW1iZXIocHJpdi0+anNDb250ZXh0
LmdldCgpLCBqc1ZhbHVlLCBleGNlcHRpb24pKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfZmxhZ3Mo
dmFsdWUsIEpTQzo6dG9JbnQzMihKU1ZhbHVlVG9OdW1iZXIocHJpdi0+anNDb250ZXh0LmdldCgp
LCBqc1ZhbHVlLCBleGNlcHRpb24pKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR19UWVBF
X1BBUkFNOgogICAgIGNhc2UgR19UWVBFX0lOVEVSRkFDRToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CmluZGV4IDEzZjRhYThlMjQ4ZS4uZmY3NzA4ZjZiZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0wMy0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBKU0MgY3Jhc2hlcyBpZiBh
IGZ1bmN0aW9uIGV4cGVjdHMgYSBwYXJhbWV0ZXIgYnV0IGRvZXNuJ3QgcmVjZWl2ZSBhbnkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzY0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRsZSB0aGUg
Y2FzZSBvZiByZWNlaXZpbmcgZmV3ZXIgYXJndW1lbnMgdGhhbiBleHBlY3RlZCBpbiBmdW5jdGlv
biBjYWxscyBhbmQgY29uc3RydWN0b3JzLiBXZSBwYXNzIHVuZGVmaW5lZAorICAgICAgICBmb3Ig
dGhlIGV4cGVjdGVkIGFyZ3VtZW50cyB0aGF0IGFyZSBtaXNzaW5nLiBXZSB3ZXJlIG5vdCBjb3Jy
ZWN0bHkgaGFuZGxpbmcgdGhlIGNhc2Ugb2YgY29udmVydGluZyB1bmRlZmluZWQgYW5kCisgICAg
ICAgIG51bGwgdmFsdWVzIHRvIEpTQ1ZhbHVlLCBzbyB0aGlzIHBhdGNoIGZpeGVzIHRoYXQgY2Fz
ZSB0b28uCisKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbCk6CisgICAgICAgIChKU0M6OkpT
Q0NhbGxiYWNrRnVuY3Rpb246OmNvbnN0cnVjdCk6CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29u
dGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0SlNWYWx1ZVRvV3JhcHBlZE9iamVjdCk6Cisg
ICAgICAgIChqc2NDb250ZXh0SlNWYWx1ZVRvR1ZhbHVlKToKKwogMjAyMS0wMy0xOSAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQnJhbmRlZFN0cnVjdHVyZSBzaG91
bGQga2VlcCBpdHMgbWVtYmVycyBhbGl2ZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MGE1NmU1YjZlMzcuLmQzODM3ZWNjZDc3MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDIxLTAzLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXVtXUEVdIEpTQyBjcmFzaGVzIGlmIGEgZnVuY3Rpb24gZXhwZWN0
cyBhIHBhcmFtZXRlciBidXQgZG9lc24ndCByZWNlaXZlIGFueQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNjQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgY2FzZXMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHA6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKHRlc3RKU0NGdW5jdGlvbik6CisgICAg
ICAgICh0ZXN0SlNDQ2xhc3MpOgorCiAyMDIxLTAzLTE5ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVwZGF0ZSBmaWx0ZXItYnVpbGQtd2Via2l0CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5j
cHAKaW5kZXggOGEwNDE1MTVkZmRhLi5kZWI2ZjM0MDFjZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvZ2xpYi9UZXN0SlNDLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAK
QEAgLTg1NCw2ICs4NTQsMTEgQEAgc3RhdGljIGdib29sZWFuIGNoZWNrVXNlckRhdGEoR0ZpbGUq
IGZpbGUpCiAgICAgcmV0dXJuIEdfSVNfRklMRShmaWxlKTsKIH0KIAorc3RhdGljIGNoYXIqIHZh
bHVlVG9TdHJpbmcoSlNDVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVybiBqc2NfdmFsdWVfdG9f
c3RyaW5nKHZhbHVlKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdEpTQ0Z1bmN0aW9uKCkKIHsKICAg
ICB7CkBAIC0xMTIzLDYgKzExMjgsNDcgQEAgc3RhdGljIHZvaWQgdGVzdEpTQ0Z1bmN0aW9uKCkK
ICAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfYm9vbGVhbih2YWx1ZS5nZXQoKSkp
OwogICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV90b19ib29sZWFuKHZhbHVlLmdldCgp
KSk7CiAgICAgfQorCisgICAgeworICAgICAgICBMZWFrQ2hlY2tlciBjaGVja2VyOworICAgICAg
ICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfbmV3
KCkpOworICAgICAgICBjaGVja2VyLndhdGNoKGNvbnRleHQuZ2V0KCkpOworICAgICAgICBFeGNl
cHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSk7CisKKyAgICAgICAg
R1JlZlB0cjxKU0NWYWx1ZT4gZnVuY3Rpb24gPSBhZG9wdEdSZWYoanNjX3ZhbHVlX25ld19mdW5j
dGlvbihjb250ZXh0LmdldCgpLCAidmFsdWVUb1N0cmluZyIsIEdfQ0FMTEJBQ0sodmFsdWVUb1N0
cmluZyksIG51bGxwdHIsIG51bGxwdHIsIEdfVFlQRV9TVFJJTkcsIDEsIEpTQ19UWVBFX1ZBTFVF
KSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2goZnVuY3Rpb24uZ2V0KCkpOworICAgICAgICBqc2Nf
Y29udGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgInZhbHVlVG9TdHJpbmciLCBmdW5jdGlv
bi5nZXQoKSk7CisKKyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gdmFsdWUgPSBhZG9wdEdSZWYo
anNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5nZXQoKSwgInZhbHVlVG9TdHJpbmcoNCkiLCAt
MSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHZhbHVlLmdldCgpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhqc2NfdmFsdWVfdG9fc3RyaW5nKHZhbHVlLmdldCgpKSk7
CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICI0Iik7CisK
KyAgICAgICAgdmFsdWUgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5n
ZXQoKSwgInZhbHVlVG9TdHJpbmcoJ0hlbGxvIFdvcmxkJykiLCAtMSkpOworICAgICAgICBjaGVj
a2VyLndhdGNoKHZhbHVlLmdldCgpKTsKKyAgICAgICAgdmFsdWVTdHJpbmcucmVzZXQoanNjX3Zh
bHVlX3RvX3N0cmluZyh2YWx1ZS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIodmFs
dWVTdHJpbmcuZ2V0KCksID09LCAiSGVsbG8gV29ybGQiKTsKKworICAgICAgICB2YWx1ZSA9IGFk
b3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAidmFsdWVUb1N0cmlu
Zyh1bmRlZmluZWQpIiwgLTEpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaCh2YWx1ZS5nZXQoKSk7
CisgICAgICAgIHZhbHVlU3RyaW5nLnJlc2V0KGpzY192YWx1ZV90b19zdHJpbmcodmFsdWUuZ2V0
KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgInVu
ZGVmaW5lZCIpOworCisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1
YXRlKGNvbnRleHQuZ2V0KCksICJ2YWx1ZVRvU3RyaW5nKG51bGwpIiwgLTEpKTsKKyAgICAgICAg
Y2hlY2tlci53YXRjaCh2YWx1ZS5nZXQoKSk7CisgICAgICAgIHZhbHVlU3RyaW5nLnJlc2V0KGpz
Y192YWx1ZV90b19zdHJpbmcodmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIm51bGwiKTsKKworICAgICAgICB2YWx1ZSA9IGFkb3B0
R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAidmFsdWVUb1N0cmluZygp
IiwgLTEpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaCh2YWx1ZS5nZXQoKSk7CisgICAgICAgIHZh
bHVlU3RyaW5nLnJlc2V0KGpzY192YWx1ZV90b19zdHJpbmcodmFsdWUuZ2V0KCkpKTsKKyAgICAg
ICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgInVuZGVmaW5lZCIpOwor
CisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGNvbnRleHQu
Z2V0KCksICJ2YWx1ZVRvU3RyaW5nKDEsMiwzKSIsIC0xKSk7CisgICAgICAgIGNoZWNrZXIud2F0
Y2godmFsdWUuZ2V0KCkpOworICAgICAgICB2YWx1ZVN0cmluZy5yZXNldChqc2NfdmFsdWVfdG9f
c3RyaW5nKHZhbHVlLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmlu
Zy5nZXQoKSwgPT0sICIxIik7CisgICAgfQogfQogCiBzdGF0aWMgdm9pZCB0ZXN0SlNDT2JqZWN0
KCkKQEAgLTE4MTMsNiArMTg1OSwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDQ2xhc3MoKQogICAg
ICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUuZ2V0KCkpKTsKICAg
ICAgICAgZ19hc3NlcnRfY21waW50KGpzY192YWx1ZV90b19pbnQzMih2YWx1ZS5nZXQoKSksID09
LCA1Mik7CiAKKyAgICAgICAgZm9vMiA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShj
b250ZXh0LmdldCgpLCAiZjIgPSBuZXcgRm9vLkNyZWF0ZVdpdGhGb28oKTsiLCAtMSkpOworICAg
ICAgICBjaGVja2VyLndhdGNoKGZvbzIuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpz
Y192YWx1ZV9pc19vYmplY3QoZm9vMi5nZXQoKSkpOworICAgICAgICB2YWx1ZSA9IGFkb3B0R1Jl
Zihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAiZjIuZm9vIiwgLTEpKTsKKyAg
ICAgICAgY2hlY2tlci53YXRjaCh2YWx1ZS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
anNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9jbXBp
bnQoanNjX3ZhbHVlX3RvX2ludDMyKHZhbHVlLmdldCgpKSwgPT0sIDApOworCiAgICAgICAgIEdS
ZWZQdHI8SlNDVmFsdWU+IGNvbnN0cnVjdG9yViA9IGFkb3B0R1JlZihqc2NfY2xhc3NfYWRkX2Nv
bnN0cnVjdG9yX3ZhcmlhZGljKGpzY0NsYXNzLCAiQ3JlYXRlV2l0aEZvbyIsIEdfQ0FMTEJBQ0so
Zm9vQ3JlYXRlV2l0aEZvb1YpLCBudWxscHRyLCBudWxscHRyLCBHX1RZUEVfUE9JTlRFUikpOwog
ICAgICAgICBjaGVja2VyLndhdGNoKGNvbnN0cnVjdG9yVi5nZXQoKSk7CiAgICAgICAgIGdfYXNz
ZXJ0X3RydWUoanNjX3ZhbHVlX2lzX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yVi5nZXQoKSkpOwo=
</data>
<flag name="review"
          id="443851"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>