<?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>29238</bug_id>
          
          <creation_ts>2009-09-13 18:51:04 -0700</creation_ts>
          <short_desc>CodeGenerator.pm needs some cleaning up</short_desc>
          <delta_ts>2009-09-14 16:30:20 -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>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147017</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-13 18:51:04 -0700</bug_when>
    <thetext>A few things in CodeGenerator.pm can be cleaned up:

  * The ability to return multiple .idl files from ScanDirectory isn&apos;t needed.
  * File::Find can be used instead of ScanDirectory.
  * FindParentsRecursively can be done away with; this information can be collected while in AddMethodsConstantsAndAttributesFromParentClasses.
  * The recursion over ancestor interfaces in AddMethodsConstantsAndAttributesFromParentClasses and GetMethodsAndAttributesFromParentClasses can be factored out.
  * The searches for and parsing of .idl files can be factored out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147018</commentid>
    <comment_count>1</comment_count>
      <attachid>39533</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-13 19:02:16 -0700</bug_when>
    <thetext>Created attachment 39533
Patch v1

Patch that simplifies CodeGenerator.pm as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147019</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-13 19:07:41 -0700</bug_when>
    <thetext>I&apos;ve tested that generated IDL files for all four binding targets are unchanged after this patch, btw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147080</commentid>
    <comment_count>3</comment_count>
      <attachid>39533</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 09:58:10 -0700</bug_when>
    <thetext>Comment on attachment 39533
Patch v1

This is mostly a rubber stamp.  But the change looks good as far as I can tell.  I&apos;m *so glad* to see someone working on this again. :)  I&apos;d still love to see us re-write this in python with a real parser (instead of regexps), but this it&apos;s good to see cleanup!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147094</commentid>
    <comment_count>4</comment_count>
      <attachid>39533</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-14 10:19:15 -0700</bug_when>
    <thetext>Comment on attachment 39533
Patch v1

Clearing flags on attachment: 39533

Committed r48356: &lt;http://trac.webkit.org/changeset/48356&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147095</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-14 10:19:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147224</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-14 16:05:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; This is mostly a rubber stamp.

You&apos;re trusting. :-)

&gt; But the change looks good as far as I can tell. I&apos;m *so glad* to see someone
&gt; working on this again. :)  I&apos;d still love to see us re-write this in python
&gt; with a real parser (instead of regexps), but this it&apos;s good to see cleanup!

Is there consensus that scripts should be rewritten in Python?  It seems most of the scripts in WebKitTools/Scripts/ are Perl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147226</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 16:30:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; But the change looks good as far as I can tell. I&apos;m *so glad* to see someone
&gt; &gt; working on this again. :)  I&apos;d still love to see us re-write this in python
&gt; &gt; with a real parser (instead of regexps), but this it&apos;s good to see cleanup!
&gt; 
&gt; Is there consensus that scripts should be rewritten in Python?  It seems most
&gt; of the scripts in WebKitTools/Scripts/ are Perl.

No. :)  I don&apos;t think there is consensus about language choice.  There is consensus that these scripts need love however.

Most (all?) of the new scripting in WebKit has been done in python.  But that&apos;s because much of the recent scripting has come from me or Googlers where python very much the standard language.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39533</attachid>
            <date>2009-09-13 19:02:16 -0700</date>
            <delta_ts>2009-09-14 10:19:15 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>29238-v1.patch</filename>
            <type>text/plain</type>
            <size>15913</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODM0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMDktMDktMTMgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1jYy5p
