<?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>33042</bug_id>
          
          <creation_ts>2009-12-29 22:19:17 -0800</creation_ts>
          <short_desc>Split out BugzillaQueries class from Bugzilla</short_desc>
          <delta_ts>2009-12-29 22:46:38 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>175798</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-29 22:19:17 -0800</bug_when>
    <thetext>Split out BugzillaQueries class from Bugzilla

Bugzilla is a huge, poorly-tested class.  We&apos;re trying to break it into bite-sized bits so it can be better understood and tested.  The next hunk to lop off is the query logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175802</commentid>
    <comment_count>1</comment_count>
      <attachid>45640</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-29 22:27:28 -0800</bug_when>
    <thetext>Created attachment 45640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175804</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 22:29:56 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45640 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175808</commentid>
    <comment_count>3</comment_count>
      <attachid>45640</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-29 22:34:36 -0800</bug_when>
    <thetext>Comment on attachment 45640
Patch

Ok.  A good start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175811</commentid>
    <comment_count>4</comment_count>
      <attachid>45640</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-29 22:46:33 -0800</bug_when>
    <thetext>Comment on attachment 45640
Patch

Clearing flags on attachment: 45640

Committed r52645: &lt;http://trac.webkit.org/changeset/52645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175812</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-29 22:46:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45640</attachid>
            <date>2009-12-29 22:27:28 -0800</date>
            <delta_ts>2009-12-29 22:46:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33042-20091230002727.patch</filename>
            <type>text/plain</type>
            <size>22450</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiMmEwYjZmLi42MTZjOWYyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzIgQEAKIDIwMDktMTIt
MjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IG91dCBCdWd6aWxsYVF1ZXJpZXMgY2xh
c3MgZnJvbSBCdWd6aWxsYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzMwNDIKKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weToK
KyAgICAgICAgIC0gU3BsaXQgb3V0IEJ1Z3ppbGxhUXVlcmllcyBmcm9tIEJ1Z3ppbGxhLgorICAg
ICAgICAgLSBUcnkgdG8gaXNvbGF0ZSBzZWxmLmJ1Z3ppbGxhIHVzYWdlIGludG8gaGVscGVyIGZ1
bmN0aW9ucyB3aGVuZXZlciBwb3NzaWJsZS4KKyAgICAgICAgIC0gQWRkIGEgYnVuY2ggb2YgRklY
TUVzLgorICAgICAgICAgLSBSZW5hbWUgZmV0Y2hfYnVnX2lkc19mcm9tX25lZWRzX2NvbW1pdF9s
aXN0IHRvIGZldGNoX2J1Z19pZHNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0CisgICAgICAgICog
U2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OgorICAgICAgICAgLSBDcmVhdGUg
YSBuZXcgQnVnemlsbGFRdWVyaWVzVGVzdCB0ZXN0Y2FzZSBhbmQgbW92ZSBsb2dpYyB0aGVyZS4K
KyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvYnVpbGRzdGVwc191bml0dGVzdC5weToKKyAgICAg
ICAgIC0gVXNlIEJ1ZyA3NSBpbnN0ZWFkIG9mIDEgc2luY2UgYnVnIDEgZG9lc24ndCBhY3R1YWxs
eSBleGlzdC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvcXVlcmllcy5weToK
KyAgICAgICAgIC0gVXBkYXRlIHRvIHVzZSBidWd6aWxsYS5xdWVyaWVzCisgICAgICAgICogU2Ny
aXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgIC0gRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3VwbG9hZC5weToKKyAgICAgICAgIC0gRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL21vY2tfYnVnemlsbGF0b29sLnB5OgorICAg
ICAgICAgLSBBZGQgYSBNb2NrQnVnemlsbGFRdWVyaWVzLgorICAgICAgICAgLSBNYWtlIHBhdGNo
ZXMgYW5kIGJ1Z3MgZ2xvYmFsIHByaXZhdGVzLgorICAgICAgICAgLSBMZXQgX2lkX3RvX29iamVj
dF9kaWN0aW9uYXJ5IHRha2UgYSB2YXJpYWJsZSBhcmd1bWVudCBsaXN0IGluc3RlYWQgb2YgYW4g
YXJyYXkuCisKKzIwMDktMTItMjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCiAg
ICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFkYW0gQmFydGguCiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCBCdWd6aWxsYUV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9idWd6aWxsYS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxs
YS5weQppbmRleCBiOGZlNDQ3Li40ZmYzY2I5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvYnVnemlsbGEucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2J1Z3ppbGxhLnB5CkBAIC04MSwxMCArODEsNzEgQEAgY2xhc3MgQnVnKG9iamVjdCk6CiAgICAg
ICAgIHJldHVybiBbcGF0Y2ggZm9yIHBhdGNoIGluIHNlbGYucGF0Y2hlcygpIGlmIHBhdGNoLmdl
dCgicmV2aWV3IikgPT0gIj8iXQogCiAKKyMgQSBjb250YWluZXIgZm9yIGFsbCBvZiB0aGUgbG9n
aWMgZm9yIG1ha2luZyBhIHBhcnNpbmcgYnV6aWxsYSBxdWVyaWVzLgorY2xhc3MgQnVnemlsbGFR
dWVyaWVzKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJ1Z3ppbGxhKToKKyAgICAg
ICAgc2VsZi5idWd6aWxhID0gYnVnemlsbGEKKworICAgIGRlZiBfbG9hZF9xdWVyeShzZWxmLCBx
dWVyeSk6CisgICAgICAgIGZ1bGxfdXJsID0gIiVzJXMiICUgKHNlbGYuYnVnemlsbGEuYnVnX3Nl
cnZlcl91cmwsIHF1ZXJ5KQorICAgICAgICByZXR1cm4gc2VsZi5idWd6aWxsYS5icm93c2VyLm9w
ZW4oZnVsbF91cmwpCisKKyAgICBkZWYgX2ZldGNoX2J1Z19pZHNfYWR2YW5jZWRfcXVlcnkoc2Vs
ZiwgcXVlcnkpOgorICAgICAgICBzb3VwID0gQmVhdXRpZnVsU291cChzZWxmLl9sb2FkX3F1ZXJ5
KHF1ZXJ5KSkKKyAgICAgICAgIyBUaGUgY29udGVudHMgb2YgdGhlIDxhPiBpbnNpZGUgdGhlIGNl
bGxzIGluIHRoZSBmaXJzdCBjb2x1bW4gaGFwcGVuIHRvIGJlIHRoZSBidWcgaWQuCisgICAgICAg
IHJldHVybiBbaW50KGJ1Z19saW5rX2NlbGwuZmluZCgiYSIpLnN0cmluZykgZm9yIGJ1Z19saW5r
X2NlbGwgaW4gc291cCgndGQnLCAiZmlyc3QtY2hpbGQiKV0KKworICAgIGRlZiBfcGFyc2VfYXR0
YWNobWVudF9pZHNfcmVxdWVzdF9xdWVyeShzZWxmLCBwYWdlKToKKyAgICAgICAgZGlnaXRzID0g
cmUuY29tcGlsZSgiXGQrIikKKyAgICAgICAgYXR0YWNobWVudF9ocmVmID0gcmUuY29tcGlsZSgi
YXR0YWNobWVudC5jZ2lcP2lkPVxkKyZhY3Rpb249cmV2aWV3IikKKyAgICAgICAgYXR0YWNobWVu
dF9saW5rcyA9IFNvdXBTdHJhaW5lcigiYSIsIGhyZWY9YXR0YWNobWVudF9ocmVmKQorICAgICAg
ICByZXR1cm4gW2ludChkaWdpdHMuc2VhcmNoKHRhZ1siaHJlZiJdKS5ncm91cCgwKSkgZm9yIHRh
ZyBpbiBCZWF1dGlmdWxTb3VwKHBhZ2UsIHBhcnNlT25seVRoZXNlPWF0dGFjaG1lbnRfbGlua3Mp
XQorCisgICAgZGVmIF9mZXRjaF9hdHRhY2htZW50X2lkc19yZXF1ZXN0X3F1ZXJ5KHNlbGYsIHF1
ZXJ5KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3Rf
cXVlcnkoc2VsZi5fbG9hZF9xdWVyeShxdWVyeSkpCisKKyAgICAjIExpc3Qgb2YgYWxsIHIrJ2Qg
YnVncy4KKyAgICBkZWYgZmV0Y2hfYnVnX2lkc19mcm9tX3BlbmRpbmdfY29tbWl0X2xpc3Qoc2Vs
Zik6CisgICAgICAgIG5lZWRzX2NvbW1pdF9xdWVyeV91cmwgPSAiYnVnbGlzdC5jZ2k/cXVlcnlf
Zm9ybWF0PWFkdmFuY2VkJmJ1Z19zdGF0dXM9VU5DT05GSVJNRUQmYnVnX3N0YXR1cz1ORVcmYnVn
X3N0YXR1cz1BU1NJR05FRCZidWdfc3RhdHVzPVJFT1BFTkVEJmZpZWxkMC0wLTA9ZmxhZ3R5cGVz
Lm5hbWUmdHlwZTAtMC0wPWVxdWFscyZ2YWx1ZTAtMC0wPXJldmlldyUyQiIKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2ZldGNoX2J1Z19pZHNfYWR2YW5jZWRfcXVlcnkobmVlZHNfY29tbWl0X3F1ZXJ5
X3VybCkKKworICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdChz
ZWxmKToKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGhhdmUgdG8gZ28gdGhyb3Vn
aCBzZWxmLmJ1Z3ppbGxhCisgICAgICAgIHJldHVybiBzdW0oW3NlbGYuYnVnemlsbGEuZmV0Y2hf
cmV2aWV3ZWRfcGF0Y2hlc19mcm9tX2J1ZyhidWdfaWQpIGZvciBidWdfaWQgaW4gc2VsZi5mZXRj
aF9idWdfaWRzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdCgpXSwgW10pCisKKyAgICBkZWYgZmV0
Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1ZShzZWxmKToKKyAgICAgICAgY29tbWl0X3F1ZXVl
X3VybCA9ICJidWdsaXN0LmNnaT9xdWVyeV9mb3JtYXQ9YWR2YW5jZWQmYnVnX3N0YXR1cz1VTkNP
TkZJUk1FRCZidWdfc3RhdHVzPU5FVyZidWdfc3RhdHVzPUFTU0lHTkVEJmJ1Z19zdGF0dXM9UkVP
UEVORUQmZmllbGQwLTAtMD1mbGFndHlwZXMubmFtZSZ0eXBlMC0wLTA9ZXF1YWxzJnZhbHVlMC0w
LTA9Y29tbWl0LXF1ZXVlJTJCIgorICAgICAgICByZXR1cm4gc2VsZi5fZmV0Y2hfYnVnX2lkc19h
ZHZhbmNlZF9xdWVyeShjb21taXRfcXVldWVfdXJsKQorCisgICAgZGVmIGZldGNoX3BhdGNoZXNf
ZnJvbV9jb21taXRfcXVldWUoc2VsZiwgcmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1GYWxzZSk6Cisg
ICAgICAgICMgRklYTUU6IE9uY2UgcmVqZWN0X2ludmFsaWRfcGF0Y2hlcyBpcyBtb3ZlZCBvdXQg
b2YgdGhpcyBmdW5jdGlvbiB0aGlzIGJlY29tZXMgYSBzaW1wbGUgbGlzdCBjb21wcmVoZW5zaW9u
IHVzaW5nIGZldGNoX2J1Z19pZHNfZnJvbV9jb21taXRfcXVldWUuCisgICAgICAgIHBhdGNoZXNf
dG9fbGFuZCA9IFtdCisgICAgICAgIGZvciBidWdfaWQgaW4gc2VsZi5mZXRjaF9idWdfaWRzX2Zy
b21fY29tbWl0X3F1ZXVlKCk6CisgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3Qg
aGF2ZSB0byBnbyB0aHJvdWdoIHNlbGYuYnVnemlsbGEKKyAgICAgICAgICAgIHBhdGNoZXMgPSBz
ZWxmLmJ1Z3ppbGxhLmZldGNoX2NvbW1pdF9xdWV1ZV9wYXRjaGVzX2Zyb21fYnVnKGJ1Z19pZCwg
cmVqZWN0X2ludmFsaWRfcGF0Y2hlcykKKyAgICAgICAgICAgIHBhdGNoZXNfdG9fbGFuZCArPSBw
YXRjaGVzCisgICAgICAgIHJldHVybiBwYXRjaGVzX3RvX2xhbmQKKworICAgIGRlZiBfZmV0Y2hf
YnVnX2lkc19mcm9tX3Jldmlld19xdWV1ZShzZWxmKToKKyAgICAgICAgcmV2aWV3X3F1ZXVlX3Vy
bCA9ICJidWdsaXN0LmNnaT9xdWVyeV9mb3JtYXQ9YWR2YW5jZWQmYnVnX3N0YXR1cz1VTkNPTkZJ
Uk1FRCZidWdfc3RhdHVzPU5FVyZidWdfc3RhdHVzPUFTU0lHTkVEJmJ1Z19zdGF0dXM9UkVPUEVO
RUQmZmllbGQwLTAtMD1mbGFndHlwZXMubmFtZSZ0eXBlMC0wLTA9ZXF1YWxzJnZhbHVlMC0wLTA9
cmV2aWV3PyIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZldGNoX2J1Z19pZHNfYWR2YW5jZWRfcXVl
cnkocmV2aWV3X3F1ZXVlX3VybCkKKworICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fcmV2aWV3
X3F1ZXVlKHNlbGYsIGxpbWl0PU5vbmUpOgorICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgcHJv
YmFibHkgaGF2ZSBhIHNlbGYuZmV0Y2hfYnVnIHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2Ygc2Vs
Zi5idWd6aWxsYSBjYWxscy4KKyAgICAgICAgcmV0dXJuIHN1bShbc2VsZi5idWd6aWxsYS5mZXRj
aF9idWcoYnVnX2lkKS51bnJldmlld2VkX3BhdGNoZXMoKSBmb3IgYnVnX2lkIGluIHNlbGYuX2Zl
dGNoX2J1Z19pZHNfZnJvbV9yZXZpZXdfcXVldWUoKVs6bGltaXRdXSwgW10pICMgWzpOb25lXSBy
ZXR1cm5zIHRoZSB3aG9sZSBhcnJheS4KKworICAgICMgRklYTUU6IFdoeSBkbyB3ZSBoYXZlIGJv
dGggZmV0Y2hfcGF0Y2hlc19mcm9tX3Jldmlld19xdWV1ZSBhbmQgZmV0Y2hfYXR0YWNobWVudF9p
ZHNfZnJvbV9yZXZpZXdfcXVldWU/PworICAgICMgTk9URTogVGhpcyBpcyBhbHNvIHRoZSBvbmx5
IGNsaWVudCBvZiBfZmV0Y2hfYXR0YWNobWVudF9pZHNfcmVxdWVzdF9xdWVyeQorICAgIGRlZiBm
ZXRjaF9hdHRhY2htZW50X2lkc19mcm9tX3Jldmlld19xdWV1ZShzZWxmKToKKyAgICAgICAgcmV2
aWV3X3F1ZXVlX3VybCA9ICJyZXF1ZXN0LmNnaT9hY3Rpb249cXVldWUmdHlwZT1yZXZpZXcmZ3Jv
dXA9dHlwZSIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZldGNoX2F0dGFjaG1lbnRfaWRzX3JlcXVl
c3RfcXVlcnkocmV2aWV3X3F1ZXVlX3VybCkKKworCiBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkcnlydW49RmFsc2UsIGNvbW1pdHRlcnM9Q29tbWl0dGVy
TGlzdCgpKToKICAgICAgICAgc2VsZi5kcnlydW4gPSBkcnlydW4KICAgICAgICAgc2VsZi5hdXRo
ZW50aWNhdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5xdWVyaWVzID0gQnVnemlsbGFRdWVyaWVz
KHNlbGYpCiAKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBzb21lIHNvcnQgb2YgQnJv
d3NlciBtb2NrIG9iamVjdCB3aGVuIGluIGRyeXJ1biBtb2RlICh0byBwcmV2ZW50IGFueSBtaXN0
YWtlcykuCiAgICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQpAQCAtMjUxLDUxICszMTIs
NiBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICAgICAgICAgIGNvbW1pdF9xdWV1
ZV9wYXRjaGVzLmFwcGVuZChhdHRhY2htZW50KQogICAgICAgICByZXR1cm4gY29tbWl0X3F1ZXVl
X3BhdGNoZXMKIAotICAgIGRlZiBfZmV0Y2hfYnVnX2lkc19hZHZhbmNlZF9xdWVyeShzZWxmLCBx
dWVyeSk6Ci0gICAgICAgIHBhZ2UgPSBzZWxmLmJyb3dzZXIub3BlbihxdWVyeSkKLSAgICAgICAg
c291cCA9IEJlYXV0aWZ1bFNvdXAocGFnZSkKLSAgICAgICAgIyBUaGUgY29udGVudHMgb2YgdGhl
IDxhPiBpbnNpZGUgdGhlIGNlbGxzIGluIHRoZSBmaXJzdCBjb2x1bW4gaGFwcGVuIHRvIGJlIHRo
ZSBidWcgaWQuCi0gICAgICAgIHJldHVybiBbaW50KGJ1Z19saW5rX2NlbGwuZmluZCgiYSIpLnN0
cmluZykgZm9yIGJ1Z19saW5rX2NlbGwgaW4gc291cCgndGQnLCAiZmlyc3QtY2hpbGQiKV0KLQot
ICAgIGRlZiBfcGFyc2VfYXR0YWNobWVudF9pZHNfcmVxdWVzdF9xdWVyeShzZWxmLCBwYWdlKToK
LSAgICAgICAgZGlnaXRzID0gcmUuY29tcGlsZSgiXGQrIikKLSAgICAgICAgYXR0YWNobWVudF9o
cmVmID0gcmUuY29tcGlsZSgiYXR0YWNobWVudC5jZ2lcP2lkPVxkKyZhY3Rpb249cmV2aWV3IikK
LSAgICAgICAgYXR0YWNobWVudF9saW5rcyA9IFNvdXBTdHJhaW5lcigiYSIsIGhyZWY9YXR0YWNo
bWVudF9ocmVmKQotICAgICAgICByZXR1cm4gW2ludChkaWdpdHMuc2VhcmNoKHRhZ1siaHJlZiJd
KS5ncm91cCgwKSkgZm9yIHRhZyBpbiBCZWF1dGlmdWxTb3VwKHBhZ2UsIHBhcnNlT25seVRoZXNl
PWF0dGFjaG1lbnRfbGlua3MpXQotCi0gICAgZGVmIF9mZXRjaF9hdHRhY2htZW50X2lkc19yZXF1
ZXN0X3F1ZXJ5KHNlbGYsIHF1ZXJ5KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX2F0dGFj
aG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkoc2VsZi5icm93c2VyLm9wZW4ocXVlcnkpKQotCi0gICAg
ZGVmIGZldGNoX2J1Z19pZHNfZnJvbV9jb21taXRfcXVldWUoc2VsZik6Ci0gICAgICAgIGNvbW1p
dF9xdWV1ZV91cmwgPSBzZWxmLmJ1Z19zZXJ2ZXJfdXJsICsgImJ1Z2xpc3QuY2dpP3F1ZXJ5X2Zv
cm1hdD1hZHZhbmNlZCZidWdfc3RhdHVzPVVOQ09ORklSTUVEJmJ1Z19zdGF0dXM9TkVXJmJ1Z19z
dGF0dXM9QVNTSUdORUQmYnVnX3N0YXR1cz1SRU9QRU5FRCZmaWVsZDAtMC0wPWZsYWd0eXBlcy5u
YW1lJnR5cGUwLTAtMD1lcXVhbHMmdmFsdWUwLTAtMD1jb21taXQtcXVldWUlMkIiCi0gICAgICAg
IHJldHVybiBzZWxmLl9mZXRjaF9idWdfaWRzX2FkdmFuY2VkX3F1ZXJ5KGNvbW1pdF9xdWV1ZV91
cmwpCi0KLSAgICAjIExpc3Qgb2YgYWxsIHIrJ2QgYnVncy4KLSAgICBkZWYgZmV0Y2hfYnVnX2lk
c19mcm9tX25lZWRzX2NvbW1pdF9saXN0KHNlbGYpOgotICAgICAgICBuZWVkc19jb21taXRfcXVl
cnlfdXJsID0gc2VsZi5idWdfc2VydmVyX3VybCArICJidWdsaXN0LmNnaT9xdWVyeV9mb3JtYXQ9
YWR2YW5jZWQmYnVnX3N0YXR1cz1VTkNPTkZJUk1FRCZidWdfc3RhdHVzPU5FVyZidWdfc3RhdHVz
PUFTU0lHTkVEJmJ1Z19zdGF0dXM9UkVPUEVORUQmZmllbGQwLTAtMD1mbGFndHlwZXMubmFtZSZ0
eXBlMC0wLTA9ZXF1YWxzJnZhbHVlMC0wLTA9cmV2aWV3JTJCIgotICAgICAgICByZXR1cm4gc2Vs
Zi5fZmV0Y2hfYnVnX2lkc19hZHZhbmNlZF9xdWVyeShuZWVkc19jb21taXRfcXVlcnlfdXJsKQot
Ci0gICAgZGVmIGZldGNoX2J1Z19pZHNfZnJvbV9yZXZpZXdfcXVldWUoc2VsZik6Ci0gICAgICAg
IHJldmlld19xdWV1ZV91cmwgPSBzZWxmLmJ1Z19zZXJ2ZXJfdXJsICsgImJ1Z2xpc3QuY2dpP3F1
ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZidWdfc3RhdHVzPVVOQ09ORklSTUVEJmJ1Z19zdGF0dXM9TkVX
JmJ1Z19zdGF0dXM9QVNTSUdORUQmYnVnX3N0YXR1cz1SRU9QRU5FRCZmaWVsZDAtMC0wPWZsYWd0
eXBlcy5uYW1lJnR5cGUwLTAtMD1lcXVhbHMmdmFsdWUwLTAtMD1yZXZpZXc/IgotICAgICAgICBy
ZXR1cm4gc2VsZi5fZmV0Y2hfYnVnX2lkc19hZHZhbmNlZF9xdWVyeShyZXZpZXdfcXVldWVfdXJs
KQotCi0gICAgZGVmIGZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21fcmV2aWV3X3F1ZXVlKHNlbGYp
OgotICAgICAgICByZXZpZXdfcXVldWVfdXJsID0gc2VsZi5idWdfc2VydmVyX3VybCArICJyZXF1
ZXN0LmNnaT9hY3Rpb249cXVldWUmdHlwZT1yZXZpZXcmZ3JvdXA9dHlwZSIKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2ZldGNoX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkocmV2aWV3X3F1ZXVl
X3VybCkKLQotICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fY29tbWl0X3F1ZXVlKHNlbGYsIHJl
amVjdF9pbnZhbGlkX3BhdGNoZXM9RmFsc2UpOgotICAgICAgICBwYXRjaGVzX3RvX2xhbmQgPSBb
XQotICAgICAgICBmb3IgYnVnX2lkIGluIHNlbGYuZmV0Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9x
dWV1ZSgpOgotICAgICAgICAgICAgcGF0Y2hlcyA9IHNlbGYuZmV0Y2hfY29tbWl0X3F1ZXVlX3Bh
dGNoZXNfZnJvbV9idWcoYnVnX2lkLCByZWplY3RfaW52YWxpZF9wYXRjaGVzKQotICAgICAgICAg
ICAgcGF0Y2hlc190b19sYW5kICs9IHBhdGNoZXMKLSAgICAgICAgcmV0dXJuIHBhdGNoZXNfdG9f
bGFuZAotCi0gICAgZGVmIGZldGNoX3BhdGNoZXNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0KHNl
bGYpOgotICAgICAgICByZXR1cm4gc3VtKFtzZWxmLmZldGNoX3Jldmlld2VkX3BhdGNoZXNfZnJv
bV9idWcoYnVnX2lkKSBmb3IgYnVnX2lkIGluIHNlbGYuZmV0Y2hfYnVnX2lkc19mcm9tX25lZWRz
X2NvbW1pdF9saXN0KCldLCBbXSkKLQotICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fcmV2aWV3
X3F1ZXVlKHNlbGYsIGxpbWl0PU5vbmUpOgotICAgICAgICByZXR1cm4gc3VtKFtzZWxmLmZldGNo
X2J1ZyhidWdfaWQpLnVucmV2aWV3ZWRfcGF0Y2hlcygpIGZvciBidWdfaWQgaW4gc2VsZi5mZXRj
aF9idWdfaWRzX2Zyb21fcmV2aWV3X3F1ZXVlKClbOmxpbWl0XV0sIFtdKSAjIFs6Tm9uZV0gcmV0
dXJucyB0aGUgd2hvbGUgYXJyYXkuCi0KICAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYpOgogICAg
ICAgICBpZiBzZWxmLmF1dGhlbnRpY2F0ZWQ6CiAgICAgICAgICAgICByZXR1cm4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYV91bml0dGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYV91bml0dGVzdC5weQppbmRleCA0Mjdh
N2I4Li43MjBmZmJjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVn
emlsbGFfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3pp
bGxhX3VuaXR0ZXN0LnB5CkBAIC0yOSw3ICsyOSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJv
bSBtb2R1bGVzLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIFJldmlld2VyLCBDb21t
aXR0ZXIKLWZyb20gbW9kdWxlcy5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEsIHBhcnNlX2J1Z19p
ZAorZnJvbSBtb2R1bGVzLmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYSwgQnVnemlsbGFRdWVyaWVz
LCBwYXJzZV9idWdfaWQKIGZyb20gbW9kdWxlcy5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRD
YXB0dXJlCiAKIGZyb20gbW9kdWxlcy5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3Vw
CkBAIC0yMjMsNiArMjIzLDI0IEBAIFpFWnBibWx6YUV4dllXUlhhWFJvVW1WaGMyOXVPbkpsWVhO
dmJsMDdDaXQ5Q2lzS0lFQmxibVFLSUFvZ0kyVnVaR2xtQ2c9PQogICAgICAgICBidWd6aWxsYSA9
IEJ1Z3ppbGxhKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMjczMTQsIGJ1Z3ppbGxhLl9w
YXJzZV9idWdfaWRfZnJvbV9hdHRhY2htZW50X3BhZ2Uoc2VsZi5fc2FtcGxlX2F0dGFjaG1lbnRf
ZGV0YWlsX3BhZ2UpKQogCisgICAgZGVmIHRlc3RfYWRkX2NjX3RvX2J1ZyhzZWxmKToKKyAgICAg
ICAgYnVnemlsbGEgPSBCdWd6aWxsYSgpCisgICAgICAgIGJ1Z3ppbGxhLmJyb3dzZXIgPSBNb2Nr
QnJvd3NlcigpCisgICAgICAgIGJ1Z3ppbGxhLmF1dGhlbnRpY2F0ZSA9IGxhbWJkYTogTm9uZQor
ICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiQWRkaW5nIFsnYWRhbUBleGFtcGxlLmNvbSddIHRv
IHRoZSBDQyBsaXN0IGZvciBidWcgNDJcbiIKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2Vy
dF9vdXRwdXRzKHNlbGYsIGJ1Z3ppbGxhLmFkZF9jY190b19idWcsIFs0MiwgWyJhZGFtQGV4YW1w
bGUuY29tIl1dLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIHRl
c3RfZmxhZ19wZXJtaXNzaW9uX3JlamVjdGlvbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBidWd6
aWxsYSA9IEJ1Z3ppbGxhKCkKKyAgICAgICAgZXhwZWN0ZWRfbWVzc3NhZ2U9IiIiZm9vQGZvby5j
b20gZG9lcyBub3QgaGF2ZSByZXZpZXcgcGVybWlzc2lvbnMgYWNjb3JkaW5nIHRvIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y29tbWl0dGVycy5weS4KKworLSBJZiB5b3UgZG8gbm90IGhhdmUgcmV2aWV3IHJpZ2h0cyBwbGVh
c2UgcmVhZCBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwgZm9yIGlu
c3RydWN0aW9ucyBvbiBob3cgdG8gdXNlIGJ1Z3ppbGxhIGZsYWdzLgorCistIElmIHlvdSBoYXZl
IHJldmlldyByaWdodHMgcGxlYXNlIGNvcnJlY3QgdGhlIGVycm9yIGluIFdlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9jb21taXR0ZXJzLnB5IGJ5IGFkZGluZyB5b3Vyc2VsZiB0byB0aGUgZmls
ZSAobm8gcmV2aWV3IG5lZWRlZCkuICBEdWUgdG8gYnVnIDMwMDg0IHRoZSBjb21taXQtcXVldWUg
d2lsbCByZXF1aXJlIGEgcmVzdGFydCBhZnRlciB5b3VyIGNoYW5nZS4gIFBsZWFzZSBjb250YWN0
IGVzZWlkZWxAY2hyb21pdW0ub3JnIHRvIHJlcXVlc3QgYSBjb21taXQtcXVldWUgcmVzdGFydC4g
IEFmdGVyIHJlc3RhcnQgdGhlIGNvbW1pdC1xdWV1ZSB3aWxsIGNvcnJlY3RseSByZXNwZWN0IHlv
dXIgcmV2aWV3IHJpZ2h0cy4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWd6aWxsYS5f
ZmxhZ19wZXJtaXNzaW9uX3JlamVjdGlvbl9tZXNzYWdlKCJmb29AZm9vLmNvbSIsICJyZXZpZXci
KSwgZXhwZWN0ZWRfbWVzc3NhZ2UpCisKKworY2xhc3MgQnVnemlsbGFRdWVyaWVzVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgX3NhbXBsZV9yZXF1ZXN0X3BhZ2UgPSAiIiIKIDwhRE9DVFlQ
RSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCiAg
ICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0
ZCI+CkBAIC0yNzEsMjUgKzI4OSw4IEBAIFpFWnBibWx6YUV4dllXUlhhWFJvVW1WaGMyOXVPbkps
WVhOdmJsMDdDaXQ5Q2lzS0lFQmxibVFLSUFvZ0kyVnVaR2xtQ2c9PQogIiIiCiAKICAgICBkZWYg
dGVzdF9yZXF1ZXN0X3BhZ2VfcGFyc2luZyhzZWxmKToKLSAgICAgICAgYnVnemlsbGEgPSBCdWd6
aWxsYSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFs0MDUxMSwgNDA3MjIsIDQwNzIzXSwg
YnVnemlsbGEuX3BhcnNlX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkoc2VsZi5fc2FtcGxl
X3JlcXVlc3RfcGFnZSkpCi0KLSAgICBkZWYgdGVzdF9hZGRfY2NfdG9fYnVnKHNlbGYpOgotICAg
ICAgICBidWd6aWxsYSA9IEJ1Z3ppbGxhKCkKLSAgICAgICAgYnVnemlsbGEuYnJvd3NlciA9IE1v
Y2tCcm93c2VyKCkKLSAgICAgICAgYnVnemlsbGEuYXV0aGVudGljYXRlID0gbGFtYmRhOiBOb25l
Ci0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJBZGRpbmcgWydhZGFtQGV4YW1wbGUuY29tJ10g
dG8gdGhlIENDIGxpc3QgZm9yIGJ1ZyA0MlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNz
ZXJ0X291dHB1dHMoc2VsZiwgYnVnemlsbGEuYWRkX2NjX3RvX2J1ZywgWzQyLCBbImFkYW1AZXhh
bXBsZS5jb20iXV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCi0KLSAgICBkZWYg
dGVzdF9mbGFnX3Blcm1pc3Npb25fcmVqZWN0aW9uX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGJ1
Z3ppbGxhID0gQnVnemlsbGEoKQotICAgICAgICBleHBlY3RlZF9tZXNzc2FnZT0iIiJmb29AZm9v
LmNvbSBkb2VzIG5vdCBoYXZlIHJldmlldyBwZXJtaXNzaW9ucyBhY2NvcmRpbmcgdG8gaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jb21taXR0ZXJzLnB5LgotCi0tIElmIHlvdSBkbyBub3QgaGF2ZSByZXZpZXcgcmlnaHRzIHBs
ZWFzZSByZWFkIGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb250cmlidXRpbmcuaHRtbCBmb3Ig
aW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1c2UgYnVnemlsbGEgZmxhZ3MuCi0KLS0gSWYgeW91IGhh
dmUgcmV2aWV3IHJpZ2h0cyBwbGVhc2UgY29ycmVjdCB0aGUgZXJyb3IgaW4gV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2NvbW1pdHRlcnMucHkgYnkgYWRkaW5nIHlvdXJzZWxmIHRvIHRoZSBm
aWxlIChubyByZXZpZXcgbmVlZGVkKS4gIER1ZSB0byBidWcgMzAwODQgdGhlIGNvbW1pdC1xdWV1
ZSB3aWxsIHJlcXVpcmUgYSByZXN0YXJ0IGFmdGVyIHlvdXIgY2hhbmdlLiAgUGxlYXNlIGNvbnRh
Y3QgZXNlaWRlbEBjaHJvbWl1bS5vcmcgdG8gcmVxdWVzdCBhIGNvbW1pdC1xdWV1ZSByZXN0YXJ0
LiAgQWZ0ZXIgcmVzdGFydCB0aGUgY29tbWl0LXF1ZXVlIHdpbGwgY29ycmVjdGx5IHJlc3BlY3Qg
eW91ciByZXZpZXcgcmlnaHRzLiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Z3ppbGxh
Ll9mbGFnX3Blcm1pc3Npb25fcmVqZWN0aW9uX21lc3NhZ2UoImZvb0Bmb28uY29tIiwgInJldmll
dyIpLCBleHBlY3RlZF9tZXNzc2FnZSkKLQorICAgICAgICBxdWVyaWVzID0gQnVnemlsbGFRdWVy
aWVzKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFs0MDUxMSwgNDA3MjIsIDQwNzIz
XSwgcXVlcmllcy5fcGFyc2VfYXR0YWNobWVudF9pZHNfcmVxdWVzdF9xdWVyeShzZWxmLl9zYW1w
bGVfcmVxdWVzdF9wYWdlKSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0
dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWls
ZHN0ZXBzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3Rl
cHNfdW5pdHRlc3QucHkKaW5kZXggMmY2OWQ2ZC4uYzYwMzQ5MSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHNfdW5pdHRlc3QucHkKQEAgLTM4LDggKzM4
LDggQEAgY2xhc3MgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlclN0ZXBUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9ndWVzc19yZXZpZXdlcl9mcm9tX2J1ZyhzZWxmKToK
ICAgICAgICAgY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICBzdGVwID0gVXBkYXRl
Q2hhbmdlTG9nc1dpdGhSZXZpZXdlclN0ZXAoTW9ja0J1Z3ppbGxhVG9vbCgpLCBbXSkKLSAgICAg
ICAgZXhwZWN0ZWRfc3RkZXJyID0gIjAgcmV2aWV3ZWQgcGF0Y2hlcyBvbiBidWcgMSwgY2Fubm90
IGluZmVyIHJldmlld2VyLlxuIgotICAgICAgICBjYXB0dXJlLmFzc2VydF9vdXRwdXRzKHNlbGYs
IHN0ZXAuX2d1ZXNzX3Jldmlld2VyX2Zyb21fYnVnLCBbMV0sIGV4cGVjdGVkX3N0ZGVycj1leHBl
Y3RlZF9zdGRlcnIpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIwIHJldmlld2VkIHBhdGNo
ZXMgb24gYnVnIDc1LCBjYW5ub3QgaW5mZXIgcmV2aWV3ZXIuXG4iCisgICAgICAgIGNhcHR1cmUu
YXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5fZ3Vlc3NfcmV2aWV3ZXJfZnJvbV9idWcsIFs3NV0s
IGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKIAogY2xhc3MgU3RlcHNUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jb21tYW5kcy9xdWVyaWVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1h
bmRzL3F1ZXJpZXMucHkKaW5kZXggZWFkZGIwZC4uZTFhMGU2MiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXJpZXMucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXJpZXMucHkKQEAgLTQzLDcgKzQzLDcgQEAg
Y2xhc3MgQnVnc1RvQ29tbWl0KENvbW1hbmQpOgogICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNl
bGYsICJMaXN0IGJ1Z3MgaW4gdGhlIGNvbW1pdC1xdWV1ZSIpCiAKICAgICBkZWYgZXhlY3V0ZShz
ZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgYnVnX2lkcyA9IHRvb2wuYnVncy5m
ZXRjaF9idWdfaWRzX2Zyb21fY29tbWl0X3F1ZXVlKCkKKyAgICAgICAgYnVnX2lkcyA9IHRvb2wu
YnVncy5xdWVyaWVzLmZldGNoX2J1Z19pZHNfZnJvbV9jb21taXRfcXVldWUoKQogICAgICAgICBm
b3IgYnVnX2lkIGluIGJ1Z19pZHM6CiAgICAgICAgICAgICBwcmludCAiJXMiICUgYnVnX2lkCiAK
QEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgUGF0Y2hlc1RvQ29tbWl0KENvbW1hbmQpOgogICAgICAg
ICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICJMaXN0IHBhdGNoZXMgaW4gdGhlIGNvbW1pdC1xdWV1
ZSIpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAg
ICAgcGF0Y2hlcyA9IHRvb2wuYnVncy5mZXRjaF9wYXRjaGVzX2Zyb21fY29tbWl0X3F1ZXVlKCkK
KyAgICAgICAgcGF0Y2hlcyA9IHRvb2wuYnVncy5xdWVyaWVzLmZldGNoX3BhdGNoZXNfZnJvbV9j
b21taXRfcXVldWUoKQogICAgICAgICBsb2coIlBhdGNoZXMgaW4gY29tbWl0IHF1ZXVlOiIpCiAg
ICAgICAgIGZvciBwYXRjaCBpbiBwYXRjaGVzOgogICAgICAgICAgICAgcHJpbnQgIiVzIiAlIHBh
dGNoWyJ1cmwiXQpAQCAtODIsNyArODIsNyBAQCBjbGFzcyBQYXRjaGVzVG9Db21taXRRdWV1ZShD
b21tYW5kKToKICAgICAgICAgcmV0dXJuIG5vdCBjb21taXR0ZXJfcmVjb3JkCiAKICAgICBkZWYg
ZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgcGF0Y2hlcyA9IHRv
b2wuYnVncy5mZXRjaF9wYXRjaGVzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdCgpCisgICAgICAg
IHBhdGNoZXMgPSB0b29sLmJ1Z3MucXVlcmllcy5mZXRjaF9wYXRjaGVzX2Zyb21fcGVuZGluZ19j
b21taXRfbGlzdCgpCiAgICAgICAgIHBhdGNoZXNfbmVlZGluZ19jcSA9IGZpbHRlcihzZWxmLl9u
ZWVkc19jb21taXRfcXVldWUsIHBhdGNoZXMpCiAgICAgICAgIGlmIG9wdGlvbnMuYnVnczoKICAg
ICAgICAgICAgIGJ1Z3NfbmVlZGluZ19jcSA9IG1hcChsYW1iZGEgcGF0Y2g6IHBhdGNoWydidWdf
aWQnXSwgcGF0Y2hlc19uZWVkaW5nX2NxKQpAQCAtMTAwLDcgKzEwMCw3IEBAIGNsYXNzIFBhdGNo
ZXNUb1JldmlldyhDb21tYW5kKToKICAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiTGlz
dCBwYXRjaGVzIHRoYXQgYXJlIHBlbmRpbmcgcmV2aWV3IikKIAogICAgIGRlZiBleGVjdXRlKHNl
bGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBwYXRjaF9pZHMgPSB0b29sLmJ1Z3Mu
ZmV0Y2hfYXR0YWNobWVudF9pZHNfZnJvbV9yZXZpZXdfcXVldWUoKQorICAgICAgICBwYXRjaF9p
ZHMgPSB0b29sLmJ1Z3MucXVlcmllcy5mZXRjaF9hdHRhY2htZW50X2lkc19mcm9tX3Jldmlld19x
dWV1ZSgpCiAgICAgICAgIGxvZygiUGF0Y2hlcyBwZW5kaW5nIHJldmlldzoiKQogICAgICAgICBm
b3IgcGF0Y2hfaWQgaW4gcGF0Y2hfaWRzOgogICAgICAgICAgICAgcHJpbnQgcGF0Y2hfaWQKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXMucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvcXVldWVzLnB5CmluZGV4IDhl
MzlmM2EuLjdkNTlhOTkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9j
b21tYW5kcy9xdWV1ZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1h
bmRzL3F1ZXVlcy5weQpAQCAtMTMzLDcgKzEzMyw3IEBAIGNsYXNzIENvbW1pdFF1ZXVlKEFic3Ry
YWN0UXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAgICAgICAgIEFic3RyYWN0UXVl
dWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQogCiAgICAgZGVmIG5leHRfd29ya19pdGVtKHNlbGYp
OgotICAgICAgICBwYXRjaGVzID0gc2VsZi50b29sLmJ1Z3MuZmV0Y2hfcGF0Y2hlc19mcm9tX2Nv
bW1pdF9xdWV1ZShyZWplY3RfaW52YWxpZF9wYXRjaGVzPVRydWUpCisgICAgICAgIHBhdGNoZXMg
PSBzZWxmLnRvb2wuYnVncy5xdWVyaWVzLmZldGNoX3BhdGNoZXNfZnJvbV9jb21taXRfcXVldWUo
cmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1UcnVlKQogICAgICAgICBpZiBub3QgcGF0Y2hlczoKICAg
ICAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoIkVtcHR5IHF1ZXVlIikKICAgICAgICAgICAg
IHJldHVybiBOb25lCkBAIC0xODcsNyArMTg3LDcgQEAgY2xhc3MgQWJzdHJhY3RSZXZpZXdRdWV1
ZShBYnN0cmFjdFF1ZXVlLCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uRGVsZWdhdGUsIFN0ZXAK
ICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQogCiAgICAgZGVmIGZldGNoX3BvdGVudGlhbF9wYXRj
aF9pZHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRvb2wuYnVncy5mZXRjaF9hdHRhY2ht
ZW50X2lkc19mcm9tX3Jldmlld19xdWV1ZSgpCisgICAgICAgIHJldHVybiBzZWxmLnRvb2wuYnVn
cy5xdWVyaWVzLmZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21fcmV2aWV3X3F1ZXVlKCkKIAogICAg
IGRlZiBzdGF0dXNfc2VydmVyKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50b29sLnN0YXR1
c19ib3QKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy91
cGxvYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvdXBsb2FkLnB5
CmluZGV4IGZjNjVjNWIuLjg1ZmFjYmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9jb21tYW5kcy91cGxvYWQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL2NvbW1hbmRzL3VwbG9hZC5weQpAQCAtODMsNyArODMsNyBAQCBjbGFzcyBBc3NpZ25Ub0Nv
bW1pdHRlcihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbW1hbmQpOgogICAgICAgICBzZWxmLnRvb2wu
YnVncy5yZWFzc2lnbl9idWcoYnVnX2lkLCBjb21taXR0ZXIuYnVnemlsbGFfZW1haWwoKSwgcmVh
c3NpZ25fbWVzc2FnZSkKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRv
b2wpOgotICAgICAgICBmb3IgYnVnX2lkIGluIHRvb2wuYnVncy5mZXRjaF9idWdfaWRzX2Zyb21f
bmVlZHNfY29tbWl0X2xpc3QoKToKKyAgICAgICAgZm9yIGJ1Z19pZCBpbiB0b29sLmJ1Z3MucXVl
cmllcy5mZXRjaF9idWdfaWRzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdCgpOgogICAgICAgICAg
ICAgc2VsZi5fYXNzaWduX2J1Z190b19sYXN0X3BhdGNoX2F0dGFjaGVyKGJ1Z19pZCkKIAogCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wucHkKaW5k
ZXggNmY3OTY4NS4uNzVkZjM3MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL21vY2tfYnVnemlsbGF0b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9tb2NrX2J1Z3ppbGxhdG9vbC5weQpAQCAtMzIsMzIgKzMyLDUzIEBAIGZyb20gbW9kdWxlcy5t
b2NrIGltcG9ydCBNb2NrCiBmcm9tIG1vZHVsZXMuc2NtIGltcG9ydCBDb21taXRNZXNzYWdlCiBm
cm9tIG1vZHVsZXMuYnVnemlsbGEgaW1wb3J0IEJ1ZwogCi1kZWYgX2lkX3RvX29iamVjdF9kaWN0
aW9uYXJ5KG9iamVjdHMpOgorZGVmIF9pZF90b19vYmplY3RfZGljdGlvbmFyeSgqb2JqZWN0cyk6
CiAgICAgZGljdGlvbmFyeSA9IHt9CiAgICAgZm9yIHRoaW5nIGluIG9iamVjdHM6CiAgICAgICAg
IGRpY3Rpb25hcnlbdGhpbmdbImlkIl1dID0gdGhpbmcKICAgICByZXR1cm4gZGljdGlvbmFyeQog
Ci1jbGFzcyBNb2NrQnVnemlsbGEoTW9jayk6Ci0gICAgcGF0Y2gxID0gewotICAgICAgICAiaWQi
IDogMTk3LAotICAgICAgICAiYnVnX2lkIiA6IDQyLAotICAgICAgICAidXJsIiA6ICJodHRwOi8v
ZXhhbXBsZS5jb20vMTk3IiwKLSAgICAgICAgImlzX29ic29sZXRlIiA6IEZhbHNlLAotICAgICAg
ICAicmV2aWV3ZXIiIDogIlJldmlld2VyMSIsCi0gICAgICAgICJhdHRhY2hlcl9lbWFpbCIgOiAi
Q29udHJpYnV0ZXIxIiwKLSAgICB9Ci0gICAgcGF0Y2gyID0gewotICAgICAgICAiaWQiIDogMTI4
LAotICAgICAgICAiYnVnX2lkIiA6IDQyLAotICAgICAgICAidXJsIiA6ICJodHRwOi8vZXhhbXBs
ZS5jb20vMTI4IiwKLSAgICAgICAgImlzX29ic29sZXRlIiA6IEZhbHNlLAotICAgICAgICAicmV2
aWV3ZXIiIDogIlJldmlld2VyMiIsCi0gICAgICAgICJhdHRhY2hlcl9lbWFpbCIgOiAiZXJpY0B3
ZWJraXQub3JnIiwKLSAgICB9Ci0gICAgYnVnX3NlcnZlcl91cmwgPSAiaHR0cDovL2V4YW1wbGUu
Y29tIgotICAgIHVuYXNzaWduZWRfZW1haWwgPSAidW5hc3NpZ25lZEBleGFtcGxlLmNvbSIKLQor
IyBGSVhNRTogVGhlIGlkcyBzaG91ZGwgYmUgMSwgMiwgMyBpbnN0ZWFkIG9mIGNyYXp5IG51bWJl
cnMuCitfcGF0Y2gxID0geworICAgICJpZCIgOiAxOTcsCisgICAgImJ1Z19pZCIgOiA0MiwKKyAg
ICAidXJsIiA6ICJodHRwOi8vZXhhbXBsZS5jb20vMTk3IiwKKyAgICAiaXNfb2Jzb2xldGUiIDog
RmFsc2UsCisgICAgImlzX3BhdGNoIiA6IFRydWUsCisgICAgInJldmlld2VyIiA6ICJSZXZpZXdl
cjEiLAorICAgICJhdHRhY2hlcl9lbWFpbCIgOiAiQ29udHJpYnV0ZXIxIiwKK30KK19wYXRjaDIg
PSB7CisgICAgImlkIiA6IDEyOCwKKyAgICAiYnVnX2lkIiA6IDQyLAorICAgICJ1cmwiIDogImh0
dHA6Ly9leGFtcGxlLmNvbS8xMjgiLAorICAgICJpc19vYnNvbGV0ZSIgOiBGYWxzZSwKKyAgICAi
aXNfcGF0Y2giIDogVHJ1ZSwKKyAgICAicmV2aWV3ZXIiIDogIlJldmlld2VyMiIsCisgICAgImF0
dGFjaGVyX2VtYWlsIiA6ICJlcmljQHdlYmtpdC5vcmciLAorfQorCisjIFRoaXMgbXVzdCBiZSBk
ZWZpbmVkIGJlZm9yZSB3ZSBkZWZpbmUgdGhlIGJ1Z3MsIHRodXMgd2UgZG9uJ3QgdXNlIE1vY2tC
dWd6aWxsYS51bmFzc2lnbmVkX2VtYWlsIGRpcmVjdGx5LgorX3VuYXNzaWduZWRfZW1haWwgPSAi
dW5hc3NpZ25lZEBleGFtcGxlLmNvbSIKKworIyBGSVhNRTogVGhlIGlkcyBzaG91bGQgYmUgMSwg
MiwgMyBpbnN0ZWFkIG9mIGNyYXp5IG51bWJlcnMuCitfYnVnMSA9IHsKKyAgICAiaWQiIDogNDIs
CisgICAgImFzc2lnbmVkX3RvX2VtYWlsIiA6IF91bmFzc2lnbmVkX2VtYWlsLAorICAgICJhdHRh
Y2htZW50cyIgOiBbX3BhdGNoMSwgX3BhdGNoMl0sCit9CitfYnVnMiA9IHsKKyAgICAiaWQiIDog
NzUsCisgICAgImFzc2lnbmVkX3RvX2VtYWlsIiA6ICJmb29AZm9vLmNvbSIsCisgICAgImF0dGFj
aG1lbnRzIiA6IFtdLAorfQorX2J1ZzMgPSB7CisgICAgImlkIiA6IDc2LAorICAgICJhc3NpZ25l
ZF90b19lbWFpbCIgOiBfdW5hc3NpZ25lZF9lbWFpbCwKKyAgICAiYXR0YWNobWVudHMiIDogW10s
Cit9CisKK2NsYXNzIE1vY2tCdWd6aWxsYVF1ZXJpZXMoTW9jayk6CiAgICAgZGVmIGZldGNoX2J1
Z19pZHNfZnJvbV9jb21taXRfcXVldWUoc2VsZik6CiAgICAgICAgIHJldHVybiBbNDIsIDc1XQog
CkBAIC02NSw1MiArODYsMzUgQEAgY2xhc3MgTW9ja0J1Z3ppbGxhKE1vY2spOgogICAgICAgICBy
ZXR1cm4gWzE5NywgMTI4XQogCiAgICAgZGVmIGZldGNoX3BhdGNoZXNfZnJvbV9jb21taXRfcXVl
dWUoc2VsZiwgcmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBb
c2VsZi5wYXRjaDEsIHNlbGYucGF0Y2gyXQorICAgICAgICByZXR1cm4gW19wYXRjaDEsIF9wYXRj
aDJdCiAKLSAgICBkZWYgZmV0Y2hfYnVnX2lkc19mcm9tX25lZWRzX2NvbW1pdF9saXN0KHNlbGYp
OgorICAgIGRlZiBmZXRjaF9idWdfaWRzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdChzZWxmKToK
ICAgICAgICAgcmV0dXJuIFs0MiwgNzUsIDc2XQorICAgIAorICAgIGRlZiBmZXRjaF9wYXRjaGVz
X2Zyb21fcGVuZGluZ19jb21taXRfbGlzdChzZWxmKToKKyAgICAgICAgcmV0dXJuIFtfcGF0Y2gx
LCBfcGF0Y2gyXQogCi0gICAgYnVnMSA9IHsKLSAgICAgICAgImlkIiA6IDQyLAotICAgICAgICAi
YXNzaWduZWRfdG9fZW1haWwiIDogdW5hc3NpZ25lZF9lbWFpbCwKLSAgICAgICAgImF0dGFjaG1l
bnRzIiA6IFtwYXRjaDEsIHBhdGNoMl0sCi0gICAgfQotICAgIGJ1ZzIgPSB7Ci0gICAgICAgICJp
ZCIgOiA3NSwKLSAgICAgICAgImFzc2lnbmVkX3RvX2VtYWlsIiA6ICJmb29AZm9vLmNvbSIsCi0g
ICAgICAgICJhdHRhY2htZW50cyIgOiBbXSwKLSAgICB9Ci0gICAgYnVnMyA9IHsKLSAgICAgICAg
ImlkIiA6IDc2LAotICAgICAgICAiYXNzaWduZWRfdG9fZW1haWwiIDogdW5hc3NpZ25lZF9lbWFp
bCwKLSAgICAgICAgImF0dGFjaG1lbnRzIiA6IFtdLAotICAgIH0KLQotICAgIGJ1Z19jYWNoZSA9
IF9pZF90b19vYmplY3RfZGljdGlvbmFyeShbYnVnMSwgYnVnMiwgYnVnM10pCisKK2NsYXNzIE1v
Y2tCdWd6aWxsYShNb2NrKToKKyAgICBidWdfc2VydmVyX3VybCA9ICJodHRwOi8vZXhhbXBsZS5j
b20iCisgICAgdW5hc3NpZ25lZF9lbWFpbCA9IF91bmFzc2lnbmVkX2VtYWlsCisgICAgYnVnX2Nh
Y2hlID0gX2lkX3RvX29iamVjdF9kaWN0aW9uYXJ5KF9idWcxLCBfYnVnMiwgX2J1ZzMpCisgICAg
YXR0YWNobWVudF9jYWNoZSA9IF9pZF90b19vYmplY3RfZGljdGlvbmFyeShfcGF0Y2gxLCBfcGF0
Y2gyKQorICAgIHF1ZXJpZXMgPSBNb2NrQnVnemlsbGFRdWVyaWVzKCkKIAogICAgIGRlZiBmZXRj
aF9idWcoc2VsZiwgYnVnX2lkKToKICAgICAgICAgcmV0dXJuIEJ1ZyhzZWxmLmJ1Z19jYWNoZS5n
ZXQoYnVnX2lkKSkKIAotICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fcGVuZGluZ19jb21taXRf
bGlzdChzZWxmKToKLSAgICAgICAgcmV0dXJuIFtzZWxmLnBhdGNoMSwgc2VsZi5wYXRjaDJdCi0K
ICAgICBkZWYgZmV0Y2hfcmV2aWV3ZWRfcGF0Y2hlc19mcm9tX2J1ZyhzZWxmLCBidWdfaWQpOgot
ICAgICAgICBpZiBidWdfaWQgPT0gNDI6Ci0gICAgICAgICAgICByZXR1cm4gW3NlbGYucGF0Y2gx
LCBzZWxmLnBhdGNoMl0KLSAgICAgICAgcmV0dXJuIFtdCi0KLSAgICBkZWYgZmV0Y2hfcGF0Y2hl
c19mcm9tX2J1ZyhzZWxmLCBidWdfaWQpOgotICAgICAgICBpZiBidWdfaWQgPT0gNDI6Ci0gICAg
ICAgICAgICByZXR1cm4gW3NlbGYucGF0Y2gxLCBzZWxmLnBhdGNoMl0KLSAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuZmV0Y2hfcGF0Y2hlc19mcm9tX2J1ZyhidWdfaWQp
ICMgUmV0dXJuIHRoZW0gYWxsIGZvciBub3cuCiAKICAgICBkZWYgZmV0Y2hfYXR0YWNobWVudChz
ZWxmLCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgaWYgYXR0YWNobWVudF9pZCA9PSAxOTc6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRjaDEKLSAgICAgICAgaWYgYXR0YWNobWVudF9pZCA9
PSAxMjg6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRjaDIKLSAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCJCb2d1cyBhdHRhY2htZW50X2lkIGluIGZldGNoX2F0dGFjaG1lbnQuIikKKyAgICAg
ICAgcmV0dXJuIHNlbGYuYXR0YWNobWVudF9jYWNoZVthdHRhY2htZW50X2lkXSAjIFRoaXMgY291
bGQgYmUgY2hhbmdlZCB0byAuZ2V0KCkgaWYgd2Ugd2lzaCB0byBhbGxvdyBmYWlsZWQgbG9va3Vw
cy4KIAorICAgICMgTk9URTogRnVuY3Rpb25zIGJlbG93IHRoaXMgYXJlIGRpcmVjdCBjb3BpZXMg
ZnJvbSBidWd6aWxsYS5weQorICAgIGRlZiBmZXRjaF9wYXRjaGVzX2Zyb21fYnVnKHNlbGYsIGJ1
Z19pZCk6CisgICAgICAgIHJldHVybiBzZWxmLmZldGNoX2J1ZyhidWdfaWQpLnBhdGNoZXMoKQor
ICAgIAogICAgIGRlZiBidWdfdXJsX2Zvcl9idWdfaWQoc2VsZiwgYnVnX2lkKToKICAgICAgICAg
cmV0dXJuICIlcy8lcyIgJSAoc2VsZi5idWdfc2VydmVyX3VybCwgYnVnX2lkKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>