<?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>42023</bug_id>
          
          <creation_ts>2010-07-10 01:36:37 -0700</creation_ts>
          <short_desc>make_names.pl should always generate all names in Names.* files</short_desc>
          <delta_ts>2019-02-06 09:03:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>41123</blocked>
    
    <blocked>42050</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>annevk</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249490</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-10 01:36:37 -0700</bug_when>
    <thetext>make_names.pl should always generate all names in Names.* files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249492</commentid>
    <comment_count>1</comment_count>
      <attachid>61148</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-10 01:41:29 -0700</bug_when>
    <thetext>Created attachment 61148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249494</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-10 01:45:21 -0700</bug_when>
    <thetext>The next step after this will be to remove a bunch of (now unnecessary) #if guards.  Then I&apos;ll need to go through and fix various build systems to always generate SVGNames, etc.

It would actually be really helpful if someone from the Qt side of things could fix SVGNames to always be generated even when SVG is off.  The files are always guarded with #if ENABLE(SVG) anyway, so it should not change what&apos;s actually built (and will make my job in the next step much easier).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249534</commentid>
    <comment_count>3</comment_count>
      <attachid>61148</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-10 11:10:49 -0700</bug_when>
    <thetext>Comment on attachment 61148
Patch

I wanted to review this change, but I don&apos;t understand Perl well enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249539</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-07-10 12:20:38 -0700</bug_when>
    <thetext>Unfortunately I can&apos;t help, because I will go on a holiday next week and will be offline till 19th July. I cc-ed my collegue, Andras. I think he can help you with Qt build system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249598</commentid>
    <comment_count>5</comment_count>
      <attachid>61148</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-10 23:04:31 -0700</bug_when>
    <thetext>Comment on attachment 61148
Patch

Not generating names for features that are disabled makes certain classes of programming mistakes impossible -- you can’t accidentally compile in some of the code that uses those names -- and also makes the code slightly smaller.

What’s the benefit of generating all the names all the time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249600</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-10 23:20:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 61148 [details])
&gt; Not generating names for features that are disabled makes certain classes of programming mistakes impossible -- you can’t accidentally compile in some of the code that uses those names -- and also makes the code slightly smaller.

This is true.

&gt; What’s the benefit of generating all the names all the time?

Always generating all names, makes some programming easier too. :)  Not quite as many ifs need to be broken out by #if ENABLE(FOO) blocks.

But the real reason is, that the HTML5 parser has special treatment for some SVG and MathML elements and attributes.  We need QualifiedNames for those attributes.  It seems silly to define our own in the parser for the cases where SVG or MathML is not enabled.

Another option would be to simply not support those elements or atributes in the parser when SVG/MathML were disabled.  But I think that&apos;s worse, as then we parse documents differently based on whether we render SVG or MathML.

Thus I suggest that we always generate all names and use them throughout our code without #if ENABLE(FOO).  The actual ElementFactories should also be generated, but will always return 0 if called in when the various technologies are disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249601</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-10 23:23:24 -0700</bug_when>
    <thetext>Our current behavior in the new HTMLTreeBuilder is to place all the sVG and MathML code in #if blocks. Thus the checke in results:

http://trac.webkit.org/browser/trunk/LayoutTests/html5lib/runner-expected-html5.txt

Pass most of the SVG-related tests, and fail all of the MathML ones.  We&apos;d like to pass parser tests all the time, regardless of what rendering abilities may be enabled in the engine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249605</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-11 00:07:53 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Another option would be to simply not support those elements or atributes in the parser when SVG/MathML were disabled.  But I think that&apos;s worse, as then we parse documents differently based on whether we render SVG or MathML.

I don’t see this as a negative the way you do. It seems strange to have parser knowledge of these languages included when the language is otherwise omitted entirely from WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249606</commentid>
    <comment_count>9</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2010-07-11 00:47:43 -0700</bug_when>
    <thetext>Parsing SVG/MathML correctly per HTML5 is not an optional feature however. At least not at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249607</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-11 00:51:17 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Parsing SVG/MathML correctly per HTML5 is not an optional feature however. At least not at this point.

So the concept is that parsing it is must be correct, even if not creating the correct element types? I guess that makes sense. It&apos;s hard for me to care a lot about this, since I think WebKit implementations should not compile out the SVG and MathML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249622</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-11 07:18:57 -0700</bug_when>
    <thetext>One way to think about it is we parse mathml and svg correctly on XML even if we don&apos;t implement those features.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249634</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-11 10:04:04 -0700</bug_when>
    <thetext>It is also possible to wrap the ElementFactory* and Names* files in different ENABLE(FOO) blocks.  Names could be ENABLE(FOO_NAMES) and we could always have FOO_NAMES defined for SVG, XML, XLink, XMLNS and MathML even if ports disable SVG or MathML.  That would leave WMLNames off if that&apos;s a concern.  Nearly all of SVGNames and MathMLNames are all required and all of  XMLNames, XLinkNames, XMLNSNames are required for proper parsing of HTML5.

Then again, ports which never wish to have a feature optional (like Mac for WML) don&apos;t need to include the *Names or *ElementFactory.cpp files at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249674</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-11 19:09:22 -0700</bug_when>
    <thetext>See bug 42050 for the next phase of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249939</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-12 11:54:24 -0700</bug_when>
    <thetext>Darin r+&apos;d the bigger-deal bug 42050 change, but this one still needs someone&apos;s rubber stamp.

A reminder of what it does:

- Enables all SVGNames, all the time.  Regardless of what SVG sub-features may be turned on.  For example, SVGNames::foreignObjectTag will always be defined if SVG is on, regardless of whether SVG_FOREIGN_OBJECT is defined.  (Bug 42050, makes it so that SVGNames is then always defined regardless of whether SVG is enabled or not.)

- Changes make_names (mostly search-replace) to support the above.  Does so by reading the .in files twice.  Once through the pre-processor, and once without.  To support such, I added new parsedTags and parsedAttrs variants on &quot;attrs&quot; and &quot;tags&quot; dictionaries.  The restults of those parses are then stuffed into &quot;allTags&quot; or &quot;enabledTags&quot; dictionaries, which are then used by *Names and *ElementFactory generation, respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249998</commentid>
    <comment_count>15</comment_count>
      <attachid>61148</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-12 13:29:28 -0700</bug_when>
    <thetext>Comment on attachment 61148
Patch

It&apos;s slightly tricky to see what&apos;s going on in this patch because of the renaimings, but this looks reasonable now that the other bug has been resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250024</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-12 13:51:04 -0700</bug_when>
    <thetext>Committed r63109: &lt;http://trac.webkit.org/changeset/63109&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502908</commentid>
    <comment_count>17</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:07 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61148</attachid>
            <date>2010-07-10 01:41:29 -0700</date>
            <delta_ts>2010-07-12 13:29:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42023-20100710014127.patch</filename>
            <type>text/plain</type>
            <size>19935</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTIyYjFlNDIzZmU1MTBhMWE4MmEyOGU5NjlkMmViOTYwZDNhMjljOS4uNjIyYjk0MzQ0M2U0OWE3