ZC5hdT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b2RlR2VuZXJhdG9yLnBtIG5lZWRzIHNvbWUgY2xlYW5pbmcgdXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MjM4CisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChGaW5kUGFyZW50c1JlY3Vyc2l2
ZWx5KTogUmVtb3ZlZDsgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgbm93IGhhbmRsZWQgaW4KKyAgICAg
ICAgQWRkTWV0aG9kc0NvbnN0YW50c0FuZEF0dHJpYnV0ZXNGcm9tUGFyZW50Q2xhc3Nlcy4KKyAg
ICAgICAgKEZvckFsbFBhcmVudHMpOiBOZXcgZnVuY3Rpb24gdGhhdCB2aXNpdHMgYW4gaW50ZXJm
YWNlJ3MgYW5jZXN0b3JzIGFuZAorICAgICAgICBpbnZva2VzIGEgY2FsbGJhY2sgZm9yIGVhY2gg
b25lLgorICAgICAgICAoQWRkTWV0aG9kc0NvbnN0YW50c0FuZEF0dHJpYnV0ZXNGcm9tUGFyZW50
Q2xhc3Nlcyk6IFNpbXBsaWZpZWQgYnkgdXNpbmcKKyAgICAgICAgRm9yQWxsUGFyZW50cy4KKyAg
ICAgICAgKEdldE1ldGhvZHNBbmRBdHRyaWJ1dGVzRnJvbVBhcmVudENsYXNzZXMpOiBEaXR0by4K
KyAgICAgICAgKElETEZpbGVGb3JJbnRlcmZhY2UpOiBGYWN0b3JlZCBvdXQgcHJldmlvdXMgY2Fs
bHMgdG8gU2NhbkRpcmVjdG9yeSBpbnRvCisgICAgICAgIHRoaXMgbmV3IGZ1bmN0aW9uLCB3aGlj
aCByZXR1cm5zIHRoZSBmaWxlbmFtZSBjb250YWluaW5nIGEgZ2l2ZW4gSURMCisgICAgICAgIGlu
dGVyZmFjZSBkZWZpbml0aW9uLgorICAgICAgICAoUGFyc2VJbnRlcmZhY2UpOiBTaW1wbGlmaWVk
IGJ5IHVzaW5nIElETEZpbGVGb3JJbnRlcmZhY2UuCisgICAgICAgIChTY2FuRGlyZWN0b3J5KTog
UmVtb3ZlZCBpbiBsaWV1IG9mIElETEZpbGVGb3JJbnRlcmZhY2UuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06IERyb3AgY2FsbCB0bworICAgICAgICBGaW5k
UGFyZW50c1JlY3Vyc2l2ZWx5IGFuZCBnZXQgdGhlIGxpc3Qgb2YgcGFyZW50cyBmcm9tIHRoZQor
ICAgICAgICBBZGRNZXRob2RzQ29uc3RhbnRzQW5kQXR0cmlidXRlc0Zyb21QYXJlbnRDbGFzc2Vz
IGNhbGwgaW5zdGVhZC4KKwogMjAwOS0wOS0xMyAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVy
c0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gNDgy
NzEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogCiBwYWNrYWdlIENvZGVHZW5lcmF0b3I7CiAKK3Vz
ZSBGaWxlOjpGaW5kOworCiBteSAkdXNlRG9jdW1lbnQgPSAiIjsKIG15ICR1c2VHZW5lcmF0b3Ig
PSAiIjsKIG15ICR1c2VPdXRwdXREaXIgPSAiIjsKQEAgLTMxLDYgKzMzLDcgQEAgbXkgJHVzZURp
cmVjdG9yaWVzID0gIiI7CiBteSAkdXNlTGF5ZXJPblRvcCA9IDA7CiBteSAkcHJlcHJvY2Vzc29y
OwogbXkgJHdyaXRlRGVwZW5kZW5jaWVzID0gMDsKK215ICRkZWZpbmVzID0gIiI7CiAKIG15ICRj
b2RlR2VuZXJhdG9yID0gMDsKIApAQCAtNTYsMTIgKzU5LDggQEAgbXkgJXN2Z0FuaW1hdGVkVHlw
ZUhhc2ggPSAoIlNWR0FuaW1hdGVkQQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNWR0Fu
aW1hdGVkUmVjdCIgPT4gMSwgIlNWR0FuaW1hdGVkU3RyaW5nIiA9PiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCIgPT4gMSk7CiAKLSMgSGVs
cGVycyBmb3IgJ1NjYW5EaXJlY3RvcnknCi1teSAkZW5kQ29uZGl0aW9uID0gMDsKLW15ICRmb3Vu
ZEZpbGVuYW1lID0gIiI7Ci1teSBAZm91bmRGaWxlbmFtZXMgPSAoKTsKLW15ICRpZ25vcmVQYXJl
bnQgPSAxOwotbXkgJGRlZmluZXMgPSAiIjsKKyMgQ2FjaGUgb2YgSURMIGZpbGUgcGF0aG5hbWVz
LgorbXkgJGlkbEZpbGVzOwogCiAjIERlZmF1bHQgY29uc3RydWN0b3IKIHN1YiBuZXcKQEAgLTEx
OSwxMDUgKzExOCw4MyBAQCBzdWIgUHJvY2Vzc0RvY3VtZW50CiAgICAgJGNvZGVHZW5lcmF0b3It
PmZpbmlzaCgpOwogfQogCi0jIE5lY2Vzc2FyeSBmb3IgVjggYmluZGluZ3MgdG8gZGV0ZXJtaW5l
IHdoZXRoZXIgYW4gaW50ZXJmYWNlIGlzIGRlc2NlbmRhbnQgZnJvbSBOb2RlLgotIyBOb2RlIGRl
c2NlbmRhbnRzIGFyZSB0cmVhdGVkIGRpZmZlcmVudGx5IGJ5IERPTU1hcCBhbmQgdGhpcyBhbGxv
d3MgaW5mZXJyaW5nIHRoZQotIyB0eXBlIHN0YXRpY2FsbHkuIFNlZSBtb3JlIGF0IHRoZSBvcmln
aW5hbCBjaGFuZ2U6IGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zMTk1LgotIyBGSVhN
RTogRmlndXJlIG91dCBhIHdheSB0byBlbGltaW5hdGUgdGhpcyBKUyBiaW5kaW5ncyBkaWNob3Rv
bXkuCi1zdWIgRmluZFBhcmVudHNSZWN1cnNpdmVseQorc3ViIEZvckFsbFBhcmVudHMKIHsKICAg
ICBteSAkb2JqZWN0ID0gc2hpZnQ7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgbXkg
QHBhcmVudHMgPSAoJGRhdGFOb2RlLT5uYW1lKTsKLSAgICBmb3JlYWNoIChAeyRkYXRhTm9kZS0+
cGFyZW50c30pIHsKLSAgICAgICAgbXkgJGludGVyZmFjZSA9ICRvYmplY3QtPlN0cmlwTW9kdWxl
KCRfKTsKLQotICAgICAgICAkZW5kQ29uZGl0aW9uID0gMDsKLSAgICAgICAgJGZvdW5kRmlsZW5h
bWUgPSAiIjsKLSAgICAgICAgZm9yZWFjaCAoQHskdXNlRGlyZWN0b3JpZXN9KSB7Ci0gICAgICAg
ICAgICAkb2JqZWN0LT5TY2FuRGlyZWN0b3J5KCIkaW50ZXJmYWNlLmlkbCIsICRfLCAkXywgMCkg
aWYgKCRmb3VuZEZpbGVuYW1lIGVxICIiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgkZm91
bmRGaWxlbmFtZSBuZSAiIikgewotICAgICAgICAgICAgcHJpbnQgIiAgfCAgfD4gIFBhcnNpbmcg
cGFyZW50IElETCBcIiRmb3VuZEZpbGVuYW1lXCIgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2Vc
IlxuIiBpZiAkdmVyYm9zZTsKLQotICAgICAgICAgICAjIFN0ZXAgIzI6IFBhcnNlIHRoZSBmb3Vu
ZCBJREwgZmlsZSAoaW4gcXVpZXQgbW9kZSkuCi0gICAgICAgICAgICBteSAkcGFyc2VyID0gSURM
UGFyc2VyLT5uZXcoMSk7Ci0gICAgICAgICAgICBteSAkZG9jdW1lbnQgPSAkcGFyc2VyLT5QYXJz
ZSgkZm91bmRGaWxlbmFtZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3IsIDEpOworICAgIG15ICRi
ZWZvcmVSZWN1cnNpb24gPSBzaGlmdDsKKyAgICBteSAkYWZ0ZXJSZWN1cnNpb24gPSBzaGlmdDsK
KyAgICBteSAkcGFyZW50c09ubHkgPSBzaGlmdDsKKworICAgIG15ICRyZWN1cnNlOworICAgICRy
ZWN1cnNlID0gc3ViIHsKKyAgICAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworCisgICAgICAg
IGZvciAoQHskaW50ZXJmYWNlLT5wYXJlbnRzfSkgeworICAgICAgICAgICAgbXkgJGludGVyZmFj
ZU5hbWUgPSAkb2JqZWN0LT5TdHJpcE1vZHVsZSgkXyk7CisgICAgICAgICAgICBteSAkcGFyZW50
SW50ZXJmYWNlID0gJG9iamVjdC0+UGFyc2VJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUsICRwYXJl
bnRzT25seSk7CiAKLSAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNsYXNzIChAeyRkb2N1bWVudC0+
Y2xhc3Nlc30pIHsKLSAgICAgICAgICAgICAgICBAcGFyZW50cyA9IChAcGFyZW50cywgRmluZFBh
cmVudHNSZWN1cnNpdmVseSgkb2JqZWN0LCAkY2xhc3MpKTsKKyAgICAgICAgICAgIGlmICgkYmVm
b3JlUmVjdXJzaW9uKSB7CisgICAgICAgICAgICAgICAgJiRiZWZvcmVSZWN1cnNpb24oJHBhcmVu
dEludGVyZmFjZSkgZXEgJ3BydW5lJyBhbmQgbmV4dDsKICAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGRpZSgiQ291bGQgTk9UIGZpbmQgc3BlY2lmaWVkIHBhcmVu
dCBpbnRlcmZhY2UgXCIkaW50ZXJmYWNlXCIhXG4iKQorICAgICAgICAgICAgJiRyZWN1cnNlKCRw
YXJlbnRJbnRlcmZhY2UpOworICAgICAgICAgICAgJiRhZnRlclJlY3Vyc2lvbigkcGFyZW50SW50
ZXJmYWNlKSBpZiAkYWZ0ZXJSZWN1cnNpb247CiAgICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IEBwYXJlbnRzOworICAgIH07CisKKyAgICAmJHJlY3Vyc2UoJGRhdGFOb2RlKTsKIH0KIAogc3Vi
IEFkZE1ldGhvZHNDb25zdGFudHNBbmRBdHRyaWJ1dGVzRnJvbVBhcmVudENsYXNzZXMKIHsKLSAg
ICAjIEZvciB0aGUgaW50ZXJmYWNlIHBhc3NlZCBpbiwgcmVjdXJzaXZlbHkgcGFyc2UgYWxsIHBh
cmVudCBJRExzIGluIG9yZGVyIHRvCi0gICAgIyBmaW5kIG91dCBhbGwgaW5oZXJpdGVkIHByb3Bl
cnRpZXMvbWV0aG9kcyBhbmQgYWRkIHRoZW0gaW4gdG8gJGRhdGFOb2RlLgotICAgICMgQW4gYXJy
YXkgcmVmZXJlbmNlIGNhbiBiZSBwYXNzZWQgaW4gYXMgJHJlc3VsdCB0byBjYXB0dXJlIHRoZSBu
YW1lcyBvZgotICAgICMgYWxsIG9mIHRoZSBwYXJlbnQgaW50ZXJmYWNlIG5hbWVzIHZpc2l0ZWQu
CisgICAgIyBBZGQgdG8gJGRhdGFOb2RlIGFsbCBvZiBpdHMgaW5oZXJpdGVkIGludGVyZmFjZSBt
ZW1iZXJzLCBleGNlcHQgZm9yIHRob3NlCisgICAgIyBpbmhlcml0ZWQgdGhyb3VnaCAkZGF0YU5v
ZGUncyBmaXJzdCBsaXN0ZWQgcGFyZW50LiAgSWYgYW4gYXJyYXkgcmVmZXJlbmNlCisgICAgIyBp
cyBwYXNzZWQgaW4gYXMgJHBhcmVudHMsIHRoZSBuYW1lcyBvZiBhbGwgYW5jZXN0b3IgaW50ZXJm
YWNlcyB2aXNpdGVkCisgICAgIyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBhcnJheS4gIElmICRj
b2xsZWN0RGlyZWN0UGFyZW50cyBpcyB0cnVlLCB0aGVuCisgICAgIyBldmVuIHRoZSBuYW1lcyBv
ZiAkZGF0YU5vZGUncyBmaXJzdCBsaXN0ZWQgcGFyZW50IGFuZCBpdHMgYW5jZXN0b3JzIHdpbGwK
KyAgICAjIGJlIGFwcGVuZGVkIHRvICRwYXJlbnRzLgogCiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0
OwogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRyZXN1bHQgPSBzaGlmdDsKKyAg
ICBteSAkcGFyZW50cyA9IHNoaWZ0OworICAgIG15ICRjb2xsZWN0RGlyZWN0UGFyZW50cyA9IHNo
aWZ0OwogCi0gICAgbXkgQHBhcmVudHMgPSBAeyRkYXRhTm9kZS0+cGFyZW50c307Ci0gICAgbXkg
JHBhcmVudHNNYXggPSBAeyRkYXRhTm9kZS0+cGFyZW50c307CisgICAgbXkgJGZpcnN0ID0gMTsK
IAotICAgIG15ICRjb25zdGFudHNSZWYgPSAkZGF0YU5vZGUtPmNvbnN0YW50czsKLSAgICBteSAk
ZnVuY3Rpb25zUmVmID0gJGRhdGFOb2RlLT5mdW5jdGlvbnM7Ci0gICAgbXkgJGF0dHJpYnV0ZXNS
ZWYgPSAkZGF0YU5vZGUtPmF0dHJpYnV0ZXM7CisgICAgJG9iamVjdC0+Rm9yQWxsUGFyZW50cygk
ZGF0YU5vZGUsIHN1YiB7CisgICAgICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAotICAgIGZv
cmVhY2ggKEB7JGRhdGFOb2RlLT5wYXJlbnRzfSkgewotICAgICAgICBpZiAoJGlnbm9yZVBhcmVu
dCkgeworICAgICAgICBpZiAoJGZpcnN0KSB7CiAgICAgICAgICAgICAjIElnbm9yZSBmaXJzdCBw
YXJlbnQgY2xhc3MsIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgZ2VuZXJhdGlvbiBpdHNlbGYuCi0g
ICAgICAgICAgICAkaWdub3JlUGFyZW50ID0gMDsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAg
IH0KKyAgICAgICAgICAgICRmaXJzdCA9IDA7CiAKLSAgICAgICAgbXkgJGludGVyZmFjZSA9ICRv
YmplY3QtPlN0cmlwTW9kdWxlKCRfKTsKLQotICAgICAgICBwdXNoKEAkcmVzdWx0LCAkXykgaWYg
ZGVmaW5lZCgkcmVzdWx0KTsKLQotICAgICAgICAjIFN0ZXAgIzE6IEZpbmQgdGhlIElETCBmaWxl
IGFzc29jaWF0ZWQgd2l0aCAnaW50ZXJmYWNlJwotICAgICAgICAkZW5kQ29uZGl0aW9uID0gMDsK
LSAgICAgICAgJGZvdW5kRmlsZW5hbWUgPSAiIjsKKyAgICAgICAgICAgIGlmICgkY29sbGVjdERp
cmVjdFBhcmVudHMpIHsKKyAgICAgICAgICAgICAgICAjIEp1c3QgY29sbGVjdCB0aGUgbmFtZXMg
b2YgdGhlIGRpcmVjdCBhbmNlc3RvciBpbnRlcmZhY2VzLAorICAgICAgICAgICAgICAgICMgaWYg
bmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgIHB1c2goQCRwYXJlbnRzLCAkaW50ZXJmYWNlLT5u
YW1lKTsKKyAgICAgICAgICAgICAgICAkb2JqZWN0LT5Gb3JBbGxQYXJlbnRzKCRpbnRlcmZhY2Us
IHN1YiB7CisgICAgICAgICAgICAgICAgICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAJHBhcmVudHMsICRpbnRlcmZhY2UtPm5hbWUpOworICAgICAg
ICAgICAgICAgIH0sIHVuZGVmLCAxKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBmb3JlYWNo
IChAeyR1c2VEaXJlY3Rvcmllc30pIHsKLSAgICAgICAgICAgICRvYmplY3QtPlNjYW5EaXJlY3Rv
cnkoIiRpbnRlcmZhY2UuaWRsIiwgJF8sICRfLCAwKSBpZiAoJGZvdW5kRmlsZW5hbWUgZXEgIiIp
OworICAgICAgICAgICAgIyBQcnVuZSB0aGUgcmVjdXJzaW9uIGhlcmUuCisgICAgICAgICAgICBy
ZXR1cm4gJ3BydW5lJzsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgkZm91bmRGaWxlbmFtZSBu
ZSAiIikgewotICAgICAgICAgICAgcHJpbnQgIiAgfCAgfD4gIFBhcnNpbmcgcGFyZW50IElETCBc
IiRmb3VuZEZpbGVuYW1lXCIgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VcIlxuIiBpZiAkdmVy
Ym9zZTsKKyAgICAgICAgIyBDb2xsZWN0IHRoZSBuYW1lIG9mIHRoaXMgYWRkaXRpb25hbCBwYXJl
bnQuCisgICAgICAgIHB1c2goQCRwYXJlbnRzLCAkaW50ZXJmYWNlLT5uYW1lKSBpZiAkcGFyZW50
czsKIAotICAgICAgICAgICAgIyBTdGVwICMyOiBQYXJzZSB0aGUgZm91bmQgSURMIGZpbGUgKGlu
IHF1aWV0IG1vZGUpLgotICAgICAgICAgICAgbXkgJHBhcnNlciA9IElETFBhcnNlci0+bmV3KDEp
OwotICAgICAgICAgICAgbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGZvdW5kRmlsZW5h
bWUsICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yKTsKLQotICAgICAgICAgICAgZm9yZWFjaCBteSAk
Y2xhc3MgKEB7JGRvY3VtZW50LT5jbGFzc2VzfSkgewotICAgICAgICAgICAgICAgICMgU3RlcCAj
MzogRW50ZXIgcmVjdXJzaXZlIHBhcmVudCBzZWFyY2gKLSAgICAgICAgICAgICAgICBBZGRNZXRo
b2RzQ29uc3RhbnRzQW5kQXR0cmlidXRlc0Zyb21QYXJlbnRDbGFzc2VzKCRvYmplY3QsICRjbGFz
cywgJHJlc3VsdCk7Ci0KLSAgICAgICAgICAgICAgICAjIFN0ZXAgIzQ6IENvbGxlY3QgY29uc3Rh
bnRzICYgZnVuY3Rpb25zICYgYXR0cmlidXRlcyBvZiB0aGlzIHBhcmVudC1jbGFzcwotICAgICAg
ICAgICAgICAgIG15ICRjb25zdGFudHNNYXggPSBAeyRjbGFzcy0+Y29uc3RhbnRzfTsKLSAgICAg
ICAgICAgICAgICBteSAkZnVuY3Rpb25zTWF4ID0gQHskY2xhc3MtPmZ1bmN0aW9uc307Ci0gICAg
ICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZXNNYXggPSBAeyRjbGFzcy0+YXR0cmlidXRlc307Ci0K
LSAgICAgICAgICAgICAgICBwcmludCAiICB8ICB8PiAgLT4gSW5oZXJpdGluZyAkY29uc3RhbnRz
TWF4IGNvbnN0YW50cywgJGZ1bmN0aW9uc01heCBmdW5jdGlvbnMsICRhdHRyaWJ1dGVzTWF4IGF0
dHJpYnV0ZXMuLi5cbiAgfCAgfD5cbiIgaWYgJHZlcmJvc2U7Ci0KLSAgICAgICAgICAgICAgICAj
IFN0ZXAgIzU6IENvbmNhdGVuYXRlIGRhdGEKLSAgICAgICAgICAgICAgICBwdXNoKEAkY29uc3Rh
bnRzUmVmLCAkXykgZm9yZWFjaCAoQHskY2xhc3MtPmNvbnN0YW50c30pOwotICAgICAgICAgICAg
ICAgIHB1c2goQCRmdW5jdGlvbnNSZWYsICRfKSBmb3JlYWNoIChAeyRjbGFzcy0+ZnVuY3Rpb25z
fSk7Ci0gICAgICAgICAgICAgICAgcHVzaChAJGF0dHJpYnV0ZXNSZWYsICRfKSBmb3JlYWNoIChA
eyRjbGFzcy0+YXR0cmlidXRlc30pOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgZGllKCJDb3VsZCBOT1QgZmluZCBzcGVjaWZpZWQgcGFyZW50IGludGVyZmFj
ZSBcIiRpbnRlcmZhY2VcIiFcbiIpOwotICAgICAgICB9Ci0gICAgfQorICAgICAgICBwcmludCAi
ICB8ICB8PiAgLT4gSW5oZXJpdGluZyAiCisgICAgICAgICAgICAuIEB7JGludGVyZmFjZS0+Y29u
c3RhbnRzfSAuICIgY29uc3RhbnRzLCAiCisgICAgICAgICAgICAuIEB7JGludGVyZmFjZS0+ZnVu
Y3Rpb25zfSAuICIgZnVuY3Rpb25zLCAiCisgICAgICAgICAgICAuIEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30gLiAiIGF0dHJpYnV0ZXMuLi5cbiAgfCAgfD5cbiIgaWYgJHZlcmJvc2U7CisKKyAg
ICAgICAgIyBBZGQgdGhpcyBwYXJlbnQncyBtZW1iZXJzIHRvICRkYXRhTm9kZS4KKyAgICAgICAg
cHVzaChAeyRkYXRhTm9kZS0+Y29uc3RhbnRzfSwgQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KTsK
KyAgICAgICAgcHVzaChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSwgQHskaW50ZXJmYWNlLT5mdW5j
dGlvbnN9KTsKKyAgICAgICAgcHVzaChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30sIEB7JGludGVy
ZmFjZS0+YXR0cmlidXRlc30pOworICAgIH0pOwogfQogCiBzdWIgR2V0TWV0aG9kc0FuZEF0dHJp
YnV0ZXNGcm9tUGFyZW50Q2xhc3NlcwpAQCAtMjI4LDc2ICsyMDUsNjcgQEAgc3ViIEdldE1ldGhv
ZHNBbmRBdHRyaWJ1dGVzRnJvbVBhcmVudENsYQogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKICAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKIAotICAgIG15IEBwYXJlbnRzID0gQHskZGF0YU5vZGUt
PnBhcmVudHN9OwotCi0gICAgcmV0dXJuIGlmIEB7JGRhdGFOb2RlLT5wYXJlbnRzfSA9PSAwOwot
CiAgICAgbXkgQHBhcmVudExpc3QgPSAoKTsKIAotICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5w
YXJlbnRzfSkgewotICAgICAgICBteSAkaW50ZXJmYWNlID0gJG9iamVjdC0+U3RyaXBNb2R1bGUo
JF8pOworICAgICRvYmplY3QtPkZvckFsbFBhcmVudHMoJGRhdGFOb2RlLCB1bmRlZiwgc3ViIHsK
KyAgICAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogCi0gICAgICAgICMgU3RlcCAjMTogRmlu
ZCB0aGUgSURMIGZpbGUgYXNzb2NpYXRlZCB3aXRoICdpbnRlcmZhY2UnCi0gICAgICAgICRlbmRD
b25kaXRpb24gPSAwOwotICAgICAgICAkZm91bmRGaWxlbmFtZSA9ICIiOworICAgICAgICBteSAk
aGFzaCA9IHsKKyAgICAgICAgICAgICJuYW1lIiA9PiAkaW50ZXJmYWNlLT5uYW1lLAorICAgICAg
ICAgICAgImZ1bmN0aW9ucyIgPT4gJGludGVyZmFjZS0+ZnVuY3Rpb25zLAorICAgICAgICAgICAg
ImF0dHJpYnV0ZXMiID0+ICRpbnRlcmZhY2UtPmF0dHJpYnV0ZXMKKyAgICAgICAgfTsKIAotICAg
ICAgICBmb3JlYWNoIChAeyR1c2VEaXJlY3Rvcmllc30pIHsKLSAgICAgICAgICAgICRvYmplY3Qt
PlNjYW5EaXJlY3RvcnkoIiR7aW50ZXJmYWNlfS5pZGwiLCAkXywgJF8sIDApIGlmICRmb3VuZEZp
bGVuYW1lIGVxICIiOwotICAgICAgICB9CisgICAgICAgIHVuc2hpZnQoQHBhcmVudExpc3QsICRo
YXNoKTsKKyAgICB9KTsKIAotICAgICAgICBkaWUoIkNvdWxkIE5PVCBmaW5kIHNwZWNpZmllZCBw
YXJlbnQgaW50ZXJmYWNlIFwiJGludGVyZmFjZVwiIVxuIikgaWYgJGZvdW5kRmlsZW5hbWUgZXEg
IiI7Ci0KLSAgICAgICAgcHJpbnQgIiAgfCAgfD4gIFBhcnNpbmcgcGFyZW50IElETCBcIiRmb3Vu
ZEZpbGVuYW1lXCIgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VcIlxuIiBpZiAkdmVyYm9zZTsK
LQotICAgICAgICAjIFN0ZXAgIzI6IFBhcnNlIHRoZSBmb3VuZCBJREwgZmlsZSAoaW4gcXVpZXQg
bW9kZSkuCi0gICAgICAgIG15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5ldygxKTsKLSAgICAgICAg
bXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGZvdW5kRmlsZW5hbWUsICRkZWZpbmVzKTsK
KyAgICByZXR1cm4gQHBhcmVudExpc3Q7Cit9CiAKLSAgICAgICAgZm9yZWFjaCBteSAkY2xhc3Mg
KEB7JGRvY3VtZW50LT5jbGFzc2VzfSkgewotICAgICAgICAgICAgIyBTdGVwICMzOiBFbnRlciBy
ZWN1cnNpdmUgcGFyZW50IHNlYXJjaAotICAgICAgICAgICAgcHVzaChAcGFyZW50TGlzdCwgR2V0
TWV0aG9kc0FuZEF0dHJpYnV0ZXNGcm9tUGFyZW50Q2xhc3Nlcygkb2JqZWN0LCAkY2xhc3MpKTsK
K3N1YiBJRExGaWxlRm9ySW50ZXJmYWNlCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKLSAgICAgICAgICAgICMgU3RlcCAjNDogQ29s
bGVjdCBjb25zdGFudHMgJiBmdW5jdGlvbnMgJiBhdHRyaWJ1dGVzIG9mIHRoaXMgcGFyZW50LWNs
YXNzCisgICAgdW5sZXNzICgkaWRsRmlsZXMpIHsKKyAgICAgICAgbXkgJHNvdXJjZVJvb3QgPSAk
RU5We1NPVVJDRV9ST09UfTsKKyAgICAgICAgbXkgQGRpcmVjdG9yaWVzID0gbWFwIHsgJF8gPSAi
JHNvdXJjZVJvb3QvJF8iIGlmICRzb3VyY2VSb290ICYmIC1kICIkc291cmNlUm9vdC8kXyI7ICRf
IH0gQCR1c2VEaXJlY3RvcmllczsKIAotICAgICAgICAgICAgIyBwcmludCAiICB8ICB8PiAgLT4g
SW5oZXJpdGluZyAkZnVuY3Rpb25zTWF4IGZ1bmN0aW9ucyBhbWQgJGF0dHJpYnV0ZXNNYXggYXR0
cmlidXRlcy4uLlxuICB8ICB8PlxuIiBpZiAkdmVyYm9zZTsKLSAgICAgICAgICAgIG15ICRoYXNo
ID0gewotICAgICAgICAgICAgICAgICJuYW1lIiA9PiAkY2xhc3MtPm5hbWUsCi0gICAgICAgICAg
ICAgICAgImZ1bmN0aW9ucyIgPT4gJGNsYXNzLT5mdW5jdGlvbnMsCi0gICAgICAgICAgICAgICAg
ImF0dHJpYnV0ZXMiID0+ICRjbGFzcy0+YXR0cmlidXRlcwotICAgICAgICAgICAgfTsKKyAgICAg
ICAgJGlkbEZpbGVzID0geyB9OwogCi0gICAgICAgICAgICAjIFN0ZXAgIzU6IENvbmNhdGVuYXRl
IGRhdGEKLSAgICAgICAgICAgIHVuc2hpZnQoQHBhcmVudExpc3QsICRoYXNoKTsKLSAgICAgICAg
fQorICAgICAgICBteSAkd2FudGVkID0gc3ViIHsKKyAgICAgICAgICAgICRpZGxGaWxlcy0+eyQx
fSA9ICRGaWxlOjpGaW5kOjpuYW1lIGlmIC9eKFtBLVpdLiopXC5pZGwkLzsKKyAgICAgICAgICAg
ICRGaWxlOjpGaW5kOjpwcnVuZSA9IDEgaWYgL15cLi4vOworICAgICAgICB9OworICAgICAgICBm
aW5kKCR3YW50ZWQsIEBkaXJlY3Rvcmllcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIEBwYXJlbnRM
aXN0OworICAgIHJldHVybiAkaWRsRmlsZXMtPnskaW50ZXJmYWNlTmFtZX07CiB9CiAKIHN1YiBQ
YXJzZUludGVyZmFjZQogewotICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlTmFtZSkgPSBAXzsK
KyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsK
KyAgICBteSAkcGFyZW50c09ubHkgPSBzaGlmdDsKIAotICAgICMgU3RlcCAjMTogRmluZCB0aGUg
SURMIGZpbGUgYXNzb2NpYXRlZCB3aXRoICdpbnRlcmZhY2UnCi0gICAgJGVuZENvbmRpdGlvbiA9
IDA7Ci0gICAgJGZvdW5kRmlsZW5hbWUgPSAiIjsKKyAgICByZXR1cm4gdW5kZWYgaWYgJGludGVy
ZmFjZU5hbWUgZXEgJ09iamVjdCc7CiAKLSAgICBmb3JlYWNoIChAeyR1c2VEaXJlY3Rvcmllc30p
IHsKLSAgICAgICAgJG9iamVjdC0+U2NhbkRpcmVjdG9yeSgiJHtpbnRlcmZhY2VOYW1lfS5pZGwi
LCAkXywgJF8sIDApIGlmICRmb3VuZEZpbGVuYW1lIGVxICIiOwotICAgIH0KLSAgICBkaWUgIkNv
dWxkIE5PVCBmaW5kIHNwZWNpZmllZCBwYXJlbnQgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVc
IiFcbiIgaWYgJGZvdW5kRmlsZW5hbWUgZXEgIiI7CisgICAgIyBTdGVwICMxOiBGaW5kIHRoZSBJ
REwgZmlsZSBhc3NvY2lhdGVkIHdpdGggJ2ludGVyZmFjZScKKyAgICBteSAkZmlsZW5hbWUgPSAk
b2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCRpbnRlcmZhY2VOYW1lKQorICAgICAgICBvciBk
aWUoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkaW50ZXJmYWNlTmFt
ZVwiIVxuIik7CiAKLSAgICBwcmludCAiICB8ICB8PiAgUGFyc2luZyBwYXJlbnQgSURMIFwiJGZv
dW5kRmlsZW5hbWVcIiBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIlxuIiBpZiAkdmVy
Ym9zZTsKKyAgICBwcmludCAiICB8ICB8PiAgUGFyc2luZyBwYXJlbnQgSURMIFwiJGZpbGVuYW1l
XCIgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1lXCJcbiIgaWYgJHZlcmJvc2U7CiAKICAg
ICAjIFN0ZXAgIzI6IFBhcnNlIHRoZSBmb3VuZCBJREwgZmlsZSAoaW4gcXVpZXQgbW9kZSkuCiAg
ICAgbXkgJHBhcnNlciA9IElETFBhcnNlci0+bmV3KDEpOwotICAgIG15ICRkb2N1bWVudCA9ICRw
YXJzZXItPlBhcnNlKCRmb3VuZEZpbGVuYW1lLCAkZGVmaW5lcyk7CisgICAgbXkgJGRvY3VtZW50
ID0gJHBhcnNlci0+UGFyc2UoJGZpbGVuYW1lLCAkZGVmaW5lcywgJHByZXByb2Nlc3NvciwgJHBh
cmVudHNPbmx5KTsKIAogICAgIGZvcmVhY2ggbXkgJGludGVyZmFjZSAoQHskZG9jdW1lbnQtPmNs
YXNzZXN9KSB7CiAgICAgICAgIHJldHVybiAkaW50ZXJmYWNlIGlmICRpbnRlcmZhY2UtPm5hbWUg
ZXEgJGludGVyZmFjZU5hbWU7CiAgICAgfQogCi0gICAgZGllICJJbnRlcmZhY2UgZGVmaW5pdGlv
biBub3QgZm91bmQiOworICAgIGRpZSgiQ291bGQgTk9UIGZpbmQgaW50ZXJmYWNlIGRlZmluaXRp
b24gZm9yICRpbnRlcmZhY2UgaW4gJGZpbGVuYW1lIik7CiB9CiAKICMgSGVscGVycyBmb3IgYWxs
IENvZGVHZW5lcmF0b3IqKioucG0gbW9kdWxlcwpAQCAtMzU2LDU2ICszMjQsNiBAQCBzdWIgSXNT
VkdBbmltYXRlZFR5cGUKICAgICByZXR1cm4gMDsgCiB9CiAKLSMgSW50ZXJuYWwgSGVscGVyCi1z
dWIgU2NhbkRpcmVjdG9yeQotewotICAgIG15ICRvYmplY3QgPSBzaGlmdDsKLQotICAgIG15ICRp
bnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkZGlyZWN0b3J5ID0gc2hpZnQ7Ci0gICAgbXkgJHVz
ZURpcmVjdG9yeSA9IHNoaWZ0OwotICAgIG15ICRyZXBvcnRBbGxGaWxlcyA9IHNoaWZ0OwotCi0g
ICAgcmV0dXJuIGlmICgkZW5kQ29uZGl0aW9uIGVxIDEpIGFuZCAoJHJlcG9ydEFsbEZpbGVzIGVx
IDApOwotCi0gICAgbXkgJHNvdXJjZVJvb3QgPSAkRU5We1NPVVJDRV9ST09UfTsKLSAgICBteSAk
dGhpc0RpciA9ICRzb3VyY2VSb290ID8gIiRzb3VyY2VSb290LyRkaXJlY3RvcnkiIDogJGRpcmVj
dG9yeTsKLQotICAgIGlmICghb3BlbmRpcihESVIsICR0aGlzRGlyKSkgewotICAgICAgICBvcGVu
ZGlyKERJUiwgJGRpcmVjdG9yeSkgb3IgZGllICJbRVJST1JdIENhbid0IG9wZW4gZGlyZWN0b3J5
ICR0aGlzRGlyIG9yICRkaXJlY3Rvcnk6IFwiJCFcIlxuIjsKLSAgICAgICAgJHRoaXNEaXIgPSAk
ZGlyZWN0b3J5OwotICAgIH0KLQotICAgIG15IEBuYW1lcyA9IHJlYWRkaXIoRElSKSBvciBkaWUg
IltFUlJPUl0gQ2FudCd0IHJlYWQgZGlyZWN0b3J5ICR0aGlzRGlyIFwiJCFcIlxuIjsKLSAgICBj
bG9zZWRpcihESVIpOwotCi0gICAgZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7Ci0gICAgICAg
ICMgU2tpcCBpZiB3ZSBhbHJlYWR5IGZvdW5kIHRoZSByaWdodCBmaWxlIG9yCi0gICAgICAgICMg
aWYgd2UgZW5jb3VudGVyICdleG90aWMnIHN0dWZmIChpZS4gJy4nLCAnLi4nLCAnLnN2bicpCi0g
ICAgICAgIG5leHQgaWYgKCRlbmRDb25kaXRpb24gZXEgMSkgb3IgKCRuYW1lID1+IC9eXC4vKTsK
LQotICAgICAgICAjIFJlY3VyaXN2ZWx5IGVudGVyIGRpcmVjdG9yeQotICAgICAgICBpZiAoLWQg
IiR0aGlzRGlyLyRuYW1lIikgewotICAgICAgICAgICAgJG9iamVjdC0+U2NhbkRpcmVjdG9yeSgk
aW50ZXJmYWNlLCAiJGRpcmVjdG9yeS8kbmFtZSIsICR1c2VEaXJlY3RvcnksICRyZXBvcnRBbGxG
aWxlcyk7Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgIyBDaGVjayB3
aGV0ZXIgd2UgZm91bmQgdGhlIGRlc2lyZWQgZmlsZQotICAgICAgICBteSAkY29uZGl0aW9uID0g
KCRuYW1lIGVxICRpbnRlcmZhY2UpOwotICAgICAgICAkY29uZGl0aW9uID0gMSBpZiAoJGludGVy
ZmFjZSBlcSAiYWxsaWRscyIpIGFuZCAoJG5hbWUgPX4gL1wuaWRsJC8pOwotCi0gICAgICAgIGlm
ICgkY29uZGl0aW9uKSB7Ci0gICAgICAgICAgICAkZm91bmRGaWxlbmFtZSA9ICIkdGhpc0Rpci8k
bmFtZSI7Ci0KLSAgICAgICAgICAgIGlmICgkcmVwb3J0QWxsRmlsZXMgZXEgMCkgewotICAgICAg
ICAgICAgICAgICRlbmRDb25kaXRpb24gPSAxOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBmb3VuZEZpbGVuYW1lcywgJGZvdW5kRmlsZW5hbWUpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiAjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0
dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuIAogIyBFLmcuLCB4
bWxFbmNvZGluZyBiZWNvbWVzIFhNTEVuY29kaW5nLCBidXQgeG1sbGxhbmcgYmVjb21lcyBYbWxs
YW5nLgogc3ViIFdLX3VjZmlyc3QKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNDgyNzEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNyArMjY2LDcg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIENvcHkgY29udGVudHMgb2YgcGFyZW50IGNs
YXNzZXMgZXhjZXB0IHRoZSBmaXJzdCBwYXJlbnQgb3IgaWYgaXQgaXMKICAgICAjIEV2ZW50VGFy
Z2V0LgotICAgICRjb2RlR2VuZXJhdG9yLT5BZGRNZXRob2RzQ29uc3RhbnRzQW5kQXR0cmlidXRl
c0Zyb21QYXJlbnRDbGFzc2VzKCRkYXRhTm9kZSk7CisgICAgJGNvZGVHZW5lcmF0b3ItPkFkZE1l
dGhvZHNDb25zdGFudHNBbmRBdHRyaWJ1dGVzRnJvbVBhcmVudENsYXNzZXMoJGRhdGFOb2RlLCBc
QGFsbFBhcmVudHMsIDEpOwogCiAgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeVBhcmVudCJ9OwogICAgIG15ICRjb25kaXRpb25h
bFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGRhdGFOb2RlKTsKQEAgLTEwNjgs
OCArMTA2OCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgbXkgJGhhc0xlZ2Fj
eVBhcmVudCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeVBhcmVudCJ9
OwogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JGRhdGFOb2RlKTsKIAotICAgIEBhbGxQYXJlbnRzID0gJGNvZGVHZW5lcmF0b3ItPkZpbmRQYXJl
bnRzUmVjdXJzaXZlbHkoJGRhdGFOb2RlKTsKLQogICAgICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIg
dGVtcGxhdGUKICAgICBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyVGVt
cGxhdGUpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>