scanoss 0.2.16 → 0.2.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/main/bin/cli-bin.js +1 -1
  3. package/build/main/lib/dependencies/Dependency.js +4 -2
  4. package/build/main/lib/dependencies/DependencyScanner.d.ts +9 -0
  5. package/build/main/lib/dependencies/DependencyScanner.js +84 -0
  6. package/build/main/lib/dependencies/PurlGenerator.js +13 -6
  7. package/build/main/lib/dependencies/parsers/golangParser.d.ts +2 -0
  8. package/build/main/lib/dependencies/parsers/golangParser.js +63 -3
  9. package/build/main/lib/dependencies/parsers/mavenParser.js +2 -3
  10. package/build/main/lib/dependencies/parsers/types.js +1 -31
  11. package/build/main/lib/grpc/GrpcConfig.d.ts +4 -0
  12. package/build/main/lib/grpc/GrpcConfig.js +11 -0
  13. package/build/main/lib/grpc/GrpcDependencyService.d.ts +12 -0
  14. package/build/main/lib/grpc/GrpcDependencyService.js +81 -0
  15. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  16. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  17. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  18. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +405 -0
  19. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  20. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  21. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  22. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1155 -0
  23. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  24. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +67 -0
  25. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  26. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  27. package/build/main/old/Dependency.d.ts +9 -0
  28. package/build/main/old/Dependency.js +96 -0
  29. package/build/main/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  30. package/build/main/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  31. package/build/main/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  32. package/build/main/scanoss/api/common/v2/scanoss-common_pb.js +405 -0
  33. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  34. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  35. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  36. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1156 -0
  37. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  38. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +67 -0
  39. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  40. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  41. package/build/module/bin/cli-bin.js +1 -1
  42. package/build/module/lib/dependencies/Dependency.js +4 -2
  43. package/build/module/lib/dependencies/DependencyScanner.d.ts +9 -0
  44. package/build/module/lib/dependencies/DependencyScanner.js +78 -0
  45. package/build/module/lib/dependencies/PurlGenerator.js +13 -6
  46. package/build/module/lib/dependencies/parsers/golangParser.d.ts +2 -0
  47. package/build/module/lib/dependencies/parsers/golangParser.js +55 -3
  48. package/build/module/lib/dependencies/parsers/mavenParser.js +2 -3
  49. package/build/module/lib/dependencies/parsers/types.js +1 -31
  50. package/build/module/lib/grpc/GrpcConfig.d.ts +4 -0
  51. package/build/module/lib/grpc/GrpcConfig.js +5 -0
  52. package/build/module/lib/grpc/GrpcDependencyService.d.ts +12 -0
  53. package/build/module/lib/grpc/GrpcDependencyService.js +60 -0
  54. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  55. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  56. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  57. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +405 -0
  58. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  59. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  60. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  61. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1155 -0
  62. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  63. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +67 -0
  64. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  65. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  66. package/build/module/old/Dependency.d.ts +9 -0
  67. package/build/module/old/Dependency.js +72 -0
  68. package/build/module/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  69. package/build/module/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  70. package/build/module/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  71. package/build/module/scanoss/api/common/v2/scanoss-common_pb.js +405 -0
  72. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  73. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  74. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  75. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1156 -0
  76. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  77. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +67 -0
  78. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  79. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  80. package/build/tsconfig.module.tsbuildinfo +1 -1
  81. package/build/tsconfig.tsbuildinfo +1 -1
  82. package/package-lock.json +18589 -0
  83. package/package.json +1 -1
  84. package/src/bin/cli-bin.ts +1 -1
  85. package/src/lib/dependencies/Dependency.ts +4 -4
  86. package/src/lib/dependencies/PurlGenerator.ts +7 -3
  87. package/src/lib/dependencies/parsers/golangParser.ts +78 -2
  88. package/src/lib/dependencies/parsers/mavenParser.ts +1 -2
  89. package/src/lib/dependencies/parsers/types.ts +0 -31
