@cdktn/provider-pagerduty 15.0.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.
Files changed (182) hide show
  1. package/.jsii +110408 -0
  2. package/LICENSE +355 -0
  3. package/README.md +94 -0
  4. package/lib/addon/index.d.ts +53 -0
  5. package/lib/addon/index.js +115 -0
  6. package/lib/alert-grouping-setting/index.d.ts +144 -0
  7. package/lib/alert-grouping-setting/index.js +366 -0
  8. package/lib/automation-actions-action/index.d.ts +232 -0
  9. package/lib/automation-actions-action/index.js +560 -0
  10. package/lib/automation-actions-action-service-association/index.d.ts +64 -0
  11. package/lib/automation-actions-action-service-association/index.js +129 -0
  12. package/lib/automation-actions-action-team-association/index.d.ts +64 -0
  13. package/lib/automation-actions-action-team-association/index.js +129 -0
  14. package/lib/automation-actions-runner/index.d.ts +102 -0
  15. package/lib/automation-actions-runner/index.js +224 -0
  16. package/lib/automation-actions-runner-team-association/index.d.ts +64 -0
  17. package/lib/automation-actions-runner-team-association/index.js +129 -0
  18. package/lib/business-service/index.d.ts +84 -0
  19. package/lib/business-service/index.js +190 -0
  20. package/lib/business-service-subscriber/index.d.ts +72 -0
  21. package/lib/business-service-subscriber/index.js +147 -0
  22. package/lib/data-pagerduty-alert-grouping-setting/index.d.ts +70 -0
  23. package/lib/data-pagerduty-alert-grouping-setting/index.js +190 -0
  24. package/lib/data-pagerduty-automation-actions-action/index.d.ts +186 -0
  25. package/lib/data-pagerduty-automation-actions-action/index.js +425 -0
  26. package/lib/data-pagerduty-automation-actions-runner/index.d.ts +78 -0
  27. package/lib/data-pagerduty-automation-actions-runner/index.js +172 -0
  28. package/lib/data-pagerduty-business-service/index.d.ts +46 -0
  29. package/lib/data-pagerduty-business-service/index.js +101 -0
  30. package/lib/data-pagerduty-escalation-policy/index.d.ts +47 -0
  31. package/lib/data-pagerduty-escalation-policy/index.js +105 -0
  32. package/lib/data-pagerduty-event-orchestration/index.d.ts +137 -0
  33. package/lib/data-pagerduty-event-orchestration/index.js +306 -0
  34. package/lib/data-pagerduty-event-orchestration-global-cache-variable/index.d.ts +138 -0
  35. package/lib/data-pagerduty-event-orchestration-global-cache-variable/index.js +315 -0
  36. package/lib/data-pagerduty-event-orchestration-integration/index.d.ts +100 -0
  37. package/lib/data-pagerduty-event-orchestration-integration/index.js +216 -0
  38. package/lib/data-pagerduty-event-orchestration-service-cache-variable/index.d.ts +138 -0
  39. package/lib/data-pagerduty-event-orchestration-service-cache-variable/index.js +315 -0
  40. package/lib/data-pagerduty-event-orchestrations/index.d.ts +161 -0
  41. package/lib/data-pagerduty-event-orchestrations/index.js +366 -0
  42. package/lib/data-pagerduty-extension-schema/index.d.ts +46 -0
  43. package/lib/data-pagerduty-extension-schema/index.js +101 -0
  44. package/lib/data-pagerduty-incident-custom-field/index.d.ts +60 -0
  45. package/lib/data-pagerduty-incident-custom-field/index.js +130 -0
  46. package/lib/data-pagerduty-incident-type/index.d.ts +50 -0
  47. package/lib/data-pagerduty-incident-type/index.js +117 -0
  48. package/lib/data-pagerduty-incident-type-custom-field/index.d.ts +115 -0
  49. package/lib/data-pagerduty-incident-type-custom-field/index.js +295 -0
  50. package/lib/data-pagerduty-incident-workflow/index.d.ts +57 -0
  51. package/lib/data-pagerduty-incident-workflow/index.js +118 -0
  52. package/lib/data-pagerduty-jira-cloud-account-mapping/index.d.ts +46 -0
  53. package/lib/data-pagerduty-jira-cloud-account-mapping/index.js +101 -0
  54. package/lib/data-pagerduty-license/index.d.ts +74 -0
  55. package/lib/data-pagerduty-license/index.js +170 -0
  56. package/lib/data-pagerduty-licenses/index.d.ts +92 -0
  57. package/lib/data-pagerduty-licenses/index.js +213 -0
  58. package/lib/data-pagerduty-priority/index.d.ts +48 -0
  59. package/lib/data-pagerduty-priority/index.js +101 -0
  60. package/lib/data-pagerduty-ruleset/index.d.ts +57 -0
  61. package/lib/data-pagerduty-ruleset/index.js +115 -0
  62. package/lib/data-pagerduty-schedule/index.d.ts +45 -0
  63. package/lib/data-pagerduty-schedule/index.js +97 -0
  64. package/lib/data-pagerduty-service/index.d.ts +86 -0
  65. package/lib/data-pagerduty-service/index.js +205 -0
  66. package/lib/data-pagerduty-service-custom-field/index.d.ts +92 -0
  67. package/lib/data-pagerduty-service-custom-field/index.js +221 -0
  68. package/lib/data-pagerduty-service-custom-field-value/index.d.ts +88 -0
  69. package/lib/data-pagerduty-service-custom-field-value/index.js +205 -0
  70. package/lib/data-pagerduty-service-integration/index.d.ts +56 -0
  71. package/lib/data-pagerduty-service-integration/index.js +119 -0
  72. package/lib/data-pagerduty-standards/index.d.ts +154 -0
  73. package/lib/data-pagerduty-standards/index.js +361 -0
  74. package/lib/data-pagerduty-standards-resource-scores/index.d.ts +112 -0
  75. package/lib/data-pagerduty-standards-resource-scores/index.js +268 -0
  76. package/lib/data-pagerduty-standards-resources-scores/index.d.ts +144 -0
  77. package/lib/data-pagerduty-standards-resources-scores/index.js +352 -0
  78. package/lib/data-pagerduty-tag/index.d.ts +47 -0
  79. package/lib/data-pagerduty-tag/index.js +97 -0
  80. package/lib/data-pagerduty-team/index.d.ts +77 -0
  81. package/lib/data-pagerduty-team/index.js +157 -0
  82. package/lib/data-pagerduty-team-members/index.d.ts +95 -0
  83. package/lib/data-pagerduty-team-members/index.js +203 -0
  84. package/lib/data-pagerduty-teams/index.d.ts +96 -0
  85. package/lib/data-pagerduty-teams/index.js +206 -0
  86. package/lib/data-pagerduty-user/index.d.ts +50 -0
  87. package/lib/data-pagerduty-user/index.js +117 -0
  88. package/lib/data-pagerduty-user-contact-method/index.d.ts +82 -0
  89. package/lib/data-pagerduty-user-contact-method/index.js +174 -0
  90. package/lib/data-pagerduty-users/index.d.ts +87 -0
  91. package/lib/data-pagerduty-users/index.js +208 -0
  92. package/lib/data-pagerduty-vendor/index.d.ts +46 -0
  93. package/lib/data-pagerduty-vendor/index.js +101 -0
  94. package/lib/enablement/index.d.ts +70 -0
  95. package/lib/enablement/index.js +151 -0
  96. package/lib/escalation-policy/index.d.ts +232 -0
  97. package/lib/escalation-policy/index.js +565 -0
  98. package/lib/event-orchestration/index.d.ts +156 -0
  99. package/lib/event-orchestration/index.js +352 -0
  100. package/lib/event-orchestration-global/index.d.ts +1253 -0
  101. package/lib/event-orchestration-global/index.js +3350 -0
  102. package/lib/event-orchestration-global-cache-variable/index.d.ts +182 -0
  103. package/lib/event-orchestration-global-cache-variable/index.js +459 -0
  104. package/lib/event-orchestration-integration/index.d.ts +88 -0
  105. package/lib/event-orchestration-integration/index.js +196 -0
  106. package/lib/event-orchestration-router/index.d.ts +363 -0
  107. package/lib/event-orchestration-router/index.js +954 -0
  108. package/lib/event-orchestration-service/index.d.ts +1328 -0
  109. package/lib/event-orchestration-service/index.js +3573 -0
  110. package/lib/event-orchestration-service-cache-variable/index.d.ts +182 -0
  111. package/lib/event-orchestration-service-cache-variable/index.js +459 -0
  112. package/lib/event-orchestration-unrouted/index.d.ts +653 -0
  113. package/lib/event-orchestration-unrouted/index.js +1722 -0
  114. package/lib/event-rule/index.d.ts +74 -0
  115. package/lib/event-rule/index.js +154 -0
  116. package/lib/extension/index.d.ts +91 -0
  117. package/lib/extension/index.js +204 -0
  118. package/lib/extension-servicenow/index.d.ts +138 -0
  119. package/lib/extension-servicenow/index.js +308 -0
  120. package/lib/incident-custom-field/index.d.ts +98 -0
  121. package/lib/incident-custom-field/index.js +207 -0
  122. package/lib/incident-custom-field-option/index.d.ts +72 -0
  123. package/lib/incident-custom-field-option/index.js +147 -0
  124. package/lib/incident-type/index.d.ts +80 -0
  125. package/lib/incident-type/index.js +176 -0
  126. package/lib/incident-type-custom-field/index.d.ts +117 -0
  127. package/lib/incident-type-custom-field/index.js +265 -0
  128. package/lib/incident-workflow/index.d.ts +378 -0
  129. package/lib/incident-workflow/index.js +943 -0
  130. package/lib/incident-workflow-trigger/index.d.ts +133 -0
  131. package/lib/incident-workflow-trigger/index.js +314 -0
  132. package/lib/index.d.ts +91 -0
  133. package/lib/index.js +97 -0
  134. package/lib/jira-cloud-account-mapping-rule/index.d.ts +559 -0
  135. package/lib/jira-cloud-account-mapping-rule/index.js +1578 -0
  136. package/lib/lazy-index.d.ts +4 -0
  137. package/lib/lazy-index.js +94 -0
  138. package/lib/maintenance-window/index.d.ts +81 -0
  139. package/lib/maintenance-window/index.js +168 -0
  140. package/lib/provider/index.d.ts +128 -0
  141. package/lib/provider/index.js +279 -0
  142. package/lib/response-play/index.d.ts +426 -0
  143. package/lib/response-play/index.js +1009 -0
  144. package/lib/ruleset/index.d.ts +94 -0
  145. package/lib/ruleset/index.js +215 -0
  146. package/lib/ruleset-rule/index.d.ts +1026 -0
  147. package/lib/ruleset-rule/index.js +2670 -0
  148. package/lib/schedule/index.d.ts +299 -0
  149. package/lib/schedule/index.js +740 -0
  150. package/lib/service/index.d.ts +592 -0
  151. package/lib/service/index.js +1608 -0
  152. package/lib/service-custom-field/index.d.ts +174 -0
  153. package/lib/service-custom-field/index.js +379 -0
  154. package/lib/service-custom-field-value/index.d.ts +117 -0
  155. package/lib/service-custom-field-value/index.js +269 -0
  156. package/lib/service-dependency/index.d.ts +216 -0
  157. package/lib/service-dependency/index.js +525 -0
  158. package/lib/service-event-rule/index.d.ts +964 -0
  159. package/lib/service-event-rule/index.js +2512 -0
  160. package/lib/service-integration/index.d.ts +546 -0
  161. package/lib/service-integration/index.js +1404 -0
  162. package/lib/slack-connection/index.d.ts +159 -0
  163. package/lib/slack-connection/index.js +369 -0
  164. package/lib/tag/index.d.ts +47 -0
  165. package/lib/tag/index.js +105 -0
  166. package/lib/tag-assignment/index.d.ts +61 -0
  167. package/lib/tag-assignment/index.js +130 -0
  168. package/lib/team/index.d.ts +73 -0
  169. package/lib/team/index.js +161 -0
  170. package/lib/team-membership/index.d.ts +62 -0
  171. package/lib/team-membership/index.js +136 -0
  172. package/lib/user/index.d.ts +130 -0
  173. package/lib/user/index.js +291 -0
  174. package/lib/user-contact-method/index.d.ts +98 -0
  175. package/lib/user-contact-method/index.js +219 -0
  176. package/lib/user-handoff-notification-rule/index.d.ts +131 -0
  177. package/lib/user-handoff-notification-rule/index.js +285 -0
  178. package/lib/user-notification-rule/index.d.ts +105 -0
  179. package/lib/user-notification-rule/index.js +258 -0
  180. package/lib/webhook-subscription/index.d.ts +276 -0
  181. package/lib/webhook-subscription/index.js +664 -0
  182. package/package.json +155 -0
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Copyright IBM Corp. 2021, 2026
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import { Construct } from 'constructs';
6
+ import * as cdktn from 'cdktn';
7
+ export interface EventRuleConfig extends cdktn.TerraformMetaArguments {
8
+ /**
9
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule#action_json EventRule#action_json}
10
+ */
11
+ readonly actionJson: string;
12
+ /**
13
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule#advanced_condition_json EventRule#advanced_condition_json}
14
+ */
15
+ readonly advancedConditionJson?: string;
16
+ /**
17
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule#condition_json EventRule#condition_json}
18
+ */
19
+ readonly conditionJson: string;
20
+ /**
21
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule#id EventRule#id}
22
+ *
23
+ * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
24
+ * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
25
+ */
26
+ readonly id?: string;
27
+ }
28
+ /**
29
+ * Represents a {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule pagerduty_event_rule}
30
+ */
31
+ export declare class EventRule extends cdktn.TerraformResource {
32
+ static readonly tfResourceType = "pagerduty_event_rule";
33
+ /**
34
+ * Generates CDKTN code for importing a EventRule resource upon running "cdktn plan <stack-name>"
35
+ * @param scope The scope in which to define this construct
36
+ * @param importToId The construct id used in the generated config for the EventRule to import
37
+ * @param importFromId The id of the existing EventRule that should be imported. Refer to the {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule#import import section} in the documentation of this resource for the id to use
38
+ * @param provider? Optional instance of the provider where the EventRule to import is found
39
+ */
40
+ static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider): cdktn.ImportableResource;
41
+ /**
42
+ * Create a new {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule pagerduty_event_rule} Resource
43
+ *
44
+ * @param scope The scope in which to define this construct
45
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
46
+ * @param options EventRuleConfig
47
+ */
48
+ constructor(scope: Construct, id: string, config: EventRuleConfig);
49
+ private _actionJson?;
50
+ get actionJson(): string;
51
+ set actionJson(value: string);
52
+ get actionJsonInput(): string | undefined;
53
+ private _advancedConditionJson?;
54
+ get advancedConditionJson(): string;
55
+ set advancedConditionJson(value: string);
56
+ resetAdvancedConditionJson(): void;
57
+ get advancedConditionJsonInput(): string | undefined;
58
+ get catchAll(): cdktn.IResolvable;
59
+ private _conditionJson?;
60
+ get conditionJson(): string;
61
+ set conditionJson(value: string);
62
+ get conditionJsonInput(): string | undefined;
63
+ private _id?;
64
+ get id(): string;
65
+ set id(value: string);
66
+ resetId(): void;
67
+ get idInput(): string | undefined;
68
+ protected synthesizeAttributes(): {
69
+ [name: string]: any;
70
+ };
71
+ protected synthesizeHclAttributes(): {
72
+ [name: string]: any;
73
+ };
74
+ }
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.EventRule = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdktn = require("cdktn");
7
+ /**
8
+ * Represents a {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule pagerduty_event_rule}
9
+ */
10
+ class EventRule extends cdktn.TerraformResource {
11
+ // ==============
12
+ // STATIC Methods
13
+ // ==============
14
+ /**
15
+ * Generates CDKTN code for importing a EventRule resource upon running "cdktn plan <stack-name>"
16
+ * @param scope The scope in which to define this construct
17
+ * @param importToId The construct id used in the generated config for the EventRule to import
18
+ * @param importFromId The id of the existing EventRule that should be imported. Refer to the {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule#import import section} in the documentation of this resource for the id to use
19
+ * @param provider? Optional instance of the provider where the EventRule to import is found
20
+ */
21
+ static generateConfigForImport(scope, importToId, importFromId, provider) {
22
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "pagerduty_event_rule", importId: importFromId, provider });
23
+ }
24
+ // ===========
25
+ // INITIALIZER
26
+ // ===========
27
+ /**
28
+ * Create a new {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/event_rule pagerduty_event_rule} Resource
29
+ *
30
+ * @param scope The scope in which to define this construct
31
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
32
+ * @param options EventRuleConfig
33
+ */
34
+ constructor(scope, id, config) {
35
+ super(scope, id, {
36
+ terraformResourceType: 'pagerduty_event_rule',
37
+ terraformGeneratorMetadata: {
38
+ providerName: 'pagerduty',
39
+ providerVersion: '3.31.0',
40
+ providerVersionConstraint: '~> 3.0'
41
+ },
42
+ provider: config.provider,
43
+ dependsOn: config.dependsOn,
44
+ count: config.count,
45
+ lifecycle: config.lifecycle,
46
+ provisioners: config.provisioners,
47
+ connection: config.connection,
48
+ forEach: config.forEach
49
+ });
50
+ this._actionJson = config.actionJson;
51
+ this._advancedConditionJson = config.advancedConditionJson;
52
+ this._conditionJson = config.conditionJson;
53
+ this._id = config.id;
54
+ }
55
+ get actionJson() {
56
+ return this.getStringAttribute('action_json');
57
+ }
58
+ set actionJson(value) {
59
+ this._actionJson = value;
60
+ }
61
+ // Temporarily expose input value. Use with caution.
62
+ get actionJsonInput() {
63
+ return this._actionJson;
64
+ }
65
+ get advancedConditionJson() {
66
+ return this.getStringAttribute('advanced_condition_json');
67
+ }
68
+ set advancedConditionJson(value) {
69
+ this._advancedConditionJson = value;
70
+ }
71
+ resetAdvancedConditionJson() {
72
+ this._advancedConditionJson = undefined;
73
+ }
74
+ // Temporarily expose input value. Use with caution.
75
+ get advancedConditionJsonInput() {
76
+ return this._advancedConditionJson;
77
+ }
78
+ // catch_all - computed: true, optional: false, required: false
79
+ get catchAll() {
80
+ return this.getBooleanAttribute('catch_all');
81
+ }
82
+ get conditionJson() {
83
+ return this.getStringAttribute('condition_json');
84
+ }
85
+ set conditionJson(value) {
86
+ this._conditionJson = value;
87
+ }
88
+ // Temporarily expose input value. Use with caution.
89
+ get conditionJsonInput() {
90
+ return this._conditionJson;
91
+ }
92
+ get id() {
93
+ return this.getStringAttribute('id');
94
+ }
95
+ set id(value) {
96
+ this._id = value;
97
+ }
98
+ resetId() {
99
+ this._id = undefined;
100
+ }
101
+ // Temporarily expose input value. Use with caution.
102
+ get idInput() {
103
+ return this._id;
104
+ }
105
+ // =========
106
+ // SYNTHESIS
107
+ // =========
108
+ synthesizeAttributes() {
109
+ return {
110
+ action_json: cdktn.stringToTerraform(this._actionJson),
111
+ advanced_condition_json: cdktn.stringToTerraform(this._advancedConditionJson),
112
+ condition_json: cdktn.stringToTerraform(this._conditionJson),
113
+ id: cdktn.stringToTerraform(this._id),
114
+ };
115
+ }
116
+ synthesizeHclAttributes() {
117
+ const attrs = {
118
+ action_json: {
119
+ value: cdktn.stringToHclTerraform(this._actionJson),
120
+ isBlock: false,
121
+ type: "simple",
122
+ storageClassType: "string",
123
+ },
124
+ advanced_condition_json: {
125
+ value: cdktn.stringToHclTerraform(this._advancedConditionJson),
126
+ isBlock: false,
127
+ type: "simple",
128
+ storageClassType: "string",
129
+ },
130
+ condition_json: {
131
+ value: cdktn.stringToHclTerraform(this._conditionJson),
132
+ isBlock: false,
133
+ type: "simple",
134
+ storageClassType: "string",
135
+ },
136
+ id: {
137
+ value: cdktn.stringToHclTerraform(this._id),
138
+ isBlock: false,
139
+ type: "simple",
140
+ storageClassType: "string",
141
+ },
142
+ };
143
+ // remove undefined attributes
144
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
145
+ }
146
+ }
147
+ exports.EventRule = EventRule;
148
+ _a = JSII_RTTI_SYMBOL_1;
149
+ EventRule[_a] = { fqn: "@cdktn/provider-pagerduty.eventRule.EventRule", version: "15.0.0" };
150
+ // =================
151
+ // STATIC PROPERTIES
152
+ // =================
153
+ EventRule.tfResourceType = "pagerduty_event_rule";
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnQtcnVsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVNBLCtCQUErQjtBQTBCL0I7O0VBRUU7QUFDRixNQUFhLFNBQVUsU0FBUSxLQUFLLENBQUMsaUJBQWlCO0lBT3BELGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCOzs7Ozs7TUFNRTtJQUNLLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFnQixFQUFFLFVBQWtCLEVBQUUsWUFBb0IsRUFBRSxRQUFrQztRQUM5SCxPQUFPLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUksQ0FBQztJQUVMLGNBQWM7SUFDZCxjQUFjO0lBQ2QsY0FBYztJQUVkOzs7Ozs7TUFNRTtJQUNGLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQXVCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YscUJBQXFCLEVBQUUsc0JBQXNCO1lBQzdDLDBCQUEwQixFQUFFO2dCQUMxQixZQUFZLEVBQUUsV0FBVztnQkFDekIsZUFBZSxFQUFFLFFBQVE7Z0JBQ3pCLHlCQUF5QixFQUFFLFFBQVE7YUFDcEM7WUFDRCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ2pDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FDeEIsQ0FB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QUFLLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztnQkFDOUQsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsZ0JBQWdCLEVBQUUsUUFBUTthQUMzQjtZQUNELGNBQWMsRUFBRTtnQkFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQ3RELE9BQU8sRUFBRSxLQUFLO2dCQUNkLElBQUksRUFBRSxRQUFRO2dCQUNkLGdCQUFnQixFQUFFLFFBQVE7YUFDM0I7WUFDRCxFQUFFLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUMzQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxnQkFBZ0IsRUFBRSxRQUFRO2FBQzNCO1NBQ0YsQ0FBQztRQUVGLDhCQUE4QjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBRSxDQUFDLENBQUE7SUFDNUgsQ0FBQzs7QUFwS0gsOEJBcUtDOzs7QUFuS0Msb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDRyx3QkFBYyxHQUFHLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMjEsIDIwMjZcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuLy8gaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL2V2ZW50X3J1bGVcbi8vIGdlbmVyYXRlZCBmcm9tIHRlcnJhZm9ybSByZXNvdXJjZSBzY2hlbWFcblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBjZGt0biBmcm9tICdjZGt0bic7XG5cbi8vIENvbmZpZ3VyYXRpb25cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFJ1bGVDb25maWcgZXh0ZW5kcyBjZGt0bi5UZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvZXZlbnRfcnVsZSNhY3Rpb25fanNvbiBFdmVudFJ1bGUjYWN0aW9uX2pzb259XG4gICovXG4gIHJlYWRvbmx5IGFjdGlvbkpzb246IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvZXZlbnRfcnVsZSNhZHZhbmNlZF9jb25kaXRpb25fanNvbiBFdmVudFJ1bGUjYWR2YW5jZWRfY29uZGl0aW9uX2pzb259XG4gICovXG4gIHJlYWRvbmx5IGFkdmFuY2VkQ29uZGl0aW9uSnNvbj86IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvZXZlbnRfcnVsZSNjb25kaXRpb25fanNvbiBFdmVudFJ1bGUjY29uZGl0aW9uX2pzb259XG4gICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbkpzb246IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvZXZlbnRfcnVsZSNpZCBFdmVudFJ1bGUjaWR9XG4gICpcbiAgKiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB0aGUgaWQgZmllbGQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbGwgcmVzb3VyY2VzIGluIFRlcnJhZm9ybSBwcm92aWRlcnMgdXNpbmcgYSBUZXJyYWZvcm0gcHJvdmlkZXIgU0RLIHZlcnNpb24gYmVsb3cgMi5cbiAgKiBJZiB5b3UgZXhwZXJpZW5jZSBwcm9ibGVtcyBzZXR0aW5nIHRoaXMgdmFsdWUgaXQgbWlnaHQgbm90IGJlIHNldHRhYmxlLiBQbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhlIHByb3ZpZGVyIGRvY3VtZW50YXRpb24gdG8gZW5zdXJlIGl0IHNob3VsZCBiZSBzZXR0YWJsZS5cbiAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuKiBSZXByZXNlbnRzIGEge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9ldmVudF9ydWxlIHBhZ2VyZHV0eV9ldmVudF9ydWxlfVxuKi9cbmV4cG9ydCBjbGFzcyBFdmVudFJ1bGUgZXh0ZW5kcyBjZGt0bi5UZXJyYWZvcm1SZXNvdXJjZSB7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwicGFnZXJkdXR5X2V2ZW50X3J1bGVcIjtcblxuICAvLyA9PT09PT09PT09PT09PVxuICAvLyBTVEFUSUMgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PVxuICAvKipcbiAgKiBHZW5lcmF0ZXMgQ0RLVE4gY29kZSBmb3IgaW1wb3J0aW5nIGEgRXZlbnRSdWxlIHJlc291cmNlIHVwb24gcnVubmluZyBcImNka3RuIHBsYW4gPHN0YWNrLW5hbWU+XCJcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpbXBvcnRUb0lkIFRoZSBjb25zdHJ1Y3QgaWQgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvbmZpZyBmb3IgdGhlIEV2ZW50UnVsZSB0byBpbXBvcnRcbiAgKiBAcGFyYW0gaW1wb3J0RnJvbUlkIFRoZSBpZCBvZiB0aGUgZXhpc3RpbmcgRXZlbnRSdWxlIHRoYXQgc2hvdWxkIGJlIGltcG9ydGVkLiBSZWZlciB0byB0aGUge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9ldmVudF9ydWxlI2ltcG9ydCBpbXBvcnQgc2VjdGlvbn0gaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyByZXNvdXJjZSBmb3IgdGhlIGlkIHRvIHVzZVxuICAqIEBwYXJhbSBwcm92aWRlcj8gT3B0aW9uYWwgaW5zdGFuY2Ugb2YgdGhlIHByb3ZpZGVyIHdoZXJlIHRoZSBFdmVudFJ1bGUgdG8gaW1wb3J0IGlzIGZvdW5kXG4gICovXG4gIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVDb25maWdGb3JJbXBvcnQoc2NvcGU6IENvbnN0cnVjdCwgaW1wb3J0VG9JZDogc3RyaW5nLCBpbXBvcnRGcm9tSWQ6IHN0cmluZywgcHJvdmlkZXI/OiBjZGt0bi5UZXJyYWZvcm1Qcm92aWRlcikge1xuICAgICAgICByZXR1cm4gbmV3IGNka3RuLkltcG9ydGFibGVSZXNvdXJjZShzY29wZSwgaW1wb3J0VG9JZCwgeyB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IFwicGFnZXJkdXR5X2V2ZW50X3J1bGVcIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9ldmVudF9ydWxlIHBhZ2VyZHV0eV9ldmVudF9ydWxlfSBSZXNvdXJjZVxuICAqXG4gICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgKiBAcGFyYW0gaWQgVGhlIHNjb3BlZCBjb25zdHJ1Y3QgSUQuIE11c3QgYmUgdW5pcXVlIGFtb25nc3Qgc2libGluZ3MgaW4gdGhlIHNhbWUgc2NvcGVcbiAgKiBAcGFyYW0gb3B0aW9ucyBFdmVudFJ1bGVDb25maWdcbiAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogRXZlbnRSdWxlQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICdwYWdlcmR1dHlfZXZlbnRfcnVsZScsXG4gICAgICB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YToge1xuICAgICAgICBwcm92aWRlck5hbWU6ICdwYWdlcmR1dHknLFxuICAgICAgICBwcm92aWRlclZlcnNpb246ICczLjMxLjAnLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiAnfj4gMy4wJ1xuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiBjb25maWcucHJvdmlkZXIsXG4gICAgICBkZXBlbmRzT246IGNvbmZpZy5kZXBlbmRzT24sXG4gICAgICBjb3VudDogY29uZmlnLmNvdW50LFxuICAgICAgbGlmZWN5Y2xlOiBjb25maWcubGlmZWN5Y2xlLFxuICAgICAgcHJvdmlzaW9uZXJzOiBjb25maWcucHJvdmlzaW9uZXJzLFxuICAgICAgY29ubmVjdGlvbjogY29uZmlnLmNvbm5lY3Rpb24sXG4gICAgICBmb3JFYWNoOiBjb25maWcuZm9yRWFjaFxuICAgIH0pO1xuICAgIHRoaXMuX2FjdGlvbkpzb24gPSBjb25maWcuYWN0aW9uSnNvbjtcbiAgICB0aGlzLl9hZHZhbmNlZENvbmRpdGlvbkpzb24gPSBjb25maWcuYWR2YW5jZWRDb25kaXRpb25Kc29uO1xuICAgIHRoaXMuX2NvbmRpdGlvbkpzb24gPSBjb25maWcuY29uZGl0aW9uSnNvbjtcbiAgICB0aGlzLl9pZCA9IGNvbmZpZy5pZDtcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gYWN0aW9uX2pzb24gLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfYWN0aW9uSnNvbj86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgYWN0aW9uSnNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2FjdGlvbl9qc29uJyk7XG4gIH1cbiAgcHVibGljIHNldCBhY3Rpb25Kc29uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hY3Rpb25Kc29uID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGFjdGlvbkpzb25JbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uSnNvbjtcbiAgfVxuXG4gIC8vIGFkdmFuY2VkX2NvbmRpdGlvbl9qc29uIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2FkdmFuY2VkQ29uZGl0aW9uSnNvbj86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgYWR2YW5jZWRDb25kaXRpb25Kc29uKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnYWR2YW5jZWRfY29uZGl0aW9uX2pzb24nKTtcbiAgfVxuICBwdWJsaWMgc2V0IGFkdmFuY2VkQ29uZGl0aW9uSnNvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYWR2YW5jZWRDb25kaXRpb25Kc29uID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0QWR2YW5jZWRDb25kaXRpb25Kc29uKCkge1xuICAgIHRoaXMuX2FkdmFuY2VkQ29uZGl0aW9uSnNvbiA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgYWR2YW5jZWRDb25kaXRpb25Kc29uSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkdmFuY2VkQ29uZGl0aW9uSnNvbjtcbiAgfVxuXG4gIC8vIGNhdGNoX2FsbCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZVxuICBwdWJsaWMgZ2V0IGNhdGNoQWxsKCkge1xuICAgIHJldHVybiB0aGlzLmdldEJvb2xlYW5BdHRyaWJ1dGUoJ2NhdGNoX2FsbCcpO1xuICB9XG5cbiAgLy8gY29uZGl0aW9uX2pzb24gLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfY29uZGl0aW9uSnNvbj86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgY29uZGl0aW9uSnNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2NvbmRpdGlvbl9qc29uJyk7XG4gIH1cbiAgcHVibGljIHNldCBjb25kaXRpb25Kc29uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb25kaXRpb25Kc29uID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGNvbmRpdGlvbkpzb25JbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZGl0aW9uSnNvbjtcbiAgfVxuXG4gIC8vIGlkIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaWQ/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldElkKCkge1xuICAgIHRoaXMuX2lkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIC8vID09PT09PT09PVxuICAvLyBTWU5USEVTSVNcbiAgLy8gPT09PT09PT09XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uX2pzb246IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2FjdGlvbkpzb24pLFxuICAgICAgYWR2YW5jZWRfY29uZGl0aW9uX2pzb246IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2FkdmFuY2VkQ29uZGl0aW9uSnNvbiksXG4gICAgICBjb25kaXRpb25fanNvbjogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fY29uZGl0aW9uSnNvbiksXG4gICAgICBpZDogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5faWQpLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IGF0dHJzID0ge1xuICAgICAgYWN0aW9uX2pzb246IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2FjdGlvbkpzb24pLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBhZHZhbmNlZF9jb25kaXRpb25fanNvbjoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fYWR2YW5jZWRDb25kaXRpb25Kc29uKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgY29uZGl0aW9uX2pzb246IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2NvbmRpdGlvbkpzb24pLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBpZDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5faWQpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIHJlbW92ZSB1bmRlZmluZWQgYXR0cmlidXRlc1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICkpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Copyright IBM Corp. 2021, 2026
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import { Construct } from 'constructs';
6
+ import * as cdktn from 'cdktn';
7
+ export interface ExtensionConfig extends cdktn.TerraformMetaArguments {
8
+ /**
9
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension#config Extension#config}
10
+ */
11
+ readonly config?: string;
12
+ /**
13
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension#endpoint_url Extension#endpoint_url}
14
+ */
15
+ readonly endpointUrl?: string;
16
+ /**
17
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension#extension_objects Extension#extension_objects}
18
+ */
19
+ readonly extensionObjects: string[];
20
+ /**
21
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension#extension_schema Extension#extension_schema}
22
+ */
23
+ readonly extensionSchema: string;
24
+ /**
25
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension#name Extension#name}
26
+ */
27
+ readonly name?: string;
28
+ /**
29
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension#type Extension#type}
30
+ */
31
+ readonly type?: string;
32
+ }
33
+ /**
34
+ * Represents a {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension pagerduty_extension}
35
+ */
36
+ export declare class Extension extends cdktn.TerraformResource {
37
+ static readonly tfResourceType = "pagerduty_extension";
38
+ /**
39
+ * Generates CDKTN code for importing a Extension resource upon running "cdktn plan <stack-name>"
40
+ * @param scope The scope in which to define this construct
41
+ * @param importToId The construct id used in the generated config for the Extension to import
42
+ * @param importFromId The id of the existing Extension that should be imported. Refer to the {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension#import import section} in the documentation of this resource for the id to use
43
+ * @param provider? Optional instance of the provider where the Extension to import is found
44
+ */
45
+ static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider): cdktn.ImportableResource;
46
+ /**
47
+ * Create a new {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension pagerduty_extension} Resource
48
+ *
49
+ * @param scope The scope in which to define this construct
50
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
51
+ * @param options ExtensionConfig
52
+ */
53
+ constructor(scope: Construct, id: string, config: ExtensionConfig);
54
+ private _config?;
55
+ get config(): string;
56
+ set config(value: string);
57
+ resetConfig(): void;
58
+ get configInput(): string | undefined;
59
+ private _endpointUrl?;
60
+ get endpointUrl(): string;
61
+ set endpointUrl(value: string);
62
+ resetEndpointUrl(): void;
63
+ get endpointUrlInput(): string | undefined;
64
+ private _extensionObjects?;
65
+ get extensionObjects(): string[];
66
+ set extensionObjects(value: string[]);
67
+ get extensionObjectsInput(): string[] | undefined;
68
+ private _extensionSchema?;
69
+ get extensionSchema(): string;
70
+ set extensionSchema(value: string);
71
+ get extensionSchemaInput(): string | undefined;
72
+ get htmlUrl(): string;
73
+ get id(): string;
74
+ private _name?;
75
+ get name(): string;
76
+ set name(value: string);
77
+ resetName(): void;
78
+ get nameInput(): string | undefined;
79
+ get summary(): string;
80
+ private _type?;
81
+ get type(): string;
82
+ set type(value: string);
83
+ resetType(): void;
84
+ get typeInput(): string | undefined;
85
+ protected synthesizeAttributes(): {
86
+ [name: string]: any;
87
+ };
88
+ protected synthesizeHclAttributes(): {
89
+ [name: string]: any;
90
+ };
91
+ }
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Extension = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdktn = require("cdktn");
7
+ /**
8
+ * Represents a {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension pagerduty_extension}
9
+ */
10
+ class Extension extends cdktn.TerraformResource {
11
+ // ==============
12
+ // STATIC Methods
13
+ // ==============
14
+ /**
15
+ * Generates CDKTN code for importing a Extension resource upon running "cdktn plan <stack-name>"
16
+ * @param scope The scope in which to define this construct
17
+ * @param importToId The construct id used in the generated config for the Extension to import
18
+ * @param importFromId The id of the existing Extension that should be imported. Refer to the {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension#import import section} in the documentation of this resource for the id to use
19
+ * @param provider? Optional instance of the provider where the Extension to import is found
20
+ */
21
+ static generateConfigForImport(scope, importToId, importFromId, provider) {
22
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "pagerduty_extension", importId: importFromId, provider });
23
+ }
24
+ // ===========
25
+ // INITIALIZER
26
+ // ===========
27
+ /**
28
+ * Create a new {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/extension pagerduty_extension} Resource
29
+ *
30
+ * @param scope The scope in which to define this construct
31
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
32
+ * @param options ExtensionConfig
33
+ */
34
+ constructor(scope, id, config) {
35
+ super(scope, id, {
36
+ terraformResourceType: 'pagerduty_extension',
37
+ terraformGeneratorMetadata: {
38
+ providerName: 'pagerduty',
39
+ providerVersion: '3.31.0',
40
+ providerVersionConstraint: '~> 3.0'
41
+ },
42
+ provider: config.provider,
43
+ dependsOn: config.dependsOn,
44
+ count: config.count,
45
+ lifecycle: config.lifecycle,
46
+ provisioners: config.provisioners,
47
+ connection: config.connection,
48
+ forEach: config.forEach
49
+ });
50
+ this._config = config.config;
51
+ this._endpointUrl = config.endpointUrl;
52
+ this._extensionObjects = config.extensionObjects;
53
+ this._extensionSchema = config.extensionSchema;
54
+ this._name = config.name;
55
+ this._type = config.type;
56
+ }
57
+ get config() {
58
+ return this.getStringAttribute('config');
59
+ }
60
+ set config(value) {
61
+ this._config = value;
62
+ }
63
+ resetConfig() {
64
+ this._config = undefined;
65
+ }
66
+ // Temporarily expose input value. Use with caution.
67
+ get configInput() {
68
+ return this._config;
69
+ }
70
+ get endpointUrl() {
71
+ return this.getStringAttribute('endpoint_url');
72
+ }
73
+ set endpointUrl(value) {
74
+ this._endpointUrl = value;
75
+ }
76
+ resetEndpointUrl() {
77
+ this._endpointUrl = undefined;
78
+ }
79
+ // Temporarily expose input value. Use with caution.
80
+ get endpointUrlInput() {
81
+ return this._endpointUrl;
82
+ }
83
+ get extensionObjects() {
84
+ return cdktn.Fn.tolist(this.getListAttribute('extension_objects'));
85
+ }
86
+ set extensionObjects(value) {
87
+ this._extensionObjects = value;
88
+ }
89
+ // Temporarily expose input value. Use with caution.
90
+ get extensionObjectsInput() {
91
+ return this._extensionObjects;
92
+ }
93
+ get extensionSchema() {
94
+ return this.getStringAttribute('extension_schema');
95
+ }
96
+ set extensionSchema(value) {
97
+ this._extensionSchema = value;
98
+ }
99
+ // Temporarily expose input value. Use with caution.
100
+ get extensionSchemaInput() {
101
+ return this._extensionSchema;
102
+ }
103
+ // html_url - computed: true, optional: false, required: false
104
+ get htmlUrl() {
105
+ return this.getStringAttribute('html_url');
106
+ }
107
+ // id - computed: true, optional: false, required: false
108
+ get id() {
109
+ return this.getStringAttribute('id');
110
+ }
111
+ get name() {
112
+ return this.getStringAttribute('name');
113
+ }
114
+ set name(value) {
115
+ this._name = value;
116
+ }
117
+ resetName() {
118
+ this._name = undefined;
119
+ }
120
+ // Temporarily expose input value. Use with caution.
121
+ get nameInput() {
122
+ return this._name;
123
+ }
124
+ // summary - computed: true, optional: false, required: false
125
+ get summary() {
126
+ return this.getStringAttribute('summary');
127
+ }
128
+ get type() {
129
+ return this.getStringAttribute('type');
130
+ }
131
+ set type(value) {
132
+ this._type = value;
133
+ }
134
+ resetType() {
135
+ this._type = undefined;
136
+ }
137
+ // Temporarily expose input value. Use with caution.
138
+ get typeInput() {
139
+ return this._type;
140
+ }
141
+ // =========
142
+ // SYNTHESIS
143
+ // =========
144
+ synthesizeAttributes() {
145
+ return {
146
+ config: cdktn.stringToTerraform(this._config),
147
+ endpoint_url: cdktn.stringToTerraform(this._endpointUrl),
148
+ extension_objects: cdktn.listMapper(cdktn.stringToTerraform, false)(this._extensionObjects),
149
+ extension_schema: cdktn.stringToTerraform(this._extensionSchema),
150
+ name: cdktn.stringToTerraform(this._name),
151
+ type: cdktn.stringToTerraform(this._type),
152
+ };
153
+ }
154
+ synthesizeHclAttributes() {
155
+ const attrs = {
156
+ config: {
157
+ value: cdktn.stringToHclTerraform(this._config),
158
+ isBlock: false,
159
+ type: "simple",
160
+ storageClassType: "string",
161
+ },
162
+ endpoint_url: {
163
+ value: cdktn.stringToHclTerraform(this._endpointUrl),
164
+ isBlock: false,
165
+ type: "simple",
166
+ storageClassType: "string",
167
+ },
168
+ extension_objects: {
169
+ value: cdktn.listMapperHcl(cdktn.stringToHclTerraform, false)(this._extensionObjects),
170
+ isBlock: false,
171
+ type: "set",
172
+ storageClassType: "stringList",
173
+ },
174
+ extension_schema: {
175
+ value: cdktn.stringToHclTerraform(this._extensionSchema),
176
+ isBlock: false,
177
+ type: "simple",
178
+ storageClassType: "string",
179
+ },
180
+ name: {
181
+ value: cdktn.stringToHclTerraform(this._name),
182
+ isBlock: false,
183
+ type: "simple",
184
+ storageClassType: "string",
185
+ },
186
+ type: {
187
+ value: cdktn.stringToHclTerraform(this._type),
188
+ isBlock: false,
189
+ type: "simple",
190
+ storageClassType: "string",
191
+ },
192
+ };
193
+ // remove undefined attributes
194
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
195
+ }
196
+ }
197
+ exports.Extension = Extension;
198
+ _a = JSII_RTTI_SYMBOL_1;
199
+ Extension[_a] = { fqn: "@cdktn/provider-pagerduty.extension.Extension", version: "15.0.0" };
200
+ // =================
201
+ // STATIC PROPERTIES
202
+ // =================
203
+ Extension.tfResourceType = "pagerduty_extension";
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZW5zaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBU0EsK0JBQStCO0FBK0IvQjs7RUFFRTtBQUNGLE1BQWEsU0FBVSxTQUFRLEtBQUssQ0FBQyxpQkFBaUI7SUFPcEQsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakI7Ozs7OztNQU1FO0lBQ0ssTUFBTSxDQUFDLHVCQUF1QixDQUFDLEtBQWdCLEVBQUUsVUFBa0IsRUFBRSxZQUFvQixFQUFFLFFBQWtDO1FBQzlILE9BQU8sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM3SSxDQUFDO0lBRUwsY0FBYztJQUNkLGNBQWM7SUFDZCxjQUFjO0lBRWQ7Ozs7OztNQU1FO0lBQ0YsWUFBbUIsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsTUFBdUI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixxQkFBcUIsRUFBRSxxQkFBcUI7WUFDNUMsMEJBQTBCLEVBQUU7Z0JBQzFCLFlBQVksRUFBRSxXQUFXO2dCQUN6QixlQUFlLEVBQUUsUUFBUTtnQkFDekIseUJBQXlCLEVBQUUsUUFBUTthQUNwQztZQUNELFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDakMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztTQUN4QixDQUFD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LE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUUsQ0FBQyxDQUFBO0lBQzVILENBQUM7O0FBOU5ILDhCQStOQzs7O0FBN05DLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ0csd0JBQWMsR0FBRyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDIxLCAyMDI2XG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbi8vIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9leHRlbnNpb25cbi8vIGdlbmVyYXRlZCBmcm9tIHRlcnJhZm9ybSByZXNvdXJjZSBzY2hlbWFcblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBjZGt0biBmcm9tICdjZGt0bic7XG5cbi8vIENvbmZpZ3VyYXRpb25cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Db25maWcgZXh0ZW5kcyBjZGt0bi5UZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvZXh0ZW5zaW9uI2NvbmZpZyBFeHRlbnNpb24jY29uZmlnfVxuICAqL1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL2V4dGVuc2lvbiNlbmRwb2ludF91cmwgRXh0ZW5zaW9uI2VuZHBvaW50X3VybH1cbiAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnRVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL2V4dGVuc2lvbiNleHRlbnNpb25fb2JqZWN0cyBFeHRlbnNpb24jZXh0ZW5zaW9uX29iamVjdHN9XG4gICovXG4gIHJlYWRvbmx5IGV4dGVuc2lvbk9iamVjdHM6IHN0cmluZ1tdO1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9leHRlbnNpb24jZXh0ZW5zaW9uX3NjaGVtYSBFeHRlbnNpb24jZXh0ZW5zaW9uX3NjaGVtYX1cbiAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uU2NoZW1hOiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL2V4dGVuc2lvbiNuYW1lIEV4dGVuc2lvbiNuYW1lfVxuICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9leHRlbnNpb24jdHlwZSBFeHRlbnNpb24jdHlwZX1cbiAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4qIFJlcHJlc2VudHMgYSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL2V4dGVuc2lvbiBwYWdlcmR1dHlfZXh0ZW5zaW9ufVxuKi9cbmV4cG9ydCBjbGFzcyBFeHRlbnNpb24gZXh0ZW5kcyBjZGt0bi5UZXJyYWZvcm1SZXNvdXJjZSB7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwicGFnZXJkdXR5X2V4dGVuc2lvblwiO1xuXG4gIC8vID09PT09PT09PT09PT09XG4gIC8vIFNUQVRJQyBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09XG4gIC8qKlxuICAqIEdlbmVyYXRlcyBDREtUTiBjb2RlIGZvciBpbXBvcnRpbmcgYSBFeHRlbnNpb24gcmVzb3VyY2UgdXBvbiBydW5uaW5nIFwiY2RrdG4gcGxhbiA8c3RhY2stbmFtZT5cIlxuICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICogQHBhcmFtIGltcG9ydFRvSWQgVGhlIGNvbnN0cnVjdCBpZCB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgY29uZmlnIGZvciB0aGUgRXh0ZW5zaW9uIHRvIGltcG9ydFxuICAqIEBwYXJhbSBpbXBvcnRGcm9tSWQgVGhlIGlkIG9mIHRoZSBleGlzdGluZyBFeHRlbnNpb24gdGhhdCBzaG91bGQgYmUgaW1wb3J0ZWQuIFJlZmVyIHRvIHRoZSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL2V4dGVuc2lvbiNpbXBvcnQgaW1wb3J0IHNlY3Rpb259IGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgcmVzb3VyY2UgZm9yIHRoZSBpZCB0byB1c2VcbiAgKiBAcGFyYW0gcHJvdmlkZXI/IE9wdGlvbmFsIGluc3RhbmNlIG9mIHRoZSBwcm92aWRlciB3aGVyZSB0aGUgRXh0ZW5zaW9uIHRvIGltcG9ydCBpcyBmb3VuZFxuICAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlQ29uZmlnRm9ySW1wb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIGltcG9ydFRvSWQ6IHN0cmluZywgaW1wb3J0RnJvbUlkOiBzdHJpbmcsIHByb3ZpZGVyPzogY2RrdG4uVGVycmFmb3JtUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBjZGt0bi5JbXBvcnRhYmxlUmVzb3VyY2Uoc2NvcGUsIGltcG9ydFRvSWQsIHsgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBcInBhZ2VyZHV0eV9leHRlbnNpb25cIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9leHRlbnNpb24gcGFnZXJkdXR5X2V4dGVuc2lvbn0gUmVzb3VyY2VcbiAgKlxuICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICogQHBhcmFtIGlkIFRoZSBzY29wZWQgY29uc3RydWN0IElELiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHNpYmxpbmdzIGluIHRoZSBzYW1lIHNjb3BlXG4gICogQHBhcmFtIG9wdGlvbnMgRXh0ZW5zaW9uQ29uZmlnXG4gICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IEV4dGVuc2lvbkNvbmZpZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiAncGFnZXJkdXR5X2V4dGVuc2lvbicsXG4gICAgICB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YToge1xuICAgICAgICBwcm92aWRlck5hbWU6ICdwYWdlcmR1dHknLFxuICAgICAgICBwcm92aWRlclZlcnNpb246ICczLjMxLjAnLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiAnfj4gMy4wJ1xuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiBjb25maWcucHJvdmlkZXIsXG4gICAgICBkZXBlbmRzT246IGNvbmZpZy5kZXBlbmRzT24sXG4gICAgICBjb3VudDogY29uZmlnLmNvdW50LFxuICAgICAgbGlmZWN5Y2xlOiBjb25maWcubGlmZWN5Y2xlLFxuICAgICAgcHJvdmlzaW9uZXJzOiBjb25maWcucHJvdmlzaW9uZXJzLFxuICAgICAgY29ubmVjdGlvbjogY29uZmlnLmNvbm5lY3Rpb24sXG4gICAgICBmb3JFYWNoOiBjb25maWcuZm9yRWFjaFxuICAgIH0pO1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZy5jb25maWc7XG4gICAgdGhpcy5fZW5kcG9pbnRVcmwgPSBjb25maWcuZW5kcG9pbnRVcmw7XG4gICAgdGhpcy5fZXh0ZW5zaW9uT2JqZWN0cyA9IGNvbmZpZy5leHRlbnNpb25PYmplY3RzO1xuICAgIHRoaXMuX2V4dGVuc2lvblNjaGVtYSA9IGNvbmZpZy5leHRlbnNpb25TY2hlbWE7XG4gICAgdGhpcy5fbmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuX3R5cGUgPSBjb25maWcudHlwZTtcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gY29uZmlnIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfY29uZmlnPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBjb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdjb25maWcnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGNvbmZpZyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29uZmlnID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0Q29uZmlnKCkge1xuICAgIHRoaXMuX2NvbmZpZyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgY29uZmlnSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIC8vIGVuZHBvaW50X3VybCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2VuZHBvaW50VXJsPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBlbmRwb2ludFVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2VuZHBvaW50X3VybCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgZW5kcG9pbnRVcmwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2VuZHBvaW50VXJsID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0RW5kcG9pbnRVcmwoKSB7XG4gICAgdGhpcy5fZW5kcG9pbnRVcmwgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGVuZHBvaW50VXJsSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZHBvaW50VXJsO1xuICB9XG5cbiAgLy8gZXh0ZW5zaW9uX29iamVjdHMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfZXh0ZW5zaW9uT2JqZWN0cz86IHN0cmluZ1tdOyBcbiAgcHVibGljIGdldCBleHRlbnNpb25PYmplY3RzKCkge1xuICAgIHJldHVybiBjZGt0bi5Gbi50b2xpc3QodGhpcy5nZXRMaXN0QXR0cmlidXRlKCdleHRlbnNpb25fb2JqZWN0cycpKTtcbiAgfVxuICBwdWJsaWMgc2V0IGV4dGVuc2lvbk9iamVjdHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fZXh0ZW5zaW9uT2JqZWN0cyA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBleHRlbnNpb25PYmplY3RzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVuc2lvbk9iamVjdHM7XG4gIH1cblxuICAvLyBleHRlbnNpb25fc2NoZW1hIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2V4dGVuc2lvblNjaGVtYT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgZXh0ZW5zaW9uU2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnZXh0ZW5zaW9uX3NjaGVtYScpO1xuICB9XG4gIHB1YmxpYyBzZXQgZXh0ZW5zaW9uU2NoZW1hKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9leHRlbnNpb25TY2hlbWEgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgZXh0ZW5zaW9uU2NoZW1hSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVuc2lvblNjaGVtYTtcbiAgfVxuXG4gIC8vIGh0bWxfdXJsIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHB1YmxpYyBnZXQgaHRtbFVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2h0bWxfdXJsJyk7XG4gIH1cblxuICAvLyBpZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZVxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnaWQnKTtcbiAgfVxuXG4gIC8vIG5hbWUgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9uYW1lPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnbmFtZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldE5hbWUoKSB7XG4gICAgdGhpcy5fbmFtZSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbmFtZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgLy8gc3VtbWFyeSAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZVxuICBwdWJsaWMgZ2V0IHN1bW1hcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdzdW1tYXJ5Jyk7XG4gIH1cblxuICAvLyB0eXBlIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfdHlwZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ3R5cGUnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRUeXBlKCkge1xuICAgIHRoaXMuX3R5cGUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHR5cGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIC8vID09PT09PT09PVxuICAvLyBTWU5USEVTSVNcbiAgLy8gPT09PT09PT09XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlnOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9jb25maWcpLFxuICAgICAgZW5kcG9pbnRfdXJsOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9lbmRwb2ludFVybCksXG4gICAgICBleHRlbnNpb25fb2JqZWN0czogY2RrdG4ubGlzdE1hcHBlcihjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX2V4dGVuc2lvbk9iamVjdHMpLFxuICAgICAgZXh0ZW5zaW9uX3NjaGVtYTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fZXh0ZW5zaW9uU2NoZW1hKSxcbiAgICAgIG5hbWU6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX25hbWUpLFxuICAgICAgdHlwZTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fdHlwZSksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgY29uc3QgYXR0cnMgPSB7XG4gICAgICBjb25maWc6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2NvbmZpZyksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIGVuZHBvaW50X3VybDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fZW5kcG9pbnRVcmwpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBleHRlbnNpb25fb2JqZWN0czoge1xuICAgICAgICB2YWx1ZTogY2RrdG4ubGlzdE1hcHBlckhjbChjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX2V4dGVuc2lvbk9iamVjdHMpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdMaXN0XCIsXG4gICAgICB9LFxuICAgICAgZXh0ZW5zaW9uX3NjaGVtYToge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fZXh0ZW5zaW9uU2NoZW1hKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgbmFtZToge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fbmFtZSksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX3R5cGUpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIHJlbW92ZSB1bmRlZmluZWQgYXR0cmlidXRlc1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICkpXG4gIH1cbn1cbiJdfQ==