<?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>80923</bug_id>
          
          <creation_ts>2012-03-12 18:35:24 -0700</creation_ts>
          <short_desc>Web Inspector: CodeGeneratorInspector.py: refactor copy-paste getter methods</short_desc>
          <delta_ts>2012-03-13 09:04:07 -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>Web Inspector (Deprecated)</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576867</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-03-12 18:35:24 -0700</bug_when>
    <thetext>Generator contains several very similar getter methods for InspectorBackendDispatcher.cpp file. Combine them into one method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576885</commentid>
    <comment_count>1</comment_count>
      <attachid>131486</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-03-12 18:47:35 -0700</bug_when>
    <thetext>Created attachment 131486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577147</commentid>
    <comment_count>2</comment_count>
      <attachid>131486</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-03-13 01:02:24 -0700</bug_when>
    <thetext>Comment on attachment 131486
Patch

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

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2030
&gt; +struct AsMethodBridges {
&gt; +    static bool asInt(InspectorValue* value, int* output) { return value-&gt;asNumber(output); }
&gt; +    static bool asString(InspectorValue* value, String* output) { return value-&gt;asString(output); }
&gt; +    static bool asBoolean(InspectorValue* value, bool* output) { return value-&gt;asBoolean(output); }
&gt; +    static bool asObject(InspectorValue* value, RefPtr&lt;InspectorObject&gt;* output) { return value-&gt;asObject(output); }
&gt; +    static bool asArray(InspectorValue* value, RefPtr&lt;InspectorArray&gt;* output) { return value-&gt;asArray(output); }
&gt; +};