MTY1NjJmMDk5ODZlZjRjMTNjYTFmNDBkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyNCBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIG1ha2VfbmFtZXMucGwgc2hvdWxkIGFs
d2F5cyBnZW5lcmF0ZSBhbGwgbmFtZXMgaW4gTmFtZXMuKiBmaWxlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwMjMKKworICAgICAgICBPbmx5IHRo
ZSAqRWxlbWVudEZhY3RvcnkgZmlsZXMgbmVlZCB0byBoYXZlIGNvbmRpdGlvbmFsIGNvbnRlbnRz
CisgICAgICAgIGJhc2VkIG9uIGVuYWJsZWQgZmVhdHVyZXMuICBXZWJDb3JlIHNob3VsZCBhbHdh
eXMgaGF2ZSBhbGwga25vd24KKyAgICAgICAgbmFtZXMgZm9yIFNWRywgTWF0aE1MLCBYTUwsIFhM
aW5rLCBIVE1MLCBldGMuIGdlbmVyYXRlZCBpbiB0aGUKKyAgICAgICAgdmFyaW91cyAqTmFtZXMg
ZmlsZXMsIGV2ZW4gaWYgZmVhdHVyZXMgYXJlIGRpc2FibGVkLgorCisgICAgICAgIG1ha2VfbmFt
ZXMucGwgaXMga2luZGEgYSBiaWcgaGFjayBhdCB0aGlzIHBvaW50LiAgSSB0cmllZCB0byBjbGVh
bgorICAgICAgICB1cCBhIGxpdHRsZSBhcyBJIHdlbnQuICBUaGUgd2F5IEkgbWFkZSAqTmFtZXMg
aW5jbHVkZSBhbGwgbmFtZXMgd2FzIHRvCisgICAgICAgIHJlYWQgdGhlIC5pbiBmaWxlcyB0d2lj
ZSwgb25jZSB1c2luZyB0aGUgcHJlcHJvY2Vzc29yIGFuZCBvbmNlIHdpdGhvdXQuCisKKyAgICAg
ICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKworMjAxMC0wNy0xMCAgRXJpYyBTZWlkZWwgIDxlcmlj
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAg
ICAgICAgSFRNTFRyZWVCdWlsZGVyIG5lZWRzIGFkanVzdEZvcmVpZ25BdHRyaWJ1dGVzIHN1cHBv
cnQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDIy
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9XZWJDb3JlL2RvbS9t
YWtlX25hbWVzLnBsCmluZGV4IGE2NzU0MzgyZDAzZWUwZGMyYTAzYjUxMTI0YTM4YzU2Yjg1NDcx
OTkuLmIxNDM4NzQxNDAxOTAzOGE2MTUwMjY1NWZlMmYwNGI5ZjFhZTA5NDUgMTAwNzU1Ci0tLSBh
L1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5w
bApAQCAtMzcsMTcgKzM3LDI2IEBAIHVzZSBJTzo6RmlsZTsKIHVzZSBJbkZpbGVzUGFyc2VyOwog
dXNlIFN3aXRjaDsKIAorc3ViIHJlYWRUYWdzKCQkKTsKK3N1YiByZWFkQXR0cnMoJCQpOworCiBt
eSAkcHJpbnRGYWN0b3J5ID0gMDsgCiBteSAkcHJpbnRXcmFwcGVyRmFjdG9yeSA9IDA7IAogbXkg
JHByaW50V3JhcHBlckZhY3RvcnlWOCA9IDA7IAogbXkgJHRhZ3NGaWxlID0gIiI7CiBteSAkYXR0
cnNGaWxlID0gIiI7CiBteSAkb3V0cHV0RGlyID0gIi4iOwotbXkgJXRhZ3MgPSAoKTsKLW15ICVh
dHRycyA9ICgpOworbXkgJXBhcnNlZFRhZ3MgPSAoKTsKK215ICVwYXJzZWRBdHRycyA9ICgpOwor
bXkgJWVuYWJsZWRUYWdzID0gKCk7CitteSAlZW5hYmxlZEF0dHJzID0gKCk7CitteSAlYWxsVGFn
cyA9ICgpOworbXkgJWFsbEF0dHJzID0gKCk7CiBteSAlcGFyYW1ldGVycyA9ICgpOwogbXkgJGV4
dHJhRGVmaW5lcyA9IDA7CisKIHJlcXVpcmUgQ29uZmlnOworCiBteSAkZ2NjTG9jYXRpb24gPSAi
IjsKIGlmICgkRU5We0NDfSkgewogICAgICRnY2NMb2NhdGlvbiA9ICRFTlZ7Q0N9OwpAQCAtNzEs
OCArODAsMTUgQEAgR2V0T3B0aW9ucygKIAogZGllICJZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0
IG9uZSBvZiAtLXRhZ3MgPGZpbGU+IG9yIC0tYXR0cnMgPGZpbGU+IiB1bmxlc3MgKGxlbmd0aCgk
dGFnc0ZpbGUpIHx8IGxlbmd0aCgkYXR0cnNGaWxlKSk7CiAKLXJlYWROYW1lcygkdGFnc0ZpbGUs
ICJ0YWdzIikgaWYgbGVuZ3RoKCR0YWdzRmlsZSk7Ci1yZWFkTmFtZXMoJGF0dHJzRmlsZSwgImF0
dHJzIikgaWYgbGVuZ3RoKCRhdHRyc0ZpbGUpOworaWYgKGxlbmd0aCgkdGFnc0ZpbGUpKSB7Cisg
ICAgJWFsbFRhZ3MgPSAle3JlYWRUYWdzKCR0YWdzRmlsZSwgMCl9OworICAgICVlbmFibGVkVGFn
cyA9ICV7cmVhZFRhZ3MoJHRhZ3NGaWxlLCAxKX07Cit9CisKK2lmIChsZW5ndGgoJGF0dHJzRmls
ZSkpIHsKKyAgICAlYWxsQXR0cnMgPSAle3JlYWRBdHRycygkYXR0cnNGaWxlLCAwKX07CisgICAg
JWVuYWJsZWRBdHRycyA9ICV7cmVhZEF0dHJzKCRhdHRyc0ZpbGUsIDEpfTsKK30KIAogZGllICJZ
b3UgbXVzdCBzcGVjaWZ5IGEgbmFtZXNwYWNlIChlLmcuIFNWRykgZm9yIDxuYW1lc3BhY2U+TmFt
ZXMuaCIgdW5sZXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZX07CiBkaWUgIllvdSBtdXN0IHNwZWNp
ZnkgYSBuYW1lc3BhY2VVUkkgKGUuZy4gaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcpIiB1bmxl
c3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlVVJJfTsKQEAgLTE0OSwxNiArMTY1LDE2IEBAIHN1YiB0
YWdzSGFuZGxlcgogICAgICR0YWcgPX4gcy8tL18vZzsKIAogICAgICMgSW5pdGlhbGl6ZSBkZWZh
dWx0IHByb3BlcnR5IHZhbHVlcy4KLSAgICAkdGFnc3skdGFnfSA9IHsgZGVmYXVsdFRhZ1Byb3Bl
cnR5SGFzaCgkdGFnKSB9IGlmICFkZWZpbmVkKCR0YWdzeyR0YWd9KTsKKyAgICAkcGFyc2VkVGFn
c3skdGFnfSA9IHsgZGVmYXVsdFRhZ1Byb3BlcnR5SGFzaCgkdGFnKSB9IGlmICFkZWZpbmVkKCRw
YXJzZWRUYWdzeyR0YWd9KTsKIAogICAgIGlmICgkcHJvcGVydHkpIHsKLSAgICAgICAgZGllICJV
bmtub3duIHByb3BlcnR5ICRwcm9wZXJ0eSBmb3IgdGFnICR0YWdcbiIgaWYgIWRlZmluZWQoJHRh
Z3N7JHRhZ317JHByb3BlcnR5fSk7CisgICAgICAgIGRpZSAiVW5rbm93biBwcm9wZXJ0eSAkcHJv
cGVydHkgZm9yIHRhZyAkdGFnXG4iIGlmICFkZWZpbmVkKCRwYXJzZWRUYWdzeyR0YWd9eyRwcm9w
ZXJ0eX0pOwogCiAgICAgICAgICMgVGhlIGNvZGUgcmVsaWVzIG9uIEpTSW50ZXJmYWNlTmFtZSBk
ZXJpdmluZyBmcm9tIGludGVyZmFjZU5hbWUgdG8gY2hlY2sgZm9yIGN1c3RvbSBKU0ludGVyZmFj
ZU5hbWUuCiAgICAgICAgICMgU28gb3ZlcnJpZGUgSlNJbnRlcmZhY2VOYW1lIGlmIGl0IHdhcyBu
b3QgYWxyZWFkeSBzZXQuCi0gICAgICAgICR0YWdzeyR0YWd9e0pTSW50ZXJmYWNlTmFtZX0gPSAk
dmFsdWUgaWYgJHByb3BlcnR5IGVxICJpbnRlcmZhY2VOYW1lIiAmJiAkdGFnc3skdGFnfXtKU0lu
dGVyZmFjZU5hbWV9IGVxICR0YWdzeyR0YWd9e2ludGVyZmFjZU5hbWV9OworICAgICAgICAkcGFy
c2VkVGFnc3skdGFnfXtKU0ludGVyZmFjZU5hbWV9ID0gJHZhbHVlIGlmICRwcm9wZXJ0eSBlcSAi
aW50ZXJmYWNlTmFtZSIgJiYgJHBhcnNlZFRhZ3N7JHRhZ317SlNJbnRlcmZhY2VOYW1lfSBlcSAk
cGFyc2VkVGFnc3skdGFnfXtpbnRlcmZhY2VOYW1lfTsKIAotICAgICAgICAkdGFnc3skdGFnfXsk
cHJvcGVydHl9ID0gJHZhbHVlOworICAgICAgICAkcGFyc2VkVGFnc3skdGFnfXskcHJvcGVydHl9
ID0gJHZhbHVlOwogICAgIH0KIH0KIApAQCAtMTY5LDExICsxODUsMTEgQEAgc3ViIGF0dHJzSGFu
ZGxlcgogICAgICRhdHRyID1+IHMvLS9fL2c7CiAKICAgICAjIEluaXRpYWxpemUgZGVmYXVsdCBw
cm9wZXJ0aWVzJyB2YWx1ZXMuCi0gICAgJGF0dHJzeyRhdHRyfSA9IHt9IGlmICFkZWZpbmVkKCRh
dHRyc3skYXR0cn0pOworICAgICRwYXJzZWRBdHRyc3skYXR0cn0gPSB7fSBpZiAhZGVmaW5lZCgk
cGFyc2VkQXR0cnN7JGF0dHJ9KTsKIAogICAgIGlmICgkcHJvcGVydHkpIHsKLSAgICAgICAgZGll
ICJVbmtub3duIHByb3BlcnR5ICRwcm9wZXJ0eSBmb3IgYXR0cmlidXRlICRhdHRyXG4iIGlmICFk
ZWZpbmVkKCRhdHRyc3skYXR0cn17JHByb3BlcnR5fSk7Ci0gICAgICAgICRhdHRyc3skYXR0cn17
JHByb3BlcnR5fSA9ICR2YWx1ZTsKKyAgICAgICAgZGllICJVbmtub3duIHByb3BlcnR5ICRwcm9w
ZXJ0eSBmb3IgYXR0cmlidXRlICRhdHRyXG4iIGlmICFkZWZpbmVkKCRwYXJzZWRBdHRyc3skYXR0
cn17JHByb3BlcnR5fSk7CisgICAgICAgICRwYXJzZWRBdHRyc3skYXR0cn17JHByb3BlcnR5fSA9
ICR2YWx1ZTsKICAgICB9CiB9CiAKQEAgLTE5MCwzOSArMjA2LDQzIEBAIHN1YiBwYXJhbWV0ZXJz
SGFuZGxlcgogCiAjIyBTdXBwb3J0IHJvdXRpbmVzCiAKLXN1YiByZWFkTmFtZXMKK3N1YiBwcmVw
cm9jZXNzb3JDb21tYW5kKCkKIHsKLSAgICBteSAoJG5hbWVzRmlsZSwgJHR5cGUpID0gQF87Cisg
ICAgcmV0dXJuICRwcmVwcm9jZXNzb3IgaWYgJGV4dHJhRGVmaW5lcyBlcSAwOworICAgIHJldHVy
biAkcHJlcHJvY2Vzc29yIC4gIiAtRCIgLiBqb2luKCIgLUQiLCBzcGxpdCgiICIsICRleHRyYURl
ZmluZXMpKTsKK30KIAotICAgIG15ICRuYW1lcyA9IG5ldyBJTzo6RmlsZTsKK3N1YiByZWFkTmFt
ZXMoJCQkJCkKK3sKKyAgICBteSAoJG5hbWVzRmlsZSwgJGhhc2hUb0ZpbGxSZWYsICRoYW5kbGVy
LCAkdXNlUHJlcHJvY2Vzc29yKSA9IEBfOwogCi0gICAgaWYgKCRleHRyYURlZmluZXMgZXEgMCkg
ewotICAgICAgICBvcGVuKCRuYW1lcywgJHByZXByb2Nlc3NvciAuICIgIiAuICRuYW1lc0ZpbGUg
LiAifCIpIG9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gZmlsZTogJG5hbWVzRmlsZSI7CisgICAgbXkg
JG5hbWVzID0gbmV3IElPOjpGaWxlOworICAgIGlmICgkdXNlUHJlcHJvY2Vzc29yKSB7CisgICAg
ICAgIG9wZW4oJG5hbWVzLCBwcmVwcm9jZXNzb3JDb21tYW5kKCkgLiAiICIgLiAkbmFtZXNGaWxl
IC4gInwiKSBvciBkaWUgIkZhaWxlZCB0byBvcGVuIGZpbGU6ICRuYW1lc0ZpbGUiOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG9wZW4oJG5hbWVzLCAkcHJlcHJvY2Vzc29yIC4gIiAtRCIgLiBqb2lu
KCIgLUQiLCBzcGxpdCgiICIsICRleHRyYURlZmluZXMpKSAuICIgIiAuICRuYW1lc0ZpbGUgLiAi
fCIpIG9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gZmlsZTogJG5hbWVzRmlsZSI7CisgICAgICAgIG9w
ZW4oJG5hbWVzLCAkbmFtZXNGaWxlKSBvciBkaWUgIkZhaWxlZCB0byBvcGVuIGZpbGU6ICRuYW1l
c0ZpbGUiOwogICAgIH0KIAotICAgICMgU3RvcmUgaGFzaGVzIGtleXMgY291bnQgdG8ga25vdyBp
ZiBzb21lIGluc2VydGlvbiBvY2N1cmVkLgotICAgIG15ICR0YWdzQ291bnQgPSBrZXlzICV0YWdz
OwotICAgIG15ICRhdHRyc0NvdW50ID0ga2V5cyAlYXR0cnM7Ci0KICAgICBteSAkSW5QYXJzZXIg
PSBJbkZpbGVzUGFyc2VyLT5uZXcoKTsKLQotICAgIHN3aXRjaCAoJHR5cGUpIHsKLSAgICAgICAg
Y2FzZSAidGFncyIgewotICAgICAgICAgICAgJEluUGFyc2VyLT5wYXJzZSgkbmFtZXMsIFwmcGFy
YW1ldGVyc0hhbmRsZXIsIFwmdGFnc0hhbmRsZXIpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
ImF0dHJzIiB7Ci0gICAgICAgICAgICAkSW5QYXJzZXItPnBhcnNlKCRuYW1lcywgXCZwYXJhbWV0
ZXJzSGFuZGxlciwgXCZhdHRyc0hhbmRsZXIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgZGllICJEbyBub3Qga25vdyBob3cgdG8gcGFyc2UgJHR5cGUiOwotICAgICAg
ICB9Ci0gICAgfQorICAgICRJblBhcnNlci0+cGFyc2UoJG5hbWVzLCBcJnBhcmFtZXRlcnNIYW5k
bGVyLCAkaGFuZGxlcik7CiAKICAgICBjbG9zZSgkbmFtZXMpOworICAgIGRpZSAiRmFpbGVkIHRv
IHJlYWQgbmFtZXMgZnJvbSBmaWxlOiAkbmFtZXNGaWxlIiBpZiAoa2V5cyAleyRoYXNoVG9GaWxs
UmVmfSA9PSAwKTsKKyAgICByZXR1cm4gJGhhc2hUb0ZpbGxSZWY7Cit9CiAKLSAgICBkaWUgIkZh
aWxlZCB0byByZWFkIG5hbWVzIGZyb20gZmlsZTogJG5hbWVzRmlsZSIgaWYgKChrZXlzICV0YWdz
ID09ICR0YWdzQ291bnQpICYmIChrZXlzICVhdHRycyA9PSAkYXR0cnNDb3VudCkpOworc3ViIHJl
YWRBdHRycygkJCkKK3sKKyAgICBteSAoJG5hbWVzRmlsZSwgJHVzZVByZXByb2Nlc3NvcikgPSBA
XzsKKyAgICAlcGFyc2VkQXR0cnMgPSAoKTsKKyAgICByZXR1cm4gcmVhZE5hbWVzKCRuYW1lc0Zp
bGUsIFwlcGFyc2VkQXR0cnMsIFwmYXR0cnNIYW5kbGVyLCAkdXNlUHJlcHJvY2Vzc29yKTsKK30K
Kworc3ViIHJlYWRUYWdzKCQkKQoreworICAgIG15ICgkbmFtZXNGaWxlLCAkdXNlUHJlcHJvY2Vz
c29yKSA9IEBfOworICAgICVwYXJzZWRUYWdzID0gKCk7CisgICAgcmV0dXJuIHJlYWROYW1lcygk
bmFtZXNGaWxlLCBcJXBhcnNlZFRhZ3MsIFwmdGFnc0hhbmRsZXIsICR1c2VQcmVwcm9jZXNzb3Ip
OwogfQogCiBzdWIgcHJpbnRNYWNyb3MKQEAgLTI0NiwxMyArMjY2LDEzIEBAIHN1YiB1c2VzRGVm
YXVsdFdyYXBwZXIKIHN1YiBidWlsZENvbnN0cnVjdG9yTWFwCiB7CiAgICAgbXkgJXRhZ0NvbnN0
cnVjdG9yTWFwID0gKCk7Ci0gICAgZm9yIG15ICR0YWdOYW1lIChrZXlzICV0YWdzKSB7Ci0gICAg
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9e2ludGVyZmFjZU5hbWV9Owor
ICAgIGZvciBteSAkdGFnTmFtZSAoa2V5cyAlZW5hYmxlZFRhZ3MpIHsKKyAgICAgICAgbXkgJGlu
dGVyZmFjZU5hbWUgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2ludGVyZmFjZU5hbWV9OwogICAg
ICAgICBuZXh0IGlmICh1c2VzRGVmYXVsdFdyYXBwZXIoJGludGVyZmFjZU5hbWUpKTsKIAotICAg
ICAgICBpZiAoJHRhZ3N7JHRhZ05hbWV9e21hcFRvVGFnTmFtZX0pIHsKLSAgICAgICAgICAgIGRp
ZSAiQ2Fubm90IGhhbmRsZSBtdWx0aXBsZSBtYXBUb1RhZ05hbWUgZm9yICR0YWdOYW1lXG4iIGlm
ICR0YWdzeyR0YWdzeyR0YWdOYW1lfXttYXBUb1RhZ05hbWV9fXttYXBUb1RhZ05hbWV9OwotICAg
ICAgICAgICAgJGludGVyZmFjZU5hbWUgPSAkdGFnc3sgJHRhZ3N7JHRhZ05hbWV9e21hcFRvVGFn
TmFtZX0gfXtpbnRlcmZhY2VOYW1lfTsKKyAgICAgICAgaWYgKCRlbmFibGVkVGFnc3skdGFnTmFt
ZX17bWFwVG9UYWdOYW1lfSkgeworICAgICAgICAgICAgZGllICJDYW5ub3QgaGFuZGxlIG11bHRp
cGxlIG1hcFRvVGFnTmFtZSBmb3IgJHRhZ05hbWVcbiIgaWYgJGVuYWJsZWRUYWdzeyRlbmFibGVk
VGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfX17bWFwVG9UYWdOYW1lfTsKKyAgICAgICAgICAg
ICRpbnRlcmZhY2VOYW1lID0gJGVuYWJsZWRUYWdzeyAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e21h
cFRvVGFnTmFtZX0gfXtpbnRlcmZhY2VOYW1lfTsKICAgICAgICAgfQogCiAgICAgICAgICMgQ2hv
cCB0aGUgc3RyaW5nIHRvIGtlZXAgdGhlIGludGVyZXN0aW5nIHBhcnQuCkBAIC0yNzIsMTAgKzI5
MiwxMCBAQCBzdWIgcHJpbnRDb25zdHJ1Y3RvclNpZ25hdHVyZQogICAgIHByaW50IEYgInN0YXRp
YyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAke2NvbnN0cnVjdG9y
TmFtZX1Db25zdHJ1Y3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiAkY29uc3RydWN0b3JUYWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQiOwogICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVx
ICJIVE1MIikgewogICAgICAgICBwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCoiOwotICAgICAg
ICBwcmludCBGICIgZm9ybUVsZW1lbnQiIGlmICR0YWdzeyR0YWdOYW1lfXtjb25zdHJ1Y3Rvck5l
ZWRzRm9ybUVsZW1lbnR9OworICAgICAgICBwcmludCBGICIgZm9ybUVsZW1lbnQiIGlmICRlbmFi
bGVkVGFnc3skdGFnTmFtZX17Y29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50fTsKICAgICB9CiAg
ICAgcHJpbnQgRiAiLCBib29sIjsKLSAgICBwcmludCBGICIgY3JlYXRlZEJ5UGFyc2VyIiBpZiAk
dGFnc3skdGFnTmFtZX17Y29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcn07CisgICAgcHJp
bnQgRiAiIGNyZWF0ZWRCeVBhcnNlciIgaWYgJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25zdHJ1
Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyfTsKICAgICBwcmludCBGICIpXG57XG4iOwogfQogCkBA
IC0yODcsNyArMzA3LDcgQEAgc3ViIHByaW50Q29uc3RydWN0b3JJbnRlcmlvcgogICAgIG15ICgk
RiwgJHRhZ05hbWUsICRpbnRlcmZhY2VOYW1lLCAkY29uc3RydWN0b3JUYWdOYW1lKSA9IEBfOwog
CiAgICAgIyBIYW5kbGUgbWVkaWEgZWxlbWVudHMuCi0gICAgaWYgKCR0YWdzeyR0YWdOYW1lfXt3
cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKKyAgICBpZiAoJGVuYWJsZWRUYWdzeyR0
YWdOYW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKICAgICAgICAgcHJpbnQg
RiA8PEVORAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygpOwog
ICAgIGlmICghTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCkgfHwgKHNldHRpbmdzICYmICFzZXR0
aW5ncy0+aXNNZWRpYUVuYWJsZWQoKSkpCkBAIC0zMDAsMTUgKzMyMCwxNSBAQCBFTkQKICAgICBt
eSAkbmV3UHJlZml4ID0gIiI7CiAgICAgbXkgJGNyZWF0ZVN1ZmZpeCA9ICI6OmNyZWF0ZSI7CiAK
LSAgICBpZiAoJHRhZ3N7JHRhZ05hbWV9e2NyZWF0ZVdpdGhOZXd9KSB7CisgICAgaWYgKCRlbmFi
bGVkVGFnc3skdGFnTmFtZX17Y3JlYXRlV2l0aE5ld30pIHsKICAgICAgICAgJG5ld1ByZWZpeCA9
ICJuZXcgIjsKICAgICAgICAgJGNyZWF0ZVN1ZmZpeCA9ICIiOwogICAgIH0KIAogICAgICMgQ2Fs
bCB0aGUgY29uc3RydWN0b3Igd2l0aCB0aGUgcmlnaHQgcGFyYW1ldGVycy4KICAgICBwcmludCBG
ICIgICAgcmV0dXJuICRuZXdQcmVmaXgkaW50ZXJmYWNlTmFtZSR7Y3JlYXRlU3VmZml4fSgkY29u
c3RydWN0b3JUYWdOYW1lLCBkb2N1bWVudCI7Ci0gICAgcHJpbnQgRiAiLCBmb3JtRWxlbWVudCIg
aWYgJHRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudH07Ci0gICAgcHJp
bnQgRiAiLCBjcmVhdGVkQnlQYXJzZXIiIGlmICR0YWdzeyR0YWdOYW1lfXtjb25zdHJ1Y3Rvck5l
ZWRzQ3JlYXRlZEJ5UGFyc2VyfTsKKyAgICBwcmludCBGICIsIGZvcm1FbGVtZW50IiBpZiAkZW5h
YmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudH07CisgICAgcHJp
bnQgRiAiLCBjcmVhdGVkQnlQYXJzZXIiIGlmICRlbmFibGVkVGFnc3skdGFnTmFtZX17Y29uc3Ry
dWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcn07CiAgICAgcHJpbnQgRiAiKTtcbn1cblxuIjsKIH0K
IApAQCAtMzIyLDE1ICszNDIsMTUgQEAgc3ViIHByaW50Q29uc3RydWN0b3JzCiAgICAgIyBUaGlz
IGlzIHRvIGF2b2lkIGdlbmVyYXRpbmcgdGhlIHNhbWUgY29uc3RydWN0b3Igc2V2ZXJhbCB0aW1l
cy4KICAgICBteSAldW5pcXVlVGFncyA9ICgpOwogICAgIGZvciBteSAkdGFnTmFtZSAoc29ydCBr
ZXlzICV0YWdDb25zdHJ1Y3Rvck1hcCkgewotICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICR0
YWdzeyR0YWdOYW1lfXtpbnRlcmZhY2VOYW1lfTsKKyAgICAgICAgbXkgJGludGVyZmFjZU5hbWUg
PSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2ludGVyZmFjZU5hbWV9OwogCiAgICAgICAgICMgSWdu
b3JlIHRoZSBtYXBwZWQgdGFnCiAgICAgICAgICMgRklYTUU6IEl0IGNvdWxkIGJlIG1vdmVkIGlu
c2lkZSB0aGlzIGxvb3AgYnV0IHdhcyBzcGxpdCBmb3IgcmVhZGliaWxpdHkuCi0gICAgICAgIG5l
eHQgaWYgKGRlZmluZWQoJHVuaXF1ZVRhZ3N7JGludGVyZmFjZU5hbWV9KSB8fCAkdGFnc3skdGFn
TmFtZX17bWFwVG9UYWdOYW1lfSk7CisgICAgICAgIG5leHQgaWYgKGRlZmluZWQoJHVuaXF1ZVRh
Z3N7JGludGVyZmFjZU5hbWV9KSB8fCAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e21hcFRvVGFnTmFt
ZX0pOwogCiAgICAgICAgICR1bmlxdWVUYWdzeyRpbnRlcmZhY2VOYW1lfSA9ICcxJzsKIAotICAg
ICAgICBteSAkY29uZGl0aW9uYWwgPSAkdGFnc3skdGFnTmFtZX17Y29uZGl0aW9uYWx9OworICAg
ICAgICBteSAkY29uZGl0aW9uYWwgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbmRpdGlvbmFs
fTsKICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgbXkgJGNvbmRpdGlv
bmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAk
Y29uZGl0aW9uYWwpKSAuICIpIjsKICAgICAgICAgICAgIHByaW50IEYgIiNpZiAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuXG4iOwpAQCAtMzQ2LDEwICszNjYsMTAgQEAgc3ViIHByaW50Q29uc3RydWN0
b3JzCiAKICAgICAjIE1hcHBlZCB0YWcgbmFtZSB1c2VzIGEgc3BlY2lhbCB3cmFwcGVyIHRvIGtl
ZXAgdGhlaXIgcHJlZml4IGFuZCBuYW1lc3BhY2VVUkkgd2hpbGUgdXNpbmcgdGhlIG1hcHBlZCBs
b2NhbG5hbWUuCiAgICAgZm9yIG15ICR0YWdOYW1lIChzb3J0IGtleXMgJXRhZ0NvbnN0cnVjdG9y
TWFwKSB7Ci0gICAgICAgIGlmICgkdGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfSkgewotICAg
ICAgICAgICAgbXkgJG1hcHBlZE5hbWUgPSAkdGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfTsK
KyAgICAgICAgaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfSkgeworICAg
ICAgICAgICAgbXkgJG1hcHBlZE5hbWUgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e21hcFRvVGFn
TmFtZX07CiAgICAgICAgICAgICBwcmludENvbnN0cnVjdG9yU2lnbmF0dXJlKCRGLCAkbWFwcGVk
TmFtZSwgJG1hcHBlZE5hbWUgLiAiVG8iIC4gJHRhZ05hbWUsICJ0YWdOYW1lIik7Ci0gICAgICAg
ICAgICBwcmludENvbnN0cnVjdG9ySW50ZXJpb3IoJEYsICRtYXBwZWROYW1lLCAkdGFnc3skbWFw
cGVkTmFtZX17aW50ZXJmYWNlTmFtZX0sICJRdWFsaWZpZWROYW1lKHRhZ05hbWUucHJlZml4KCks
ICR7bWFwcGVkTmFtZX1UYWcubG9jYWxOYW1lKCksIHRhZ05hbWUubmFtZXNwYWNlVVJJKCkpIik7
CisgICAgICAgICAgICBwcmludENvbnN0cnVjdG9ySW50ZXJpb3IoJEYsICRtYXBwZWROYW1lLCAk
ZW5hYmxlZFRhZ3N7JG1hcHBlZE5hbWV9e2ludGVyZmFjZU5hbWV9LCAiUXVhbGlmaWVkTmFtZSh0
YWdOYW1lLnByZWZpeCgpLCAke21hcHBlZE5hbWV9VGFnLmxvY2FsTmFtZSgpLCB0YWdOYW1lLm5h
bWVzcGFjZVVSSSgpKSIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNjMsMTQgKzM4MywxNCBA
QCBzdWIgcHJpbnRGdW5jdGlvbkluaXRzCiAKICAgICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5
cyAldGFnQ29uc3RydWN0b3JNYXApIHsKIAotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkdGFn
c3skdGFnTmFtZX17Y29uZGl0aW9uYWx9OworICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkZW5h
YmxlZFRhZ3N7JHRhZ05hbWV9e2NvbmRpdGlvbmFsfTsKICAgICAgICAgaWYgKCRjb25kaXRpb25h
bCkgewogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9p
bigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsKICAgICAg
ICAgICAgIHByaW50IEYgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIjsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICgkdGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfSkgewotICAgICAgICAg
ICAgcHJpbnQgRiAiICAgIGFkZFRhZygke3RhZ05hbWV9VGFnLCAkdGFnc3skdGFnTmFtZX17bWFw
VG9UYWdOYW1lfVRvJHt0YWdOYW1lfUNvbnN0cnVjdG9yKTtcbiI7CisgICAgICAgIGlmICgkZW5h
YmxlZFRhZ3N7JHRhZ05hbWV9e21hcFRvVGFnTmFtZX0pIHsKKyAgICAgICAgICAgIHByaW50IEYg
IiAgICBhZGRUYWcoJHt0YWdOYW1lfVRhZywgJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXttYXBUb1Rh
Z05hbWV9VG8ke3RhZ05hbWV9Q29uc3RydWN0b3IpO1xuIjsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHByaW50IEYgIiAgICBhZGRUYWcoJHt0YWdOYW1lfVRhZywgJHRhZ0NvbnN0cnVj
dG9yTWFweyR0YWdOYW1lfUNvbnN0cnVjdG9yKTtcbiI7CiAgICAgICAgIH0KQEAgLTQ1NiwyMiAr
NDc2LDIyIEBAIHN1YiBwcmludE5hbWVzSGVhZGVyRmlsZQogICAgIHByaW50IEYgIi8vIE5hbWVz
cGFjZVxuIjsKICAgICBwcmludCBGICJleHRlcm4gY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5n
ICR7bG93ZXJOYW1lc3BhY2V9TmFtZXNwYWNlVVJJO1xuXG4iOwogCi0gICAgaWYgKGtleXMgJXRh
Z3MpIHsKKyAgICBpZiAoa2V5cyAlYWxsVGFncykgewogICAgICAgICBwcmludCBGICIvLyBUYWdz
XG4iOwotICAgICAgICBwcmludE1hY3JvcygkRiwgImV4dGVybiBjb25zdCBXZWJDb3JlOjpRdWFs
aWZpZWROYW1lIiwgIlRhZyIsIFwldGFncyk7CisgICAgICAgIHByaW50TWFjcm9zKCRGLCAiZXh0
ZXJuIGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUiLCAiVGFnIiwgXCVhbGxUYWdzKTsKICAg
ICB9CiAgICAgCi0gICAgaWYgKGtleXMgJWF0dHJzKSB7CisgICAgaWYgKGtleXMgJWFsbEF0dHJz
KSB7CiAgICAgICAgIHByaW50IEYgIi8vIEF0dHJpYnV0ZXNcbiI7Ci0gICAgICAgIHByaW50TWFj
cm9zKCRGLCAiZXh0ZXJuIGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUiLCAiQXR0ciIsIFwl
YXR0cnMpOworICAgICAgICBwcmludE1hY3JvcygkRiwgImV4dGVybiBjb25zdCBXZWJDb3JlOjpR
dWFsaWZpZWROYW1lIiwgIkF0dHIiLCBcJWFsbEF0dHJzKTsKICAgICB9CiAgICAgcHJpbnQgRiAi
I2VuZGlmXG5cbiI7CiAKLSAgICBpZiAoa2V5cyAldGFncykgeworICAgIGlmIChrZXlzICVhbGxU
YWdzKSB7CiAgICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9VGFncyhzaXplX3QqIHNpemUpO1xuIjsKICAgICB9CiAKLSAgICBp
ZiAoa2V5cyAlYXR0cnMpIHsKKyAgICBpZiAoa2V5cyAlYWxsQXR0cnMpIHsKICAgICAgICAgcHJp
bnQgRiAiV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1B
dHRycyhzaXplX3QqIHNpemUpO1xuIjsKICAgICB9CiAKQEAgLTUxMSwzNSArNTMxLDM1IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsICR7bG93
ZXJOYW1lc3BhY2V9TmFtZXNwYWNlVVJJLCBcIiRwYXJhbWV0ZXJze25hbWVzcGFjZVVSSX1cIikK
ICI7CiAKLSAgICBpZiAoa2V5cyAldGFncykgeworICAgIGlmIChrZXlzICVhbGxUYWdzKSB7CiAg
ICAgICAgIHByaW50IEYgIi8vIFRhZ3NcbiI7Ci0gICAgICAgIGZvciBteSAkbmFtZSAoc29ydCBr
ZXlzICV0YWdzKSB7CisgICAgICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICVhbGxUYWdzKSB7
CiAgICAgICAgICAgICBwcmludCBGICJERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsICIsICRu
YW1lLCAiVGFnLCBudWxsQXRvbSwgXCIkbmFtZVwiLCAke2xvd2VyTmFtZXNwYWNlfU5hbWVzcGFj
ZVVSSSk7XG4iOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBwcmludCBGICJcblxuV2Vi
Q29yZTo6UXVhbGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzKHNpemVf
dCogc2l6ZSlcbiI7CiAgICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29yZTo6UXVh
bGlmaWVkTmFtZSogJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3NbXSA9IHtcbiI7Ci0gICAgICAg
IGZvciBteSAkbmFtZSAoc29ydCBrZXlzICV0YWdzKSB7CisgICAgICAgIGZvciBteSAkbmFtZSAo
c29ydCBrZXlzICVhbGxUYWdzKSB7CiAgICAgICAgICAgICBwcmludCBGICIgICAgICAgIChXZWJD
b3JlOjpRdWFsaWZpZWROYW1lKikmJHtuYW1lfVRhZyxcbiI7CiAgICAgICAgIH0KICAgICAgICAg
cHJpbnQgRiAiICAgIH07XG4iOwotICAgICAgICBwcmludCBGICIgICAgKnNpemUgPSAiLCBzY2Fs
YXIoa2V5cyAldGFncyksICI7XG4iOworICAgICAgICBwcmludCBGICIgICAgKnNpemUgPSAiLCBz
Y2FsYXIoa2V5cyAlYWxsVGFncyksICI7XG4iOwogICAgICAgICBwcmludCBGICIgICAgcmV0dXJu
ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzO1xuIjsKICAgICAgICAgcHJpbnQgRiAifVxuIjsK
ICAgICB9CiAKLSAgICBpZiAoa2V5cyAlYXR0cnMpIHsKKyAgICBpZiAoa2V5cyAlYWxsQXR0cnMp
IHsKICAgICAgICAgcHJpbnQgRiAiXG4vLyBBdHRyaWJ1dGVzXG4iOwotICAgICAgICBmb3IgbXkg
JG5hbWUgKHNvcnQga2V5cyAlYXR0cnMpIHsKKyAgICAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtl
eXMgJWFsbEF0dHJzKSB7CiAgICAgICAgICAgICBwcmludCBGICJERUZJTkVfR0xPQkFMKFF1YWxp
ZmllZE5hbWUsICIsICRuYW1lLCAiQXR0ciwgbnVsbEF0b20sIFwiJG5hbWVcIiwgJHtsb3dlck5h
bWVzcGFjZX1OYW1lc3BhY2VVUkkpO1xuIjsKICAgICAgICAgfQogICAgICAgICBwcmludCBGICJc
blxuV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRy
cyhzaXplX3QqIHNpemUpXG4iOwogICAgICAgICBwcmludCBGICJ7XG4gICAgc3RhdGljIFdlYkNv
cmU6OlF1YWxpZmllZE5hbWUqICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyW10gPSB7XG4iOwot
ICAgICAgICBmb3IgbXkgJG5hbWUgKHNvcnQga2V5cyAlYXR0cnMpIHsKKyAgICAgICAgZm9yIG15
ICRuYW1lIChzb3J0IGtleXMgJWFsbEF0dHJzKSB7CiAgICAgICAgICAgICBwcmludCBGICIgICAg
ICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lKikmJHtuYW1lfUF0dHIsXG4iOwogICAgICAgICB9
CiAgICAgICAgIHByaW50IEYgIiAgICB9O1xuIjsKLSAgICAgICAgcHJpbnQgRiAiICAgICpzaXpl
ID0gIiwgc2NhbGFyKGtleXMgJWF0dHJzKSwgIjtcbiI7CisgICAgICAgIHByaW50IEYgIiAgICAq
c2l6ZSA9ICIsIHNjYWxhcihrZXlzICVhbGxBdHRycyksICI7XG4iOwogICAgICAgICBwcmludCBG
ICIgICAgcmV0dXJuICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyO1xuIjsKICAgICAgICAgcHJp
bnQgRiAifVxuIjsKICAgICB9CkBAIC01NjAsMTMgKzU4MCwxMyBAQCBwcmludCBGICJcbnZvaWQg
aW5pdCgpCiAKICAgICBwcmludChGICIgICAgLy8gTmFtZXNwYWNlXG4iKTsKICAgICBwcmludChG
ICIgICAgbmV3ICgodm9pZCopJiR7bG93ZXJOYW1lc3BhY2V9TmFtZXNwYWNlVVJJKSBBdG9taWNT
dHJpbmcoJHtsb3dlck5hbWVzcGFjZX1OUyk7XG5cbiIpOwotICAgIGlmIChrZXlzICV0YWdzKSB7
CisgICAgaWYgKGtleXMgJWFsbFRhZ3MpIHsKICAgICAgICAgbXkgJHRhZ3NOYW1lc3BhY2UgPSAk
cGFyYW1ldGVyc3t0YWdzTnVsbE5hbWVzcGFjZX0gPyAibnVsbEF0b20iIDogIiR7bG93ZXJOYW1l
c3BhY2V9TlMiOwotICAgICAgICBwcmludERlZmluaXRpb25zKCRGLCBcJXRhZ3MsICJ0YWdzIiwg
JHRhZ3NOYW1lc3BhY2UpOworICAgICAgICBwcmludERlZmluaXRpb25zKCRGLCBcJWFsbFRhZ3Ms
ICJ0YWdzIiwgJHRhZ3NOYW1lc3BhY2UpOwogICAgIH0KLSAgICBpZiAoa2V5cyAlYXR0cnMpIHsK
KyAgICBpZiAoa2V5cyAlYWxsQXR0cnMpIHsKICAgICAgICAgbXkgJGF0dHJzTmFtZXNwYWNlID0g
JHBhcmFtZXRlcnN7YXR0cnNOdWxsTmFtZXNwYWNlfSA/ICJudWxsQXRvbSIgOiAiJHtsb3dlck5h
bWVzcGFjZX1OUyI7Ci0gICAgICAgIHByaW50RGVmaW5pdGlvbnMoJEYsIFwlYXR0cnMsICJhdHRy
aWJ1dGVzIiwgJGF0dHJzTmFtZXNwYWNlKTsKKyAgICAgICAgcHJpbnREZWZpbml0aW9ucygkRiwg
XCVhbGxBdHRycywgImF0dHJpYnV0ZXMiLCAkYXR0cnNOYW1lc3BhY2UpOwogICAgIH0KIAogICAg
IHByaW50IEYgIn1cblxufSB9XG5cbiI7CkBAIC01NzksOCArNTk5LDggQEAgc3ViIHByaW50SlNF
bGVtZW50SW5jbHVkZXMKICAgICBteSAkd3JhcHBlckZhY3RvcnlUeXBlID0gc2hpZnQ7CiAKICAg
ICBteSAldGFnc1NlZW47Ci0gICAgZm9yIG15ICR0YWdOYW1lIChzb3J0IGtleXMgJXRhZ3MpIHsK
LSAgICAgICAgbXkgJEpTSW50ZXJmYWNlTmFtZSA9ICR0YWdzeyR0YWdOYW1lfXtKU0ludGVyZmFj
ZU5hbWV9OworICAgIGZvciBteSAkdGFnTmFtZSAoc29ydCBrZXlzICVlbmFibGVkVGFncykgewor
ICAgICAgICBteSAkSlNJbnRlcmZhY2VOYW1lID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtKU0lu
dGVyZmFjZU5hbWV9OwogICAgICAgICBuZXh0IGlmIGRlZmluZWQoJHRhZ3NTZWVueyRKU0ludGVy
ZmFjZU5hbWV9KSB8fCB1c2VzRGVmYXVsdEpTV3JhcHBlcigkdGFnTmFtZSk7CiAgICAgICAgICR0
YWdzU2VlbnskSlNJbnRlcmZhY2VOYW1lfSA9IDE7CiAKQEAgLTU5Myw4ICs2MTMsOCBAQCBzdWIg
cHJpbnRFbGVtZW50SW5jbHVkZXMKICAgICBteSAkRiA9IHNoaWZ0OwogCiAgICAgbXkgJXRhZ3NT
ZWVuOwotICAgIGZvciBteSAkdGFnTmFtZSAoc29ydCBrZXlzICV0YWdzKSB7Ci0gICAgICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9e2ludGVyZmFjZU5hbWV9OworICAgIGZv
ciBteSAkdGFnTmFtZSAoc29ydCBrZXlzICVlbmFibGVkVGFncykgeworICAgICAgICBteSAkaW50
ZXJmYWNlTmFtZSA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17aW50ZXJmYWNlTmFtZX07CiAgICAg
ICAgIG5leHQgaWYgZGVmaW5lZCgkdGFnc1NlZW57JGludGVyZmFjZU5hbWV9KTsKICAgICAgICAg
JHRhZ3NTZWVueyRpbnRlcmZhY2VOYW1lfSA9IDE7CiAKQEAgLTgxNSw3ICs4MzUsNyBAQCBzdWIg
dXNlc0RlZmF1bHRKU1dyYXBwZXIKICAgICBteSAkbmFtZSA9IHNoaWZ0OwogCiAgICAgIyBBIHRh
ZyByZXVzZXMgdGhlIGRlZmF1bHQgd3JhcHBlciBpZiBpdHMgSlNJbnRlcmZhY2VOYW1lIG1hdGNo
ZXMgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIEVsZW1lbnQuCi0gICAgcmV0dXJuICR0YWdzeyRuYW1l
fXtKU0ludGVyZmFjZU5hbWV9IGVxICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gLiAiRWxlbWVudCIg
fHwgJHRhZ3N7JG5hbWV9e0pTSW50ZXJmYWNlTmFtZX0gZXEgIkhUTUxOb1NjcmlwdEVsZW1lbnQi
OworICAgIHJldHVybiAkZW5hYmxlZFRhZ3N7JG5hbWV9e0pTSW50ZXJmYWNlTmFtZX0gZXEgJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfSAuICJFbGVtZW50IiB8fCAkZW5hYmxlZFRhZ3N7JG5hbWV9e0pT
SW50ZXJmYWNlTmFtZX0gZXEgIkhUTUxOb1NjcmlwdEVsZW1lbnQiOwogfQogCiBzdWIgcHJpbnRX
cmFwcGVyRnVuY3Rpb25zCkBAIC04MjQsMTMgKzg0NCwxMyBAQCBzdWIgcHJpbnRXcmFwcGVyRnVu
Y3Rpb25zCiAgICAgbXkgJHdyYXBwZXJGYWN0b3J5VHlwZSA9IHNoaWZ0OwogCiAgICAgbXkgJXRh
Z3NTZWVuOwotICAgIGZvciBteSAkdGFnTmFtZSAoc29ydCBrZXlzICV0YWdzKSB7CisgICAgZm9y
IG15ICR0YWdOYW1lIChzb3J0IGtleXMgJWVuYWJsZWRUYWdzKSB7CiAgICAgICAgICMgQXZvaWQg
ZGVmaW5pbmcgdGhlIHNhbWUgd3JhcHBlciBtZXRob2QgdHdpY2UuCi0gICAgICAgIG15ICRKU0lu
dGVyZmFjZU5hbWUgPSAkdGFnc3skdGFnTmFtZX17SlNJbnRlcmZhY2VOYW1lfTsKKyAgICAgICAg
bXkgJEpTSW50ZXJmYWNlTmFtZSA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17SlNJbnRlcmZhY2VO
YW1lfTsKICAgICAgICAgbmV4dCBpZiBkZWZpbmVkKCR0YWdzU2VlbnskSlNJbnRlcmZhY2VOYW1l
fSkgfHwgdXNlc0RlZmF1bHRKU1dyYXBwZXIoJHRhZ05hbWUpOwogICAgICAgICAkdGFnc1NlZW57
JEpTSW50ZXJmYWNlTmFtZX0gPSAxOwogCi0gICAgICAgIG15ICRjb25kaXRpb25hbCA9ICR0YWdz
eyR0YWdOYW1lfXtjb25kaXRpb25hbH07CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRlbmFi
bGVkVGFnc3skdGFnTmFtZX17Y29uZGl0aW9uYWx9OwogICAgICAgICBpZiAoJGNvbmRpdGlvbmFs
KSB7CiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2lu
KCIpICYmIEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOwogICAgICAg
ICAgICAgcHJpbnQgRiAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiI7CkBAIC04MzksNyAr
ODU5LDcgQEAgc3ViIHByaW50V3JhcHBlckZ1bmN0aW9ucwogICAgICAgICBpZiAoJHdyYXBwZXJG
YWN0b3J5VHlwZSBlcSAiSlMiKSB7CiAgICAgICAgICAgICAjIEhhY2sgZm9yIHRoZSBtZWRpYSB0
YWdzCiAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBoYXZlIGJlZW4gZG9uZSB2aWEg
YSBDdXN0b21XcmFwcGVyIGF0dHJpYnV0ZSBhbmQgYSBzZXBhcmF0ZSAqQ3VzdG9tIGZpbGUuCi0g
ICAgICAgICAgICBpZiAoJHRhZ3N7JHRhZ05hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxh
YmxlfSkgeworICAgICAgICAgICAgaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9u
bHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7CiAgICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAog
c3RhdGljIEpTTm9kZSogY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQpCiB7CkBAIC04NjIsNyArODgyLDcgQEAg
RU5ECiA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9yeVR5
cGUgZXEgIlY4IikgewotICAgICAgICAgICAgaWYgKCR0YWdzeyR0YWdOYW1lfXt3cmFwcGVyT25s
eUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKKyAgICAgICAgICAgIGlmICgkZW5hYmxlZFRhZ3N7JHRh
Z05hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewogICAgICAgICAgICAgICAg
IHByaW50IEYgPDxFTkQKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlJHtKU0lu
dGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVu
dCkKIHsKQEAgLTk4NCwxNyArMTAwNCwxNyBAQCBFTkQKIDsKICAgICB9CiAKLSAgICBmb3IgbXkg
JHRhZyAoc29ydCBrZXlzICV0YWdzKSB7CisgICAgZm9yIG15ICR0YWcgKHNvcnQga2V5cyAlZW5h
YmxlZFRhZ3MpIHsKICAgICAgICAgIyBEbyBub3QgYWRkIHRoZSBuYW1lIHRvIHRoZSBtYXAgaWYg
aXQgZG9lcyBub3QgaGF2ZSBhIEpTIHdyYXBwZXIgY29uc3RydWN0b3Igb3IgdXNlcyB0aGUgZGVm
YXVsdCB3cmFwcGVyLgotICAgICAgICBuZXh0IGlmIHVzZXNEZWZhdWx0SlNXcmFwcGVyKCR0YWcs
IFwldGFncyk7CisgICAgICAgIG5leHQgaWYgdXNlc0RlZmF1bHRKU1dyYXBwZXIoJHRhZywgXCVl
bmFibGVkVGFncyk7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHRhZ3N7JHRhZ317Y29u
ZGl0aW9uYWx9OworICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkZW5hYmxlZFRhZ3N7JHRhZ317
Y29uZGl0aW9uYWx9OwogICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CiAgICAgICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBz
cGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOwogICAgICAgICAgICAgcHJpbnQgRiAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJHVjVGFn
ID0gJHRhZ3N7JHRhZ317SlNJbnRlcmZhY2VOYW1lfTsKKyAgICAgICAgbXkgJHVjVGFnID0gJGVu
YWJsZWRUYWdzeyR0YWd9e0pTSW50ZXJmYWNlTmFtZX07CiAgICAgICAgIHByaW50IEYgIiAgICAg
ICBtYXAuc2V0KCR7dGFnfVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZSR7dWNUYWd9V3Jh
cHBlcik7XG4iOwogCiAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsK
</data>
<flag name="review"
          id="49129"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>