google-cloud-chronicle-v1 1.3.0 → 1.4.0
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.
- checksums.yaml +4 -4
- data/lib/google/cloud/chronicle/v1/entity_pb.rb +6 -1
- data/lib/google/cloud/chronicle/v1/event_pb.rb +24 -0
- data/lib/google/cloud/chronicle/v1/rest.rb +1 -0
- data/lib/google/cloud/chronicle/v1/search_pb.rb +64 -0
- data/lib/google/cloud/chronicle/v1/search_service/client.rb +643 -0
- data/lib/google/cloud/chronicle/v1/search_service/credentials.rb +49 -0
- data/lib/google/cloud/chronicle/v1/search_service/operations.rb +843 -0
- data/lib/google/cloud/chronicle/v1/search_service/paths.rb +94 -0
- data/lib/google/cloud/chronicle/v1/search_service/rest/client.rb +586 -0
- data/lib/google/cloud/chronicle/v1/search_service/rest/operations.rb +927 -0
- data/lib/google/cloud/chronicle/v1/search_service/rest/service_stub.rb +204 -0
- data/lib/google/cloud/chronicle/v1/search_service/rest.rb +53 -0
- data/lib/google/cloud/chronicle/v1/search_service.rb +56 -0
- data/lib/google/cloud/chronicle/v1/search_services_pb.rb +47 -0
- data/lib/google/cloud/chronicle/v1/simulated_data_pb.rb +21 -0
- data/lib/google/cloud/chronicle/v1/version.rb +1 -1
- data/lib/google/cloud/chronicle/v1.rb +1 -0
- data/proto_docs/backstory/collection.rb +371 -0
- data/proto_docs/backstory/data_access.rb +59 -0
- data/proto_docs/backstory/entity.rb +639 -0
- data/proto_docs/backstory/entity_risk.rb +98 -0
- data/proto_docs/backstory/id.rb +73 -0
- data/proto_docs/backstory/udm.rb +7008 -0
- data/proto_docs/google/cloud/chronicle/v1/entity.rb +38 -0
- data/proto_docs/google/cloud/chronicle/v1/event.rb +42 -0
- data/proto_docs/google/cloud/chronicle/v1/search.rb +593 -0
- data/proto_docs/google/cloud/chronicle/v1/simulated_data.rb +40 -0
- data/proto_docs/google/protobuf/struct.rb +108 -0
- data/proto_docs/google/type/latlng.rb +38 -0
- metadata +45 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bf52dbae19afaf553f76f43888ed90d170430d02d5ce351f7bf80fe65c003028
|
|
4
|
+
data.tar.gz: 408187a6d9c9dbde5f1e21ce8c8430546446cc4b88a8f20c46d05619d81fd57c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5e79b6c2cb9ed02e8228798baaf47444288c9a11a2cb4c26e4683cdbeb941bc00135e244a83eee42519557cf4027f2eb6275bd0130f010b1f1f56df11ed571d3
|
|
7
|
+
data.tar.gz: 9225a4cef1760af9b6deea74712b113e67085ee17919cdebb853bd2fbcd6e825d84356d345b227ed77b5b3511c5d36158bf5e89f0a7d02d261d32e53c435da7f
|
|
@@ -4,16 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
require 'google/protobuf'
|
|
6
6
|
|
|
7
|
+
require 'backstory/entity_pb'
|
|
8
|
+
require 'backstory/entity_risk_pb'
|
|
9
|
+
require 'backstory/udm_pb'
|
|
7
10
|
require 'google/api/annotations_pb'
|
|
8
11
|
require 'google/api/client_pb'
|
|
9
12
|
require 'google/api/field_behavior_pb'
|
|
10
13
|
require 'google/api/resource_pb'
|
|
11
14
|
require 'google/protobuf/empty_pb'
|
|
12
15
|
require 'google/protobuf/field_mask_pb'
|
|
16
|
+
require 'google/protobuf/struct_pb'
|
|
13
17
|
require 'google/protobuf/timestamp_pb'
|
|
14
18
|
|
|
15
19
|
|
|
16
|
-
descriptor_data = "\n&google/cloud/chronicle/v1/entity.proto\x12\x19google.cloud.chronicle.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe1\x06\n\tWatchlist\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xe2\x41\x01\x08\x12\x1a\n\x0c\x64isplay_name\x18\x02 \x01(\tB\x04\xe2\x41\x01\x02\x12\x19\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01\x12 \n\x12multiplying_factor\x18\x05 \x01(\x02\x42\x04\xe2\x41\x01\x01\x12i\n\x1b\x65ntity_population_mechanism\x18\x06 \x01(\x0b\x32>.google.cloud.chronicle.v1.Watchlist.EntityPopulationMechanismB\x04\xe2\x41\x01\x02\x12L\n\x0c\x65ntity_count\x18\x07 \x01(\x0b\x32\x30.google.cloud.chronicle.v1.Watchlist.EntityCountB\x04\xe2\x41\x01\x03\x12\x35\n\x0b\x63reate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12\x35\n\x0bupdate_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12]\n\x1awatchlist_user_preferences\x18\n \x01(\x0b\x32\x33.google.cloud.chronicle.v1.WatchlistUserPreferencesB\x04\xe2\x41\x01\x01\x1a\x91\x01\n\x19\x45ntityPopulationMechanism\x12]\n\x06manual\x18\x01 \x01(\x0b\x32\x45.google.cloud.chronicle.v1.Watchlist.EntityPopulationMechanism.ManualB\x04\xe2\x41\x01\x01H\x00\x1a\x08\n\x06ManualB\x0b\n\tmechanism\x1a\x36\n\x0b\x45ntityCount\x12\x12\n\x04user\x18\x01 \x01(\x05\x42\x04\xe2\x41\x01\x03\x12\x13\n\x05\x61sset\x18\x02 \x01(\x05\x42\x04\xe2\x41\x01\x03:\x94\x01\xea\x41\x90\x01\n\"chronicle.googleapis.com/Watchlist\x12Sprojects/{project}/locations/{location}/instances/{instance}/watchlists/{watchlist}*\nwatchlists2\twatchlist\"0\n\x18WatchlistUserPreferences\x12\x14\n\x06pinned\x18\x01 \x01(\x08\x42\x04\xe2\x41\x01\x01\"P\n\x13GetWatchlistRequest\x12\x39\n\x04name\x18\x01 \x01(\tB+\xe2\x41\x01\x02\xfa\x41$\n\"chronicle.googleapis.com/Watchlist\"\x9d\x01\n\x15ListWatchlistsRequest\x12;\n\x06parent\x18\x01 \x01(\tB+\xe2\x41\x01\x02\xfa\x41$\x12\"chronicle.googleapis.com/Watchlist\x12\x17\n\tpage_size\x18\x02 \x01(\x05\x42\x04\xe2\x41\x01\x01\x12\x18\n\npage_token\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01\x12\x14\n\x06\x66ilter\x18\x04 \x01(\tB\x04\xe2\x41\x01\x01\"w\n\x16ListWatchlistsResponse\x12>\n\nwatchlists\x18\x01 \x03(\x0b\x32$.google.cloud.chronicle.v1.WatchlistB\x04\xe2\x41\x01\x01\x12\x1d\n\x0fnext_page_token\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01\"\xb0\x01\n\x16\x43reateWatchlistRequest\x12;\n\x06parent\x18\x01 \x01(\tB+\xe2\x41\x01\x02\xfa\x41$\x12\"chronicle.googleapis.com/Watchlist\x12\x1a\n\x0cwatchlist_id\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01\x12=\n\twatchlist\x18\x03 \x01(\x0b\x32$.google.cloud.chronicle.v1.WatchlistB\x04\xe2\x41\x01\x02\"\x8e\x01\n\x16UpdateWatchlistRequest\x12=\n\twatchlist\x18\x01 \x01(\x0b\x32$.google.cloud.chronicle.v1.WatchlistB\x04\xe2\x41\x01\x02\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xe2\x41\x01\x01\"h\n\x16\x44\x65leteWatchlistRequest\x12\x39\n\x04name\x18\x01 \x01(\tB+\xe2\x41\x01\x02\xfa\x41$\n\"chronicle.googleapis.com/Watchlist\x12\x13\n\x05\x66orce\x18\x02 \x01(\x08\x42\x04\xe2\x41\x01\x01\x32\xbe\x08\n\rEntityService\x12\xaf\x01\n\x0cGetWatchlist\x12..google.cloud.chronicle.v1.GetWatchlistRequest\x1a$.google.cloud.chronicle.v1.Watchlist\"I\xda\x41\x04name\x82\xd3\xe4\x93\x02<\x12:/v1/{name=projects/*/locations/*/instances/*/watchlists/*}\x12\xc2\x01\n\x0eListWatchlists\x12\x30.google.cloud.chronicle.v1.ListWatchlistsRequest\x1a\x31.google.cloud.chronicle.v1.ListWatchlistsResponse\"K\xda\x41\x06parent\x82\xd3\xe4\x93\x02<\x12:/v1/{parent=projects/*/locations/*/instances/*}/watchlists\x12\xd9\x01\n\x0f\x43reateWatchlist\x12\x31.google.cloud.chronicle.v1.CreateWatchlistRequest\x1a$.google.cloud.chronicle.v1.Watchlist\"m\xda\x41\x1dparent,watchlist,watchlist_id\x82\xd3\xe4\x93\x02G\":/v1/{parent=projects/*/locations/*/instances/*}/watchlists:\twatchlist\x12\xdb\x01\n\x0fUpdateWatchlist\x12\x31.google.cloud.chronicle.v1.UpdateWatchlistRequest\x1a$.google.cloud.chronicle.v1.Watchlist\"o\xda\x41\x15watchlist,update_mask\x82\xd3\xe4\x93\x02Q2D/v1/{watchlist.name=projects/*/locations/*/instances/*/watchlists/*}:\twatchlist\x12\xad\x01\n\x0f\x44\x65leteWatchlist\x12\x31.google.cloud.chronicle.v1.DeleteWatchlistRequest\x1a\x16.google.protobuf.Empty\"O\xda\x41\nname,force\x82\xd3\xe4\x93\x02<*:/v1/{name=projects/*/locations/*/instances/*/watchlists/*}\x1aL\xca\x41\x18\x63hronicle.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xc2\x01\n\x1d\x63om.google.cloud.chronicle.v1B\x0b\x45ntityProtoP\x01Z;cloud.google.com/go/chronicle/apiv1/chroniclepb;chroniclepb\xaa\x02\x19Google.Cloud.Chronicle.V1\xca\x02\x19Google\\Cloud\\Chronicle\\V1\xea\x02\x1cGoogle::Cloud::Chronicle::V1b\x06proto3"
|
|
20
|
+
descriptor_data = "\n&google/cloud/chronicle/v1/entity.proto\x12\x19google.cloud.chronicle.v1\x1a\x16\x62\x61\x63kstory/entity.proto\x1a\x1b\x62\x61\x63kstory/entity_risk.proto\x1a\x13\x62\x61\x63kstory/udm.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x80\x05\n\x06\x45ntity\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x32\n\x08metadata\x18\x02 \x01(\x0b\x32 .google.backstory.EntityMetadata\x12&\n\x06\x65ntity\x18\x03 \x01(\x0b\x32\x16.google.backstory.Noun\x12+\n\nadditional\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x30\n\nrisk_score\x18\x06 \x01(\x0b\x32\x1c.google.backstory.EntityRisk\x12(\n\x06metric\x18\x07 \x01(\x0b\x32\x18.google.backstory.Metric\x12-\n\trelations\x18\x08 \x03(\x0b\x32\x1a.google.backstory.Relation:\xd3\x02\xea\x41\xcf\x02\n\x1f\x63hronicle.googleapis.com/Entity\x12Nprojects/{project}/locations/{location}/instances/{instance}/entities/{entity}\x12\x63projects/{project}/locations/{location}/instances/{instance}/analytics/{analytic}/entities/{entity}\x12\x65projects/{project}/locations/{location}/instances/{instance}/watchlists/{watchlist}/entities/{entity}*\x08\x65ntities2\x06\x65ntity\"\xe1\x06\n\tWatchlist\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xe2\x41\x01\x08\x12\x1a\n\x0c\x64isplay_name\x18\x02 \x01(\tB\x04\xe2\x41\x01\x02\x12\x19\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01\x12 \n\x12multiplying_factor\x18\x05 \x01(\x02\x42\x04\xe2\x41\x01\x01\x12i\n\x1b\x65ntity_population_mechanism\x18\x06 \x01(\x0b\x32>.google.cloud.chronicle.v1.Watchlist.EntityPopulationMechanismB\x04\xe2\x41\x01\x02\x12L\n\x0c\x65ntity_count\x18\x07 \x01(\x0b\x32\x30.google.cloud.chronicle.v1.Watchlist.EntityCountB\x04\xe2\x41\x01\x03\x12\x35\n\x0b\x63reate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12\x35\n\x0bupdate_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12]\n\x1awatchlist_user_preferences\x18\n \x01(\x0b\x32\x33.google.cloud.chronicle.v1.WatchlistUserPreferencesB\x04\xe2\x41\x01\x01\x1a\x91\x01\n\x19\x45ntityPopulationMechanism\x12]\n\x06manual\x18\x01 \x01(\x0b\x32\x45.google.cloud.chronicle.v1.Watchlist.EntityPopulationMechanism.ManualB\x04\xe2\x41\x01\x01H\x00\x1a\x08\n\x06ManualB\x0b\n\tmechanism\x1a\x36\n\x0b\x45ntityCount\x12\x12\n\x04user\x18\x01 \x01(\x05\x42\x04\xe2\x41\x01\x03\x12\x13\n\x05\x61sset\x18\x02 \x01(\x05\x42\x04\xe2\x41\x01\x03:\x94\x01\xea\x41\x90\x01\n\"chronicle.googleapis.com/Watchlist\x12Sprojects/{project}/locations/{location}/instances/{instance}/watchlists/{watchlist}*\nwatchlists2\twatchlist\"0\n\x18WatchlistUserPreferences\x12\x14\n\x06pinned\x18\x01 \x01(\x08\x42\x04\xe2\x41\x01\x01\"P\n\x13GetWatchlistRequest\x12\x39\n\x04name\x18\x01 \x01(\tB+\xe2\x41\x01\x02\xfa\x41$\n\"chronicle.googleapis.com/Watchlist\"\x9d\x01\n\x15ListWatchlistsRequest\x12;\n\x06parent\x18\x01 \x01(\tB+\xe2\x41\x01\x02\xfa\x41$\x12\"chronicle.googleapis.com/Watchlist\x12\x17\n\tpage_size\x18\x02 \x01(\x05\x42\x04\xe2\x41\x01\x01\x12\x18\n\npage_token\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01\x12\x14\n\x06\x66ilter\x18\x04 \x01(\tB\x04\xe2\x41\x01\x01\"w\n\x16ListWatchlistsResponse\x12>\n\nwatchlists\x18\x01 \x03(\x0b\x32$.google.cloud.chronicle.v1.WatchlistB\x04\xe2\x41\x01\x01\x12\x1d\n\x0fnext_page_token\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01\"\xb0\x01\n\x16\x43reateWatchlistRequest\x12;\n\x06parent\x18\x01 \x01(\tB+\xe2\x41\x01\x02\xfa\x41$\x12\"chronicle.googleapis.com/Watchlist\x12\x1a\n\x0cwatchlist_id\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01\x12=\n\twatchlist\x18\x03 \x01(\x0b\x32$.google.cloud.chronicle.v1.WatchlistB\x04\xe2\x41\x01\x02\"\x8e\x01\n\x16UpdateWatchlistRequest\x12=\n\twatchlist\x18\x01 \x01(\x0b\x32$.google.cloud.chronicle.v1.WatchlistB\x04\xe2\x41\x01\x02\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xe2\x41\x01\x01\"h\n\x16\x44\x65leteWatchlistRequest\x12\x39\n\x04name\x18\x01 \x01(\tB+\xe2\x41\x01\x02\xfa\x41$\n\"chronicle.googleapis.com/Watchlist\x12\x13\n\x05\x66orce\x18\x02 \x01(\x08\x42\x04\xe2\x41\x01\x01\x32\xbe\x08\n\rEntityService\x12\xaf\x01\n\x0cGetWatchlist\x12..google.cloud.chronicle.v1.GetWatchlistRequest\x1a$.google.cloud.chronicle.v1.Watchlist\"I\xda\x41\x04name\x82\xd3\xe4\x93\x02<\x12:/v1/{name=projects/*/locations/*/instances/*/watchlists/*}\x12\xc2\x01\n\x0eListWatchlists\x12\x30.google.cloud.chronicle.v1.ListWatchlistsRequest\x1a\x31.google.cloud.chronicle.v1.ListWatchlistsResponse\"K\xda\x41\x06parent\x82\xd3\xe4\x93\x02<\x12:/v1/{parent=projects/*/locations/*/instances/*}/watchlists\x12\xd9\x01\n\x0f\x43reateWatchlist\x12\x31.google.cloud.chronicle.v1.CreateWatchlistRequest\x1a$.google.cloud.chronicle.v1.Watchlist\"m\xda\x41\x1dparent,watchlist,watchlist_id\x82\xd3\xe4\x93\x02G\":/v1/{parent=projects/*/locations/*/instances/*}/watchlists:\twatchlist\x12\xdb\x01\n\x0fUpdateWatchlist\x12\x31.google.cloud.chronicle.v1.UpdateWatchlistRequest\x1a$.google.cloud.chronicle.v1.Watchlist\"o\xda\x41\x15watchlist,update_mask\x82\xd3\xe4\x93\x02Q2D/v1/{watchlist.name=projects/*/locations/*/instances/*/watchlists/*}:\twatchlist\x12\xad\x01\n\x0f\x44\x65leteWatchlist\x12\x31.google.cloud.chronicle.v1.DeleteWatchlistRequest\x1a\x16.google.protobuf.Empty\"O\xda\x41\nname,force\x82\xd3\xe4\x93\x02<*:/v1/{name=projects/*/locations/*/instances/*/watchlists/*}\x1aL\xca\x41\x18\x63hronicle.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xc2\x01\n\x1d\x63om.google.cloud.chronicle.v1B\x0b\x45ntityProtoP\x01Z;cloud.google.com/go/chronicle/apiv1/chroniclepb;chroniclepb\xaa\x02\x19Google.Cloud.Chronicle.V1\xca\x02\x19Google\\Cloud\\Chronicle\\V1\xea\x02\x1cGoogle::Cloud::Chronicle::V1b\x06proto3"
|
|
17
21
|
|
|
18
22
|
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
19
23
|
pool.add_serialized_file(descriptor_data)
|
|
@@ -22,6 +26,7 @@ module Google
|
|
|
22
26
|
module Cloud
|
|
23
27
|
module Chronicle
|
|
24
28
|
module V1
|
|
29
|
+
Entity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.Entity").msgclass
|
|
25
30
|
Watchlist = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.Watchlist").msgclass
|
|
26
31
|
Watchlist::EntityPopulationMechanism = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.Watchlist.EntityPopulationMechanism").msgclass
|
|
27
32
|
Watchlist::EntityPopulationMechanism::Manual = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.Watchlist.EntityPopulationMechanism.Manual").msgclass
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: google/cloud/chronicle/v1/event.proto
|
|
4
|
+
|
|
5
|
+
require 'google/protobuf'
|
|
6
|
+
|
|
7
|
+
require 'backstory/udm_pb'
|
|
8
|
+
require 'google/api/resource_pb'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
descriptor_data = "\n%google/cloud/chronicle/v1/event.proto\x12\x19google.cloud.chronicle.v1\x1a\x13\x62\x61\x63kstory/udm.proto\x1a\x19google/api/resource.proto\"\xab\x01\n\x05\x45vent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\"\n\x03udm\x18\x02 \x01(\x0b\x32\x15.google.backstory.UDM:p\xea\x41m\n\x1e\x63hronicle.googleapis.com/Event\x12Kprojects/{project}/locations/{location}/instances/{instance}/events/{event}B\xc1\x01\n\x1d\x63om.google.cloud.chronicle.v1B\nEventProtoP\x01Z;cloud.google.com/go/chronicle/apiv1/chroniclepb;chroniclepb\xaa\x02\x19Google.Cloud.Chronicle.V1\xca\x02\x19Google\\Cloud\\Chronicle\\V1\xea\x02\x1cGoogle::Cloud::Chronicle::V1b\x06proto3"
|
|
12
|
+
|
|
13
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
14
|
+
pool.add_serialized_file(descriptor_data)
|
|
15
|
+
|
|
16
|
+
module Google
|
|
17
|
+
module Cloud
|
|
18
|
+
module Chronicle
|
|
19
|
+
module V1
|
|
20
|
+
Event = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.Event").msgclass
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -30,6 +30,7 @@ require "google/cloud/chronicle/v1/instance_service/rest"
|
|
|
30
30
|
require "google/cloud/chronicle/v1/reference_list_service/rest"
|
|
31
31
|
require "google/cloud/chronicle/v1/rule_service/rest"
|
|
32
32
|
require "google/cloud/chronicle/v1/rule_execution_error_service/rest"
|
|
33
|
+
require "google/cloud/chronicle/v1/search_service/rest"
|
|
33
34
|
require "google/cloud/chronicle/v1/version"
|
|
34
35
|
|
|
35
36
|
module Google
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: google/cloud/chronicle/v1/search.proto
|
|
4
|
+
|
|
5
|
+
require 'google/protobuf'
|
|
6
|
+
|
|
7
|
+
require 'backstory/collection_pb'
|
|
8
|
+
require 'google/api/annotations_pb'
|
|
9
|
+
require 'google/api/client_pb'
|
|
10
|
+
require 'google/api/field_behavior_pb'
|
|
11
|
+
require 'google/api/resource_pb'
|
|
12
|
+
require 'google/cloud/chronicle/v1/data_access_control_pb'
|
|
13
|
+
require 'google/cloud/chronicle/v1/entity_pb'
|
|
14
|
+
require 'google/cloud/chronicle/v1/event_pb'
|
|
15
|
+
require 'google/cloud/chronicle/v1/simulated_data_pb'
|
|
16
|
+
require 'google/longrunning/operations_pb'
|
|
17
|
+
require 'google/protobuf/any_pb'
|
|
18
|
+
require 'google/protobuf/timestamp_pb'
|
|
19
|
+
require 'google/rpc/status_pb'
|
|
20
|
+
require 'google/type/date_pb'
|
|
21
|
+
require 'google/type/interval_pb'
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
descriptor_data = "\n&google/cloud/chronicle/v1/search.proto\x12\x19google.cloud.chronicle.v1\x1a\x1a\x62\x61\x63kstory/collection.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x33google/cloud/chronicle/v1/data_access_control.proto\x1a&google/cloud/chronicle/v1/entity.proto\x1a%google/cloud/chronicle/v1/event.proto\x1a.google/cloud/chronicle/v1/simulated_data.proto\x1a#google/longrunning/operations.proto\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x16google/type/date.proto\x1a\x1agoogle/type/interval.proto\"\xf2\x03\n\rSearchSession\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xe2\x41\x01\x08\x12\x13\n\x05query\x18\x02 \x01(\tB\x04\xe2\x41\x01\x02\x12/\n\ntime_range\x18\x03 \x01(\x0b\x32\x15.google.type.IntervalB\x04\xe2\x41\x01\x02\x12>\n\x07\x64ialect\x18\x04 \x01(\x0e\x32\'.google.cloud.chronicle.v1.QueryDialectB\x04\xe2\x41\x01\x01\x12Q\n\x17\x64raft_data_access_scope\x18\x05 \x01(\x0b\x32*.google.cloud.chronicle.v1.DataAccessScopeB\x04\xe2\x41\x01\x01\x12H\n\x08metadata\x18\x06 \x01(\x0b\x32\x30.google.cloud.chronicle.v1.SearchSessionMetadataB\x04\xe2\x41\x01\x03:\xa9\x01\xea\x41\xa5\x01\n&chronicle.googleapis.com/SearchSession\x12\\projects/{project}/locations/{location}/instances/{instance}/searchSessions/{search_session}*\x0esearchSessions2\rsearchSession\"\xaf\x02\n\x0eSearchedResult\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xe2\x41\x01\x08\x12\x38\n\nresult_row\x18\x02 \x01(\x0b\x32$.google.cloud.chronicle.v1.ResultRow:\xce\x01\xea\x41\xca\x01\n\'chronicle.googleapis.com/SearchedResult\x12~projects/{project}/locations/{location}/instances/{instance}/searchSessions/{search_session}/searchedResults/{searched_result}*\x0fsearchedResults2\x0esearchedResult\"\x9d\x03\n\rSearchRequest\x12:\n\x06parent\x18\x01 \x01(\tB*\xe2\x41\x01\x02\xfa\x41#\n!chronicle.googleapis.com/Instance\x12\x13\n\x05query\x18\x02 \x01(\tB\x04\xe2\x41\x01\x02\x12/\n\ntime_range\x18\x03 \x01(\x0b\x32\x15.google.type.IntervalB\x04\xe2\x41\x01\x02\x12>\n\x07\x64ialect\x18\x04 \x01(\x0e\x32\'.google.cloud.chronicle.v1.QueryDialectB\x04\xe2\x41\x01\x01\x12Q\n\x17\x64raft_data_access_scope\x18\x05 \x01(\x0b\x32*.google.cloud.chronicle.v1.DataAccessScopeB\x04\xe2\x41\x01\x01\x12\x1a\n\x0cresult_limit\x18\x06 \x01(\x05\x42\x04\xe2\x41\x01\x01\x12[\n\x19simulated_data_visibility\x18\x07 \x01(\x0e\x32\x32.google.cloud.chronicle.v1.SimulatedDataVisibilityB\x04\xe2\x41\x01\x01\"\xbc\x01\n\x1aListSearchedResultsRequest\x12?\n\x06parent\x18\x01 \x01(\tB/\xe2\x41\x01\x02\xfa\x41(\n&chronicle.googleapis.com/SearchSession\x12\x17\n\tpage_size\x18\x02 \x01(\x05\x42\x04\xe2\x41\x01\x01\x12\x18\n\npage_token\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01\x12\x16\n\x08order_by\x18\x04 \x01(\tB\x04\xe2\x41\x01\x01\x12\x12\n\x04skip\x18\x05 \x01(\x05\x42\x04\xe2\x41\x01\x01\"\x8d\x02\n\x1bListSearchedResultsResponse\x12\x43\n\x10searched_results\x18\x01 \x03(\x0b\x32).google.cloud.chronicle.v1.SearchedResult\x12\x12\n\ntotal_size\x18\x02 \x01(\x05\x12<\n\x0c\x63olumn_names\x18\x03 \x01(\x0b\x32&.google.cloud.chronicle.v1.ColumnNames\x12>\n\rcolumn_schema\x18\x04 \x01(\x0b\x32\'.google.cloud.chronicle.v1.ColumnSchema\x12\x17\n\x0fnext_page_token\x18\x05 \x01(\t\"\x97\x02\n\x15SearchSessionMetadata\x12\x1a\n\x0coperation_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x03\x12\x34\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12\x32\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12\x35\n\x0b\x65xpire_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12\x1e\n\x10result_row_count\x18\x05 \x01(\x05\x42\x04\xe2\x41\x01\x03\x12!\n\x13more_data_available\x18\x06 \x01(\x08\x42\x04\xe2\x41\x01\x03\"\xe2\x03\n\x17SearchOperationMetadata\x12M\n\x05state\x18\x01 \x01(\x0e\x32\x38.google.cloud.chronicle.v1.SearchOperationMetadata.StateB\x04\xe2\x41\x01\x03\x12\x34\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12\x32\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12\x35\n\x0b\x65xpire_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x03\x12\x16\n\x08progress\x18\x05 \x01(\x05\x42\x04\xe2\x41\x01\x03\x12[\n\x19\x64\x61tatable_export_metadata\x18\x06 \x01(\x0b\x32\x32.google.cloud.chronicle.v1.DataTableExportMetadataB\x04\xe2\x41\x01\x03\"b\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tSUCCEEDED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x12\r\n\tCANCELLED\x10\x04\x12\x0b\n\x07\x45XPIRED\x10\x05\"\x99\x02\n\x17\x44\x61taTableExportMetadata\x12#\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x12.google.rpc.StatusH\x00\x12\\\n\x0fresult_metadata\x18\x03 \x01(\x0b\x32\x41.google.cloud.chronicle.v1.DataTableExportMetadata.ResultMetadataH\x00\x12\x12\n\ndata_table\x18\x01 \x01(\t\x1aK\n\x0eResultMetadata\x12%\n\x1d\x64\x61tatable_export_operation_id\x18\x01 \x01(\t\x12\x12\n\nrows_count\x18\x02 \x01(\x05\x42\x1a\n\x18result_metadata_or_error\"\x8a\x02\n\rTableMetadata\x12\r\n\x05table\x18\x01 \x01(\t\x12H\n\x0b\x64\x61ta_source\x18\x02 \x01(\x0e\x32\x33.google.cloud.chronicle.v1.TableMetadata.DataSource\x12\r\n\x05index\x18\x03 \x01(\x05\"\x90\x01\n\nDataSource\x12\x1b\n\x17\x44\x41TA_SOURCE_UNSPECIFIED\x10\x00\x12\n\n\x06\x45VENTS\x10\x01\x12\x12\n\x0e\x45NTITY_CONTEXT\x10\x02\x12\x0f\n\x0b\x44\x41TA_TABLES\x10\x03\x12\x0e\n\nDETECTIONS\x10\x04\x12\r\n\tSOAR_CASE\x10\x05\x12\x15\n\x11SOAR_CASE_HISTORY\x10\x06\"J\n\x0c\x43olumnSchema\x12:\n\x08metadata\x18\x01 \x03(\x0b\x32(.google.cloud.chronicle.v1.TableMetadata\"\x1c\n\x0b\x43olumnNames\x12\r\n\x05names\x18\x01 \x03(\t\"\x9c\x04\n\tResultRow\x12>\n\x0c\x65vent_record\x18\x01 \x01(\x0b\x32&.google.cloud.chronicle.v1.EventRecordH\x00\x12>\n\x0cstats_record\x18\x02 \x01(\x0b\x32&.google.cloud.chronicle.v1.StatsRecordH\x00\x12O\n\x15\x65ntity_context_record\x18\x03 \x01(\x0b\x32..google.cloud.chronicle.v1.EntityContextRecordH\x00\x12<\n\x0bjoin_record\x18\x04 \x01(\x0b\x32%.google.cloud.chronicle.v1.JoinRecordH\x00\x12\x46\n\x10\x64\x65tection_record\x18\x05 \x01(\x0b\x32*.google.cloud.chronicle.v1.DetectionRecordH\x00\x12G\n\x11\x64\x61ta_table_record\x18\x06 \x01(\x0b\x32*.google.cloud.chronicle.v1.DataTableRecordH\x00\x12\x37\n\x08outcomes\x18\x07 \x03(\x0b\x32%.google.cloud.chronicle.v1.ColumnTypeB\x08\n\x06resultJ\x04\x08\x08\x10\tJ\x04\x08\t\x10\nR\x0b\x63\x61se_recordR\x13\x63\x61se_history_record\"J\n\x0bStatsRecord\x12;\n\x07results\x18\x01 \x03(\x0b\x32*.google.cloud.chronicle.v1.StatsColumnData\"X\n\x0fStatsColumnData\x12\x0e\n\x06\x63olumn\x18\x01 \x01(\t\x12\x35\n\x06values\x18\x02 \x01(\x0b\x32%.google.cloud.chronicle.v1.ColumnType\"\xa9\x04\n\nColumnType\x12\x42\n\x05value\x18\x01 \x01(\x0b\x32\x31.google.cloud.chronicle.v1.ColumnType.ColumnValueH\x00\x12\x45\n\x04list\x18\x02 \x01(\x0b\x32\x35.google.cloud.chronicle.v1.ColumnType.ColumnValueListH\x00\x1a\xb1\x02\n\x0b\x43olumnValue\x12\x12\n\x08null_val\x18\x01 \x01(\x08H\x00\x12\x12\n\x08\x62ool_val\x18\x02 \x01(\x08H\x00\x12\x13\n\tbytes_val\x18\x03 \x01(\x0cH\x00\x12\x14\n\ndouble_val\x18\x04 \x01(\x01H\x00\x12\x13\n\tint64_val\x18\x05 \x01(\x03H\x00\x12\x14\n\nuint64_val\x18\x06 \x01(\x04H\x00\x12\x14\n\nstring_val\x18\x07 \x01(\tH\x00\x12\x33\n\rtimestamp_val\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12%\n\x08\x64\x61te_val\x18\t \x01(\x0b\x32\x11.google.type.DateH\x00\x12)\n\tproto_val\x18\n \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x42\x07\n\x05value\x1aT\n\x0f\x43olumnValueList\x12\x41\n\x06values\x18\x01 \x03(\x0b\x32\x31.google.cloud.chronicle.v1.ColumnType.ColumnValueB\x06\n\x04type\"7\n\x16SearchDataTableRowCell\x12\x0e\n\x06\x63olumn\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x90\x01\n\x0f\x44\x61taTableRecord\x12;\n\ndata_table\x18\x01 \x01(\tB\'\xfa\x41$\n\"chronicle.googleapis.com/DataTable\x12@\n\x05\x63\x65lls\x18\x02 \x03(\x0b\x32\x31.google.cloud.chronicle.v1.SearchDataTableRowCell\"\xcd\x02\n\x0b\x45ventRecord\x12/\n\x05\x65vent\x18\x01 \x01(\x0b\x32 .google.cloud.chronicle.v1.Event\x12\x17\n\x0f\x65vent_log_token\x18\x02 \x01(\x0c\x12\x14\n\x0c\x61lert_number\x18\x03 \x01(\x05\x12\x15\n\ralert_view_id\x18\x04 \x01(\x0c\x12\x46\n\x0b\x61nnotations\x18\x05 \x03(\x0e\x32\x31.google.cloud.chronicle.v1.EventRecord.Annotation\x12\x30\n\ndetections\x18\x06 \x03(\x0b\x32\x1c.google.backstory.Collection\x12\r\n\x05table\x18\x07 \x01(\t\">\n\nAnnotation\x12\x1a\n\x16\x41NNOTATION_UNSPECIFIED\x10\x00\x12\x14\n\x10\x41NNOTATION_ALERT\x10\x01\"\x7f\n\x13\x45ntityContextRecord\x12\x31\n\x06\x65ntity\x18\x01 \x01(\x0b\x32!.google.cloud.chronicle.v1.Entity\x12\x17\n\x0f\x65vent_log_token\x18\x02 \x01(\t\x12\r\n\x05timed\x18\x03 \x01(\x08\x12\r\n\x05table\x18\x04 \x01(\t\"\xea\x01\n\nJoinRecord\x12\x36\n\x06\x65vents\x18\x01 \x03(\x0b\x32&.google.cloud.chronicle.v1.EventRecord\x12@\n\x08\x65ntities\x18\x02 \x03(\x0b\x32..google.cloud.chronicle.v1.EntityContextRecord\x12?\n\x0b\x64\x61ta_tables\x18\x03 \x03(\x0b\x32*.google.cloud.chronicle.v1.DataTableRecordJ\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06R\x05\x63\x61sesR\x0e\x63\x61se_histories\"O\n\x0f\x44\x65tectionRecord\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x30\n\ncollection\x18\x02 \x01(\x0b\x32\x1c.google.backstory.Collection*?\n\x0cQueryDialect\x12\x1d\n\x19QUERY_DIALECT_UNSPECIFIED\x10\x00\x12\x07\n\x03YL2\x10\x01\x12\x07\n\x03SQL\x10\x02\x32\x83\x05\n\rSearchService\x12\xda\x01\n\x06Search\x12(.google.cloud.chronicle.v1.SearchRequest\x1a\x1d.google.longrunning.Operation\"\x86\x01\xca\x41(\n\rSearchSession\x12\x17SearchOperationMetadata\xda\x41\x17parent,query,time_range\x82\xd3\xe4\x93\x02;\"6/v1/{parent=projects/*/locations/*/instances/*}:search:\x01*\x12\xe7\x01\n\x13ListSearchedResults\x12\x35.google.cloud.chronicle.v1.ListSearchedResultsRequest\x1a\x36.google.cloud.chronicle.v1.ListSearchedResultsResponse\"a\xda\x41\x06parent\x82\xd3\xe4\x93\x02R\x12P/v1/{parent=projects/*/locations/*/instances/*/searchSessions/*}/searchedResults\x1a\xaa\x01\xca\x41\x18\x63hronicle.googleapis.com\xd2\x41\x8b\x01https://www.googleapis.com/auth/chronicle,https://www.googleapis.com/auth/chronicle.readonly,https://www.googleapis.com/auth/cloud-platformB\xc2\x01\n\x1d\x63om.google.cloud.chronicle.v1B\x0bSearchProtoP\x01Z;cloud.google.com/go/chronicle/apiv1/chroniclepb;chroniclepb\xaa\x02\x19Google.Cloud.Chronicle.V1\xca\x02\x19Google\\Cloud\\Chronicle\\V1\xea\x02\x1cGoogle::Cloud::Chronicle::V1b\x06proto3"
|
|
25
|
+
|
|
26
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
27
|
+
pool.add_serialized_file(descriptor_data)
|
|
28
|
+
|
|
29
|
+
module Google
|
|
30
|
+
module Cloud
|
|
31
|
+
module Chronicle
|
|
32
|
+
module V1
|
|
33
|
+
SearchSession = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.SearchSession").msgclass
|
|
34
|
+
SearchedResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.SearchedResult").msgclass
|
|
35
|
+
SearchRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.SearchRequest").msgclass
|
|
36
|
+
ListSearchedResultsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.ListSearchedResultsRequest").msgclass
|
|
37
|
+
ListSearchedResultsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.ListSearchedResultsResponse").msgclass
|
|
38
|
+
SearchSessionMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.SearchSessionMetadata").msgclass
|
|
39
|
+
SearchOperationMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.SearchOperationMetadata").msgclass
|
|
40
|
+
SearchOperationMetadata::State = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.SearchOperationMetadata.State").enummodule
|
|
41
|
+
DataTableExportMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.DataTableExportMetadata").msgclass
|
|
42
|
+
DataTableExportMetadata::ResultMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.DataTableExportMetadata.ResultMetadata").msgclass
|
|
43
|
+
TableMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.TableMetadata").msgclass
|
|
44
|
+
TableMetadata::DataSource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.TableMetadata.DataSource").enummodule
|
|
45
|
+
ColumnSchema = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.ColumnSchema").msgclass
|
|
46
|
+
ColumnNames = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.ColumnNames").msgclass
|
|
47
|
+
ResultRow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.ResultRow").msgclass
|
|
48
|
+
StatsRecord = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.StatsRecord").msgclass
|
|
49
|
+
StatsColumnData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.StatsColumnData").msgclass
|
|
50
|
+
ColumnType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.ColumnType").msgclass
|
|
51
|
+
ColumnType::ColumnValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.ColumnType.ColumnValue").msgclass
|
|
52
|
+
ColumnType::ColumnValueList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.ColumnType.ColumnValueList").msgclass
|
|
53
|
+
SearchDataTableRowCell = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.SearchDataTableRowCell").msgclass
|
|
54
|
+
DataTableRecord = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.DataTableRecord").msgclass
|
|
55
|
+
EventRecord = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.EventRecord").msgclass
|
|
56
|
+
EventRecord::Annotation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.EventRecord.Annotation").enummodule
|
|
57
|
+
EntityContextRecord = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.EntityContextRecord").msgclass
|
|
58
|
+
JoinRecord = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.JoinRecord").msgclass
|
|
59
|
+
DetectionRecord = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.DetectionRecord").msgclass
|
|
60
|
+
QueryDialect = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.chronicle.v1.QueryDialect").enummodule
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|