Looks like you can use function overloading here or template with specialization.
As result it would be possible to drop as_method argument from getPropertyValueImpl.

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2036
&gt; +int InspectorBackendDispatcherImpl::getInt(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
&gt; +{
&gt; +    return getPropertyValueImpl&lt;int, int, int&gt;(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asInt, &quot;Number&quot;);
&gt; +}
&gt;  

inline it?

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:2039
&gt; +String InspectorBackendDispatcherImpl::getString(InspectorObject* object, const String&amp; name, bool* valueFound, InspectorArray* protocolErrors)
&gt; +{
&gt; +    return getPropertyValueImpl&lt;String, String, String&gt;(object, name, valueFound, protocolErrors, &quot;&quot;, AsMethodBridges::asString, &quot;String&quot;);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577173</commentid>
    <comment_count>3</comment_count>
      <attachid>131486</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-03-13 01:57:32 -0700</bug_when>
    <thetext>Comment on attachment 131486
Patch

Please address Ilya&apos;s comments before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577398</commentid>
    <comment_count>4</comment_count>
      <attachid>131486</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 09:04:02 -0700</bug_when>
    <thetext>Comment on attachment 131486
Patch

Clearing flags on attachment: 131486

Committed r110572: &lt;http://trac.webkit.org/changeset/110572&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577399</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 09:04:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131486</attachid>
            <date>2012-03-12 18:47:35 -0700</date>
            <delta_ts>2012-03-13 09:04:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80923-20120313054733.patch</filename>
            <type>text/plain</type>
            <size>11089</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdkYmViZDEzYTQ0MDdi
NTFlZTE5MWViMzZmNDhmYmVlZDIyYWIyZC4uMGUzMWE3NWQzMmJjZGViMDE0YzA4MDY5YWVhOGZm
MWRmY2U1NDRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAzLTEyICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiByZWZhY3RvciBjb3B5LXBhc3RlIGdldHRlciBt
ZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNl
dmVyYWwgbWV0aG9kcyBhcmUgY29tYmluZWQgaW4gb25lIHVzaW5nIEMrKyB0ZW1wbGF0ZXMuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKwogMjAxMi0w
My0xMSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDU1MgY29udGVudCBpcyBub3Qgc2hvd24gd2hlbiBzdHlsZXNoZWV0IGlz
IGxvYWRlZCB3aXRoIGludmFsaWQgbWltZSB0eXBlIGluIHF1aXJrcyBtb2RlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCAw
YmM3YTI1NGJjOGJiOGQ1MjE5YzE5MGEzNzBjMTNlNmExYTZjNDIwLi44NDM3NzFhOGFhNWI1ZDRm
MjAwY2VmMmMzOTEzN2FjNWFjZGI3Y2I1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMTg1MSwxMSArMTg1MSwxNSBAQCAk
bWV0aG9kRGVjbGFyYXRpb25zCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKICRmaWVsZERlY2xhcmF0aW9ucwogCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgUiwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVjA+CisgICAgc3RhdGljIFIgZ2V0UHJv
cGVydHlWYWx1ZUltcGwoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBWMCBp
bml0aWFsX3ZhbHVlLCBib29sICgqYXNfbWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFYqKSwgY29u
c3QgY2hhciogdHlwZV9uYW1lKTsKKwogICAgIHN0YXRpYyBpbnQgZ2V0SW50KEluc3BlY3Rvck9i
amVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3Bl
Y3RvckFycmF5KiBwcm90b2NvbEVycm9ycyk7CiAgICAgc3RhdGljIFN0cmluZyBnZXRTdHJpbmco
SW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVG
b3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRCb29sZWFuKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycyk7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBnZXRPYmplY3QoSW5zcGVjdG9yT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9y
QXJyYXkqIHByb3RvY29sRXJyb3JzKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JB
cnJheT4gZ2V0QXJyYXkoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKTsKKwog
ICAgIHZvaWQgc2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gcHJvdG9jb2xFcnJvcnMsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJvcik7
CiAKIH07CkBAIC0xOTgyLDE5ICsxOTg2LDIwIEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJCiAg
ICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQo
bWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCi1pbnQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJJbXBsOjpnZXRJbnQoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQor
dGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVjA+CitSIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVySW1wbDo6Z2V0UHJvcGVydHlWYWx1ZUltcGwoSW5zcGVjdG9yT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVj
dG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBWMCBpbml0aWFsX3ZhbHVlLCBib29sICgqYXNfbWV0
aG9kKShJbnNwZWN0b3JWYWx1ZSosIFYqKSwgY29uc3QgY2hhciogdHlwZV9uYW1lKQogewogICAg
IEFTU0VSVChwcm90b2NvbEVycm9ycyk7CiAKICAgICBpZiAodmFsdWVGb3VuZCkKICAgICAgICAg
KnZhbHVlRm91bmQgPSBmYWxzZTsKIAotICAgIGludCB2YWx1ZSA9IDA7CisgICAgViB2YWx1ZSA9
IGluaXRpYWxfdmFsdWU7CiAKICAgICBpZiAoIW9iamVjdCkgewogICAgICAgICBpZiAoIXZhbHVl
Rm91bmQpIHsKICAgICAgICAgICAgIC8vIFJlcXVpcmVkIHBhcmFtZXRlciBpbiBtaXNzaW5nIHBh
cmFtcyBjb250YWluZXIuCi0gICAgICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhT
dHJpbmc6OmZvcm1hdCgiJ3BhcmFtcycgb2JqZWN0IG11c3QgY29udGFpbiByZXF1aXJlZCBwYXJh
bWV0ZXIgJyVzJyB3aXRoIHR5cGUgJ051bWJlcicuIiwgbmFtZS51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdCgiJ3Bh
cmFtcycgb2JqZWN0IG11c3QgY29udGFpbiByZXF1aXJlZCBwYXJhbWV0ZXIgJyVzJyB3aXRoIHR5
cGUgJyVzJy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCksIHR5cGVfbmFtZSkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CkBAIC0yMDA0LDE1MiArMjAwOSw0OSBAQCBpbnQg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsOjpnZXRJbnQoSW5zcGVjdG9yT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFN0cmluZwogCiAgICAgaWYgKHZhbHVlSXRlcmF0b3IgPT0gZW5kKSB7CiAg
ICAgICAgIGlmICghdmFsdWVGb3VuZCkKLSAgICAgICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNo
U3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0ZXIgJyVzJyB3aXRoIHR5cGUgJ051bWJlcicg
d2FzIG5vdCBmb3VuZC4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIHByb3Rv
Y29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0ZXIgJyVzJyB3aXRo
IHR5cGUgJyVzJyB3YXMgbm90IGZvdW5kLiIsIG5hbWUudXRmOCgpLmRhdGEoKSwgdHlwZV9uYW1l
KSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKLSAgICBpZiAoIXZhbHVlSXRlcmF0
b3ItPnNlY29uZC0+YXNOdW1iZXIoJnZhbHVlKSkKLSAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1
c2hTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRlciAnJXMnIGhhcyB3cm9uZyB0eXBlLiBJ
dCBtdXN0IGJlICdOdW1iZXInLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOworICAgIGlmICghYXNf
bWV0aG9kKHZhbHVlSXRlcmF0b3ItPnNlY29uZC5nZXQoKSwgJnZhbHVlKSkKKyAgICAgICAgcHJv
dG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRlciAnJXMnIGhh
cyB3cm9uZyB0eXBlLiBJdCBtdXN0IGJlICclcycuIiwgbmFtZS51dGY4KCkuZGF0YSgpLCB0eXBl
X25hbWUpKTsKICAgICBlbHNlCiAgICAgICAgIGlmICh2YWx1ZUZvdW5kKQogICAgICAgICAgICAg
KnZhbHVlRm91bmQgPSB0cnVlOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotU3RyaW5nIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVySW1wbDo6Z2V0U3RyaW5nKEluc3BlY3Rvck9iamVjdCogb2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5
KiBwcm90b2NvbEVycm9ycykKLXsKLSAgICBBU1NFUlQocHJvdG9jb2xFcnJvcnMpOwotCi0gICAg
aWYgKHZhbHVlRm91bmQpCi0gICAgICAgICp2YWx1ZUZvdW5kID0gZmFsc2U7Ci0KLSAgICBTdHJp
bmcgdmFsdWUgPSAiIjsKLQotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIGlmICghdmFsdWVG
b3VuZCkgewotICAgICAgICAgICAgLy8gUmVxdWlyZWQgcGFyYW1ldGVyIGluIG1pc3NpbmcgcGFy
YW1zIGNvbnRhaW5lci4KLSAgICAgICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0
cmluZzo6Zm9ybWF0KCIncGFyYW1zJyBvYmplY3QgbXVzdCBjb250YWluIHJlcXVpcmVkIHBhcmFt
ZXRlciAnJXMnIHdpdGggdHlwZSAnU3RyaW5nJy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yT2Jq
ZWN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBvYmplY3QtPmVuZCgpOwotICAgIEluc3BlY3Rvck9i
amVjdDo6Y29uc3RfaXRlcmF0b3IgdmFsdWVJdGVyYXRvciA9IG9iamVjdC0+ZmluZChuYW1lKTsK
K3N0cnVjdCBBc01ldGhvZEJyaWRnZXMgeworICAgIHN0YXRpYyBib29sIGFzSW50KEluc3BlY3Rv
clZhbHVlKiB2YWx1ZSwgaW50KiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc051bWJlcihvdXRw
dXQpOyB9CisgICAgc3RhdGljIGJvb2wgYXNTdHJpbmcoSW5zcGVjdG9yVmFsdWUqIHZhbHVlLCBT
dHJpbmcqIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzU3RyaW5nKG91dHB1dCk7IH0KKyAgICBz
dGF0aWMgYm9vbCBhc0Jvb2xlYW4oSW5zcGVjdG9yVmFsdWUqIHZhbHVlLCBib29sKiBvdXRwdXQp
IHsgcmV0dXJuIHZhbHVlLT5hc0Jvb2xlYW4ob3V0cHV0KTsgfQorICAgIHN0YXRpYyBib29sIGFz
T2JqZWN0KEluc3BlY3RvclZhbHVlKiB2YWx1ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91
dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzT2JqZWN0KG91dHB1dCk7IH0KKyAgICBzdGF0aWMgYm9v
bCBhc0FycmF5KEluc3BlY3RvclZhbHVlKiB2YWx1ZSwgUmVmUHRyPEluc3BlY3RvckFycmF5Piog
b3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+YXNBcnJheShvdXRwdXQpOyB9Cit9OwogCi0gICAgaWYg
KHZhbHVlSXRlcmF0b3IgPT0gZW5kKSB7Ci0gICAgICAgIGlmICghdmFsdWVGb3VuZCkKLSAgICAg
ICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0
ZXIgJyVzJyB3aXRoIHR5cGUgJ1N0cmluZycgd2FzIG5vdCBmb3VuZC4iLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KK2ludCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlckltcGw6OmdldEludChJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xF
cnJvcnMpCit7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbXBsPGludCwgaW50LCBpbnQ+
KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIDAsIEFzTWV0aG9kQnJp
ZGdlczo6YXNJbnQsICJOdW1iZXIiKTsKK30KIAotICAgIGlmICghdmFsdWVJdGVyYXRvci0+c2Vj
b25kLT5hc1N0cmluZygmdmFsdWUpKQotICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmlu
ZyhTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICclcycgaGFzIHdyb25nIHR5cGUuIEl0IG11c3Qg
YmUgJ1N0cmluZycuIiwgbmFtZS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBp
ZiAodmFsdWVGb3VuZCkKLSAgICAgICAgICAgICp2YWx1ZUZvdW5kID0gdHJ1ZTsKLSAgICByZXR1
cm4gdmFsdWU7CitTdHJpbmcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsOjpnZXRTdHJp
bmcoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFs
dWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQoreworICAgIHJldHVybiBn
ZXRQcm9wZXJ0eVZhbHVlSW1wbDxTdHJpbmcsIFN0cmluZywgU3RyaW5nPihvYmplY3QsIG5hbWUs
IHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAiIiwgQXNNZXRob2RCcmlkZ2VzOjphc1N0cmlu
ZywgIlN0cmluZyIpOwogfQogCiBib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbDo6
Z2V0Qm9vbGVhbihJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpCiB7Ci0gICAg
QVNTRVJUKHByb3RvY29sRXJyb3JzKTsKLQotICAgIGlmICh2YWx1ZUZvdW5kKQotICAgICAgICAq
dmFsdWVGb3VuZCA9IGZhbHNlOwotCi0gICAgYm9vbCB2YWx1ZSA9IGZhbHNlOwotCi0gICAgaWYg
KCFvYmplY3QpIHsKLSAgICAgICAgaWYgKCF2YWx1ZUZvdW5kKSB7Ci0gICAgICAgICAgICAvLyBS
ZXF1aXJlZCBwYXJhbWV0ZXIgaW4gbWlzc2luZyBwYXJhbXMgY29udGFpbmVyLgotICAgICAgICAg
ICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIidwYXJhbXMnIG9i
amVjdCBtdXN0IGNvbnRhaW4gcmVxdWlyZWQgcGFyYW1ldGVyICclcycgd2l0aCB0eXBlICdCb29s
ZWFuJy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBvYmplY3QtPmVuZCgpOwotICAgIEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgdmFs
dWVJdGVyYXRvciA9IG9iamVjdC0+ZmluZChuYW1lKTsKLQotICAgIGlmICh2YWx1ZUl0ZXJhdG9y
ID09IGVuZCkgewotICAgICAgICBpZiAoIXZhbHVlRm91bmQpCi0gICAgICAgICAgICBwcm90b2Nv
bEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICclcycgd2l0aCB0
eXBlICdCb29sZWFuJyB3YXMgbm90IGZvdW5kLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOwotICAg
ICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZUl0ZXJhdG9yLT5zZWNv
bmQtPmFzQm9vbGVhbigmdmFsdWUpKQotICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmlu
ZyhTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICclcycgaGFzIHdyb25nIHR5cGUuIEl0IG11c3Qg
YmUgJ0Jvb2xlYW4nLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOwotICAgIGVsc2UKLSAgICAgICAg
aWYgKHZhbHVlRm91bmQpCi0gICAgICAgICAgICAqdmFsdWVGb3VuZCA9IHRydWU7Ci0gICAgcmV0
dXJuIHZhbHVlOworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlSW1wbDxib29sLCBib29sLCBi
b29sPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBmYWxzZSwgQXNN
ZXRob2RCcmlkZ2VzOjphc0Jvb2xlYW4sICJCb29sZWFuIik7CiB9CiAKIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw6OmdldE9iamVjdChJ
bnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZv
dW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpCiB7Ci0gICAgQVNTRVJUKHByb3Rv
Y29sRXJyb3JzKTsKLQotICAgIGlmICh2YWx1ZUZvdW5kKQotICAgICAgICAqdmFsdWVGb3VuZCA9
IGZhbHNlOwotCi0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwotCi0gICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgaWYgKCF2YWx1
ZUZvdW5kKSB7Ci0gICAgICAgICAgICAvLyBSZXF1aXJlZCBwYXJhbWV0ZXIgaW4gbWlzc2luZyBw
YXJhbXMgY29udGFpbmVyLgotICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmco
U3RyaW5nOjpmb3JtYXQoIidwYXJhbXMnIG9iamVjdCBtdXN0IGNvbnRhaW4gcmVxdWlyZWQgcGFy
YW1ldGVyICclcycgd2l0aCB0eXBlICdPYmplY3QnLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JP
YmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG9iamVjdC0+ZW5kKCk7Ci0gICAgSW5zcGVjdG9y
T2JqZWN0Ojpjb25zdF9pdGVyYXRvciB2YWx1ZUl0ZXJhdG9yID0gb2JqZWN0LT5maW5kKG5hbWUp
OwotCi0gICAgaWYgKHZhbHVlSXRlcmF0b3IgPT0gZW5kKSB7Ci0gICAgICAgIGlmICghdmFsdWVG
b3VuZCkKLSAgICAgICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9y
bWF0KCJQYXJhbWV0ZXIgJyVzJyB3aXRoIHR5cGUgJ09iamVjdCcgd2FzIG5vdCBmb3VuZC4iLCBu
YW1lLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLQotICAg
IGlmICghdmFsdWVJdGVyYXRvci0+c2Vjb25kLT5hc09iamVjdCgmdmFsdWUpKQotICAgICAgICBw
cm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICclcycg
aGFzIHdyb25nIHR5cGUuIEl0IG11c3QgYmUgJ09iamVjdCcuIiwgbmFtZS51dGY4KCkuZGF0YSgp
KSk7Ci0gICAgZWxzZQotICAgICAgICBpZiAodmFsdWVGb3VuZCkKLSAgICAgICAgICAgICp2YWx1
ZUZvdW5kID0gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIGdldFByb3BlcnR5
VmFsdWVJbXBsPFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4sIEluc3BlY3Rvck9iamVjdCo+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9j
b2xFcnJvcnMsIDAsIEFzTWV0aG9kQnJpZGdlczo6YXNPYmplY3QsICJPYmplY3QiKTsKIH0KIAog
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
OjpnZXRBcnJheShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpCiB7Ci0gICAg
QVNTRVJUKHByb3RvY29sRXJyb3JzKTsKLQotICAgIGlmICh2YWx1ZUZvdW5kKQotICAgICAgICAq
dmFsdWVGb3VuZCA9IGZhbHNlOwotCi0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSA9
IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLQotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAg
IGlmICghdmFsdWVGb3VuZCkgewotICAgICAgICAgICAgLy8gUmVxdWlyZWQgcGFyYW1ldGVyIGlu
IG1pc3NpbmcgcGFyYW1zIGNvbnRhaW5lci4KLSAgICAgICAgICAgIHByb3RvY29sRXJyb3JzLT5w
dXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCIncGFyYW1zJyBvYmplY3QgbXVzdCBjb250YWluIHJl
cXVpcmVkIHBhcmFtZXRlciAnJXMnIHdpdGggdHlwZSAnQXJyYXknLiIsIG5hbWUudXRmOCgpLmRh
dGEoKSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICBJ
bnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG9iamVjdC0+ZW5kKCk7Ci0gICAg
SW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciB2YWx1ZUl0ZXJhdG9yID0gb2JqZWN0LT5m
aW5kKG5hbWUpOwotCi0gICAgaWYgKHZhbHVlSXRlcmF0b3IgPT0gZW5kKSB7Ci0gICAgICAgIGlm
ICghdmFsdWVGb3VuZCkKLSAgICAgICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0
cmluZzo6Zm9ybWF0KCJQYXJhbWV0ZXIgJyVzJyB3aXRoIHR5cGUgJ0FycmF5JyB3YXMgbm90IGZv
dW5kLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAg
fQotCi0gICAgaWYgKCF2YWx1ZUl0ZXJhdG9yLT5zZWNvbmQtPmFzQXJyYXkoJnZhbHVlKSkKLSAg
ICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRl
ciAnJXMnIGhhcyB3cm9uZyB0eXBlLiBJdCBtdXN0IGJlICdBcnJheScuIiwgbmFtZS51dGY4KCku
ZGF0YSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBpZiAodmFsdWVGb3VuZCkKLSAgICAgICAgICAg
ICp2YWx1ZUZvdW5kID0gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIGdldFBy
b3BlcnR5VmFsdWVJbXBsPFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+LCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+LCBJbnNwZWN0b3JBcnJheSo+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJv
dG9jb2xFcnJvcnMsIDAsIEFzTWV0aG9kQnJpZGdlczo6YXNBcnJheSwgIkFycmF5Iik7CiB9CiAK
IGJvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldENvbW1hbmROYW1lKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgU3RyaW5nKiByZXN1bHQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>