<?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>39471</bug_id>
          
          <creation_ts>2010-05-20 23:17:01 -0700</creation_ts>
          <short_desc>Reduce copy/paste code in HTMLParser using some template functions</short_desc>
          <delta_ts>2010-05-23 01:55:28 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>228763</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-20 23:17:01 -0700</bug_when>
    <thetext>Reduce copy/paste code in HTMLParser using some template functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228764</commentid>
    <comment_count>1</comment_count>
      <attachid>56675</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-20 23:25:44 -0700</bug_when>
    <thetext>Created attachment 56675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228766</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-20 23:27:18 -0700</bug_when>
    <thetext>I used awk, sort, and some search-replace to write this patch, so I&apos;m confident that it&apos;s functionally correct.  (I also ran all the layout tests.)

The real question in review is if this code is now clearer to folks.  If it is, great.  If not, I&apos;m happy to chuck the patch.

The copy/paste code bothered me when looking at how much of HTMLParser could be re-used by HTML5Parser, so I went through and did this cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229216</commentid>
    <comment_count>3</comment_count>
      <attachid>56675</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-21 19:10:31 -0700</bug_when>
    <thetext>Comment on attachment 56675
Patch

Ok.  I&apos;m not 100% convinced this is better, but it looks ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229217</commentid>
    <comment_count>4</comment_count>
      <attachid>56675</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-21 19:12:03 -0700</bug_when>
    <thetext>Comment on attachment 56675
Patch

I&apos;m certainly interested in any feedback from others.  This will sit in the cq for a while I&apos;m sure... :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229218</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-21 19:13:25 -0700</bug_when>
    <thetext>Btw, I got hyatt&apos;s feedback in the channel.  He said something to the effect of it &quot;looked slightly better&quot;  (that is not a direct quote).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229219</commentid>
    <comment_count>6</comment_count>
      <attachid>56675</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-05-21 19:18:45 -0700</bug_when>
    <thetext>Comment on attachment 56675
Patch

I think it&apos;s clearer.  A few nits, though (I&apos;m not a reviewer so I won&apos;t touch the review flag).

