`
`
`
`KWUN BHANSALI LAZARUS LLP
`MICHAEL S. KWUN (SBN 198945)
`mkwun@kblfirm.com
`555 Montgomery St., Suite 750
`San Francisco, CA 94111
`Telephone: 415 630-2350
`Facsimile: 415 367-1539
`
`WUERSCH & GERING LLP
`V. DAVID RIVKIN (admitted pro hac vice)
`david.rivkin@wg-law.com
`JOHN A. SMITTEN (admitted pro hac vice)
`john.smitten@wg-law.com
`100 Wall St., 10th Fl.
`New York, NY 10005
`Telephone: 212 509-5050
`Facsimile: 212 509-9559
`
`Attorneys for Defendant
`FLORAGUNN GmbH
`
`
`
`
`UNITED STATES DISTRICT COURT
`
`NORTHERN DISTRICT OF CALIFORNIA
`
`OAKLAND DIVISION
`
`
` CONSOLIDATED CASE
`Case No. 4:19-cv-05553-YGR
`
`
`
`ANSWER TO COMPLAINT
`
`ELASTICSEARCH, INC., a Delaware
`corporation, ELASTICSEARCH B.V., a Dutch
`corporation,
`
`
`Plaintiffs,
`
`
`v.
`
`FLORAGUNN GmbH, a German corporation,
`
`Defendant.
`
`
`
`
`
`
`
`Defendant floragunn GmbH (“floragunn”) answers the Complaint of Elasticsearch, Inc.
`
`and elasticsearch B.V. (together “Elastic”) filed on October 26, 2020, as follows:
`
`Paragraph 1
`Allegation: Through its creation and distribution of its Search Guard software,
`floragunn GmbH (“floragunn”) has knowingly and willfully infringed Elasticsearch, Inc.
`and elasticsearch B.V.’s (collectively “Elastic”) copyrights in the source code for
`Elastic’s Elasticsearch X-Pack and Kibana X-Pack software and their predecessors,
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`1
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 2 of 50
`
`
`
`Elasticsearch Shield and Kibana Shield. (Unless otherwise specified, Elastic refers to
`Shield and X-Pack collectively herein as “X-Pack.”)
`
`
`Response: floragunn denies Elastic’s allegations set forth in paragraph 1 of the Complaint, and
`
`further states that it has not infringed any of plaintiff’s source code.
`
`Paragraph 2
`
`
`Allegation: On September 4, 2019, Elastic brought an action against floragunn to
`remedy floragunn’s infringement of certain Elastic copyrights in the source code for X-
`Pack. See Elasticsearch, Inc. et al. v. floragunn GmbH, Case No. 4:19-cv-05553-YGR
`(N.D. Cal.) (“floragunn I”). On November 26, 2019, Elastic filed a First Amended
`Complaint (“FAC”) in the floragunn I lawsuit, alleging additional instances of
`copyright infringement and identifying additional Elastic X-Pack copyrights infringed
`by floragunn.
`
`
`Response: floragunn acknowledges that Elastic filed such complaints. floragunn denies that it
`
`has infringed any of Elastic’s code.
`
`Paragraph 3
`
`
`Allegation: In the course of subsequent discovery and investigation, Elastic has
`identified yet more instances of infringement by floragunn and additional Elastic X-
`Pack copyrights that floragunn has infringed. Elastic has now registered each of those
`additional copyrights with the United States Copyright Office.
`
`
`
`
`Response: floragunn acknowledges that Elastic has filed registrations with the United States
`
`Copyright Office, but denies that the code in those registrations is eligible for copyright protection.
`
`floragunn also denies that it has infringed any of Elastic’s code.
`
`Paragraph 4
`
`
`
`
`
`
`
`Allegation: Elastic files this new lawsuit in light of recent Northern District of
`California decisions interpreting 17 U.S.C. § 411(a). See Order re: Joint Motion for
`Clarification, ECF No. 59, UAB “Planner 5D” v. Facebook, Inc., No. 19-cv-03132-
`WHO (N.D. Cal. March 5, 2020); Izmo, Inc. v. Roadster, Inc., No. 18-cv-06092-NC,
`2019 WL 2359228 (N.D. Cal. June 4, 2019). Elastic will seek relation of this case to
`floragunn I pursuant to Civil Local Rule 3-12 and consolidation with floragunn I for
`all purposes.
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`2
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 3 of 50
`
`
`
`
`
`Response: As of the time of filing of this Answer, the two cases have been consolidated.
`
`
`Paragraph 5
`
`
`Allegation: Plaintiff Elasticsearch, Inc. is incorporated in Delaware; it has its principal
`place of business in Mountain View, California. Plaintiff elasticsearch B.V. is
`incorporated in the Netherlands.
`
`
`
`
`Response: floragunn denies having knowledge or information sufficient to respond to Elastic’s
`
`allegations set forth in paragraph 5 of the complaint, and therefore denies such allegations.
`
`Paragraph 6
`
`
`
`
`
`Allegation: Defendant floragunn is a German company with a principal place of
`business in Berlin, Germany.
`
`
`Response: floragunn admits the allegations in paragraph 6.
`
`Paragraph 7
`
`
`Allegation: Elastic’s claims for copyright infringement arise under the Copyright Act
`of 1976, 17 U.S.C. § 101 et seq.
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 7 of the complaint.
`
`Paragraph 8
`
`
`Allegation: This Court has original subject matter jurisdiction of this action under
`28 U.S.C. §§ 1331 and 1338.
`
`
`Response: floragunn admits that this Court has jurisdiction over this action, but denies that it
`
`engaged in any infringement of Elastic’s code.
`
`Paragraph 9
`
`
`Allegation: This Court has specific personal jurisdiction over floragunn because,
`among other reasons, floragunn has extensively offered and distributed its infringing
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`3
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 4 of 50
`
`
`
`product containing Elastic’s copyrighted material to companies in California and
`purposefully committed within California the acts from which Elastic’s claims arise.
`Additionally, to the extent floragunn has committed the illegal acts described herein
`outside of California, it did so knowing and intending that such acts would cause injury
`to Elastic at its principal place of business within California.
`
`
`
`
`Response: floragunn denies the allegations in paragraph 9, but does not challenge this Court’s
`
`exercise of personal jurisdiction over floragunn.
`
`Paragraph 10
`
`
`Allegation: Venue is proper in the Northern District of California under 28 U.S.C. §
`1391(b)(2) and 1391(c)(3) because a substantial part of the events or omissions giving
`rise to the claims alleged in this complaint occurred in this judicial district.
`
`
`
`
`Response: floragunn denies that it engaged in any “events or omissions giving rise to the claims
`
`alleged in [the] complaint,” but does not challenge the propriety of venue in this district.
`
`
`Paragraph 11
`
`Allegation: Because this action arises from Elastic’s assertion of its intellectual
`property rights, Northern District of California Civil Local Rule 3-2(c) excludes
`this action from the division-specific venue rule and subjects this action to
`assignment on a district-wide basis.
`
`
`Response: floragunn denies that Elastic’s “assertion of its intellectual property rights” has merit,
`but does not challenge the applicability of Local Rule 3-2(c).
`
`Paragraph 12
`
`
`Allegation: Elastic produces a core suite of search and analytics products known as the
`Elastic Stack (formerly known as ELK Stack). The Elastic Stack consists of
`Elasticsearch, Logstash, Kibana, and Beats. Elasticsearch is a search and analytics
`engine. Logstash is a server-side data processing pipeline that ingests data from multiple
`sources simultaneously, transforms it, and then sends it to a “stash” like Elasticsearch.
`Kibana lets users visualize data with charts and graphs in Elasticsearch. Beats is a family
`of “data shipper” software that collects and centralizes data that feeds into the other
`products in Elastic Stack.
`
`
`Response: floragunn admits the allegations in paragraph 12.
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`4
`
`
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 5 of 50
`
`
`
`
`
`Paragraph 13
`
`
`Allegation: X-Pack is a set of add-on features to Elastic’s core Elastic Stack suite of
`products. X-Pack includes security, altering, monitoring, reporting, and other add-ons to
`Elasticsearch, Kibana, and other products in the Elastic Stack. The predecessor to much
`of X-Pack was known as Shield. (Unless otherwise specified, Elastic refers to Shield and
`X-Pack collectively herein as “X-Pack.”)
`
`
`
`Response: floragunn admits the allegations in paragraph 13.
`
`Paragraph 14
`
`
`Allegation: Elastic has a longstanding commitment to opening the source code
`underlying many of its products in order to facilitate building a community that helps
`improve and advance Elastic’s products to produce the best software possible. When
`Elastic releases the source code for its software, it does so under clearly delineated
`conditions.
`
`
`
`
`Response: (1) floragunn denies the allegations in paragraph in paragraph 14 of the complaint.
`
`Specifically, Elastic misleads when it claims that “it has a longstanding commitment to opening
`
`source code underlying many of its products,” since it has no “longstanding” commitment to
`
`opening source in the case of X-Pack (including Shield) because the code for X-Pack was closed
`
`source software from the time it was first released in 2015 until Elastic finally opened the source
`
`code to the public in 2018. Before April 2018, it was impossible for third-party developers to
`
`contribute anything to the proprietary and closed-source X-Pack code. Search Guard, on the
`
`other hand, has been publicly available open code since it was first released in 2015. (2) Second,
`
`it is false that “[w]hen Elastic releases the source code for its software, it does so under clearly
`
`delineated conditions.” For example, Elastic released both its Apache 2 licensed code and its
`
`own Elastic-licensed code in the same GitHub repository, causing significant confusion as to
`
`which license applied to which files. This practice is commonly referred to as “code mingling”
`
`and is highly discouraged by the Open Source community because it leads to situations where a
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`5
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 6 of 50
`
`
`
`single commit by a developer could contain both Apache2 and Elastic-licensed code. Such
`
`commits are called “toxic” for obvious reasons.
`
`
`
`Paragraph 15
`
`
`Allegation: In late April 2018, Elastic opened the source code for version 6.2.x of X-
`Pack. Elastic made the code available on Elastic’s public GitHub code repository for
`users to inspect, contribute, create issues, and open pull requests, all pursuant to the
`“Elastic License.” Elastic has released the source code for subsequent versions of X-
`Pack on GitHub, also under the “Elastic License.”
`
`
`
`
`Response: floragunn admits Elastic’s allegation in the first sentence of paragraph 15 of the
`
`complaint that Elastic opened the source for version 6.2x of X-Pack in April 2018, but denies
`
`that Elastic made the code available solely pursuant to the “Elastic License.” floragunn denies
`
`all other allegations in paragraph 15 of the complaint.
`
`
`
`Paragraph 16
`
`
`Allegation: The Elastic License did not grant to floragunn or any other party the right to
`create copies or prepare derivative works for use in any production capacity. And to the
`extent floragunn acquired any rights pursuant to the Elastic License, those rights
`terminated immediately and automatically by virtue of floragunn’s actions as described
`herein. Nor did any license applicable to earlier versions of X-Pack and/or Shield provide
`floragunn the right to create copies or prepare derivative works for use in any production
`capacity.
`
`
`
`
`Response: floragunn denies the allegations of paragraph 16 of the complaint because the
`
`allegation implies that floragunn copied or prepared derivative works of X-Pack or Shield, which
`
`it did not. As for the legal interpretation of Elastic’s licenses, floragunn respectfully refers the
`
`Court to Elastic’s license to ascertain its terms.
`
`
`
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`6
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 7 of 50
`
`
`
`Paragraph 17
`
`Allegation: Elastic is informed and believes, and, on that basis, alleges that
`floragunn accessed the Elastic code described herein either through decompilation
`of Elastic binaries, reviewing source-available Elastic repositories, and/or review
`of otherwise publicly-available Elastic code.
`
`
`Response: floragunn denies the allegations of paragraph 17.
`
`Paragraph 18
`
`
`Allegation: floragunn markets and distributes Search Guard, a plug-in for
`Elasticsearch that offers features similar to the security features that Elastic offers in
`X-Pack. floragunn makes certain source code for Search Guard available for review
`and inspection on its GitLab repositories under several different license agreements.
`
`
`
`
`Response: floragunn denies Elastic’s allegations in the first sentence of paragraph 18 that
`
`floragunn’s “Search Guard, a plug-in for Elasticsearch . . . offers features similar to the security
`
`features that Elastic offers in X-Pack.” In fact, Search Guard always has, and continues to, offer
`
`more and different features than X-Pack, although some features are similar.
`
`Paragraph 19
`
`Allegation: Search Guard is available as a “Community Edition” for free for certain uses,
`but floragunn charges customers for Enterprise and Compliance editions of Search Guard.
`floragunn prohibits users from, among other things, taking features from the Enterprise or
`Compliance editions of Search Guard into production without purchasing a license. In
`fact, floragunn explicitly warned its users that doing so “is illegal” and “can lead to
`serious legal consequences, which can bring more harm and costs to a company . . . .”
`
`Response: floragunn admits the allegations in paragraph 19 of the complaint. Search Guard
`
`community edition is available free of charge, and the Enterprise and Compliance editions are
`
`available for a fee under difference licenses, which are available to the public for review.
`
`floragunn further states that it did not violate the terms of any Elastic license.
`
`Paragraph 20
`
`Allegation: After initiating the floragunn I lawsuit, Elastic identified further instances
`of infringement by floragunn. Infringement by floragunn is evident in at least the
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`7
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 8 of 50
`
`
`
`following code from a February 13, 2016 commit to the Search Guard
`PrivilegesEvaluator.java file:
`
`private Tuple<Set<String>, Set<String>> resolve(final User user, final String action, final
`TransportRequest request,
`final MetaData metaData) {
`if (!(request instanceof CompositeIndicesRequest) && !(request
`instanceof IndicesRequest)) {
`if (log.isDebugEnabled()) {
`log.debug("{} is not an IndicesRequest", request.getClass());
`}
`return new Tuple<Set<String>, Set<String>>(Collections.EMPTY_SET,
`Collections.EMPTY_SET);
`}
`final Set<String> indices = new HashSet<String>();
`final Set<String> types = new HashSet<String>();
`if (request instanceof CompositeIndicesRequest) {
`for (final IndicesRequest indicesRequest : ((CompositeIndicesRequest)
`request).subRequests()) {
`final Tuple<Set<String>, Set<String>> t = resolve(user, action,
`indicesRequest, metaData);
`indices.addAll(t.v1());
`types.addAll(t.v2());
`}
`} else {
`final Tuple<Set<String>, Set<String>> t = resolve(user, action,
`(IndicesRequest) request, metaData);
`indices.addAll(t.v1());
`types.addAll(t.v2());
`}
`if (IndexNameExpressionResolver.isAllIndices(new ArrayList<String>(indices)))
`indices.clear();
`indices.add("_all");
`}
`if (types.isEmpty()) {
`types.add("_all");
`}
`return new Tuple<Set<String>,
`Set<String>>(Collections.unmodifiableSet(indices),
`Collections.unmodifiableSet(types)); }
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`{
`
`denies Elastic’s allegations in paragraph 20 of the complaint. floragunn further denies that any
`
`code in this commit to PrivilegesEvaluator.java infringes any of Elastic’s code.
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`8
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 9 of 50
`
`
`
`Paragraph 21
`
`Allegation: The code in Paragraph 20 is copied from and/or is a derivative work of at
`least the following Elastic code included in the binary of Elasticsearch Shield in the file
`DefaultIndicesResolver.java, original to Elasticsearch Shield version 1.0.0 Beta1 and
`released by Elastic on November 3, 2014:
`
`public Set<String> resolve(User user, String action, TransportRequest
`request, MetaData metaData) {
`boolean isIndicesRequest = request instanceof CompositeIndicesRequest ||
`request instanceof IndicesRequest;
`assert isIndicesRequest : "Request [" + request + "] is not an Indices request.
`The only requests passing the action matcher should be IndicesRequests";
`// if for some reason we are missing an action... just for safety we'll reject
`if (!isIndicesRequest) {
`return Collections.emptySet();
`}
`if (request instanceof CompositeIndicesRequest) {
`Set<String> indices = Sets.newHashSet();
`CompositeIndicesRequest compositeIndicesRequest =
`(CompositeIndicesRequest) request;
`for (IndicesRequest indicesRequest :
`compositeIndicesRequest.subRequests()) {
`indices.addAll(resolveIndices(user, action, indicesRequest, metaData));
`}
`return indices;
`
`}
`return resolveIndices(user, action, (IndicesRequest) request,
`metaData); }
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 21 of the complaint. floragunn specifically denies that
`
`that the commit identified in paragraph 20 is copied from or is a derivative work of any Elastic
`
`code. floragunn further denies that any similarities are due to copying of any protectable
`
`expression original to Elastic. Moreover, the allegedly infringed code is licensed under Apache
`
`Software License 2.0. To the extent that paragraph 21 alleges that floragunn decompiled Elastic
`
`object code or otherwise accessed nonpublic code, floragunn denies such allegations.
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`9
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 10 of 50
`
`
`
`
`Paragraph 22
`
`Allegation: Elastic registered Elasticsearch Shield version 1.0.0 Beta1 with the
`United States Copyright Office on April 30, 2020.
`
`
`
`Response: floragunn admits that Elastic submitted such registration, but denies that all the
`
`contents of that registration are entitled to copyright protection.
`
`Paragraph 23
`
`Allegation: As shown below, ignoring non-substantive differences in the code and
`adjusting white space to illustrate similarities, it is clear that at least the floragunn code
`in Paragraph 20 (on the right) is copied from and/or is a derivative work of at least the
`Elastic code in Paragraph 21 (on the left):
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`10
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 11 of 50
`
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 23 of the complaint. floragunn specifically denies that
`
`that the commit identified in paragraph 20 is copied from or is a derivative work of any Elastic
`
`code, much less that it is “clear that . . . [it] is copied from and/or is a derivative work of at least
`
`the Elastic code in Paragraph 21.” floragunn further denies that any similarities are due to
`
`copying of any protectable expression original to Elastic. To the extent that paragraph 23 alleges
`
`that floragunn decompiled Elastic object code or otherwise accessed nonpublic code, floragunn
`
`denies such allegations.
`
`Paragraph 24
`
`Allegation: Infringement by floragunn is also evident in an April 5, 2017 commit to the
`Search Guard Kibana plugin login_controller.js file. That file contains the following
`code:
`const {query, hash} = parse($window.location.href, true);
`let nextUrl;
`if (query.next) {
`nextUrl = query.next + (hash || ")
`} else {
`nextUrl = "/";
`}
`
`
`
`Response: floragunn admits that the April 5, 2017 commit contained such code. floragunn
`
`denies that it has engaged in any copyright infringement and therefore denies Elastic’s remaining
`
`allegations in paragraph 24 of the complaint. floragunn further denies that any code in this
`
`commit to login_controller.js infringes any of Elastic’s code.
`
`Paragraph 25
`
`
`Allegation: That floragunn code is copied from and/or is a derivative work of the
`following Elastic code included in parse_next.js and original to Kibana Shield version
`2.3.2 released by Elastic on April 26, 2016, reproduced here:
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`11
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 12 of 50
`
`
`
`const {query, hash} = parse(location.href, true);
`if (query.next) return query.next + (hash || ");
`return '/';
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`denies Elastic’s allegations in paragraph 25 of the complaint. floragunn specifically denies that
`that the commit identified in paragraph 24 is copied from or is a derivative work of any Elastic
`code. floragunn further denies that any similarities are due to copying of any protectable
`expression original to Elastic. Moreover, the allegedly infringed code is licensed under the
`Apache Software License 2.0.
`
`Paragraph 26
`
`
`Allegation: Elastic registered Kibana Shield version 2.3.2 with the United States
`Copyright Office on November 6, 2019.
`
`
`
`Response: floragunn admits that Elastic submitted such a registration, but denies that all of the
`
`contents of the registration are entitled to copyright protection.
`
`Paragraph 27
`
`
`Allegation: Infringement by floragunn is also evident in an August 6, 2017 commit to
`the Search Guard Kibana plugin index.html and filterbar.html files. Those files contain
`the following code:
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`12
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 13 of 50
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Response: floragunn admits that the August 6, 2017 commit contains such code. floragunn
`
`denies that it has engaged in any copyright infringement and therefore denies Elastic’s
`
`allegations in paragraph 27 of the complaint. floragunn further denies that any code in this
`
`commit to index.html and filterbar.html infringes any of Elastic’s code.
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`13
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 14 of 50
`
`
`
`Paragraph 28
`
`Allegation: That floragunn code is copied from and/or is a derivative work of
`Elastic code in the users.html file original to Kibana X-Pack versions 5.0.0 and
`5.2.0 and released by Elastic on or before January 31, 2017, reproduced here:
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`14
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 15 of 50
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 28 of the complaint. floragunn specifically denies that
`
`that the commit identified in paragraph 27 is copied from or is a derivative work of any Elastic
`
`code. floragunn further denies that any similarities are due to copying of any protectable
`
`expression original to Elastic. Moreover, the allegedly infringed code is licensed under the
`
`Apache Software License 2.0.
`
`Paragraph 29
`
`Allegation: As shown below, ignoring non-substantive differences in the code and
`adjusting white space to illustrate similarities, it is clear that at least the floragunn code in
`Paragraph 27 is copied from and/or is a derivative work of at least the Elastic code in
`Paragraph 28. This comparison includes additional indicia of copying in the following
`non-functional comment: “<!-- We need an empty section for the buttons to be positioned
`consistently. -->”
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`15
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 16 of 50
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`16
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 17 of 50
`
`
`
`
`
`
`
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 29 of the complaint. floragunn specifically denies that
`
`that the commit identified in paragraph 27 is copied from or is a derivative work of any Elastic
`
`code, much less that it is “clear that . . . [it] is copied from and/or is a derivative work of at least
`
`the Elastic code in Paragraph 28.” floragunn further denies that any similarities are due to
`
`copying of any protectable expression original to Elastic.
`
`
`
`Paragraph 30
`
`
`Allegation: Elastic registered Kibana X-Pack versions 5.0.0 and 5.2.0 with
`the United States Copyright Office on April 30, 2020 and September 19,
`2019, respectively.
`
`
`
`Response: floragunn admits that Elastic made these registrations, but denies that they entitle
`
`Elastic to copyright protection for the code that Elastic claims to be infringed.
`
`Paragraph 31
`
`Allegation: Further newly identified infringement by floragunn is evident in a
`September 11, 2017 commit to the Search Guard PrivilegesEvaluator.java file,
`including at least:
`
`if(action.equals("indices:data/write/bulk[s]")) {
`and the following commented-out—that is, non-functional—code:
`if(request instanceof BulkRequest) {
`for(DocWriteRequest<?> ar: ((BulkRequest) request).requests()) {
`//require also op type permissions
`switch(ar.opType()) {
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`17
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 18 of 50
`
`
`
`case CREATE: additionalPermissionsRequired.add(IndexAction.NAME);break;
`case INDEX: additionalPermissionsRequired.add(IndexAction.NAME);break;
`case DELETE:
`additionalPermissionsRequired.add(DeleteAction.NAME);break; case
`UPDATE: additionalPermissionsRequired.add(UpdateAction.NAME);break; }
`}
`
`}
`
`
`
`
`Response: floragunn admits that the commit contained such changes, but denies that it
`
`infringed any of Elastic’s copyrights. floragunn specifically denies that any similarities
`
`to Elastic’s code are due to copying of any protectable expression original to Elastic.
`
`Paragraph 32
`Allegation: A subsequent September 26, 2017 commit to the Search Guard
`PrivilegesEvaluator.java file contains a further example of floragunn’s
`infringement. In that commit, floragunn retained the infringing commented-out
`code quoted in Paragraph 31, but removed the “/*” and “*/” symbols that had
`commented out the infringing code.
`
`Response: floragunn admits that the commit contained such changes, but denies that it
`
`infringed any of Elastic’s copyrights. floragunn specifically denies that any similarities
`
`to Elastic’s code are due to copying of any protectable expression original to Elastic.
`
`
`Paragraph 33
`Allegation: Then, floragunn again infringed Elastic’s copyrights in an October 1, 2017
`commit to the Search Guard PrivilegesEvaluator.java file. That commit added the
`following code:
`
`switch (bir.request().opType()) {
`case CREATE:
`additionalPermissionsRequired.add(IndexAction.NAME);
`break;
`case INDEX:
`additionalPermissionsRequired.add(IndexAction.NAME);
`break;
`case DELETE:
`additionalPermissionsRequired.add(DeleteAction.NAME);
`break;
`case UPDATE:
`additionalPermissionsRequired.add(UpdateAction.NAME);
`break;
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`18
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 19 of 50
`
`
`
`The same floragunn commit and file also commented out the following
`code: /*if(request instanceof BulkRequest) {
`
`for(DocWriteRequest<?> ar: ((BulkRequest) request).requests()) {
`//require also op type permissions
`switch(ar.opType()) {
`case CREATE: additionalPermissionsRequired.add(IndexAction.NAME);break;
`case INDEX: additionalPermissionsRequired.add(IndexAction.NAME);break;
`case DELETE:
`additionalPermissionsRequired.add(DeleteAction.NAME);break; case
`UPDATE: additionalPermissionsRequired.add(UpdateAction.NAME);break; }
`}
`}*/
`
`Response: floragunn admits that the commit contained such code, but denies that it infringes any
`
`of Elastic’s copyrights. floragunn specifically denies that any similarities are due to copying of
`
`any protectable expression original to Elastic.
`
`Paragraph 34
`Allegation: An October 10 commit to the same file demonstrates further infringement
`by floragunn. That commit removed the commented-out infringing code in Paragraph 33
`but retained other infringing code. Additionally, floragunn’s October 10 commit contains
`code that is a derivative work of Elastic’s copyrighted source code.
`
`
`
`Response: floragunn admits that the October 10 commit contained that change.
`
`floragunn denies that the commit infringed any of Elastic’s copyrights. floragunn
`
`specifically denies that any similarities are due to copying of any protectable expression
`
`original to Elastic. floragunn further denies that any code in the commit identified in this
`
`paragraph constitutes a derivative work of Elastic’s code.
`
`Paragraph 35
`Allegation: The floragunn commits referenced in Paragraphs 31–34 contain code that is
`copied from and/or is a derivative work of at least the following Elastic code included in
`X-Pack in the file AuthorizationService.java, original to Elasticsearch X-Pack 5.6.0 and
`released by Elastic on September 11, 2017:
`if (action.equals(TransportShardBulkAction.ACTION_NAME)) {
`
`And:
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`19
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 20 of 50
`
`
`
`final DocWriteRequest docWriteRequest = item.request();
`switch (docWriteRequest.opType()) {
`case INDEX:
`case CREATE:
`return IndexAction.NAME;
`case UPDATE:
`return UpdateAction.NAME;
`case DELETE:
`return DeleteAction.NAME;
`}
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 35 of the complaint. floragunn specifically denies that
`
`that the commits identified in paragraphs 31-34 are copied from or are a derivative work of any
`
`Elastic code. floragunn further denies that any similarities are due to copying of any protectable
`
`expression original to Elastic.
`
`
`Paragraph 36
`Allegation: Elastic had not publicly released the source code for X-Pack alleged in
`Paragraph 35 at the time of floragunn’s copying and/or creation of derivative works from
`that code. Elastic is informed and believes and, on that basis, alleges that floragunn
`decompiled Elastic’s binaries or otherw