選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

963 行
42 KiB

  1. // Code generated by protoc-gen-go. DO NOT EDIT.
  2. // source: google/monitoring/v3/alert.proto
  3. package monitoring // import "google.golang.org/genproto/googleapis/monitoring/v3"
  4. import proto "github.com/golang/protobuf/proto"
  5. import fmt "fmt"
  6. import math "math"
  7. import duration "github.com/golang/protobuf/ptypes/duration"
  8. import wrappers "github.com/golang/protobuf/ptypes/wrappers"
  9. import _ "google.golang.org/genproto/googleapis/api/annotations"
  10. // Reference imports to suppress errors if they are not otherwise used.
  11. var _ = proto.Marshal
  12. var _ = fmt.Errorf
  13. var _ = math.Inf
  14. // This is a compile-time assertion to ensure that this generated file
  15. // is compatible with the proto package it is being compiled against.
  16. // A compilation error at this line likely means your copy of the
  17. // proto package needs to be updated.
  18. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
  19. // Operators for combining conditions.
  20. type AlertPolicy_ConditionCombinerType int32
  21. const (
  22. // An unspecified combiner.
  23. AlertPolicy_COMBINE_UNSPECIFIED AlertPolicy_ConditionCombinerType = 0
  24. // Combine conditions using the logical `AND` operator. An
  25. // incident is created only if all conditions are met
  26. // simultaneously. This combiner is satisfied if all conditions are
  27. // met, even if they are met on completely different resources.
  28. AlertPolicy_AND AlertPolicy_ConditionCombinerType = 1
  29. // Combine conditions using the logical `OR` operator. An incident
  30. // is created if any of the listed conditions is met.
  31. AlertPolicy_OR AlertPolicy_ConditionCombinerType = 2
  32. // Combine conditions using logical `AND` operator, but unlike the regular
  33. // `AND` option, an incident is created only if all conditions are met
  34. // simultaneously on at least one resource.
  35. AlertPolicy_AND_WITH_MATCHING_RESOURCE AlertPolicy_ConditionCombinerType = 3
  36. )
  37. var AlertPolicy_ConditionCombinerType_name = map[int32]string{
  38. 0: "COMBINE_UNSPECIFIED",
  39. 1: "AND",
  40. 2: "OR",
  41. 3: "AND_WITH_MATCHING_RESOURCE",
  42. }
  43. var AlertPolicy_ConditionCombinerType_value = map[string]int32{
  44. "COMBINE_UNSPECIFIED": 0,
  45. "AND": 1,
  46. "OR": 2,
  47. "AND_WITH_MATCHING_RESOURCE": 3,
  48. }
  49. func (x AlertPolicy_ConditionCombinerType) String() string {
  50. return proto.EnumName(AlertPolicy_ConditionCombinerType_name, int32(x))
  51. }
  52. func (AlertPolicy_ConditionCombinerType) EnumDescriptor() ([]byte, []int) {
  53. return fileDescriptor_alert_afae0e9f7858ca3e, []int{0, 0}
  54. }
  55. // A description of the conditions under which some aspect of your system is
  56. // considered to be "unhealthy" and the ways to notify people or services about
  57. // this state. For an overview of alert policies, see
  58. // [Introduction to Alerting](/monitoring/alerts/).
  59. type AlertPolicy struct {
  60. // Required if the policy exists. The resource name for this policy. The
  61. // syntax is:
  62. //
  63. // projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
  64. //
  65. // `[ALERT_POLICY_ID]` is assigned by Stackdriver Monitoring when the policy
  66. // is created. When calling the
  67. // [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
  68. // method, do not include the `name` field in the alerting policy passed as
  69. // part of the request.
  70. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  71. // A short name or phrase used to identify the policy in dashboards,
  72. // notifications, and incidents. To avoid confusion, don't use the same
  73. // display name for multiple policies in the same project. The name is
  74. // limited to 512 Unicode characters.
  75. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
  76. // Documentation that is included with notifications and incidents related to
  77. // this policy. Best practice is for the documentation to include information
  78. // to help responders understand, mitigate, escalate, and correct the
  79. // underlying problems detected by the alerting policy. Notification channels
  80. // that have limited capacity might not show this documentation.
  81. Documentation *AlertPolicy_Documentation `protobuf:"bytes,13,opt,name=documentation,proto3" json:"documentation,omitempty"`
  82. // User-supplied key/value data to be used for organizing and
  83. // identifying the `AlertPolicy` objects.
  84. //
  85. // The field can contain up to 64 entries. Each key and value is limited to
  86. // 63 Unicode characters or 128 bytes, whichever is smaller. Labels and
  87. // values can contain only lowercase letters, numerals, underscores, and
  88. // dashes. Keys must begin with a letter.
  89. UserLabels map[string]string `protobuf:"bytes,16,rep,name=user_labels,json=userLabels,proto3" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
  90. // A list of conditions for the policy. The conditions are combined by AND or
  91. // OR according to the `combiner` field. If the combined conditions evaluate
  92. // to true, then an incident is created. A policy can have from one to six
  93. // conditions.
  94. Conditions []*AlertPolicy_Condition `protobuf:"bytes,12,rep,name=conditions,proto3" json:"conditions,omitempty"`
  95. // How to combine the results of multiple conditions
  96. // to determine if an incident should be opened.
  97. Combiner AlertPolicy_ConditionCombinerType `protobuf:"varint,6,opt,name=combiner,proto3,enum=google.monitoring.v3.AlertPolicy_ConditionCombinerType" json:"combiner,omitempty"`
  98. // Whether or not the policy is enabled. On write, the default interpretation
  99. // if unset is that the policy is enabled. On read, clients should not make
  100. // any assumption about the state if it has not been populated. The
  101. // field should always be populated on List and Get operations, unless
  102. // a field projection has been specified that strips it out.
  103. Enabled *wrappers.BoolValue `protobuf:"bytes,17,opt,name=enabled,proto3" json:"enabled,omitempty"`
  104. // Identifies the notification channels to which notifications should be sent
  105. // when incidents are opened or closed or when new violations occur on
  106. // an already opened incident. Each element of this array corresponds to
  107. // the `name` field in each of the
  108. // [`NotificationChannel`][google.monitoring.v3.NotificationChannel]
  109. // objects that are returned from the [`ListNotificationChannels`]
  110. // [google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
  111. // method. The syntax of the entries in this field is:
  112. //
  113. // projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
  114. NotificationChannels []string `protobuf:"bytes,14,rep,name=notification_channels,json=notificationChannels,proto3" json:"notification_channels,omitempty"`
  115. // A read-only record of the creation of the alerting policy. If provided
  116. // in a call to create or update, this field will be ignored.
  117. CreationRecord *MutationRecord `protobuf:"bytes,10,opt,name=creation_record,json=creationRecord,proto3" json:"creation_record,omitempty"`
  118. // A read-only record of the most recent change to the alerting policy. If
  119. // provided in a call to create or update, this field will be ignored.
  120. MutationRecord *MutationRecord `protobuf:"bytes,11,opt,name=mutation_record,json=mutationRecord,proto3" json:"mutation_record,omitempty"`
  121. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  122. XXX_unrecognized []byte `json:"-"`
  123. XXX_sizecache int32 `json:"-"`
  124. }
  125. func (m *AlertPolicy) Reset() { *m = AlertPolicy{} }
  126. func (m *AlertPolicy) String() string { return proto.CompactTextString(m) }
  127. func (*AlertPolicy) ProtoMessage() {}
  128. func (*AlertPolicy) Descriptor() ([]byte, []int) {
  129. return fileDescriptor_alert_afae0e9f7858ca3e, []int{0}
  130. }
  131. func (m *AlertPolicy) XXX_Unmarshal(b []byte) error {
  132. return xxx_messageInfo_AlertPolicy.Unmarshal(m, b)
  133. }
  134. func (m *AlertPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  135. return xxx_messageInfo_AlertPolicy.Marshal(b, m, deterministic)
  136. }
  137. func (dst *AlertPolicy) XXX_Merge(src proto.Message) {
  138. xxx_messageInfo_AlertPolicy.Merge(dst, src)
  139. }
  140. func (m *AlertPolicy) XXX_Size() int {
  141. return xxx_messageInfo_AlertPolicy.Size(m)
  142. }
  143. func (m *AlertPolicy) XXX_DiscardUnknown() {
  144. xxx_messageInfo_AlertPolicy.DiscardUnknown(m)
  145. }
  146. var xxx_messageInfo_AlertPolicy proto.InternalMessageInfo
  147. func (m *AlertPolicy) GetName() string {
  148. if m != nil {
  149. return m.Name
  150. }
  151. return ""
  152. }
  153. func (m *AlertPolicy) GetDisplayName() string {
  154. if m != nil {
  155. return m.DisplayName
  156. }
  157. return ""
  158. }
  159. func (m *AlertPolicy) GetDocumentation() *AlertPolicy_Documentation {
  160. if m != nil {
  161. return m.Documentation
  162. }
  163. return nil
  164. }
  165. func (m *AlertPolicy) GetUserLabels() map[string]string {
  166. if m != nil {
  167. return m.UserLabels
  168. }
  169. return nil
  170. }
  171. func (m *AlertPolicy) GetConditions() []*AlertPolicy_Condition {
  172. if m != nil {
  173. return m.Conditions
  174. }
  175. return nil
  176. }
  177. func (m *AlertPolicy) GetCombiner() AlertPolicy_ConditionCombinerType {
  178. if m != nil {
  179. return m.Combiner
  180. }
  181. return AlertPolicy_COMBINE_UNSPECIFIED
  182. }
  183. func (m *AlertPolicy) GetEnabled() *wrappers.BoolValue {
  184. if m != nil {
  185. return m.Enabled
  186. }
  187. return nil
  188. }
  189. func (m *AlertPolicy) GetNotificationChannels() []string {
  190. if m != nil {
  191. return m.NotificationChannels
  192. }
  193. return nil
  194. }
  195. func (m *AlertPolicy) GetCreationRecord() *MutationRecord {
  196. if m != nil {
  197. return m.CreationRecord
  198. }
  199. return nil
  200. }
  201. func (m *AlertPolicy) GetMutationRecord() *MutationRecord {
  202. if m != nil {
  203. return m.MutationRecord
  204. }
  205. return nil
  206. }
  207. // A content string and a MIME type that describes the content string's
  208. // format.
  209. type AlertPolicy_Documentation struct {
  210. // The text of the documentation, interpreted according to `mime_type`.
  211. // The content may not exceed 8,192 Unicode characters and may not exceed
  212. // more than 10,240 bytes when encoded in UTF-8 format, whichever is
  213. // smaller.
  214. Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
  215. // The format of the `content` field. Presently, only the value
  216. // `"text/markdown"` is supported. See
  217. // [Markdown](https://en.wikipedia.org/wiki/Markdown) for more information.
  218. MimeType string `protobuf:"bytes,2,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
  219. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  220. XXX_unrecognized []byte `json:"-"`
  221. XXX_sizecache int32 `json:"-"`
  222. }
  223. func (m *AlertPolicy_Documentation) Reset() { *m = AlertPolicy_Documentation{} }
  224. func (m *AlertPolicy_Documentation) String() string { return proto.CompactTextString(m) }
  225. func (*AlertPolicy_Documentation) ProtoMessage() {}
  226. func (*AlertPolicy_Documentation) Descriptor() ([]byte, []int) {
  227. return fileDescriptor_alert_afae0e9f7858ca3e, []int{0, 0}
  228. }
  229. func (m *AlertPolicy_Documentation) XXX_Unmarshal(b []byte) error {
  230. return xxx_messageInfo_AlertPolicy_Documentation.Unmarshal(m, b)
  231. }
  232. func (m *AlertPolicy_Documentation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  233. return xxx_messageInfo_AlertPolicy_Documentation.Marshal(b, m, deterministic)
  234. }
  235. func (dst *AlertPolicy_Documentation) XXX_Merge(src proto.Message) {
  236. xxx_messageInfo_AlertPolicy_Documentation.Merge(dst, src)
  237. }
  238. func (m *AlertPolicy_Documentation) XXX_Size() int {
  239. return xxx_messageInfo_AlertPolicy_Documentation.Size(m)
  240. }
  241. func (m *AlertPolicy_Documentation) XXX_DiscardUnknown() {
  242. xxx_messageInfo_AlertPolicy_Documentation.DiscardUnknown(m)
  243. }
  244. var xxx_messageInfo_AlertPolicy_Documentation proto.InternalMessageInfo
  245. func (m *AlertPolicy_Documentation) GetContent() string {
  246. if m != nil {
  247. return m.Content
  248. }
  249. return ""
  250. }
  251. func (m *AlertPolicy_Documentation) GetMimeType() string {
  252. if m != nil {
  253. return m.MimeType
  254. }
  255. return ""
  256. }
  257. // A condition is a true/false test that determines when an alerting policy
  258. // should open an incident. If a condition evaluates to true, it signifies
  259. // that something is wrong.
  260. type AlertPolicy_Condition struct {
  261. // Required if the condition exists. The unique resource name for this
  262. // condition. Its syntax is:
  263. //
  264. // projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID]
  265. //
  266. // `[CONDITION_ID]` is assigned by Stackdriver Monitoring when the
  267. // condition is created as part of a new or updated alerting policy.
  268. //
  269. // When calling the
  270. // [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
  271. // method, do not include the `name` field in the conditions of the
  272. // requested alerting policy. Stackdriver Monitoring creates the
  273. // condition identifiers and includes them in the new policy.
  274. //
  275. // When calling the
  276. // [alertPolicies.update][google.monitoring.v3.AlertPolicyService.UpdateAlertPolicy]
  277. // method to update a policy, including a condition `name` causes the
  278. // existing condition to be updated. Conditions without names are added to
  279. // the updated policy. Existing conditions are deleted if they are not
  280. // updated.
  281. //
  282. // Best practice is to preserve `[CONDITION_ID]` if you make only small
  283. // changes, such as those to condition thresholds, durations, or trigger
  284. // values. Otherwise, treat the change as a new condition and let the
  285. // existing condition be deleted.
  286. Name string `protobuf:"bytes,12,opt,name=name,proto3" json:"name,omitempty"`
  287. // A short name or phrase used to identify the condition in dashboards,
  288. // notifications, and incidents. To avoid confusion, don't use the same
  289. // display name for multiple conditions in the same policy.
  290. DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
  291. // Only one of the following condition types will be specified.
  292. //
  293. // Types that are valid to be assigned to Condition:
  294. // *AlertPolicy_Condition_ConditionThreshold
  295. // *AlertPolicy_Condition_ConditionAbsent
  296. Condition isAlertPolicy_Condition_Condition `protobuf_oneof:"condition"`
  297. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  298. XXX_unrecognized []byte `json:"-"`
  299. XXX_sizecache int32 `json:"-"`
  300. }
  301. func (m *AlertPolicy_Condition) Reset() { *m = AlertPolicy_Condition{} }
  302. func (m *AlertPolicy_Condition) String() string { return proto.CompactTextString(m) }
  303. func (*AlertPolicy_Condition) ProtoMessage() {}
  304. func (*AlertPolicy_Condition) Descriptor() ([]byte, []int) {
  305. return fileDescriptor_alert_afae0e9f7858ca3e, []int{0, 1}
  306. }
  307. func (m *AlertPolicy_Condition) XXX_Unmarshal(b []byte) error {
  308. return xxx_messageInfo_AlertPolicy_Condition.Unmarshal(m, b)
  309. }
  310. func (m *AlertPolicy_Condition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  311. return xxx_messageInfo_AlertPolicy_Condition.Marshal(b, m, deterministic)
  312. }
  313. func (dst *AlertPolicy_Condition) XXX_Merge(src proto.Message) {
  314. xxx_messageInfo_AlertPolicy_Condition.Merge(dst, src)
  315. }
  316. func (m *AlertPolicy_Condition) XXX_Size() int {
  317. return xxx_messageInfo_AlertPolicy_Condition.Size(m)
  318. }
  319. func (m *AlertPolicy_Condition) XXX_DiscardUnknown() {
  320. xxx_messageInfo_AlertPolicy_Condition.DiscardUnknown(m)
  321. }
  322. var xxx_messageInfo_AlertPolicy_Condition proto.InternalMessageInfo
  323. func (m *AlertPolicy_Condition) GetName() string {
  324. if m != nil {
  325. return m.Name
  326. }
  327. return ""
  328. }
  329. func (m *AlertPolicy_Condition) GetDisplayName() string {
  330. if m != nil {
  331. return m.DisplayName
  332. }
  333. return ""
  334. }
  335. type isAlertPolicy_Condition_Condition interface {
  336. isAlertPolicy_Condition_Condition()
  337. }
  338. type AlertPolicy_Condition_ConditionThreshold struct {
  339. ConditionThreshold *AlertPolicy_Condition_MetricThreshold `protobuf:"bytes,1,opt,name=condition_threshold,json=conditionThreshold,proto3,oneof"`
  340. }
  341. type AlertPolicy_Condition_ConditionAbsent struct {
  342. ConditionAbsent *AlertPolicy_Condition_MetricAbsence `protobuf:"bytes,2,opt,name=condition_absent,json=conditionAbsent,proto3,oneof"`
  343. }
  344. func (*AlertPolicy_Condition_ConditionThreshold) isAlertPolicy_Condition_Condition() {}
  345. func (*AlertPolicy_Condition_ConditionAbsent) isAlertPolicy_Condition_Condition() {}
  346. func (m *AlertPolicy_Condition) GetCondition() isAlertPolicy_Condition_Condition {
  347. if m != nil {
  348. return m.Condition
  349. }
  350. return nil
  351. }
  352. func (m *AlertPolicy_Condition) GetConditionThreshold() *AlertPolicy_Condition_MetricThreshold {
  353. if x, ok := m.GetCondition().(*AlertPolicy_Condition_ConditionThreshold); ok {
  354. return x.ConditionThreshold
  355. }
  356. return nil
  357. }
  358. func (m *AlertPolicy_Condition) GetConditionAbsent() *AlertPolicy_Condition_MetricAbsence {
  359. if x, ok := m.GetCondition().(*AlertPolicy_Condition_ConditionAbsent); ok {
  360. return x.ConditionAbsent
  361. }
  362. return nil
  363. }
  364. // XXX_OneofFuncs is for the internal use of the proto package.
  365. func (*AlertPolicy_Condition) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
  366. return _AlertPolicy_Condition_OneofMarshaler, _AlertPolicy_Condition_OneofUnmarshaler, _AlertPolicy_Condition_OneofSizer, []interface{}{
  367. (*AlertPolicy_Condition_ConditionThreshold)(nil),
  368. (*AlertPolicy_Condition_ConditionAbsent)(nil),
  369. }
  370. }
  371. func _AlertPolicy_Condition_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
  372. m := msg.(*AlertPolicy_Condition)
  373. // condition
  374. switch x := m.Condition.(type) {
  375. case *AlertPolicy_Condition_ConditionThreshold:
  376. b.EncodeVarint(1<<3 | proto.WireBytes)
  377. if err := b.EncodeMessage(x.ConditionThreshold); err != nil {
  378. return err
  379. }
  380. case *AlertPolicy_Condition_ConditionAbsent:
  381. b.EncodeVarint(2<<3 | proto.WireBytes)
  382. if err := b.EncodeMessage(x.ConditionAbsent); err != nil {
  383. return err
  384. }
  385. case nil:
  386. default:
  387. return fmt.Errorf("AlertPolicy_Condition.Condition has unexpected type %T", x)
  388. }
  389. return nil
  390. }
  391. func _AlertPolicy_Condition_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
  392. m := msg.(*AlertPolicy_Condition)
  393. switch tag {
  394. case 1: // condition.condition_threshold
  395. if wire != proto.WireBytes {
  396. return true, proto.ErrInternalBadWireType
  397. }
  398. msg := new(AlertPolicy_Condition_MetricThreshold)
  399. err := b.DecodeMessage(msg)
  400. m.Condition = &AlertPolicy_Condition_ConditionThreshold{msg}
  401. return true, err
  402. case 2: // condition.condition_absent
  403. if wire != proto.WireBytes {
  404. return true, proto.ErrInternalBadWireType
  405. }
  406. msg := new(AlertPolicy_Condition_MetricAbsence)
  407. err := b.DecodeMessage(msg)
  408. m.Condition = &AlertPolicy_Condition_ConditionAbsent{msg}
  409. return true, err
  410. default:
  411. return false, nil
  412. }
  413. }
  414. func _AlertPolicy_Condition_OneofSizer(msg proto.Message) (n int) {
  415. m := msg.(*AlertPolicy_Condition)
  416. // condition
  417. switch x := m.Condition.(type) {
  418. case *AlertPolicy_Condition_ConditionThreshold:
  419. s := proto.Size(x.ConditionThreshold)
  420. n += 1 // tag and wire
  421. n += proto.SizeVarint(uint64(s))
  422. n += s
  423. case *AlertPolicy_Condition_ConditionAbsent:
  424. s := proto.Size(x.ConditionAbsent)
  425. n += 1 // tag and wire
  426. n += proto.SizeVarint(uint64(s))
  427. n += s
  428. case nil:
  429. default:
  430. panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
  431. }
  432. return n
  433. }
  434. // Specifies how many time series must fail a predicate to trigger a
  435. // condition. If not specified, then a `{count: 1}` trigger is used.
  436. type AlertPolicy_Condition_Trigger struct {
  437. // A type of trigger.
  438. //
  439. // Types that are valid to be assigned to Type:
  440. // *AlertPolicy_Condition_Trigger_Count
  441. // *AlertPolicy_Condition_Trigger_Percent
  442. Type isAlertPolicy_Condition_Trigger_Type `protobuf_oneof:"type"`
  443. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  444. XXX_unrecognized []byte `json:"-"`
  445. XXX_sizecache int32 `json:"-"`
  446. }
  447. func (m *AlertPolicy_Condition_Trigger) Reset() { *m = AlertPolicy_Condition_Trigger{} }
  448. func (m *AlertPolicy_Condition_Trigger) String() string { return proto.CompactTextString(m) }
  449. func (*AlertPolicy_Condition_Trigger) ProtoMessage() {}
  450. func (*AlertPolicy_Condition_Trigger) Descriptor() ([]byte, []int) {
  451. return fileDescriptor_alert_afae0e9f7858ca3e, []int{0, 1, 0}
  452. }
  453. func (m *AlertPolicy_Condition_Trigger) XXX_Unmarshal(b []byte) error {
  454. return xxx_messageInfo_AlertPolicy_Condition_Trigger.Unmarshal(m, b)
  455. }
  456. func (m *AlertPolicy_Condition_Trigger) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  457. return xxx_messageInfo_AlertPolicy_Condition_Trigger.Marshal(b, m, deterministic)
  458. }
  459. func (dst *AlertPolicy_Condition_Trigger) XXX_Merge(src proto.Message) {
  460. xxx_messageInfo_AlertPolicy_Condition_Trigger.Merge(dst, src)
  461. }
  462. func (m *AlertPolicy_Condition_Trigger) XXX_Size() int {
  463. return xxx_messageInfo_AlertPolicy_Condition_Trigger.Size(m)
  464. }
  465. func (m *AlertPolicy_Condition_Trigger) XXX_DiscardUnknown() {
  466. xxx_messageInfo_AlertPolicy_Condition_Trigger.DiscardUnknown(m)
  467. }
  468. var xxx_messageInfo_AlertPolicy_Condition_Trigger proto.InternalMessageInfo
  469. type isAlertPolicy_Condition_Trigger_Type interface {
  470. isAlertPolicy_Condition_Trigger_Type()
  471. }
  472. type AlertPolicy_Condition_Trigger_Count struct {
  473. Count int32 `protobuf:"varint,1,opt,name=count,proto3,oneof"`
  474. }
  475. type AlertPolicy_Condition_Trigger_Percent struct {
  476. Percent float64 `protobuf:"fixed64,2,opt,name=percent,proto3,oneof"`
  477. }
  478. func (*AlertPolicy_Condition_Trigger_Count) isAlertPolicy_Condition_Trigger_Type() {}
  479. func (*AlertPolicy_Condition_Trigger_Percent) isAlertPolicy_Condition_Trigger_Type() {}
  480. func (m *AlertPolicy_Condition_Trigger) GetType() isAlertPolicy_Condition_Trigger_Type {
  481. if m != nil {
  482. return m.Type
  483. }
  484. return nil
  485. }
  486. func (m *AlertPolicy_Condition_Trigger) GetCount() int32 {
  487. if x, ok := m.GetType().(*AlertPolicy_Condition_Trigger_Count); ok {
  488. return x.Count
  489. }
  490. return 0
  491. }
  492. func (m *AlertPolicy_Condition_Trigger) GetPercent() float64 {
  493. if x, ok := m.GetType().(*AlertPolicy_Condition_Trigger_Percent); ok {
  494. return x.Percent
  495. }
  496. return 0
  497. }
  498. // XXX_OneofFuncs is for the internal use of the proto package.
  499. func (*AlertPolicy_Condition_Trigger) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
  500. return _AlertPolicy_Condition_Trigger_OneofMarshaler, _AlertPolicy_Condition_Trigger_OneofUnmarshaler, _AlertPolicy_Condition_Trigger_OneofSizer, []interface{}{
  501. (*AlertPolicy_Condition_Trigger_Count)(nil),
  502. (*AlertPolicy_Condition_Trigger_Percent)(nil),
  503. }
  504. }
  505. func _AlertPolicy_Condition_Trigger_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
  506. m := msg.(*AlertPolicy_Condition_Trigger)
  507. // type
  508. switch x := m.Type.(type) {
  509. case *AlertPolicy_Condition_Trigger_Count:
  510. b.EncodeVarint(1<<3 | proto.WireVarint)
  511. b.EncodeVarint(uint64(x.Count))
  512. case *AlertPolicy_Condition_Trigger_Percent:
  513. b.EncodeVarint(2<<3 | proto.WireFixed64)
  514. b.EncodeFixed64(math.Float64bits(x.Percent))
  515. case nil:
  516. default:
  517. return fmt.Errorf("AlertPolicy_Condition_Trigger.Type has unexpected type %T", x)
  518. }
  519. return nil
  520. }
  521. func _AlertPolicy_Condition_Trigger_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
  522. m := msg.(*AlertPolicy_Condition_Trigger)
  523. switch tag {
  524. case 1: // type.count
  525. if wire != proto.WireVarint {
  526. return true, proto.ErrInternalBadWireType
  527. }
  528. x, err := b.DecodeVarint()
  529. m.Type = &AlertPolicy_Condition_Trigger_Count{int32(x)}
  530. return true, err
  531. case 2: // type.percent
  532. if wire != proto.WireFixed64 {
  533. return true, proto.ErrInternalBadWireType
  534. }
  535. x, err := b.DecodeFixed64()
  536. m.Type = &AlertPolicy_Condition_Trigger_Percent{math.Float64frombits(x)}
  537. return true, err
  538. default:
  539. return false, nil
  540. }
  541. }
  542. func _AlertPolicy_Condition_Trigger_OneofSizer(msg proto.Message) (n int) {
  543. m := msg.(*AlertPolicy_Condition_Trigger)
  544. // type
  545. switch x := m.Type.(type) {
  546. case *AlertPolicy_Condition_Trigger_Count:
  547. n += 1 // tag and wire
  548. n += proto.SizeVarint(uint64(x.Count))
  549. case *AlertPolicy_Condition_Trigger_Percent:
  550. n += 1 // tag and wire
  551. n += 8
  552. case nil:
  553. default:
  554. panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
  555. }
  556. return n
  557. }
  558. // A condition type that compares a collection of time series
  559. // against a threshold.
  560. type AlertPolicy_Condition_MetricThreshold struct {
  561. // A [filter](/monitoring/api/v3/filters) that
  562. // identifies which time series should be compared with the threshold.
  563. //
  564. // The filter is similar to the one that is specified in the
  565. // [`MetricService.ListTimeSeries`
  566. // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
  567. // call is useful to verify the time series that will be retrieved /
  568. // processed) and must specify the metric type and optionally may contain
  569. // restrictions on resource type, resource labels, and metric labels.
  570. // This field may not exceed 2048 Unicode characters in length.
  571. Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
  572. // Specifies the alignment of data points in individual time series as
  573. // well as how to combine the retrieved time series together (such as
  574. // when aggregating multiple streams on each resource to a single
  575. // stream for each resource or when aggregating streams across all
  576. // members of a group of resrouces). Multiple aggregations
  577. // are applied in the order specified.
  578. //
  579. // This field is similar to the one in the
  580. // [`MetricService.ListTimeSeries`
  581. // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
  582. // is advisable to use the `ListTimeSeries` method when debugging this
  583. // field.
  584. Aggregations []*Aggregation `protobuf:"bytes,8,rep,name=aggregations,proto3" json:"aggregations,omitempty"`
  585. // A [filter](/monitoring/api/v3/filters) that identifies a time
  586. // series that should be used as the denominator of a ratio that will be
  587. // compared with the threshold. If a `denominator_filter` is specified,
  588. // the time series specified by the `filter` field will be used as the
  589. // numerator.
  590. //
  591. // The filter is similar to the one that is specified in the
  592. // [`MetricService.ListTimeSeries`
  593. // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
  594. // call is useful to verify the time series that will be retrieved /
  595. // processed) and must specify the metric type and optionally may contain
  596. // restrictions on resource type, resource labels, and metric labels.
  597. // This field may not exceed 2048 Unicode characters in length.
  598. DenominatorFilter string `protobuf:"bytes,9,opt,name=denominator_filter,json=denominatorFilter,proto3" json:"denominator_filter,omitempty"`
  599. // Specifies the alignment of data points in individual time series
  600. // selected by `denominatorFilter` as
  601. // well as how to combine the retrieved time series together (such as
  602. // when aggregating multiple streams on each resource to a single
  603. // stream for each resource or when aggregating streams across all
  604. // members of a group of resources).
  605. //
  606. // When computing ratios, the `aggregations` and
  607. // `denominator_aggregations` fields must use the same alignment period
  608. // and produce time series that have the same periodicity and labels.
  609. //
  610. // This field is similar to the one in the
  611. // [`MetricService.ListTimeSeries`
  612. // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
  613. // is advisable to use the `ListTimeSeries` method when debugging this
  614. // field.
  615. DenominatorAggregations []*Aggregation `protobuf:"bytes,10,rep,name=denominator_aggregations,json=denominatorAggregations,proto3" json:"denominator_aggregations,omitempty"`
  616. // The comparison to apply between the time series (indicated by `filter`
  617. // and `aggregation`) and the threshold (indicated by `threshold_value`).
  618. // The comparison is applied on each time series, with the time series
  619. // on the left-hand side and the threshold on the right-hand side.
  620. //
  621. // Only `COMPARISON_LT` and `COMPARISON_GT` are supported currently.
  622. Comparison ComparisonType `protobuf:"varint,4,opt,name=comparison,proto3,enum=google.monitoring.v3.ComparisonType" json:"comparison,omitempty"`
  623. // A value against which to compare the time series.
  624. ThresholdValue float64 `protobuf:"fixed64,5,opt,name=threshold_value,json=thresholdValue,proto3" json:"threshold_value,omitempty"`
  625. // The amount of time that a time series must violate the
  626. // threshold to be considered failing. Currently, only values
  627. // that are a multiple of a minute--e.g., 0, 60, 120, or 300
  628. // seconds--are supported. If an invalid value is given, an
  629. // error will be returned. When choosing a duration, it is useful to
  630. // keep in mind the frequency of the underlying time series data
  631. // (which may also be affected by any alignments specified in the
  632. // `aggregations` field); a good duration is long enough so that a single
  633. // outlier does not generate spurious alerts, but short enough that
  634. // unhealthy states are detected and alerted on quickly.
  635. Duration *duration.Duration `protobuf:"bytes,6,opt,name=duration,proto3" json:"duration,omitempty"`
  636. // The number/percent of time series for which the comparison must hold
  637. // in order for the condition to trigger. If unspecified, then the
  638. // condition will trigger if the comparison is true for any of the
  639. // time series that have been identified by `filter` and `aggregations`,
  640. // or by the ratio, if `denominator_filter` and `denominator_aggregations`
  641. // are specified.
  642. Trigger *AlertPolicy_Condition_Trigger `protobuf:"bytes,7,opt,name=trigger,proto3" json:"trigger,omitempty"`
  643. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  644. XXX_unrecognized []byte `json:"-"`
  645. XXX_sizecache int32 `json:"-"`
  646. }
  647. func (m *AlertPolicy_Condition_MetricThreshold) Reset() { *m = AlertPolicy_Condition_MetricThreshold{} }
  648. func (m *AlertPolicy_Condition_MetricThreshold) String() string { return proto.CompactTextString(m) }
  649. func (*AlertPolicy_Condition_MetricThreshold) ProtoMessage() {}
  650. func (*AlertPolicy_Condition_MetricThreshold) Descriptor() ([]byte, []int) {
  651. return fileDescriptor_alert_afae0e9f7858ca3e, []int{0, 1, 1}
  652. }
  653. func (m *AlertPolicy_Condition_MetricThreshold) XXX_Unmarshal(b []byte) error {
  654. return xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.Unmarshal(m, b)
  655. }
  656. func (m *AlertPolicy_Condition_MetricThreshold) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  657. return xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.Marshal(b, m, deterministic)
  658. }
  659. func (dst *AlertPolicy_Condition_MetricThreshold) XXX_Merge(src proto.Message) {
  660. xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.Merge(dst, src)
  661. }
  662. func (m *AlertPolicy_Condition_MetricThreshold) XXX_Size() int {
  663. return xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.Size(m)
  664. }
  665. func (m *AlertPolicy_Condition_MetricThreshold) XXX_DiscardUnknown() {
  666. xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.DiscardUnknown(m)
  667. }
  668. var xxx_messageInfo_AlertPolicy_Condition_MetricThreshold proto.InternalMessageInfo
  669. func (m *AlertPolicy_Condition_MetricThreshold) GetFilter() string {
  670. if m != nil {
  671. return m.Filter
  672. }
  673. return ""
  674. }
  675. func (m *AlertPolicy_Condition_MetricThreshold) GetAggregations() []*Aggregation {
  676. if m != nil {
  677. return m.Aggregations
  678. }
  679. return nil
  680. }
  681. func (m *AlertPolicy_Condition_MetricThreshold) GetDenominatorFilter() string {
  682. if m != nil {
  683. return m.DenominatorFilter
  684. }
  685. return ""
  686. }
  687. func (m *AlertPolicy_Condition_MetricThreshold) GetDenominatorAggregations() []*Aggregation {
  688. if m != nil {
  689. return m.DenominatorAggregations
  690. }
  691. return nil
  692. }
  693. func (m *AlertPolicy_Condition_MetricThreshold) GetComparison() ComparisonType {
  694. if m != nil {
  695. return m.Comparison
  696. }
  697. return ComparisonType_COMPARISON_UNSPECIFIED
  698. }
  699. func (m *AlertPolicy_Condition_MetricThreshold) GetThresholdValue() float64 {
  700. if m != nil {
  701. return m.ThresholdValue
  702. }
  703. return 0
  704. }
  705. func (m *AlertPolicy_Condition_MetricThreshold) GetDuration() *duration.Duration {
  706. if m != nil {
  707. return m.Duration
  708. }
  709. return nil
  710. }
  711. func (m *AlertPolicy_Condition_MetricThreshold) GetTrigger() *AlertPolicy_Condition_Trigger {
  712. if m != nil {
  713. return m.Trigger
  714. }
  715. return nil
  716. }
  717. // A condition type that checks that monitored resources
  718. // are reporting data. The configuration defines a metric and
  719. // a set of monitored resources. The predicate is considered in violation
  720. // when a time series for the specified metric of a monitored
  721. // resource does not include any data in the specified `duration`.
  722. type AlertPolicy_Condition_MetricAbsence struct {
  723. // A [filter](/monitoring/api/v3/filters) that
  724. // identifies which time series should be compared with the threshold.
  725. //
  726. // The filter is similar to the one that is specified in the
  727. // [`MetricService.ListTimeSeries`
  728. // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
  729. // call is useful to verify the time series that will be retrieved /
  730. // processed) and must specify the metric type and optionally may contain
  731. // restrictions on resource type, resource labels, and metric labels.
  732. // This field may not exceed 2048 Unicode characters in length.
  733. Filter string `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
  734. // Specifies the alignment of data points in individual time series as
  735. // well as how to combine the retrieved time series together (such as
  736. // when aggregating multiple streams on each resource to a single
  737. // stream for each resource or when aggregating streams across all
  738. // members of a group of resrouces). Multiple aggregations
  739. // are applied in the order specified.
  740. //
  741. // This field is similar to the
  742. // one in the [`MetricService.ListTimeSeries`
  743. // request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
  744. // is advisable to use the `ListTimeSeries` method when debugging this
  745. // field.
  746. Aggregations []*Aggregation `protobuf:"bytes,5,rep,name=aggregations,proto3" json:"aggregations,omitempty"`
  747. // The amount of time that a time series must fail to report new
  748. // data to be considered failing. Currently, only values that
  749. // are a multiple of a minute--e.g. 60, 120, or 300
  750. // seconds--are supported. If an invalid value is given, an
  751. // error will be returned. The `Duration.nanos` field is
  752. // ignored.
  753. Duration *duration.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
  754. // The number/percent of time series for which the comparison must hold
  755. // in order for the condition to trigger. If unspecified, then the
  756. // condition will trigger if the comparison is true for any of the
  757. // time series that have been identified by `filter` and `aggregations`.
  758. Trigger *AlertPolicy_Condition_Trigger `protobuf:"bytes,3,opt,name=trigger,proto3" json:"trigger,omitempty"`
  759. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  760. XXX_unrecognized []byte `json:"-"`
  761. XXX_sizecache int32 `json:"-"`
  762. }
  763. func (m *AlertPolicy_Condition_MetricAbsence) Reset() { *m = AlertPolicy_Condition_MetricAbsence{} }
  764. func (m *AlertPolicy_Condition_MetricAbsence) String() string { return proto.CompactTextString(m) }
  765. func (*AlertPolicy_Condition_MetricAbsence) ProtoMessage() {}
  766. func (*AlertPolicy_Condition_MetricAbsence) Descriptor() ([]byte, []int) {
  767. return fileDescriptor_alert_afae0e9f7858ca3e, []int{0, 1, 2}
  768. }
  769. func (m *AlertPolicy_Condition_MetricAbsence) XXX_Unmarshal(b []byte) error {
  770. return xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.Unmarshal(m, b)
  771. }
  772. func (m *AlertPolicy_Condition_MetricAbsence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  773. return xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.Marshal(b, m, deterministic)
  774. }
  775. func (dst *AlertPolicy_Condition_MetricAbsence) XXX_Merge(src proto.Message) {
  776. xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.Merge(dst, src)
  777. }
  778. func (m *AlertPolicy_Condition_MetricAbsence) XXX_Size() int {
  779. return xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.Size(m)
  780. }
  781. func (m *AlertPolicy_Condition_MetricAbsence) XXX_DiscardUnknown() {
  782. xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.DiscardUnknown(m)
  783. }
  784. var xxx_messageInfo_AlertPolicy_Condition_MetricAbsence proto.InternalMessageInfo
  785. func (m *AlertPolicy_Condition_MetricAbsence) GetFilter() string {
  786. if m != nil {
  787. return m.Filter
  788. }
  789. return ""
  790. }
  791. func (m *AlertPolicy_Condition_MetricAbsence) GetAggregations() []*Aggregation {
  792. if m != nil {
  793. return m.Aggregations
  794. }
  795. return nil
  796. }
  797. func (m *AlertPolicy_Condition_MetricAbsence) GetDuration() *duration.Duration {
  798. if m != nil {
  799. return m.Duration
  800. }
  801. return nil
  802. }
  803. func (m *AlertPolicy_Condition_MetricAbsence) GetTrigger() *AlertPolicy_Condition_Trigger {
  804. if m != nil {
  805. return m.Trigger
  806. }
  807. return nil
  808. }
  809. func init() {
  810. proto.RegisterType((*AlertPolicy)(nil), "google.monitoring.v3.AlertPolicy")
  811. proto.RegisterMapType((map[string]string)(nil), "google.monitoring.v3.AlertPolicy.UserLabelsEntry")
  812. proto.RegisterType((*AlertPolicy_Documentation)(nil), "google.monitoring.v3.AlertPolicy.Documentation")
  813. proto.RegisterType((*AlertPolicy_Condition)(nil), "google.monitoring.v3.AlertPolicy.Condition")
  814. proto.RegisterType((*AlertPolicy_Condition_Trigger)(nil), "google.monitoring.v3.AlertPolicy.Condition.Trigger")
  815. proto.RegisterType((*AlertPolicy_Condition_MetricThreshold)(nil), "google.monitoring.v3.AlertPolicy.Condition.MetricThreshold")
  816. proto.RegisterType((*AlertPolicy_Condition_MetricAbsence)(nil), "google.monitoring.v3.AlertPolicy.Condition.MetricAbsence")
  817. proto.RegisterEnum("google.monitoring.v3.AlertPolicy_ConditionCombinerType", AlertPolicy_ConditionCombinerType_name, AlertPolicy_ConditionCombinerType_value)
  818. }
  819. func init() {
  820. proto.RegisterFile("google/monitoring/v3/alert.proto", fileDescriptor_alert_afae0e9f7858ca3e)
  821. }
  822. var fileDescriptor_alert_afae0e9f7858ca3e = []byte{
  823. // 941 bytes of a gzipped FileDescriptorProto
  824. 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xeb, 0x6e, 0xe3, 0x44,
  825. 0x14, 0xae, 0x93, 0xe6, 0x76, 0xd2, 0x36, 0xd9, 0xd9, 0xee, 0xae, 0x31, 0x68, 0x95, 0xae, 0x90,
  826. 0x88, 0x40, 0x38, 0x22, 0x01, 0x71, 0x59, 0x81, 0x94, 0x5b, 0x37, 0x11, 0x24, 0xad, 0xa6, 0x69,
  827. 0x91, 0x50, 0x25, 0xcb, 0x71, 0xa6, 0xae, 0x85, 0x3d, 0x63, 0x4d, 0xec, 0xa2, 0xbc, 0x0e, 0x3f,
  828. 0x79, 0x14, 0x1e, 0x81, 0x7f, 0xbc, 0x02, 0xe2, 0x01, 0x90, 0xc7, 0x63, 0xc7, 0xe9, 0xa6, 0xbb,
  829. 0x64, 0xf7, 0x5f, 0xce, 0x9c, 0xef, 0x7c, 0xe7, 0xf6, 0xcd, 0x38, 0xd0, 0xb0, 0x19, 0xb3, 0x5d,
  830. 0xd2, 0xf2, 0x18, 0x75, 0x02, 0xc6, 0x1d, 0x6a, 0xb7, 0xee, 0x3a, 0x2d, 0xd3, 0x25, 0x3c, 0xd0,
  831. 0x7d, 0xce, 0x02, 0x86, 0x8e, 0x63, 0x84, 0xbe, 0x46, 0xe8, 0x77, 0x1d, 0xed, 0x23, 0x19, 0x67,
  832. 0xfa, 0x4e, 0xcb, 0xa4, 0x94, 0x05, 0x66, 0xe0, 0x30, 0xba, 0x8c, 0x63, 0xb4, 0x93, 0xad, 0xac,
  833. 0x16, 0xf3, 0x3c, 0x46, 0x25, 0xe4, 0xd3, 0xad, 0x10, 0x2f, 0x8c, 0x89, 0x0c, 0x4e, 0x2c, 0xc6,
  834. 0x17, 0x12, 0xfb, 0x5c, 0x62, 0x85, 0x35, 0x0f, 0x6f, 0x5a, 0x8b, 0x90, 0x0b, 0xd8, 0x43, 0xfe,
  835. 0xdf, 0xb8, 0xe9, 0xfb, 0x84, 0xcb, 0x72, 0x5e, 0xfc, 0x5d, 0x83, 0x6a, 0x37, 0x6a, 0xe9, 0x9c,
  836. 0xb9, 0x8e, 0xb5, 0x42, 0x08, 0xf6, 0xa9, 0xe9, 0x11, 0x55, 0x69, 0x28, 0xcd, 0x0a, 0x16, 0xbf,
  837. 0xd1, 0x09, 0x1c, 0x2c, 0x9c, 0xa5, 0xef, 0x9a, 0x2b, 0x43, 0xf8, 0x72, 0xc2, 0x57, 0x95, 0x67,
  838. 0xd3, 0x08, 0x72, 0x09, 0x87, 0x0b, 0x66, 0x85, 0x1e, 0xa1, 0x71, 0x91, 0xea, 0x61, 0x43, 0x69,
  839. 0x56, 0xdb, 0x2d, 0x7d, 0xdb, 0x84, 0xf4, 0x4c, 0x42, 0x7d, 0x90, 0x0d, 0xc3, 0x9b, 0x2c, 0x08,
  840. 0x43, 0x35, 0x5c, 0x12, 0x6e, 0xb8, 0xe6, 0x9c, 0xb8, 0x4b, 0xb5, 0xde, 0xc8, 0x37, 0xab, 0xed,
  841. 0x2f, 0xde, 0x4e, 0x7a, 0xb9, 0x24, 0xfc, 0x27, 0x11, 0x33, 0xa4, 0x01, 0x5f, 0x61, 0x08, 0xd3,
  842. 0x03, 0xf4, 0x23, 0x80, 0xc5, 0xe8, 0xc2, 0x11, 0x4b, 0x51, 0x0f, 0x04, 0xe5, 0x67, 0x6f, 0xa7,
  843. 0xec, 0x27, 0x31, 0x38, 0x13, 0x8e, 0x2e, 0xa0, 0x6c, 0x31, 0x6f, 0xee, 0x50, 0xc2, 0xd5, 0x62,
  844. 0x43, 0x69, 0x1e, 0xb5, 0xbf, 0xde, 0x81, 0xaa, 0x2f, 0x43, 0x67, 0x2b, 0x9f, 0xe0, 0x94, 0x08,
  845. 0x7d, 0x09, 0x25, 0x42, 0xcd, 0xb9, 0x4b, 0x16, 0xea, 0x23, 0x31, 0x46, 0x2d, 0xe1, 0x4c, 0xb6,
  846. 0xa8, 0xf7, 0x18, 0x73, 0xaf, 0x4c, 0x37, 0x24, 0x38, 0x81, 0xa2, 0x0e, 0x3c, 0xa1, 0x2c, 0x70,
  847. 0x6e, 0x1c, 0x2b, 0x96, 0x89, 0x75, 0x6b, 0x52, 0x1a, 0x4d, 0xed, 0xa8, 0x91, 0x6f, 0x56, 0xf0,
  848. 0x71, 0xd6, 0xd9, 0x97, 0x3e, 0x34, 0x81, 0x9a, 0xc5, 0x49, 0x56, 0x57, 0x2a, 0x88, 0x94, 0x1f,
  849. 0x6f, 0x6f, 0x63, 0x22, 0x45, 0x88, 0x05, 0x16, 0x1f, 0x25, 0xc1, 0xb1, 0x1d, 0xd1, 0xdd, 0x93,
  850. 0xa9, 0x5a, 0xdd, 0x85, 0xce, 0xdb, 0xb0, 0xb5, 0x53, 0x38, 0xdc, 0x90, 0x07, 0x52, 0xa1, 0x64,
  851. 0x31, 0x1a, 0x10, 0x1a, 0x48, 0x81, 0x26, 0x26, 0xfa, 0x10, 0x2a, 0x9e, 0xe3, 0x11, 0x23, 0x58,
  852. 0xf9, 0x89, 0x40, 0xcb, 0xd1, 0x41, 0x34, 0x5a, 0xed, 0xaf, 0x32, 0x54, 0xd2, 0xa1, 0xa7, 0x12,
  853. 0x3f, 0x78, 0x83, 0xc4, 0x8b, 0xaf, 0x4b, 0x9c, 0xc2, 0xe3, 0x74, 0xf1, 0x46, 0x70, 0xcb, 0xc9,
  854. 0xf2, 0x96, 0xb9, 0x0b, 0x51, 0x47, 0xb5, 0xfd, 0x72, 0x87, 0xad, 0xeb, 0x13, 0x12, 0x70, 0xc7,
  855. 0x9a, 0x25, 0x14, 0xa3, 0x3d, 0x8c, 0x52, 0xe6, 0xf4, 0x14, 0xdd, 0x40, 0x7d, 0x9d, 0xcf, 0x9c,
  856. 0x2f, 0xa3, 0xa6, 0x73, 0x22, 0xd9, 0xb7, 0xbb, 0x27, 0xeb, 0x46, 0xf1, 0x16, 0x19, 0xed, 0xe1,
  857. 0x5a, 0x4a, 0x2a, 0xce, 0x02, 0x6d, 0x08, 0xa5, 0x19, 0x77, 0x6c, 0x9b, 0x70, 0xf4, 0x14, 0x0a,
  858. 0x16, 0x0b, 0xe5, 0x70, 0x0b, 0xa3, 0x3d, 0x1c, 0x9b, 0x48, 0x83, 0x92, 0x4f, 0xb8, 0x95, 0x54,
  859. 0xa0, 0x8c, 0xf6, 0x70, 0x72, 0xd0, 0x2b, 0xc2, 0x7e, 0x34, 0x73, 0xed, 0x9f, 0x3c, 0xd4, 0xee,
  860. 0x35, 0x86, 0x9e, 0x42, 0xf1, 0xc6, 0x71, 0x03, 0xc2, 0xe5, 0x46, 0xa4, 0x85, 0x86, 0x70, 0x60,
  861. 0xda, 0x36, 0x27, 0x76, 0xfc, 0x32, 0xaa, 0x65, 0x71, 0x09, 0x4f, 0x1e, 0x68, 0x6b, 0x8d, 0xc4,
  862. 0x1b, 0x61, 0xe8, 0x73, 0x40, 0x0b, 0x42, 0x99, 0xe7, 0x50, 0x33, 0x60, 0xdc, 0x90, 0xa9, 0x2a,
  863. 0x22, 0xd5, 0xa3, 0x8c, 0xe7, 0x34, 0xce, 0x7a, 0x0d, 0x6a, 0x16, 0xbe, 0x51, 0x01, 0xfc, 0xdf,
  864. 0x0a, 0x9e, 0x65, 0x28, 0xba, 0xd9, 0x62, 0x06, 0xd1, 0xb3, 0xe2, 0xf9, 0x26, 0x77, 0x96, 0x8c,
  865. 0xaa, 0xfb, 0xe2, 0x2d, 0x78, 0x40, 0xf5, 0xfd, 0x14, 0x27, 0x2e, 0x7e, 0x26, 0x0e, 0x7d, 0x02,
  866. 0xb5, 0x54, 0x5a, 0xc6, 0x5d, 0x74, 0xc1, 0xd5, 0x42, 0x34, 0x71, 0x7c, 0x94, 0x1e, 0x8b, 0x6b,
  867. 0x8f, 0xbe, 0x82, 0x72, 0xf2, 0xd2, 0x0b, 0xb1, 0x56, 0xdb, 0x1f, 0xbc, 0xf6, 0x48, 0x0c, 0x24,
  868. 0x00, 0xa7, 0x50, 0x34, 0x81, 0x52, 0x10, 0x2f, 0x5b, 0x2d, 0x89, 0xa8, 0xce, 0x2e, 0x5a, 0x92,
  869. 0x3a, 0xc1, 0x09, 0x87, 0xf6, 0xaf, 0x02, 0x87, 0x1b, 0x02, 0xcb, 0xac, 0x5c, 0x79, 0xe3, 0xca,
  870. 0x0b, 0xef, 0xb6, 0xf2, 0x6c, 0xdb, 0xb9, 0x77, 0x6a, 0x3b, 0xff, 0xfe, 0x6d, 0xf7, 0xaa, 0x50,
  871. 0x49, 0x6f, 0x91, 0xf6, 0x3d, 0xd4, 0xee, 0x7d, 0x6e, 0x50, 0x1d, 0xf2, 0xbf, 0x92, 0x95, 0x9c,
  872. 0x40, 0xf4, 0x13, 0x1d, 0x43, 0x21, 0xde, 0x66, 0x7c, 0x11, 0x62, 0xe3, 0xbb, 0xdc, 0x37, 0xca,
  873. 0x0b, 0x13, 0x9e, 0x6c, 0xfd, 0x1e, 0xa0, 0x67, 0xf0, 0xb8, 0x7f, 0x36, 0xe9, 0x8d, 0xa7, 0x43,
  874. 0xe3, 0x72, 0x7a, 0x71, 0x3e, 0xec, 0x8f, 0x4f, 0xc7, 0xc3, 0x41, 0x7d, 0x0f, 0x95, 0x20, 0xdf,
  875. 0x9d, 0x0e, 0xea, 0x0a, 0x2a, 0x42, 0xee, 0x0c, 0xd7, 0x73, 0xe8, 0x39, 0x68, 0xdd, 0xe9, 0xc0,
  876. 0xf8, 0x79, 0x3c, 0x1b, 0x19, 0x93, 0xee, 0xac, 0x3f, 0x1a, 0x4f, 0x5f, 0x19, 0x78, 0x78, 0x71,
  877. 0x76, 0x89, 0xfb, 0xc3, 0x7a, 0xbe, 0xf7, 0xbb, 0x02, 0xaa, 0xc5, 0xbc, 0xad, 0x2d, 0xf7, 0x20,
  878. 0xee, 0x39, 0x1a, 0xde, 0xb9, 0xf2, 0xcb, 0x0f, 0x12, 0x63, 0x33, 0xd7, 0xa4, 0xb6, 0xce, 0xb8,
  879. 0xdd, 0xb2, 0x09, 0x15, 0xa3, 0x6d, 0xc5, 0x2e, 0xd3, 0x77, 0x96, 0x9b, 0xff, 0x4c, 0x5e, 0xae,
  880. 0xad, 0x3f, 0x72, 0xda, 0xab, 0x98, 0xa0, 0xef, 0xb2, 0x70, 0xa1, 0x4f, 0xd6, 0xa9, 0xae, 0x3a,
  881. 0x7f, 0x26, 0xce, 0x6b, 0xe1, 0xbc, 0x5e, 0x3b, 0xaf, 0xaf, 0x3a, 0xf3, 0xa2, 0x48, 0xd2, 0xf9,
  882. 0x2f, 0x00, 0x00, 0xff, 0xff, 0x66, 0xb5, 0x16, 0x64, 0x76, 0x09, 0x00, 0x00,
  883. }