@@ -0,0 +1,1155 @@
1
+ /**
2
+ * @fileoverview
3
+ * @enhanceable
4
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
5
+ * field starts with 'MSG_' and isn't a translatable message.
6
+ * @public
7
+ */
8
+ // GENERATED CODE -- DO NOT EDIT!
9
+ const jspb = require('google-protobuf');
10
+ const goog = jspb;
11
+ const global = Function('return this')();
12
+ const scanoss_api_common_v2_scanoss$common_pb = require('../../../../scanoss/api/common/v2/scanoss-common_pb.js');
13
+ goog.exportSymbol('proto.scanoss.api.dependencies.v2.DependencyRequest', null, global);
14
+ goog.exportSymbol('proto.scanoss.api.dependencies.v2.DependencyRequest.Files', null, global);
15
+ goog.exportSymbol('proto.scanoss.api.dependencies.v2.DependencyRequest.Purls', null, global);
16
+ goog.exportSymbol('proto.scanoss.api.dependencies.v2.DependencyResponse', null, global);
17
+ goog.exportSymbol('proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies', null, global);
18
+ goog.exportSymbol('proto.scanoss.api.dependencies.v2.DependencyResponse.Files', null, global);
19
+ goog.exportSymbol('proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses', null, global);
20
+ /**
21
+ * Generated by JsPbCodeGenerator.
22
+ * @param {Array=} opt_data Optional initial data array, typically from a
23
+ * server response, or constructed directly in Javascript. The array is used
24
+ * in place and becomes part of the constructed object. It is not cloned.
25
+ * If no data is provided, the constructed object will be empty, but still
26
+ * valid.
27
+ * @extends {jspb.Message}
28
+ * @constructor
29
+ */
30
+ proto.scanoss.api.dependencies.v2.DependencyRequest = function (opt_data) {
31
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.dependencies.v2.DependencyRequest.repeatedFields_, null);
32
+ };
33
+ goog.inherits(proto.scanoss.api.dependencies.v2.DependencyRequest, jspb.Message);
34
+ if (goog.DEBUG && !COMPILED) {
35
+ proto.scanoss.api.dependencies.v2.DependencyRequest.displayName = 'proto.scanoss.api.dependencies.v2.DependencyRequest';
36
+ }
37
+ /**
38
+ * List of repeated fields within this message type.
39
+ * @private {!Array<number>}
40
+ * @const
41
+ */
42
+ proto.scanoss.api.dependencies.v2.DependencyRequest.repeatedFields_ = [1];
43
+ if (jspb.Message.GENERATE_TO_OBJECT) {
44
+ /**
45
+ * Creates an object representation of this proto suitable for use in Soy templates.
46
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
47
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
48
+ * For the list of reserved names please see:
49
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
50
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
51
+ * for transitional soy proto support: http://goto/soy-param-migration
52
+ * @return {!Object}
53
+ */
54
+ proto.scanoss.api.dependencies.v2.DependencyRequest.prototype.toObject = function (opt_includeInstance) {
55
+ return proto.scanoss.api.dependencies.v2.DependencyRequest.toObject(opt_includeInstance, this);
56
+ };
57
+ /**
58
+ * Static version of the {@see toObject} method.
59
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
60
+ * instance for transitional soy proto support:
61
+ * http://goto/soy-param-migration
62
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest} msg The msg instance to transform.
63
+ * @return {!Object}
64
+ * @suppress {unusedLocalVariables} f is only used for nested messages
65
+ */
66
+ proto.scanoss.api.dependencies.v2.DependencyRequest.toObject = function (includeInstance, msg) {
67
+ let f, obj = {
68
+ filesList: jspb.Message.toObjectList(msg.getFilesList(), proto.scanoss.api.dependencies.v2.DependencyRequest.Files.toObject, includeInstance),
69
+ depth: jspb.Message.getFieldWithDefault(msg, 2, 0)
70
+ };
71
+ if (includeInstance) {
72
+ obj.$jspbMessageInstance = msg;
73
+ }
74
+ return obj;
75
+ };
76
+ }
77
+ /**
78
+ * Deserializes binary data (in protobuf wire format).
79
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
80
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyRequest}
81
+ */
82
+ proto.scanoss.api.dependencies.v2.DependencyRequest.deserializeBinary = function (bytes) {
83
+ const reader = new jspb.BinaryReader(bytes);
84
+ const msg = new proto.scanoss.api.dependencies.v2.DependencyRequest;
85
+ return proto.scanoss.api.dependencies.v2.DependencyRequest.deserializeBinaryFromReader(msg, reader);
86
+ };
87
+ /**
88
+ * Deserializes binary data (in protobuf wire format) from the
89
+ * given reader into the given message object.
90
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest} msg The message object to deserialize into.
91
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
92
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyRequest}
93
+ */
94
+ proto.scanoss.api.dependencies.v2.DependencyRequest.deserializeBinaryFromReader = function (msg, reader) {
95
+ while (reader.nextField()) {
96
+ if (reader.isEndGroup()) {
97
+ break;
98
+ }
99
+ const field = reader.getFieldNumber();
100
+ switch (field) {
101
+ case 1:
102
+ var value = new proto.scanoss.api.dependencies.v2.DependencyRequest.Files;
103
+ reader.readMessage(value, proto.scanoss.api.dependencies.v2.DependencyRequest.Files.deserializeBinaryFromReader);
104
+ msg.addFiles(value);
105
+ break;
106
+ case 2:
107
+ var value = /** @type {number} */ (reader.readInt32());
108
+ msg.setDepth(value);
109
+ break;
110
+ default:
111
+ reader.skipField();
112
+ break;
113
+ }
114
+ }
115
+ return msg;
116
+ };
117
+ /**
118
+ * Serializes the message to binary data (in protobuf wire format).
119
+ * @return {!Uint8Array}
120
+ */
121
+ proto.scanoss.api.dependencies.v2.DependencyRequest.prototype.serializeBinary = function () {
122
+ const writer = new jspb.BinaryWriter();
123
+ proto.scanoss.api.dependencies.v2.DependencyRequest.serializeBinaryToWriter(this, writer);
124
+ return writer.getResultBuffer();
125
+ };
126
+ /**
127
+ * Serializes the given message to binary data (in protobuf wire
128
+ * format), writing to the given BinaryWriter.
129
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest} message
130
+ * @param {!jspb.BinaryWriter} writer
131
+ * @suppress {unusedLocalVariables} f is only used for nested messages
132
+ */
133
+ proto.scanoss.api.dependencies.v2.DependencyRequest.serializeBinaryToWriter = function (message, writer) {
134
+ let f = undefined;
135
+ f = message.getFilesList();
136
+ if (f.length > 0) {
137
+ writer.writeRepeatedMessage(1, f, proto.scanoss.api.dependencies.v2.DependencyRequest.Files.serializeBinaryToWriter);
138
+ }
139
+ f = message.getDepth();
140
+ if (f !== 0) {
141
+ writer.writeInt32(2, f);
142
+ }
143
+ };
144
+ /**
145
+ * Generated by JsPbCodeGenerator.
146
+ * @param {Array=} opt_data Optional initial data array, typically from a
147
+ * server response, or constructed directly in Javascript. The array is used
148
+ * in place and becomes part of the constructed object. It is not cloned.
149
+ * If no data is provided, the constructed object will be empty, but still
150
+ * valid.
151
+ * @extends {jspb.Message}
152
+ * @constructor
153
+ */
154
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls = function (opt_data) {
155
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
156
+ };
157
+ goog.inherits(proto.scanoss.api.dependencies.v2.DependencyRequest.Purls, jspb.Message);
158
+ if (goog.DEBUG && !COMPILED) {
159
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.displayName = 'proto.scanoss.api.dependencies.v2.DependencyRequest.Purls';
160
+ }
161
+ if (jspb.Message.GENERATE_TO_OBJECT) {
162
+ /**
163
+ * Creates an object representation of this proto suitable for use in Soy templates.
164
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
165
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
166
+ * For the list of reserved names please see:
167
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
168
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
169
+ * for transitional soy proto support: http://goto/soy-param-migration
170
+ * @return {!Object}
171
+ */
172
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.prototype.toObject = function (opt_includeInstance) {
173
+ return proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.toObject(opt_includeInstance, this);
174
+ };
175
+ /**
176
+ * Static version of the {@see toObject} method.
177
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
178
+ * instance for transitional soy proto support:
179
+ * http://goto/soy-param-migration
180
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls} msg The msg instance to transform.
181
+ * @return {!Object}
182
+ * @suppress {unusedLocalVariables} f is only used for nested messages
183
+ */
184
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.toObject = function (includeInstance, msg) {
185
+ let f, obj = {
186
+ purl: jspb.Message.getFieldWithDefault(msg, 1, ""),
187
+ requirement: jspb.Message.getFieldWithDefault(msg, 2, "")
188
+ };
189
+ if (includeInstance) {
190
+ obj.$jspbMessageInstance = msg;
191
+ }
192
+ return obj;
193
+ };
194
+ }
195
+ /**
196
+ * Deserializes binary data (in protobuf wire format).
197
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
198
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls}
199
+ */
200
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.deserializeBinary = function (bytes) {
201
+ const reader = new jspb.BinaryReader(bytes);
202
+ const msg = new proto.scanoss.api.dependencies.v2.DependencyRequest.Purls;
203
+ return proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.deserializeBinaryFromReader(msg, reader);
204
+ };
205
+ /**
206
+ * Deserializes binary data (in protobuf wire format) from the
207
+ * given reader into the given message object.
208
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls} msg The message object to deserialize into.
209
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
210
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls}
211
+ */
212
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.deserializeBinaryFromReader = function (msg, reader) {
213
+ while (reader.nextField()) {
214
+ if (reader.isEndGroup()) {
215
+ break;
216
+ }
217
+ const field = reader.getFieldNumber();
218
+ switch (field) {
219
+ case 1:
220
+ var value = /** @type {string} */ (reader.readString());
221
+ msg.setPurl(value);
222
+ break;
223
+ case 2:
224
+ var value = /** @type {string} */ (reader.readString());
225
+ msg.setRequirement(value);
226
+ break;
227
+ default:
228
+ reader.skipField();
229
+ break;
230
+ }
231
+ }
232
+ return msg;
233
+ };
234
+ /**
235
+ * Serializes the message to binary data (in protobuf wire format).
236
+ * @return {!Uint8Array}
237
+ */
238
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.prototype.serializeBinary = function () {
239
+ const writer = new jspb.BinaryWriter();
240
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.serializeBinaryToWriter(this, writer);
241
+ return writer.getResultBuffer();
242
+ };
243
+ /**
244
+ * Serializes the given message to binary data (in protobuf wire
245
+ * format), writing to the given BinaryWriter.
246
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls} message
247
+ * @param {!jspb.BinaryWriter} writer
248
+ * @suppress {unusedLocalVariables} f is only used for nested messages
249
+ */
250
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.serializeBinaryToWriter = function (message, writer) {
251
+ let f = undefined;
252
+ f = message.getPurl();
253
+ if (f.length > 0) {
254
+ writer.writeString(1, f);
255
+ }
256
+ f = message.getRequirement();
257
+ if (f.length > 0) {
258
+ writer.writeString(2, f);
259
+ }
260
+ };
261
+ /**
262
+ * optional string purl = 1;
263
+ * @return {string}
264
+ */
265
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.prototype.getPurl = function () {
266
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
267
+ };
268
+ /** @param {string} value */
269
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.prototype.setPurl = function (value) {
270
+ jspb.Message.setProto3StringField(this, 1, value);
271
+ };
272
+ /**
273
+ * optional string requirement = 2;
274
+ * @return {string}
275
+ */
276
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.prototype.getRequirement = function () {
277
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
278
+ };
279
+ /** @param {string} value */
280
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.prototype.setRequirement = function (value) {
281
+ jspb.Message.setProto3StringField(this, 2, value);
282
+ };
283
+ /**
284
+ * Generated by JsPbCodeGenerator.
285
+ * @param {Array=} opt_data Optional initial data array, typically from a
286
+ * server response, or constructed directly in Javascript. The array is used
287
+ * in place and becomes part of the constructed object. It is not cloned.
288
+ * If no data is provided, the constructed object will be empty, but still
289
+ * valid.
290
+ * @extends {jspb.Message}
291
+ * @constructor
292
+ */
293
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files = function (opt_data) {
294
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.dependencies.v2.DependencyRequest.Files.repeatedFields_, null);
295
+ };
296
+ goog.inherits(proto.scanoss.api.dependencies.v2.DependencyRequest.Files, jspb.Message);
297
+ if (goog.DEBUG && !COMPILED) {
298
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.displayName = 'proto.scanoss.api.dependencies.v2.DependencyRequest.Files';
299
+ }
300
+ /**
301
+ * List of repeated fields within this message type.
302
+ * @private {!Array<number>}
303
+ * @const
304
+ */
305
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.repeatedFields_ = [2];
306
+ if (jspb.Message.GENERATE_TO_OBJECT) {
307
+ /**
308
+ * Creates an object representation of this proto suitable for use in Soy templates.
309
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
310
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
311
+ * For the list of reserved names please see:
312
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
313
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
314
+ * for transitional soy proto support: http://goto/soy-param-migration
315
+ * @return {!Object}
316
+ */
317
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.prototype.toObject = function (opt_includeInstance) {
318
+ return proto.scanoss.api.dependencies.v2.DependencyRequest.Files.toObject(opt_includeInstance, this);
319
+ };
320
+ /**
321
+ * Static version of the {@see toObject} method.
322
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
323
+ * instance for transitional soy proto support:
324
+ * http://goto/soy-param-migration
325
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest.Files} msg The msg instance to transform.
326
+ * @return {!Object}
327
+ * @suppress {unusedLocalVariables} f is only used for nested messages
328
+ */
329
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.toObject = function (includeInstance, msg) {
330
+ let f, obj = {
331
+ file: jspb.Message.getFieldWithDefault(msg, 1, ""),
332
+ purlsList: jspb.Message.toObjectList(msg.getPurlsList(), proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.toObject, includeInstance)
333
+ };
334
+ if (includeInstance) {
335
+ obj.$jspbMessageInstance = msg;
336
+ }
337
+ return obj;
338
+ };
339
+ }
340
+ /**
341
+ * Deserializes binary data (in protobuf wire format).
342
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
343
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyRequest.Files}
344
+ */
345
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.deserializeBinary = function (bytes) {
346
+ const reader = new jspb.BinaryReader(bytes);
347
+ const msg = new proto.scanoss.api.dependencies.v2.DependencyRequest.Files;
348
+ return proto.scanoss.api.dependencies.v2.DependencyRequest.Files.deserializeBinaryFromReader(msg, reader);
349
+ };
350
+ /**
351
+ * Deserializes binary data (in protobuf wire format) from the
352
+ * given reader into the given message object.
353
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest.Files} msg The message object to deserialize into.
354
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
355
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyRequest.Files}
356
+ */
357
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.deserializeBinaryFromReader = function (msg, reader) {
358
+ while (reader.nextField()) {
359
+ if (reader.isEndGroup()) {
360
+ break;
361
+ }
362
+ const field = reader.getFieldNumber();
363
+ switch (field) {
364
+ case 1:
365
+ var value = /** @type {string} */ (reader.readString());
366
+ msg.setFile(value);
367
+ break;
368
+ case 2:
369
+ var value = new proto.scanoss.api.dependencies.v2.DependencyRequest.Purls;
370
+ reader.readMessage(value, proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.deserializeBinaryFromReader);
371
+ msg.addPurls(value);
372
+ break;
373
+ default:
374
+ reader.skipField();
375
+ break;
376
+ }
377
+ }
378
+ return msg;
379
+ };
380
+ /**
381
+ * Serializes the message to binary data (in protobuf wire format).
382
+ * @return {!Uint8Array}
383
+ */
384
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.prototype.serializeBinary = function () {
385
+ const writer = new jspb.BinaryWriter();
386
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.serializeBinaryToWriter(this, writer);
387
+ return writer.getResultBuffer();
388
+ };
389
+ /**
390
+ * Serializes the given message to binary data (in protobuf wire
391
+ * format), writing to the given BinaryWriter.
392
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest.Files} message
393
+ * @param {!jspb.BinaryWriter} writer
394
+ * @suppress {unusedLocalVariables} f is only used for nested messages
395
+ */
396
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.serializeBinaryToWriter = function (message, writer) {
397
+ let f = undefined;
398
+ f = message.getFile();
399
+ if (f.length > 0) {
400
+ writer.writeString(1, f);
401
+ }
402
+ f = message.getPurlsList();
403
+ if (f.length > 0) {
404
+ writer.writeRepeatedMessage(2, f, proto.scanoss.api.dependencies.v2.DependencyRequest.Purls.serializeBinaryToWriter);
405
+ }
406
+ };
407
+ /**
408
+ * optional string file = 1;
409
+ * @return {string}
410
+ */
411
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.prototype.getFile = function () {
412
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
413
+ };
414
+ /** @param {string} value */
415
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.prototype.setFile = function (value) {
416
+ jspb.Message.setProto3StringField(this, 1, value);
417
+ };
418
+ /**
419
+ * repeated Purls purls = 2;
420
+ * @return {!Array<!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls>}
421
+ */
422
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.prototype.getPurlsList = function () {
423
+ return /** @type{!Array<!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.dependencies.v2.DependencyRequest.Purls, 2));
424
+ };
425
+ /** @param {!Array<!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls>} value */
426
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.prototype.setPurlsList = function (value) {
427
+ jspb.Message.setRepeatedWrapperField(this, 2, value);
428
+ };
429
+ /**
430
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls=} opt_value
431
+ * @param {number=} opt_index
432
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyRequest.Purls}
433
+ */
434
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.prototype.addPurls = function (opt_value, opt_index) {
435
+ return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.scanoss.api.dependencies.v2.DependencyRequest.Purls, opt_index);
436
+ };
437
+ proto.scanoss.api.dependencies.v2.DependencyRequest.Files.prototype.clearPurlsList = function () {
438
+ this.setPurlsList([]);
439
+ };
440
+ /**
441
+ * repeated Files files = 1;
442
+ * @return {!Array<!proto.scanoss.api.dependencies.v2.DependencyRequest.Files>}
443
+ */
444
+ proto.scanoss.api.dependencies.v2.DependencyRequest.prototype.getFilesList = function () {
445
+ return /** @type{!Array<!proto.scanoss.api.dependencies.v2.DependencyRequest.Files>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.dependencies.v2.DependencyRequest.Files, 1));
446
+ };
447
+ /** @param {!Array<!proto.scanoss.api.dependencies.v2.DependencyRequest.Files>} value */
448
+ proto.scanoss.api.dependencies.v2.DependencyRequest.prototype.setFilesList = function (value) {
449
+ jspb.Message.setRepeatedWrapperField(this, 1, value);
450
+ };
451
+ /**
452
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyRequest.Files=} opt_value
453
+ * @param {number=} opt_index
454
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyRequest.Files}
455
+ */
456
+ proto.scanoss.api.dependencies.v2.DependencyRequest.prototype.addFiles = function (opt_value, opt_index) {
457
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.dependencies.v2.DependencyRequest.Files, opt_index);
458
+ };
459
+ proto.scanoss.api.dependencies.v2.DependencyRequest.prototype.clearFilesList = function () {
460
+ this.setFilesList([]);
461
+ };
462
+ /**
463
+ * optional int32 depth = 2;
464
+ * @return {number}
465
+ */
466
+ proto.scanoss.api.dependencies.v2.DependencyRequest.prototype.getDepth = function () {
467
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
468
+ };
469
+ /** @param {number} value */
470
+ proto.scanoss.api.dependencies.v2.DependencyRequest.prototype.setDepth = function (value) {
471
+ jspb.Message.setProto3IntField(this, 2, value);
472
+ };
473
+ /**
474
+ * Generated by JsPbCodeGenerator.
475
+ * @param {Array=} opt_data Optional initial data array, typically from a
476
+ * server response, or constructed directly in Javascript. The array is used
477
+ * in place and becomes part of the constructed object. It is not cloned.
478
+ * If no data is provided, the constructed object will be empty, but still
479
+ * valid.
480
+ * @extends {jspb.Message}
481
+ * @constructor
482
+ */
483
+ proto.scanoss.api.dependencies.v2.DependencyResponse = function (opt_data) {
484
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.dependencies.v2.DependencyResponse.repeatedFields_, null);
485
+ };
486
+ goog.inherits(proto.scanoss.api.dependencies.v2.DependencyResponse, jspb.Message);
487
+ if (goog.DEBUG && !COMPILED) {
488
+ proto.scanoss.api.dependencies.v2.DependencyResponse.displayName = 'proto.scanoss.api.dependencies.v2.DependencyResponse';
489
+ }
490
+ /**
491
+ * List of repeated fields within this message type.
492
+ * @private {!Array<number>}
493
+ * @const
494
+ */
495
+ proto.scanoss.api.dependencies.v2.DependencyResponse.repeatedFields_ = [1];
496
+ if (jspb.Message.GENERATE_TO_OBJECT) {
497
+ /**
498
+ * Creates an object representation of this proto suitable for use in Soy templates.
499
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
500
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
501
+ * For the list of reserved names please see:
502
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
503
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
504
+ * for transitional soy proto support: http://goto/soy-param-migration
505
+ * @return {!Object}
506
+ */
507
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.toObject = function (opt_includeInstance) {
508
+ return proto.scanoss.api.dependencies.v2.DependencyResponse.toObject(opt_includeInstance, this);
509
+ };
510
+ /**
511
+ * Static version of the {@see toObject} method.
512
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
513
+ * instance for transitional soy proto support:
514
+ * http://goto/soy-param-migration
515
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse} msg The msg instance to transform.
516
+ * @return {!Object}
517
+ * @suppress {unusedLocalVariables} f is only used for nested messages
518
+ */
519
+ proto.scanoss.api.dependencies.v2.DependencyResponse.toObject = function (includeInstance, msg) {
520
+ let f, obj = {
521
+ filesList: jspb.Message.toObjectList(msg.getFilesList(), proto.scanoss.api.dependencies.v2.DependencyResponse.Files.toObject, includeInstance),
522
+ status: (f = msg.getStatus()) && scanoss_api_common_v2_scanoss$common_pb.StatusResponse.toObject(includeInstance, f)
523
+ };
524
+ if (includeInstance) {
525
+ obj.$jspbMessageInstance = msg;
526
+ }
527
+ return obj;
528
+ };
529
+ }
530
+ /**
531
+ * Deserializes binary data (in protobuf wire format).
532
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
533
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse}
534
+ */
535
+ proto.scanoss.api.dependencies.v2.DependencyResponse.deserializeBinary = function (bytes) {
536
+ const reader = new jspb.BinaryReader(bytes);
537
+ const msg = new proto.scanoss.api.dependencies.v2.DependencyResponse;
538
+ return proto.scanoss.api.dependencies.v2.DependencyResponse.deserializeBinaryFromReader(msg, reader);
539
+ };
540
+ /**
541
+ * Deserializes binary data (in protobuf wire format) from the
542
+ * given reader into the given message object.
543
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse} msg The message object to deserialize into.
544
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
545
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse}
546
+ */
547
+ proto.scanoss.api.dependencies.v2.DependencyResponse.deserializeBinaryFromReader = function (msg, reader) {
548
+ while (reader.nextField()) {
549
+ if (reader.isEndGroup()) {
550
+ break;
551
+ }
552
+ const field = reader.getFieldNumber();
553
+ switch (field) {
554
+ case 1:
555
+ var value = new proto.scanoss.api.dependencies.v2.DependencyResponse.Files;
556
+ reader.readMessage(value, proto.scanoss.api.dependencies.v2.DependencyResponse.Files.deserializeBinaryFromReader);
557
+ msg.addFiles(value);
558
+ break;
559
+ case 2:
560
+ var value = new scanoss_api_common_v2_scanoss$common_pb.StatusResponse;
561
+ reader.readMessage(value, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.deserializeBinaryFromReader);
562
+ msg.setStatus(value);
563
+ break;
564
+ default:
565
+ reader.skipField();
566
+ break;
567
+ }
568
+ }
569
+ return msg;
570
+ };
571
+ /**
572
+ * Serializes the message to binary data (in protobuf wire format).
573
+ * @return {!Uint8Array}
574
+ */
575
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.serializeBinary = function () {
576
+ const writer = new jspb.BinaryWriter();
577
+ proto.scanoss.api.dependencies.v2.DependencyResponse.serializeBinaryToWriter(this, writer);
578
+ return writer.getResultBuffer();
579
+ };
580
+ /**
581
+ * Serializes the given message to binary data (in protobuf wire
582
+ * format), writing to the given BinaryWriter.
583
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse} message
584
+ * @param {!jspb.BinaryWriter} writer
585
+ * @suppress {unusedLocalVariables} f is only used for nested messages
586
+ */
587
+ proto.scanoss.api.dependencies.v2.DependencyResponse.serializeBinaryToWriter = function (message, writer) {
588
+ let f = undefined;
589
+ f = message.getFilesList();
590
+ if (f.length > 0) {
591
+ writer.writeRepeatedMessage(1, f, proto.scanoss.api.dependencies.v2.DependencyResponse.Files.serializeBinaryToWriter);
592
+ }
593
+ f = message.getStatus();
594
+ if (f != null) {
595
+ writer.writeMessage(2, f, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.serializeBinaryToWriter);
596
+ }
597
+ };
598
+ /**
599
+ * Generated by JsPbCodeGenerator.
600
+ * @param {Array=} opt_data Optional initial data array, typically from a
601
+ * server response, or constructed directly in Javascript. The array is used
602
+ * in place and becomes part of the constructed object. It is not cloned.
603
+ * If no data is provided, the constructed object will be empty, but still
604
+ * valid.
605
+ * @extends {jspb.Message}
606
+ * @constructor
607
+ */
608
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses = function (opt_data) {
609
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
610
+ };
611
+ goog.inherits(proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses, jspb.Message);
612
+ if (goog.DEBUG && !COMPILED) {
613
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.displayName = 'proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses';
614
+ }
615
+ if (jspb.Message.GENERATE_TO_OBJECT) {
616
+ /**
617
+ * Creates an object representation of this proto suitable for use in Soy templates.
618
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
619
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
620
+ * For the list of reserved names please see:
621
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
622
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
623
+ * for transitional soy proto support: http://goto/soy-param-migration
624
+ * @return {!Object}
625
+ */
626
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.prototype.toObject = function (opt_includeInstance) {
627
+ return proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.toObject(opt_includeInstance, this);
628
+ };
629
+ /**
630
+ * Static version of the {@see toObject} method.
631
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
632
+ * instance for transitional soy proto support:
633
+ * http://goto/soy-param-migration
634
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses} msg The msg instance to transform.
635
+ * @return {!Object}
636
+ * @suppress {unusedLocalVariables} f is only used for nested messages
637
+ */
638
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.toObject = function (includeInstance, msg) {
639
+ let f, obj = {
640
+ name: jspb.Message.getFieldWithDefault(msg, 1, "")
641
+ };
642
+ if (includeInstance) {
643
+ obj.$jspbMessageInstance = msg;
644
+ }
645
+ return obj;
646
+ };
647
+ }
648
+ /**
649
+ * Deserializes binary data (in protobuf wire format).
650
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
651
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses}
652
+ */
653
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.deserializeBinary = function (bytes) {
654
+ const reader = new jspb.BinaryReader(bytes);
655
+ const msg = new proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses;
656
+ return proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.deserializeBinaryFromReader(msg, reader);
657
+ };
658
+ /**
659
+ * Deserializes binary data (in protobuf wire format) from the
660
+ * given reader into the given message object.
661
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses} msg The message object to deserialize into.
662
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
663
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses}
664
+ */
665
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.deserializeBinaryFromReader = function (msg, reader) {
666
+ while (reader.nextField()) {
667
+ if (reader.isEndGroup()) {
668
+ break;
669
+ }
670
+ const field = reader.getFieldNumber();
671
+ switch (field) {
672
+ case 1:
673
+ var value = /** @type {string} */ (reader.readString());
674
+ msg.setName(value);
675
+ break;
676
+ default:
677
+ reader.skipField();
678
+ break;
679
+ }
680
+ }
681
+ return msg;
682
+ };
683
+ /**
684
+ * Serializes the message to binary data (in protobuf wire format).
685
+ * @return {!Uint8Array}
686
+ */
687
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.prototype.serializeBinary = function () {
688
+ const writer = new jspb.BinaryWriter();
689
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.serializeBinaryToWriter(this, writer);
690
+ return writer.getResultBuffer();
691
+ };
692
+ /**
693
+ * Serializes the given message to binary data (in protobuf wire
694
+ * format), writing to the given BinaryWriter.
695
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses} message
696
+ * @param {!jspb.BinaryWriter} writer
697
+ * @suppress {unusedLocalVariables} f is only used for nested messages
698
+ */
699
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.serializeBinaryToWriter = function (message, writer) {
700
+ let f = undefined;
701
+ f = message.getName();
702
+ if (f.length > 0) {
703
+ writer.writeString(1, f);
704
+ }
705
+ };
706
+ /**
707
+ * optional string name = 1;
708
+ * @return {string}
709
+ */
710
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.prototype.getName = function () {
711
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
712
+ };
713
+ /** @param {string} value */
714
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.prototype.setName = function (value) {
715
+ jspb.Message.setProto3StringField(this, 1, value);
716
+ };
717
+ /**
718
+ * Generated by JsPbCodeGenerator.
719
+ * @param {Array=} opt_data Optional initial data array, typically from a
720
+ * server response, or constructed directly in Javascript. The array is used
721
+ * in place and becomes part of the constructed object. It is not cloned.
722
+ * If no data is provided, the constructed object will be empty, but still
723
+ * valid.
724
+ * @extends {jspb.Message}
725
+ * @constructor
726
+ */
727
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies = function (opt_data) {
728
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.repeatedFields_, null);
729
+ };
730
+ goog.inherits(proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies, jspb.Message);
731
+ if (goog.DEBUG && !COMPILED) {
732
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.displayName = 'proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies';
733
+ }
734
+ /**
735
+ * List of repeated fields within this message type.
736
+ * @private {!Array<number>}
737
+ * @const
738
+ */
739
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.repeatedFields_ = [4];
740
+ if (jspb.Message.GENERATE_TO_OBJECT) {
741
+ /**
742
+ * Creates an object representation of this proto suitable for use in Soy templates.
743
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
744
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
745
+ * For the list of reserved names please see:
746
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
747
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
748
+ * for transitional soy proto support: http://goto/soy-param-migration
749
+ * @return {!Object}
750
+ */
751
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.toObject = function (opt_includeInstance) {
752
+ return proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.toObject(opt_includeInstance, this);
753
+ };
754
+ /**
755
+ * Static version of the {@see toObject} method.
756
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
757
+ * instance for transitional soy proto support:
758
+ * http://goto/soy-param-migration
759
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies} msg The msg instance to transform.
760
+ * @return {!Object}
761
+ * @suppress {unusedLocalVariables} f is only used for nested messages
762
+ */
763
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.toObject = function (includeInstance, msg) {
764
+ let f, obj = {
765
+ component: jspb.Message.getFieldWithDefault(msg, 1, ""),
766
+ purl: jspb.Message.getFieldWithDefault(msg, 2, ""),
767
+ version: jspb.Message.getFieldWithDefault(msg, 3, ""),
768
+ licensesList: jspb.Message.toObjectList(msg.getLicensesList(), proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.toObject, includeInstance)
769
+ };
770
+ if (includeInstance) {
771
+ obj.$jspbMessageInstance = msg;
772
+ }
773
+ return obj;
774
+ };
775
+ }
776
+ /**
777
+ * Deserializes binary data (in protobuf wire format).
778
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
779
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies}
780
+ */
781
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.deserializeBinary = function (bytes) {
782
+ const reader = new jspb.BinaryReader(bytes);
783
+ const msg = new proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies;
784
+ return proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.deserializeBinaryFromReader(msg, reader);
785
+ };
786
+ /**
787
+ * Deserializes binary data (in protobuf wire format) from the
788
+ * given reader into the given message object.
789
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies} msg The message object to deserialize into.
790
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
791
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies}
792
+ */
793
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.deserializeBinaryFromReader = function (msg, reader) {
794
+ while (reader.nextField()) {
795
+ if (reader.isEndGroup()) {
796
+ break;
797
+ }
798
+ const field = reader.getFieldNumber();
799
+ switch (field) {
800
+ case 1:
801
+ var value = /** @type {string} */ (reader.readString());
802
+ msg.setComponent(value);
803
+ break;
804
+ case 2:
805
+ var value = /** @type {string} */ (reader.readString());
806
+ msg.setPurl(value);
807
+ break;
808
+ case 3:
809
+ var value = /** @type {string} */ (reader.readString());
810
+ msg.setVersion(value);
811
+ break;
812
+ case 4:
813
+ var value = new proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses;
814
+ reader.readMessage(value, proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.deserializeBinaryFromReader);
815
+ msg.addLicenses(value);
816
+ break;
817
+ default:
818
+ reader.skipField();
819
+ break;
820
+ }
821
+ }
822
+ return msg;
823
+ };
824
+ /**
825
+ * Serializes the message to binary data (in protobuf wire format).
826
+ * @return {!Uint8Array}
827
+ */
828
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.serializeBinary = function () {
829
+ const writer = new jspb.BinaryWriter();
830
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.serializeBinaryToWriter(this, writer);
831
+ return writer.getResultBuffer();
832
+ };
833
+ /**
834
+ * Serializes the given message to binary data (in protobuf wire
835
+ * format), writing to the given BinaryWriter.
836
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies} message
837
+ * @param {!jspb.BinaryWriter} writer
838
+ * @suppress {unusedLocalVariables} f is only used for nested messages
839
+ */
840
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.serializeBinaryToWriter = function (message, writer) {
841
+ let f = undefined;
842
+ f = message.getComponent();
843
+ if (f.length > 0) {
844
+ writer.writeString(1, f);
845
+ }
846
+ f = message.getPurl();
847
+ if (f.length > 0) {
848
+ writer.writeString(2, f);
849
+ }
850
+ f = message.getVersion();
851
+ if (f.length > 0) {
852
+ writer.writeString(3, f);
853
+ }
854
+ f = message.getLicensesList();
855
+ if (f.length > 0) {
856
+ writer.writeRepeatedMessage(4, f, proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses.serializeBinaryToWriter);
857
+ }
858
+ };
859
+ /**
860
+ * optional string component = 1;
861
+ * @return {string}
862
+ */
863
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.getComponent = function () {
864
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
865
+ };
866
+ /** @param {string} value */
867
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.setComponent = function (value) {
868
+ jspb.Message.setProto3StringField(this, 1, value);
869
+ };
870
+ /**
871
+ * optional string purl = 2;
872
+ * @return {string}
873
+ */
874
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.getPurl = function () {
875
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
876
+ };
877
+ /** @param {string} value */
878
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.setPurl = function (value) {
879
+ jspb.Message.setProto3StringField(this, 2, value);
880
+ };
881
+ /**
882
+ * optional string version = 3;
883
+ * @return {string}
884
+ */
885
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.getVersion = function () {
886
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
887
+ };
888
+ /** @param {string} value */
889
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.setVersion = function (value) {
890
+ jspb.Message.setProto3StringField(this, 3, value);
891
+ };
892
+ /**
893
+ * repeated Licenses licenses = 4;
894
+ * @return {!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses>}
895
+ */
896
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.getLicensesList = function () {
897
+ return /** @type{!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses, 4));
898
+ };
899
+ /** @param {!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses>} value */
900
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.setLicensesList = function (value) {
901
+ jspb.Message.setRepeatedWrapperField(this, 4, value);
902
+ };
903
+ /**
904
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses=} opt_value
905
+ * @param {number=} opt_index
906
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses}
907
+ */
908
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.addLicenses = function (opt_value, opt_index) {
909
+ return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.scanoss.api.dependencies.v2.DependencyResponse.Licenses, opt_index);
910
+ };
911
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.prototype.clearLicensesList = function () {
912
+ this.setLicensesList([]);
913
+ };
914
+ /**
915
+ * Generated by JsPbCodeGenerator.
916
+ * @param {Array=} opt_data Optional initial data array, typically from a
917
+ * server response, or constructed directly in Javascript. The array is used
918
+ * in place and becomes part of the constructed object. It is not cloned.
919
+ * If no data is provided, the constructed object will be empty, but still
920
+ * valid.
921
+ * @extends {jspb.Message}
922
+ * @constructor
923
+ */
924
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files = function (opt_data) {
925
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.dependencies.v2.DependencyResponse.Files.repeatedFields_, null);
926
+ };
927
+ goog.inherits(proto.scanoss.api.dependencies.v2.DependencyResponse.Files, jspb.Message);
928
+ if (goog.DEBUG && !COMPILED) {
929
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.displayName = 'proto.scanoss.api.dependencies.v2.DependencyResponse.Files';
930
+ }
931
+ /**
932
+ * List of repeated fields within this message type.
933
+ * @private {!Array<number>}
934
+ * @const
935
+ */
936
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.repeatedFields_ = [4];
937
+ if (jspb.Message.GENERATE_TO_OBJECT) {
938
+ /**
939
+ * Creates an object representation of this proto suitable for use in Soy templates.
940
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
941
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
942
+ * For the list of reserved names please see:
943
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
944
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
945
+ * for transitional soy proto support: http://goto/soy-param-migration
946
+ * @return {!Object}
947
+ */
948
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.toObject = function (opt_includeInstance) {
949
+ return proto.scanoss.api.dependencies.v2.DependencyResponse.Files.toObject(opt_includeInstance, this);
950
+ };
951
+ /**
952
+ * Static version of the {@see toObject} method.
953
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
954
+ * instance for transitional soy proto support:
955
+ * http://goto/soy-param-migration
956
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Files} msg The msg instance to transform.
957
+ * @return {!Object}
958
+ * @suppress {unusedLocalVariables} f is only used for nested messages
959
+ */
960
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.toObject = function (includeInstance, msg) {
961
+ let f, obj = {
962
+ file: jspb.Message.getFieldWithDefault(msg, 1, ""),
963
+ id: jspb.Message.getFieldWithDefault(msg, 2, ""),
964
+ status: jspb.Message.getFieldWithDefault(msg, 3, ""),
965
+ dependenciesList: jspb.Message.toObjectList(msg.getDependenciesList(), proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.toObject, includeInstance)
966
+ };
967
+ if (includeInstance) {
968
+ obj.$jspbMessageInstance = msg;
969
+ }
970
+ return obj;
971
+ };
972
+ }
973
+ /**
974
+ * Deserializes binary data (in protobuf wire format).
975
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
976
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Files}
977
+ */
978
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.deserializeBinary = function (bytes) {
979
+ const reader = new jspb.BinaryReader(bytes);
980
+ const msg = new proto.scanoss.api.dependencies.v2.DependencyResponse.Files;
981
+ return proto.scanoss.api.dependencies.v2.DependencyResponse.Files.deserializeBinaryFromReader(msg, reader);
982
+ };
983
+ /**
984
+ * Deserializes binary data (in protobuf wire format) from the
985
+ * given reader into the given message object.
986
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Files} msg The message object to deserialize into.
987
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
988
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Files}
989
+ */
990
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.deserializeBinaryFromReader = function (msg, reader) {
991
+ while (reader.nextField()) {
992
+ if (reader.isEndGroup()) {
993
+ break;
994
+ }
995
+ const field = reader.getFieldNumber();
996
+ switch (field) {
997
+ case 1:
998
+ var value = /** @type {string} */ (reader.readString());
999
+ msg.setFile(value);
1000
+ break;
1001
+ case 2:
1002
+ var value = /** @type {string} */ (reader.readString());
1003
+ msg.setId(value);
1004
+ break;
1005
+ case 3:
1006
+ var value = /** @type {string} */ (reader.readString());
1007
+ msg.setStatus(value);
1008
+ break;
1009
+ case 4:
1010
+ var value = new proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies;
1011
+ reader.readMessage(value, proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.deserializeBinaryFromReader);
1012
+ msg.addDependencies(value);
1013
+ break;
1014
+ default:
1015
+ reader.skipField();
1016
+ break;
1017
+ }
1018
+ }
1019
+ return msg;
1020
+ };
1021
+ /**
1022
+ * Serializes the message to binary data (in protobuf wire format).
1023
+ * @return {!Uint8Array}
1024
+ */
1025
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.serializeBinary = function () {
1026
+ const writer = new jspb.BinaryWriter();
1027
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.serializeBinaryToWriter(this, writer);
1028
+ return writer.getResultBuffer();
1029
+ };
1030
+ /**
1031
+ * Serializes the given message to binary data (in protobuf wire
1032
+ * format), writing to the given BinaryWriter.
1033
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Files} message
1034
+ * @param {!jspb.BinaryWriter} writer
1035
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1036
+ */
1037
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.serializeBinaryToWriter = function (message, writer) {
1038
+ let f = undefined;
1039
+ f = message.getFile();
1040
+ if (f.length > 0) {
1041
+ writer.writeString(1, f);
1042
+ }
1043
+ f = message.getId();
1044
+ if (f.length > 0) {
1045
+ writer.writeString(2, f);
1046
+ }
1047
+ f = message.getStatus();
1048
+ if (f.length > 0) {
1049
+ writer.writeString(3, f);
1050
+ }
1051
+ f = message.getDependenciesList();
1052
+ if (f.length > 0) {
1053
+ writer.writeRepeatedMessage(4, f, proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies.serializeBinaryToWriter);
1054
+ }
1055
+ };
1056
+ /**
1057
+ * optional string file = 1;
1058
+ * @return {string}
1059
+ */
1060
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.getFile = function () {
1061
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
1062
+ };
1063
+ /** @param {string} value */
1064
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.setFile = function (value) {
1065
+ jspb.Message.setProto3StringField(this, 1, value);
1066
+ };
1067
+ /**
1068
+ * optional string id = 2;
1069
+ * @return {string}
1070
+ */
1071
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.getId = function () {
1072
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
1073
+ };
1074
+ /** @param {string} value */
1075
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.setId = function (value) {
1076
+ jspb.Message.setProto3StringField(this, 2, value);
1077
+ };
1078
+ /**
1079
+ * optional string status = 3;
1080
+ * @return {string}
1081
+ */
1082
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.getStatus = function () {
1083
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
1084
+ };
1085
+ /** @param {string} value */
1086
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.setStatus = function (value) {
1087
+ jspb.Message.setProto3StringField(this, 3, value);
1088
+ };
1089
+ /**
1090
+ * repeated Dependencies dependencies = 4;
1091
+ * @return {!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies>}
1092
+ */
1093
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.getDependenciesList = function () {
1094
+ return /** @type{!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies, 4));
1095
+ };
1096
+ /** @param {!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies>} value */
1097
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.setDependenciesList = function (value) {
1098
+ jspb.Message.setRepeatedWrapperField(this, 4, value);
1099
+ };
1100
+ /**
1101
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies=} opt_value
1102
+ * @param {number=} opt_index
1103
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies}
1104
+ */
1105
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.addDependencies = function (opt_value, opt_index) {
1106
+ return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.scanoss.api.dependencies.v2.DependencyResponse.Dependencies, opt_index);
1107
+ };
1108
+ proto.scanoss.api.dependencies.v2.DependencyResponse.Files.prototype.clearDependenciesList = function () {
1109
+ this.setDependenciesList([]);
1110
+ };
1111
+ /**
1112
+ * repeated Files files = 1;
1113
+ * @return {!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Files>}
1114
+ */
1115
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.getFilesList = function () {
1116
+ return /** @type{!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Files>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.dependencies.v2.DependencyResponse.Files, 1));
1117
+ };
1118
+ /** @param {!Array<!proto.scanoss.api.dependencies.v2.DependencyResponse.Files>} value */
1119
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.setFilesList = function (value) {
1120
+ jspb.Message.setRepeatedWrapperField(this, 1, value);
1121
+ };
1122
+ /**
1123
+ * @param {!proto.scanoss.api.dependencies.v2.DependencyResponse.Files=} opt_value
1124
+ * @param {number=} opt_index
1125
+ * @return {!proto.scanoss.api.dependencies.v2.DependencyResponse.Files}
1126
+ */
1127
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.addFiles = function (opt_value, opt_index) {
1128
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.dependencies.v2.DependencyResponse.Files, opt_index);
1129
+ };
1130
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.clearFilesList = function () {
1131
+ this.setFilesList([]);
1132
+ };
1133
+ /**
1134
+ * optional scanoss.api.common.v2.StatusResponse status = 2;
1135
+ * @return {?proto.scanoss.api.common.v2.StatusResponse}
1136
+ */
1137
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.getStatus = function () {
1138
+ return /** @type{?proto.scanoss.api.common.v2.StatusResponse} */ (jspb.Message.getWrapperField(this, scanoss_api_common_v2_scanoss$common_pb.StatusResponse, 2));
1139
+ };
1140
+ /** @param {?proto.scanoss.api.common.v2.StatusResponse|undefined} value */
1141
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.setStatus = function (value) {
1142
+ jspb.Message.setWrapperField(this, 2, value);
1143
+ };
1144
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.clearStatus = function () {
1145
+ this.setStatus(undefined);
1146
+ };
1147
+ /**
1148
+ * Returns whether this field is set.
1149
+ * @return {!boolean}
1150
+ */
1151
+ proto.scanoss.api.dependencies.v2.DependencyResponse.prototype.hasStatus = function () {
1152
+ return jspb.Message.getField(this, 2) != null;
1153
+ };
1154
+ goog.object.extend(exports, proto.scanoss.api.dependencies.v2);
1155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1kZXBlbmRlbmNpZXNfcGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2dycGMvc2Nhbm9zcy9hcGkvZGVwZW5kZW5jaWVzL3YyL3NjYW5vc3MtZGVwZW5kZW5jaWVzX3BiLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILGlDQUFpQztBQUVqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7QUFFekMsTUFBTSx1Q0FBdUMsR0FBRyxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUNsSCxJQUFJLENBQUMsWUFBWSxDQUFDLHFEQUFxRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RixJQUFJLENBQUMsWUFBWSxDQUFDLDJEQUEyRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3RixJQUFJLENBQUMsWUFBWSxDQUFDLDJEQUEyRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3RixJQUFJLENBQUMsWUFBWSxDQUFDLHNEQUFzRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4RixJQUFJLENBQUMsWUFBWSxDQUFDLG1FQUFtRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyRyxJQUFJLENBQUMsWUFBWSxDQUFDLDREQUE0RCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5RixJQUFJLENBQUMsWUFBWSxDQUFDLCtEQUErRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVqRzs7Ozs7Ozs7O0dBU0c7QUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZ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