&gt; +template&lt; size_t ArraySize &gt;
&gt; +static void addTags(TagNameSet&amp; set, QualifiedName (&amp;names)[ArraySize])
Can we get a comment with an explanation of this syntax or a link or something?  I just looked at this so I know how to read the second declaration but by next week I will probably forget and have to spend a while pondering what the parens signify here.
&gt; +{
&gt; +    for (size_t x = 0; x &lt; ArraySize; x++) {
x is an odd choice for a loop index. Why not i?

&gt; +        const QualifiedName&amp; name = names[x];
I don&apos;t think the temp var here adds very much
&gt; +        set.add(name.localName().impl());
&gt; +    }
&gt;  
&gt; +static void mapTagToFunc(FunctionMap&amp; map, const QualifiedName&amp; tag, CreateErrorCheckFunc func)
&gt; +{
&gt; +    map.set(tag.localName().impl(), func);
&gt; +}
&gt; +
&gt; +template&lt; size_t ArraySize &gt;
&gt; +static void mapTagsToFunc(FunctionMap&amp; map, QualifiedName (&amp;names)[ArraySize], CreateErrorCheckFunc func)
&gt; +{
&gt; +    for (size_t x = 0; x &lt; ArraySize; x++) {
&gt; +        const QualifiedName&amp; name = names[x];
Same comments as above (x is unusual for a loop index, temp is of iffy value).
&gt; +        mapTagToFunc(map, name, func);
&gt; +    }
&gt; +}
&gt; +
&gt;  PassRefPtr&lt;Node&gt; HTMLParser::getNode(Token* t)
&gt;  {
&gt;      // Init our error handling table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229428</commentid>
    <comment_count>7</comment_count>
      <attachid>56675</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-23 01:55:21 -0700</bug_when>
    <thetext>Comment on attachment 56675
Patch

Clearing flags on attachment: 56675

Committed r60031: &lt;http://trac.webkit.org/changeset/60031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229429</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-23 01:55:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56675</attachid>
            <date>2010-05-20 23:25:44 -0700</date>
            <delta_ts>2010-05-23 01:55:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39471-20100520232542.patch</filename>
            <type>text/plain</type>
            <size>16547</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGRiNzEzYTFlZmZiMDNjMTcxNGQ1Mzk2ZjE1YzU4MTI1ZGY5NGFkZC4uZDliZDFhNGQwMDk5N2Ew
ZTNjODIwZDAyY2I5MjhkMWYxMjNhODY3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wNS0yMCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIGNvcHkvcGFzdGUgY29kZSBpbiBIVE1MUGFyc2Vy
IHVzaW5nIHNvbWUgdGVtcGxhdGUgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3MQorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hh
bmdlcywgdGh1cyBubyB0ZXN0cy4KKworICAgICAgICAqIGh0bWwvSFRNTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRUYWdzKToKKyAgICAgICAgIC0gTmV3IGZ1bmN0aW9uIHdoaWNo
IHRha2VzIGEgc2V0IGFuIGFuIGFycmF5IG9mIFF1YWxpZmllZE5hbWVzCisgICAgICAgICAgIGFu
ZCBhZGRzIHRoZSBsb2NhbE5hbWUoKS5pbXBsKCkgdG8gdGhlIHNldCBmb3IgZWFjaCBRdWFsaWZp
ZWROYW1lLgorICAgICAgICAoV2ViQ29yZTo6aXNUYWJsZVBhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTY29waW5nVGFnKToKKyAgICAgICAgKFdlYkNvcmU6Om1hcFRhZ1RvRnVuYyk6CisgICAg
ICAgIChXZWJDb3JlOjptYXBUYWdzVG9GdW5jKToKKyAgICAgICAgIC0gTmV3IGZ1bmN0aW9ucyB3
aGljaCB0YWtlIFF1YWxpZmllZE5hbWVzIGFuZCBhIGZ1bmN0aW9uIGFuZCBtYXAgZnJvbSB0aGUK
KyAgICAgICAgICAgbG9jYWxOYW1lKCkuaW1wbCgpIHRvIHRoZSBmdW5jdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxQYXJzZXI6OmdldE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBh
cnNlcjo6aXNIZWFkaW5nVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmlzUmVz
aWR1YWxTdHlsZVRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyOjppc0FmZmVjdGVk
QnlSZXNpZHVhbFN0eWxlKToKKwogMjAxMC0wNS0yMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBObyByZXZpZXc7IGJ1aWxkIGZpeCBvbmx5LgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIu
Y3BwCmluZGV4IDQyOGU4ZDUzMTZjYzgxMWZmMmNmNGFkY2QwOWI4MGY1OTA2NWFhZmYuLmZiZDE0
YzUwYmE2OTBiZjRjYmM2NzQxY2Y1NTkxZGUxOTY4YTVmNGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKQEAg
LTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRO
YW1lLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVk
ZSAiVHJlZURlcHRoTGltaXQuaCIKQEAgLTc3LDYgKzc4LDE4IEBAIHN0YXRpYyBjb25zdCBpbnQg
bWluQmxvY2tMZXZlbFRhZ1ByaW9yaXR5ID0gMzsKIC8vIHNpYmxpbmdzIGluc3RlYWQgb2YgY2hp
bGRyZW4gb25jZSBpdCBpcyByZWFjaGVkLgogc3RhdGljIGNvbnN0IHNpemVfdCBjTWF4QmxvY2tE
ZXB0aCA9IDQwOTY7CiAKKwordHlwZWRlZiBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBUYWdO
YW1lU2V0OworCit0ZW1wbGF0ZTwgc2l6ZV90IEFycmF5U2l6ZSA+CitzdGF0aWMgdm9pZCBhZGRU
YWdzKFRhZ05hbWVTZXQmIHNldCwgUXVhbGlmaWVkTmFtZSAoJm5hbWVzKVtBcnJheVNpemVdKQor
eworICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgQXJyYXlTaXplOyB4KyspIHsKKyAgICAgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSA9IG5hbWVzW3hdOworICAgICAgICBzZXQuYWRkKG5h
bWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICB9Cit9CisKIHN0cnVjdCBIVE1MU3RhY2tFbGVt
IDogTm9uY29weWFibGUgewogICAgIEhUTUxTdGFja0VsZW0oY29uc3QgQXRvbWljU3RyaW5nJiB0
LCBpbnQgbHZsLCBOb2RlKiBuLCBib29sIHIsIEhUTUxTdGFja0VsZW0qIG54KQogICAgICAgICA6
IHRhZ05hbWUodCkKQEAgLTM0Miw4ICszNTUsOCBAQCBzdGF0aWMgYm9vbCBpc1RhYmxlU2VjdGlv
bihjb25zdCBOb2RlKiBuKQogCiBzdGF0aWMgYm9vbCBpc1RhYmxlUGFydChjb25zdCBOb2RlKiBu
KQogewotICAgIHJldHVybiBuLT5oYXNUYWdOYW1lKHRyVGFnKSB8fCBuLT5oYXNUYWdOYW1lKHRk
VGFnKSB8fCBuLT5oYXNUYWdOYW1lKHRoVGFnKSB8fAotICAgICAgICAgICBpc1RhYmxlU2VjdGlv
bihuKTsKKyAgICByZXR1cm4gbi0+aGFzVGFnTmFtZSh0clRhZykgfHwgbi0+aGFzVGFnTmFtZSh0
ZFRhZykgfHwgbi0+aGFzVGFnTmFtZSh0aFRhZykKKyAgICAgICAgfHwgaXNUYWJsZVNlY3Rpb24o
bik7CiB9CiAKIHN0YXRpYyBib29sIGlzVGFibGVSZWxhdGVkKGNvbnN0IE5vZGUqIG4pCkBAIC0z
NTMsNyArMzY2LDkgQEAgc3RhdGljIGJvb2wgaXNUYWJsZVJlbGF0ZWQoY29uc3QgTm9kZSogbikK
IAogc3RhdGljIGJvb2wgaXNTY29waW5nVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkK
IHsKLSAgICByZXR1cm4gdGFnTmFtZSA9PSBhcHBsZXRUYWcgfHwgdGFnTmFtZSA9PSBjYXB0aW9u
VGFnIHx8IHRhZ05hbWUgPT0gdGRUYWcgfHwgdGFnTmFtZSA9PSB0aFRhZyB8fCB0YWdOYW1lID09
IGJ1dHRvblRhZyB8fCB0YWdOYW1lID09IG1hcnF1ZWVUYWcgfHwgdGFnTmFtZSA9PSBvYmplY3RU
YWcgfHwgdGFnTmFtZSA9PSB0YWJsZVRhZyB8fCB0YWdOYW1lID09IGh0bWxUYWc7CisgICAgcmV0
dXJuIHRhZ05hbWUgPT0gYXBwbGV0VGFnIHx8IHRhZ05hbWUgPT0gY2FwdGlvblRhZyB8fCB0YWdO
YW1lID09IHRkVGFnCisgICAgICAgIHx8IHRhZ05hbWUgPT0gdGhUYWcgfHwgdGFnTmFtZSA9PSBi
dXR0b25UYWcgfHwgdGFnTmFtZSA9PSBtYXJxdWVlVGFnCisgICAgICAgIHx8IHRhZ05hbWUgPT0g
b2JqZWN0VGFnIHx8IHRhZ05hbWUgPT0gdGFibGVUYWcgfHwgdGFnTmFtZSA9PSBodG1sVGFnOwog
fQogCiBib29sIEhUTUxQYXJzZXI6Omluc2VydE5vZGUoTm9kZSogbiwgYm9vbCBmbGF0KQpAQCAt
OTEyLDc0ICs5MjcsNjIgQEAgYm9vbCBIVE1MUGFyc2VyOjptYXBDcmVhdGVFcnJvckNoZWNrKFRv
a2VuKiwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0
aWMgdm9pZCBtYXBUYWdUb0Z1bmMoRnVuY3Rpb25NYXAmIG1hcCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnLCBDcmVhdGVFcnJvckNoZWNrRnVuYyBmdW5jKQoreworICAgIG1hcC5zZXQodGFnLmxv
Y2FsTmFtZSgpLmltcGwoKSwgZnVuYyk7Cit9CisKK3RlbXBsYXRlPCBzaXplX3QgQXJyYXlTaXpl
ID4KK3N0YXRpYyB2b2lkIG1hcFRhZ3NUb0Z1bmMoRnVuY3Rpb25NYXAmIG1hcCwgUXVhbGlmaWVk
TmFtZSAoJm5hbWVzKVtBcnJheVNpemVdLCBDcmVhdGVFcnJvckNoZWNrRnVuYyBmdW5jKQorewor
ICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgQXJyYXlTaXplOyB4KyspIHsKKyAgICAgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSA9IG5hbWVzW3hdOworICAgICAgICBtYXBUYWdUb0Z1bmMo
bWFwLCBuYW1lLCBmdW5jKTsKKyAgICB9Cit9CisKIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNl
cjo6Z2V0Tm9kZShUb2tlbiogdCkKIHsKICAgICAvLyBJbml0IG91ciBlcnJvciBoYW5kbGluZyB0
YWJsZS4KICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9uTWFwLCBnRnVuY3Rpb25NYXAs
ICgpKTsKICAgICBpZiAoZ0Z1bmN0aW9uTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBnRnVuY3Rp
b25NYXAuc2V0KGFUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6bmVzdGVkQ3Jl
YXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoYWRkcmVzc1RhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7Ci0g
ICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoYXJ0aWNsZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZI
VE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1h
cC5zZXQoYXNpZGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNy
ZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGJUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6bmVzdGVkU3R5bGVDcmVhdGVFcnJvckNoZWNrKTsKLSAg
ICAgICAgZ0Z1bmN0aW9uTWFwLnNldChiaWdUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBh
cnNlcjo6bmVzdGVkU3R5bGVDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0aW9uTWFw
LnNldChibG9ja3F1b3RlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9z
ZXJDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChib2R5VGFnLmxv
Y2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OmJvZHlDcmVhdGVFcnJvckNoZWNrKTsKLSAg
ICAgICAgZ0Z1bmN0aW9uTWFwLnNldChidXR0b25UYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRN
TFBhcnNlcjo6bmVzdGVkQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5z
ZXQoY2VudGVyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVh
dGVFcnJvckNoZWNrKTsKKyAgICAgICAgUXVhbGlmaWVkTmFtZSBuZXN0ZWRDcmVhdGVFcnJvclRh
Z3NbXSA9IHsgYVRhZywgYnV0dG9uVGFnLCBub2JyVGFnLCB0clRhZyB9OworICAgICAgICBtYXBU
YWdzVG9GdW5jKGdGdW5jdGlvbk1hcCwgbmVzdGVkQ3JlYXRlRXJyb3JUYWdzLCAmSFRNTFBhcnNl
cjo6bmVzdGVkQ3JlYXRlRXJyb3JDaGVjayk7CisKKyAgICAgICAgUXVhbGlmaWVkTmFtZSBuZXN0
ZWRTdHlsZUNyZWF0ZUVycm9yVGFnc1tdID0geyBiVGFnLCBiaWdUYWcsIGlUYWcsIHNUYWcsIHNt
YWxsVGFnLCBzdHJpa2VUYWcsIHR0VGFnLCB1VGFnIH07CisgICAgICAgIG1hcFRhZ3NUb0Z1bmMo
Z0Z1bmN0aW9uTWFwLCBuZXN0ZWRTdHlsZUNyZWF0ZUVycm9yVGFncywgJkhUTUxQYXJzZXI6Om5l
c3RlZFN0eWxlQ3JlYXRlRXJyb3JDaGVjayk7CisKKyAgICAgICAgUXVhbGlmaWVkTmFtZSBwQ2xv
c2VyQ3JlYXRlRXJyb3JUYWdzW10gPSB7IGFkZHJlc3NUYWcsIGFydGljbGVUYWcsCisgICAgICAg
ICAgICBhc2lkZVRhZywgYmxvY2txdW90ZVRhZywgY2VudGVyVGFnLCBkaXJUYWcsIGRpdlRhZywg
ZGxUYWcsCisgICAgICAgICAgICBmaWVsZHNldFRhZywgZm9vdGVyVGFnLCBoMVRhZywgaDJUYWcs
IGgzVGFnLCBoNFRhZywgaDVUYWcsIGg2VGFnLAorICAgICAgICAgICAgaGVhZGVyVGFnLCBoZ3Jv
dXBUYWcsIGhyVGFnLCBsaXN0aW5nVGFnLCBtZW51VGFnLCBuYXZUYWcsIG9sVGFnLAorICAgICAg
ICAgICAgcFRhZywgcGxhaW50ZXh0VGFnLCBwcmVUYWcsIHNlY3Rpb25UYWcsIHVsVGFnIH07Cisg
ICAgICAgIG1hcFRhZ3NUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBwQ2xvc2VyQ3JlYXRlRXJyb3JUYWdz
LCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOworCisgICAgICAgIG1hcFRh
Z1RvRnVuYyhnRnVuY3Rpb25NYXAsIGJvZHlUYWcsICZIVE1MUGFyc2VyOjpib2R5Q3JlYXRlRXJy
b3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGRkVGFnLCAmSFRN
TFBhcnNlcjo6ZGRDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5j
dGlvbk1hcCwgZHRUYWcsICZIVE1MUGFyc2VyOjpkdENyZWF0ZUVycm9yQ2hlY2spOworICAgICAg
ICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBmb3JtVGFnLCAmSFRNTFBhcnNlcjo6Zm9ybUNy
ZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBmcmFt
ZXNldFRhZywgJkhUTUxQYXJzZXI6OmZyYW1lc2V0Q3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAg
IG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGhlYWRUYWcsICZIVE1MUGFyc2VyOjpoZWFkQ3Jl
YXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGlzaW5k
ZXhUYWcsICZIVE1MUGFyc2VyOjppc2luZGV4Q3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1h
cFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIG1hcFRhZywgJkhUTUxQYXJzZXI6Om1hcENyZWF0ZUVy
cm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBsaVRhZywgJkhU
TUxQYXJzZXI6Om5lc3RlZFBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFn
VG9GdW5jKGdGdW5jdGlvbk1hcCwgbm9lbWJlZFRhZywgJkhUTUxQYXJzZXI6Om5vZW1iZWRDcmVh
dGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgbm9mcmFt
ZXNUYWcsICZIVE1MUGFyc2VyOjpub2ZyYW1lc0NyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBt
YXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBub3NjcmlwdFRhZywgJkhUTUxQYXJzZXI6Om5vc2Ny
aXB0Q3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAs
IHRhYmxlVGFnLCAmSFRNTFBhcnNlcjo6cENsb3NlclN0cmljdENyZWF0ZUVycm9yQ2hlY2spOwor
ICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBycFRhZywgJkhUTUxQYXJzZXI6OnJw
Q3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHJ0
VGFnLCAmSFRNTFBhcnNlcjo6cnRDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9G
dW5jKGdGdW5jdGlvbk1hcCwgc2VsZWN0VGFnLCAmSFRNTFBhcnNlcjo6c2VsZWN0Q3JlYXRlRXJy
b3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRkVGFnLCAmSFRN
TFBhcnNlcjo6dGFibGVDZWxsQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVu
YyhnRnVuY3Rpb25NYXAsIHRoVGFnLCAmSFRNTFBhcnNlcjo6dGFibGVDZWxsQ3JlYXRlRXJyb3JD
aGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRib2R5VGFnLCAmSFRN
TFBhcnNlcjo6dGFibGVTZWN0aW9uQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1Rv
RnVuYyhnRnVuY3Rpb25NYXAsIHRmb290VGFnLCAmSFRNTFBhcnNlcjo6dGFibGVTZWN0aW9uQ3Jl
YXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRoZWFk
VGFnLCAmSFRNTFBhcnNlcjo6dGFibGVTZWN0aW9uQ3JlYXRlRXJyb3JDaGVjayk7CisKICAgICAg
ICAgZ0Z1bmN0aW9uTWFwLnNldChjb21tZW50QXRvbS5pbXBsKCksICZIVE1MUGFyc2VyOjpjb21t
ZW50Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoZGRUYWcubG9j
YWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6ZGRDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAg
ICAgZ0Z1bmN0aW9uTWFwLnNldChkaXJUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNl
cjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGRp
dlRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JD
aGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoZGxUYWcubG9jYWxOYW1lKCkuaW1wbCgp
LCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rp
b25NYXAuc2V0KGR0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OmR0Q3JlYXRl
RXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoZm9ybVRhZy5sb2NhbE5hbWUo
KS5pbXBsKCksICZIVE1MUGFyc2VyOjpmb3JtQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdG
dW5jdGlvbk1hcC5zZXQoZmllbGRzZXRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNl
cjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGZv
b3RlclRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJy
b3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoZnJhbWVzZXRUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6ZnJhbWVzZXRDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAg
ICAgZ0Z1bmN0aW9uTWFwLnNldChoMVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2Vy
OjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoaDJU
YWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hl
Y2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGgzVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwg
JkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0aW9u
TWFwLnNldChoNFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3Jl
YXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoaDVUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAg
ICBnRnVuY3Rpb25NYXAuc2V0KGg2VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6
OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChoZWFk
VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OmhlYWRDcmVhdGVFcnJvckNoZWNr
KTsKLSAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChoZWFkZXJUYWcubG9jYWxOYW1lKCkuaW1wbCgp
LCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rp
b25NYXAuc2V0KGhncm91cFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xv
c2VyQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoaHJUYWcubG9j
YWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwot
ICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGlUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBh
cnNlcjo6bmVzdGVkU3R5bGVDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0aW9uTWFw
LnNldChpc2luZGV4VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OmlzaW5kZXhD
cmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChsaVRhZy5sb2NhbE5h
bWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRQQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7
Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQobGlzdGluZ1RhZy5sb2NhbE5hbWUoKS5pbXBsKCks
ICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlv
bk1hcC5zZXQobWFwVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6Om1hcENyZWF0
ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KG1lbnVUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAg
ICBnRnVuY3Rpb25NYXAuc2V0KG5hdlRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2Vy
OjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQobm9i
clRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRDcmVhdGVFcnJvckNo
ZWNrKTsKLSAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChub2VtYmVkVGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSwgJkhUTUxQYXJzZXI6Om5vZW1iZWRDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1
bmN0aW9uTWFwLnNldChub2ZyYW1lc1RhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2Vy
Ojpub2ZyYW1lc0NyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KG5v
c2NyaXB0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6Om5vc2NyaXB0Q3JlYXRl
RXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQob2xUYWcubG9jYWxOYW1lKCku
aW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBn
RnVuY3Rpb25NYXAuc2V0KHBUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENs
b3NlckNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KHBsYWludGV4
dFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JD
aGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQocHJlVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0
aW9uTWFwLnNldChycFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpycENyZWF0
ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KHJ0VGFnLmxvY2FsTmFtZSgp
LmltcGwoKSwgJkhUTUxQYXJzZXI6OnJ0Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5j
dGlvbk1hcC5zZXQoc1RhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRT
dHlsZUNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KHNlY3Rpb25U
YWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hl
Y2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KHNlbGVjdFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCksICZIVE1MUGFyc2VyOjpzZWxlY3RDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0
aW9uTWFwLnNldChzbWFsbFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0
ZWRTdHlsZUNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KHN0cmlr
ZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRTdHlsZUNyZWF0ZUVy
cm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KHRhYmxlVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJTdHJpY3RDcmVhdGVFcnJvckNoZWNrKTsKLSAg
ICAgICAgZ0Z1bmN0aW9uTWFwLnNldCh0Ym9keVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1M
UGFyc2VyOjp0YWJsZVNlY3Rpb25DcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgZ0Z1bmN0aW9u
TWFwLnNldCh0ZFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjp0YWJsZUNlbGxD
cmVhdGVFcnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldCh0ZXh0QXRvbS5pbXBs
KCksICZIVE1MUGFyc2VyOjp0ZXh0Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlv
bk1hcC5zZXQodGZvb3RUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6dGFibGVT
ZWN0aW9uQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQodGhUYWcu
bG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6dGFibGVDZWxsQ3JlYXRlRXJyb3JDaGVj
ayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQodGhlYWRUYWcubG9jYWxOYW1lKCkuaW1wbCgp
LCAmSFRNTFBhcnNlcjo6dGFibGVTZWN0aW9uQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdG
dW5jdGlvbk1hcC5zZXQodHJUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6bmVz
dGVkQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlvbk1hcC5zZXQodHRUYWcubG9j
YWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6bmVzdGVkU3R5bGVDcmVhdGVFcnJvckNoZWNr
KTsKLSAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldCh1VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhU
TUxQYXJzZXI6Om5lc3RlZFN0eWxlQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIGdGdW5jdGlv
bk1hcC5zZXQodWxUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6cENsb3NlckNy
ZWF0ZUVycm9yQ2hlY2spOwogICAgIH0KIAogICAgIGJvb2wgcHJvY2VlZCA9IHRydWU7CkBAIC0x
MDM1LDE2ICsxMDM4LDExIEBAIHZvaWQgSFRNTFBhcnNlcjo6cHJvY2Vzc0Nsb3NlVGFnKFRva2Vu
KiB0KQogCiBib29sIEhUTUxQYXJzZXI6OmlzSGVhZGluZ1RhZyhjb25zdCBBdG9taWNTdHJpbmcm
IHRhZ05hbWUpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiwgaGVhZGluZ1RhZ3MsICgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRhZ05h
bWVTZXQsIGhlYWRpbmdUYWdzLCAoKSk7CiAgICAgaWYgKGhlYWRpbmdUYWdzLmlzRW1wdHkoKSkg
ewotICAgICAgICBoZWFkaW5nVGFncy5hZGQoaDFUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAg
ICAgICAgaGVhZGluZ1RhZ3MuYWRkKGgyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAg
IGhlYWRpbmdUYWdzLmFkZChoM1RhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICBoZWFk
aW5nVGFncy5hZGQoaDRUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgaGVhZGluZ1Rh
Z3MuYWRkKGg1VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIGhlYWRpbmdUYWdzLmFk
ZChoNlRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBRdWFsaWZpZWROYW1lIHRhZ05h
bWVzW10gPSB7IGgxVGFnLCBoMlRhZywgaDNUYWcsIGg0VGFnLCBoNVRhZywgaDZUYWcgfTsKKyAg
ICAgICAgYWRkVGFncyhoZWFkaW5nVGFncywgdGFnTmFtZXMpOwogICAgIH0KLSAgICAKICAgICBy
ZXR1cm4gaGVhZGluZ1RhZ3MuY29udGFpbnModGFnTmFtZS5pbXBsKCkpOwogfQogCkBAIC0xMDgy
LDI2ICsxMDgwLDExIEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNSZXNpZHVhbFN0eWxlVGFnKGNvbnN0
IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+LCByZXNpZHVhbFN0eWxlVGFncywgKCkpOwogICAgIGlmIChy
ZXNpZHVhbFN0eWxlVGFncy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVzaWR1YWxTdHlsZVRhZ3Mu
YWRkKGFUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgcmVzaWR1YWxTdHlsZVRhZ3Mu
YWRkKGZvbnRUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgcmVzaWR1YWxTdHlsZVRh
Z3MuYWRkKHR0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHJlc2lkdWFsU3R5bGVU
YWdzLmFkZCh1VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHJlc2lkdWFsU3R5bGVU
YWdzLmFkZChiVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHJlc2lkdWFsU3R5bGVU
YWdzLmFkZChpVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHJlc2lkdWFsU3R5bGVU
YWdzLmFkZChzVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHJlc2lkdWFsU3R5bGVU
YWdzLmFkZChzdHJpa2VUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgcmVzaWR1YWxT
dHlsZVRhZ3MuYWRkKGJpZ1RhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICByZXNpZHVh
bFN0eWxlVGFncy5hZGQoc21hbGxUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgcmVz
aWR1YWxTdHlsZVRhZ3MuYWRkKGVtVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHJl
c2lkdWFsU3R5bGVUYWdzLmFkZChzdHJvbmdUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAg
ICAgcmVzaWR1YWxTdHlsZVRhZ3MuYWRkKGRmblRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAg
ICAgICByZXNpZHVhbFN0eWxlVGFncy5hZGQoY29kZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwot
ICAgICAgICByZXNpZHVhbFN0eWxlVGFncy5hZGQoc2FtcFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkp
OwotICAgICAgICByZXNpZHVhbFN0eWxlVGFncy5hZGQoa2JkVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSk7Ci0gICAgICAgIHJlc2lkdWFsU3R5bGVUYWdzLmFkZCh2YXJUYWcubG9jYWxOYW1lKCkuaW1w
bCgpKTsKLSAgICAgICAgcmVzaWR1YWxTdHlsZVRhZ3MuYWRkKG5vYnJUYWcubG9jYWxOYW1lKCku
aW1wbCgpKTsKKyAgICAgICAgUXVhbGlmaWVkTmFtZSB0YWdOYW1lc1tdID0geyBhVGFnLCBmb250
VGFnLCB0dFRhZywgdVRhZywgYlRhZywgaVRhZywKKyAgICAgICAgICAgIHNUYWcsIHN0cmlrZVRh
ZywgYmlnVGFnLCBzbWFsbFRhZywgZW1UYWcsIHN0cm9uZ1RhZywgZGZuVGFnLAorICAgICAgICAg
ICAgY29kZVRhZywgc2FtcFRhZywga2JkVGFnLCB2YXJUYWcsIG5vYnJUYWcgfTsKKyAgICAgICAg
YWRkVGFncyhyZXNpZHVhbFN0eWxlVGFncywgdGFnTmFtZXMpOwogICAgIH0KLSAgICAKICAgICBy
ZXR1cm4gcmVzaWR1YWxTdHlsZVRhZ3MuY29udGFpbnModGFnTmFtZS5pbXBsKCkpOwogfQogCkBA
IC0xMTA5LDI1ICsxMDkyLDExIEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1
YWxTdHlsZShjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiwgdW5hZmZlY3RlZFRhZ3MsICgpKTsK
ICAgICBpZiAodW5hZmZlY3RlZFRhZ3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHVuYWZmZWN0ZWRU
YWdzLmFkZChib2R5VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHVuYWZmZWN0ZWRU
YWdzLmFkZCh0YWJsZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICB1bmFmZmVjdGVk
VGFncy5hZGQodGhlYWRUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgdW5hZmZlY3Rl
ZFRhZ3MuYWRkKHRib2R5VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHVuYWZmZWN0
ZWRUYWdzLmFkZCh0Zm9vdFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICB1bmFmZmVj
dGVkVGFncy5hZGQodHJUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgdW5hZmZlY3Rl
ZFRhZ3MuYWRkKHRoVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHVuYWZmZWN0ZWRU
YWdzLmFkZCh0ZFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICB1bmFmZmVjdGVkVGFn
cy5hZGQoY2FwdGlvblRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICB1bmFmZmVjdGVk
VGFncy5hZGQoY29sZ3JvdXBUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgdW5hZmZl
Y3RlZFRhZ3MuYWRkKGNvbFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICB1bmFmZmVj
dGVkVGFncy5hZGQob3B0aW9uVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgIHVuYWZm
ZWN0ZWRUYWdzLmFkZChvcHRncm91cFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICB1
bmFmZmVjdGVkVGFncy5hZGQoc2VsZWN0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAg
IHVuYWZmZWN0ZWRUYWdzLmFkZChvYmplY3RUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAg
ICAgdW5hZmZlY3RlZFRhZ3MuYWRkKGRhdGFncmlkVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0g
ICAgICAgIHVuYWZmZWN0ZWRUYWdzLmFkZChkYXRhbGlzdFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkp
OworICAgICAgICBRdWFsaWZpZWROYW1lIHRhZ05hbWVzW10gPSB7IGJvZHlUYWcsIHRhYmxlVGFn
LCB0aGVhZFRhZywgdGJvZHlUYWcsCisgICAgICAgICAgICB0Zm9vdFRhZywgdHJUYWcsIHRoVGFn
LCB0ZFRhZywgY2FwdGlvblRhZywgY29sZ3JvdXBUYWcsIGNvbFRhZywKKyAgICAgICAgICAgIG9w
dGlvblRhZywgb3B0Z3JvdXBUYWcsIHNlbGVjdFRhZywgb2JqZWN0VGFnLCBkYXRhZ3JpZFRhZywg
ZGF0YWxpc3RUYWcgfTsKKyAgICAgICAgYWRkVGFncyh1bmFmZmVjdGVkVGFncywgdGFnTmFtZXMp
OwogICAgIH0KLSAgICAKICAgICByZXR1cm4gIXVuYWZmZWN0ZWRUYWdzLmNvbnRhaW5zKHRhZ05h
bWUuaW1wbCgpKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>