<?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>117708</bug_id>
          
          <creation_ts>2013-06-17 10:55:03 -0700</creation_ts>
          <short_desc>touching any idl rebuilds all derived sources</short_desc>
          <delta_ts>2013-06-22 06:25:04 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>haraken</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>901096</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-17 10:55:03 -0700</bug_when>
    <thetext>When any idl is changed, it rebuilds all 600 derived sources in WebCore.  This slows down development for anyone who is working on derived sources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901097</commentid>
    <comment_count>1</comment_count>
      <attachid>204838</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-17 10:57:54 -0700</bug_when>
    <thetext>Created attachment 204838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901101</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-17 11:04:55 -0700</bug_when>
    <thetext>This patch reads the contents of a file before writing them.  This does not slow down a build after make clean because the files do not exist.  One negative side effect of this is that after changing an idl, generate-bindings will be run each build (but not change anything) because of line 1022 of DerivedSources.make:

JS%.h : %.idl ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901109</commentid>
    <comment_count>3</comment_count>
      <attachid>204838</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-17 11:17:49 -0700</bug_when>
    <thetext>Comment on attachment 204838
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:178
&gt; +        my $oldContents=join(&quot;&quot;,&lt;FH&gt;);

nit: missing spaces around = and after comma

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:180
&gt; +        if ($oldContents eq $contents) {

maybe: &quot;return if $oldContents eq $contents;&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901124</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-17 11:30:41 -0700</bug_when>
    <thetext>FYI, Blink uses the same optimization. However, it is only enabled with ninja with the following explanation:
# The bindings generator can not write generated files if they are identical
# to the already existing file – that way they don&apos;t need to be recompiled.
# However, a reverse dependency having a newer timestamp than a
# generated binding can confuse some build systems, so only use this on
# ninja which explicitly supports this use case (gyp turns all actions into
# ninja restat rules).

I guess we could have a new script argument like --writeOnlyIfChanged in case we want to disable this for some build systems if we notice issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901127</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-17 11:34:38 -0700</bug_when>
    <thetext>If anyone commits a change to any idl file, everyone will be running generate-bindings on all idls until they make clean.  We need a dependency generator for make instead of my jacky solution to prevent this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901190</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-17 16:01:50 -0700</bug_when>
    <thetext>Maciej had this working in r120361 (https://bugs.webkit.org/show_bug.cgi?id=89125).  I&apos;ll bisect over the next few days while working on other stuff and find out what broke his system</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901193</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-06-17 16:10:58 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 76836 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901215</commentid>
    <comment_count>8</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-06-17 17:23:39 -0700</bug_when>
    <thetext>I don&apos;t think the duping here is correct. My original fix for this in bug 89125 did not involve examining whether .h/.cpp files had changed. Instead, my solution was to represent the supplemental IDL dependencies in Make format so that only affected IDL files would ever be rebuild. I am not sure why it broke. But fixing it is a separate issue from what 76836 recommends, which is that even if an IDL file does get recompiled by the IDL compiler, avoid running the C++ compiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901262</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-17 22:45:14 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Maciej had this working in r120361 (https://bugs.webkit.org/show_bug.cgi?id=89125).  I&apos;ll bisect over the next few days while working on other stuff and find out what broke his system

I am fairly certain I broke this recently when adding support for [NoInterfaceObject]. IDL inter-dependency is a bit more complex now and the build system integration likely needs some improvement.
I will also look into this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901289</commentid>
    <comment_count>10</comment_count>
      <attachid>204885</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-18 00:06:31 -0700</bug_when>
    <thetext>Created attachment 204885
Alternative patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901298</commentid>
    <comment_count>11</comment_count>
      <attachid>204885</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-18 00:51:48 -0700</bug_when>
    <thetext>Comment on attachment 204885
Alternative patch

Good.

The sad thing is that we cannot make the same optimization in GYP since GYP doesn&apos;t support dynamically generated dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901299</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-18 00:53:34 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #6)
&gt; &gt; Maciej had this working in r120361 (https://bugs.webkit.org/show_bug.cgi?id=89125).  I&apos;ll bisect over the next few days while working on other stuff and find out what broke his system
&gt; 
&gt; I am fairly certain I broke this recently when adding support for [NoInterfaceObject]. IDL inter-dependency is a bit more complex now and the build system integration likely needs some improvement.
&gt; I will also look into this issue.

Yes, maciej@ fixed the issue before, but we regressed it when we introduced [NoInterfaceObject] :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901308</commentid>
    <comment_count>13</comment_count>
      <attachid>204885</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-18 01:29:41 -0700</bug_when>
    <thetext>Comment on attachment 204885
Alternative patch

Clearing flags on attachment: 204885

Committed r151675: &lt;http://trac.webkit.org/changeset/151675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901309</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-18 01:29:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901565</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-18 15:45:06 -0700</bug_when>
    <thetext>After touching an idl without making functional changes (such as editing a comment), the preprocessor still runs every time you compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901589</commentid>
    <comment_count>16</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-18 16:54:58 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; After touching an idl without making functional changes (such as editing a comment), the preprocessor still runs every time you compile.

This is expected. To resolve dependency of &apos;partial&apos;, &apos;implements&apos; and [NoInterfaceObject], we cannot avoid scanning all IDL files when any IDL file is touched. In my local experiment with SSD, the time spent in the preprocessor is very small (less than 1 sec).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902717</commentid>
    <comment_count>17</comment_count>
      <attachid>204885</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-06-21 16:54:46 -0700</bug_when>
    <thetext>Comment on attachment 204885
Alternative patch

The WriteFileIfChanged part makes me worry that this would leave you in a state where the supplemental deps list is regenerated every time. Does that in fact happen? I also don&apos;t get why touching supplemental_dependency.tmp is even relevant, since none of the IDL compilation rules actually depend on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902718</commentid>
    <comment_count>18</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-06-21 16:56:21 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; After touching an idl without making functional changes (such as editing a comment), the preprocessor still runs every time you compile.
&gt; 
&gt; This is expected. To resolve dependency of &apos;partial&apos;, &apos;implements&apos; and [NoInterfaceObject], we cannot avoid scanning all IDL files when any IDL file is touched. In my local experiment with SSD, the time spent in the preprocessor is very small (less than 1 sec).

I don&apos;t see how this can be true for those features when it turned out not to be true for supplemental interfaces. How is partial different from supplements in that regard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902720</commentid>
    <comment_count>19</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-06-21 17:01:31 -0700</bug_when>
    <thetext>I think the real bug is this:

JS%.h : %.idl $(JS_BINDINGS_SCRIPTS) $(IDL_ATTRIBUTES_FILE) $(WINDOW_CONSTRUCTORS_FILE) $(WORKERCONTEXT_CONSTRUCTORS_FILE) $(PLATFORM_FEATURE_DEFINES)

$(WINDOW_CONSTRUCTORS_FILE) and $(WORKERCONTEXT_CONSTRUCTORS_FILE) are not passed to the generator script nor are the files they refer to referenced by it directly. So that decency is almost surely wrong.

I think the correct fix is to revert this patch and remove those two things from the JS%.h dependencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902724</commentid>
    <comment_count>20</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-06-21 17:34:55 -0700</bug_when>
    <thetext>I put my proposed alternate fix in bug 117900, let me know if there is a reason it&apos;s wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902757</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-22 01:30:33 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 204885 [details])
&gt; The WriteFileIfChanged part makes me worry that this would leave you in a state where the supplemental deps list is regenerated every time. Does that in fact happen? I also don&apos;t get why touching supplemental_dependency.tmp is even relevant, since none of the IDL compilation rules actually depend on it.

I tested with CMake and IDL compilation rule depends on supplemental_dependency.tmp in the CMake config. supplemental_dependency.tmp is passed to the generator so why shouldn&apos;t it be marked as a dependency?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902776</commentid>
    <comment_count>22</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-22 06:25:04 -0700</bug_when>
    <thetext>&gt; The WriteFileIfChanged part makes me worry that this would leave you in a state where the supplemental deps list is regenerated every time. Does that in fact happen?

maciej: In my understanding, it in fact happens and it is expected. The point is as follows:

- If any IDL file is touched, we have to scan all IDL files and resolve dependency of [NoInterfaceObject], &apos;partial&apos; and &apos;implements&apos;. Thus, it is expected that preprocessor-idls.pl always runs when any IDL file is touched.

- However, we want to stop the build flow at this point if we find that there is no change in supplemental-dependency.tmp. We can do it by not updating supplemental-dependency.tmp in preprocessor-idls.pl.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204838</attachid>
            <date>2013-06-17 10:57:54 -0700</date>
            <delta_ts>2013-06-17 11:30:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117708-20130617105608.patch</filename>
            <type>text/plain</type>
            <size>1559</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA2LTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNvbT4KKworICAgICAgICBDaGVjayB0byBz
ZWUgaWYgZmlsZSBjb250ZW50cyBoYXZlIGNoYW5nZWQgYmVmb3JlIHdyaXRpbmcgbmV3IGRlcml2
ZWQgc291cmNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNzcwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3VyIGNoYW5nZS4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKFVwZGF0ZUZpbGUpOgorCiAy
MDEzLTA2LTE3ICBNaWNoYWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4K
IAogICAgICAgICBbTWFjXSBSZW1vdmUgdW5tYWludGFpbmVkIEdTdHJlYW1lciBzcGVjaWZpYyB2
aWRlbyBjb2RlLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMTUxMTI0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsOSAr
MTczLDIwIEBAIHN1YiBVcGRhdGVGaWxlCiAgICAgbXkgJGZpbGVOYW1lID0gc2hpZnQ7CiAgICAg
bXkgJGNvbnRlbnRzID0gc2hpZnQ7CiAKLSAgICBvcGVuIEZILCAiPiAkZmlsZU5hbWUiIG9yIGRp
ZSAiQ291bGRuJ3Qgb3BlbiAkZmlsZU5hbWU6ICQhXG4iOwotICAgIHByaW50IEZIICRjb250ZW50
czsKLSAgICBjbG9zZSBGSDsKKyAgICBteSAkY29udGVudHNDaGFuZ2VkID0gMTsKKyAgICBpZiAo
b3BlbiBGSCwgIjwgJGZpbGVOYW1lIikgeworICAgICAgICBteSAkb2xkQ29udGVudHM9am9pbigi
Iiw8Rkg+KTsKKyAgICAgICAgY2xvc2UgRkg7CisgICAgICAgIGlmICgkb2xkQ29udGVudHMgZXEg
JGNvbnRlbnRzKSB7CisgICAgICAgICAgICAkY29udGVudHNDaGFuZ2VkID0gMDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmICgkY29udGVudHNDaGFuZ2VkKSB7CisgICAgICAgIG9wZW4gRkgs
ICI+ICRmaWxlTmFtZSIgb3IgZGllICJDb3VsZG4ndCBvcGVuICRmaWxlTmFtZTogJCFcbiI7Cisg
ICAgICAgIHByaW50IEZIICRjb250ZW50czsKKyAgICAgICAgY2xvc2UgRkg7CisgICAgfQogfQog
CiBzdWIgRm9yQWxsUGFyZW50cwo=
</data>
<flag name="review"
          id="226250"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204885</attachid>
            <date>2013-06-18 00:06:31 -0700</date>
            <delta_ts>2013-06-21 16:54:46 -0700</delta_ts>
            <desc>Alternative patch</desc>
            <filename>117708_writedepsIfNeeded.patch</filename>
            <type>text/plain</type>
            <size>4756</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYWI0MTJjLi40NzM0ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTMtMDYtMTcgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIHRvdWNoaW5nIGFueSBpZGwgcmVidWlsZHMgYWxsIGRlcml2ZWQgc291
cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3
NzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IHByZXByb2Nlc3MtaWRscy5wbCBzY3JpcHQgdG8gdXBkYXRlIHRoZSBmb2xsb3dpbmcgZmlsZXMg
b25seQorICAgICAgICBpZiB0aGV5IGhhdmUgY2hhbmdlZDoKKyAgICAgICAgRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXAKKyAgICAgICAgRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsCisgICAgICAgIERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvV29ya2VyQ29udGV4dENvbnN0cnVjdG9ycy5pZGwKKworICAgICAgICBU
aGlzIGF2b2lkcyB0cmlnZ2VyaW5nIHVzZWxlc3NseSBiaW5kaW5ncyBnZW5lcmF0aW9uIGZvciBh
bGwgSURMCisgICAgICAgIGZpbGVzIHdoZW5ldmVyIGFuIElETCBmaWxlIGlzIHRvdWNoZWQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKFdyaXRlRmlsZUlm
Q2hhbmdlZCk6CisgICAgICAgIChHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UpOgorCiAyMDEzLTA2
LTE3ICBQZXRlciBHYWwgIDxnYWxwZXRlckBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW2N1
cmxdIFNldCB0aGUgaHR0cCByZXNwb25zZSBzdGF0dXMgdGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAppbmRleCBkY2RhNDkzLi44
NGNkZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXBy
b2Nlc3MtaWRscy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXBy
b2Nlc3MtaWRscy5wbApAQCAtNjAsNyArNjAsNyBAQCBteSAkd2luZG93Q29uc3RydWN0b3JzQ29k
ZSA9ICIiOwogbXkgJHdvcmtlckNvbnRleHRDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiAjIEdldCBy
aWQgb2YgZHVwbGljYXRlcyBpbiBpZGxGaWxlcyBhcnJheS4KIG15ICVpZGxGaWxlSGFzaCA9IG1h
cCB7ICRfLCAxIH0gQGlkbEZpbGVzOwotZm9yZWFjaCBteSAkaWRsRmlsZSAoa2V5cyAlaWRsRmls
ZUhhc2gpIHsKK2ZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlaWRsRmlsZUhhc2gpIHsK
ICAgICBteSAkZnVsbFBhdGggPSBDd2Q6OnJlYWxwYXRoKCRpZGxGaWxlKTsKICAgICBteSAkaWRs
RmlsZUNvbnRlbnRzID0gZ2V0RmlsZUNvbnRlbnRzKCRmdWxsUGF0aCk7CiAgICAgbXkgJHBhcnRp
YWxJbnRlcmZhY2VOYW1lID0gZ2V0UGFydGlhbEludGVyZmFjZU5hbWVGcm9tSURMKCRpZGxGaWxl
Q29udGVudHMpOwpAQCAtMTA4LDMyICsxMDgsNDUgQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoa2V5
cyAlc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKSB7CiAjIFRoZSBhYm92ZSBpbmRpY2F0ZXMgdGhh
dCBET01XaW5kb3cuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwgYW5kIFIuaWRs
LAogIyBEb2N1bWVudC5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFMuaWRsLCBhbmQgRXZlbnQuaWRs
IGlzIHN1cHBsZW1lbnRlZCBieSBubyBJRExzLgogIyBUaGUgSURMIHRoYXQgc3VwcGxlbWVudHMg
YW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhlIGRlcGVuZGVuY3kg
ZmlsZS4KLQotb3BlbiBGSCwgIj4gJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlIiBvciBkaWUg
IkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZVxuIjsKLQorbXkgJGRlcGVu
ZGVuY2llcyA9ICIiOwogZm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVzdXBwbGVtZW50
YWxzKSB7Ci0gICAgcHJpbnQgRkggJGlkbEZpbGUsICIgQHskc3VwcGxlbWVudGFsc3skaWRsRmls
ZX19XG4iOworICAgICRkZXBlbmRlbmNpZXMgLj0gIiRpZGxGaWxlIEB7JHN1cHBsZW1lbnRhbHN7
JGlkbEZpbGV9fVxuIjsKIH0KLWNsb3NlIEZIOwotCitXcml0ZUZpbGVJZkNoYW5nZWQoJHN1cHBs
ZW1lbnRhbERlcGVuZGVuY3lGaWxlLCAkZGVwZW5kZW5jaWVzKTsKIAogaWYgKCRzdXBwbGVtZW50
YWxNYWtlZmlsZURlcHMpIHsKLSAgICBvcGVuIE1BS0VfRkgsICI+ICRzdXBwbGVtZW50YWxNYWtl
ZmlsZURlcHMiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwc1xu
IjsKLSAgICBteSBAYWxsX2RlcGVuZGVuY2llcyA9IFtdOworICAgIG15ICRtYWtlZmlsZURlcHMg
PSAiIjsKICAgICBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbHMp
IHsKICAgICAgICAgbXkgJGJhc2VuYW1lID0gJGlkbEZpbGVUb0ludGVyZmFjZU5hbWV7JGlkbEZp
bGV9OwogCiAgICAgICAgIG15IEBkZXBlbmRlbmNpZXMgPSBtYXAgeyBiYXNlbmFtZSgkXykgfSBA
eyRzdXBwbGVtZW50YWxzeyRpZGxGaWxlfX07CiAKLSAgICAgICAgcHJpbnQgTUFLRV9GSCAiSlMk
e2Jhc2VuYW1lfS5oOiBAe2RlcGVuZGVuY2llc31cbiI7Ci0gICAgICAgIHByaW50IE1BS0VfRkgg
IkRPTSR7YmFzZW5hbWV9Lmg6IEB7ZGVwZW5kZW5jaWVzfVxuIjsKLSAgICAgICAgcHJpbnQgTUFL
RV9GSCAiV2ViRE9NJHtiYXNlbmFtZX0uaDogQHtkZXBlbmRlbmNpZXN9XG4iOworICAgICAgICAk
bWFrZWZpbGVEZXBzIC49ICJKUyR7YmFzZW5hbWV9Lmg6IEB7ZGVwZW5kZW5jaWVzfVxuIjsKKyAg
ICAgICAgJG1ha2VmaWxlRGVwcyAuPSAiRE9NJHtiYXNlbmFtZX0uaDogQHtkZXBlbmRlbmNpZXN9
XG4iOworICAgICAgICAkbWFrZWZpbGVEZXBzIC49ICJXZWJET00ke2Jhc2VuYW1lfS5oOiBAe2Rl
cGVuZGVuY2llc31cbiI7CiAgICAgICAgIGZvcmVhY2ggbXkgJGRlcGVuZGVuY3kgKEBkZXBlbmRl
bmNpZXMpIHsKLSAgICAgICAgICAgIHByaW50IE1BS0VfRkggIiR7ZGVwZW5kZW5jeX06XG4iOwor
ICAgICAgICAgICAgJG1ha2VmaWxlRGVwcyAuPSAiJHtkZXBlbmRlbmN5fTpcbiI7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBjbG9zZSBNQUtFX0ZIOworICAgIFdyaXRlRmlsZUlmQ2hhbmdlZCgk
c3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzLCAkbWFrZWZpbGVEZXBzKTsKK30KKworc3ViIFdyaXRl
RmlsZUlmQ2hhbmdlZAoreworICAgIG15ICRmaWxlTmFtZSA9IHNoaWZ0OworICAgIG15ICRjb250
ZW50cyA9IHNoaWZ0OworCisgICAgaWYgKC1mICRmaWxlTmFtZSkgeworICAgICAgICBvcGVuIEZI
LCAiPCIsICRmaWxlTmFtZSBvciBkaWUgIkNvdWxkbid0IG9wZW4gJGZpbGVOYW1lOiAkIVxuIjsK
KyAgICAgICAgbXkgQGxpbmVzID0gPEZIPjsKKyAgICAgICAgbXkgJG9sZENvbnRlbnRzID0gam9p
biAiIiwgQGxpbmVzOworICAgICAgICBjbG9zZSBGSDsKKyAgICAgICAgcmV0dXJuIGlmICRjb250
ZW50cyBlcSAkb2xkQ29udGVudHM7CisgICAgfQorICAgIG9wZW4gRkgsICI+IiwgJGZpbGVOYW1l
IG9yIGRpZSAiQ291bGRuJ3Qgb3BlbiAkZmlsZU5hbWU6ICQhXG4iOworICAgIHByaW50IEZIICRj
b250ZW50czsKKyAgICBjbG9zZSBGSDsKIH0KIAogc3ViIEdlbmVyYXRlUGFydGlhbEludGVyZmFj
ZQpAQCAtMTQyLDEyICsxNTUsOSBAQCBzdWIgR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlCiAgICAg
bXkgJGF0dHJpYnV0ZXNDb2RlID0gc2hpZnQ7CiAgICAgbXkgJGRlc3RpbmF0aW9uRmlsZSA9IHNo
aWZ0OwogCi0gICAgIyBHZW5lcmF0ZSBwYXJ0aWFsIGludGVyZmFjZSBmb3IgZ2xvYmFsIGNvbnN0
cnVjdG9ycy4KLSAgICBvcGVuIFBBUlRJQUxfSU5URVJGQUNFX0ZILCAiPiAkZGVzdGluYXRpb25G
aWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRkZXN0aW5hdGlvbkZpbGVcbiI7Ci0gICAgcHJpbnQg
UEFSVElBTF9JTlRFUkZBQ0VfRkggInBhcnRpYWwgaW50ZXJmYWNlICR7aW50ZXJmYWNlTmFtZX0g
e1xuIjsKLSAgICBwcmludCBQQVJUSUFMX0lOVEVSRkFDRV9GSCAkYXR0cmlidXRlc0NvZGU7Ci0g
ICAgcHJpbnQgUEFSVElBTF9JTlRFUkZBQ0VfRkggIn07XG4iOwotICAgIGNsb3NlIFBBUlRJQUxf
SU5URVJGQUNFX0ZIOworICAgIG15ICRjb250ZW50cyA9ICJwYXJ0aWFsIGludGVyZmFjZSAke2lu
dGVyZmFjZU5hbWV9IHtcbiRhdHRyaWJ1dGVzQ29kZX07XG4iOworICAgIFdyaXRlRmlsZUlmQ2hh
bmdlZCgkZGVzdGluYXRpb25GaWxlLCAkY29udGVudHMpOworCiAgICAgbXkgJGZ1bGxQYXRoID0g
Q3dkOjpyZWFscGF0aCgkZGVzdGluYXRpb25GaWxlKTsKICAgICAkc3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzeyRmdWxsUGF0aH0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlTmFtZVRvSWRs
RmlsZXskaW50ZXJmYWNlTmFtZX07CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>