@gravitee/ui-policy-studio-angular 15.13.0 → 16.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 (171) hide show
  1. package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs +1 -1
  2. package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  3. package/fesm2022/gravitee-ui-policy-studio-angular.mjs +92 -95
  4. package/fesm2022/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  5. package/index.d.ts +404 -3
  6. package/package.json +7 -11
  7. package/testing/index.d.ts +369 -3
  8. package/esm2022/gravitee-ui-policy-studio-angular.mjs +0 -5
  9. package/esm2022/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.mjs +0 -43
  10. package/esm2022/lib/components/flow-details/gio-ps-flow-details.component.mjs +0 -184
  11. package/esm2022/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +0 -115
  12. package/esm2022/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +0 -179
  13. package/esm2022/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +0 -162
  14. package/esm2022/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +0 -81
  15. package/esm2022/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +0 -109
  16. package/esm2022/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.component.mjs +0 -89
  17. package/esm2022/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.mjs +0 -135
  18. package/esm2022/lib/components/flow-form-dialog/gio-ps-flow-form-dialog-result.model.mjs +0 -2
  19. package/esm2022/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +0 -432
  20. package/esm2022/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +0 -165
  21. package/esm2022/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +0 -53
  22. package/esm2022/lib/components/step-form/gio-ps-step-form.component.mjs +0 -158
  23. package/esm2022/lib/models/ApiProtocolType.mjs +0 -17
  24. package/esm2022/lib/models/ApiType.mjs +0 -17
  25. package/esm2022/lib/models/ConnectorsInfo.mjs +0 -2
  26. package/esm2022/lib/models/PolicySchemaFetcher.mjs +0 -2
  27. package/esm2022/lib/models/SaveOutput.mjs +0 -2
  28. package/esm2022/lib/models/flow/Flow.mjs +0 -2
  29. package/esm2022/lib/models/flow/FlowExecution.mjs +0 -17
  30. package/esm2022/lib/models/flow/HttpMethod.mjs +0 -43
  31. package/esm2022/lib/models/flow/Selector.mjs +0 -2
  32. package/esm2022/lib/models/flow/Step.mjs +0 -2
  33. package/esm2022/lib/models/flow/index.mjs +0 -21
  34. package/esm2022/lib/models/index.mjs +0 -24
  35. package/esm2022/lib/models/plan/Plan.mjs +0 -17
  36. package/esm2022/lib/models/plan/index.mjs +0 -17
  37. package/esm2022/lib/models/policy/GenericPolicy.mjs +0 -24
  38. package/esm2022/lib/models/policy/Policy.mjs +0 -44
  39. package/esm2022/lib/models/policy/SharedPolicyGroupPolicy.mjs +0 -17
  40. package/esm2022/lib/models/policy/index.mjs +0 -19
  41. package/esm2022/lib/policy-group-studio/gio-policy-group-studio.component.mjs +0 -228
  42. package/esm2022/lib/policy-studio/gio-policy-studio.component.mjs +0 -304
  43. package/esm2022/lib/policy-studio/gio-policy-studio.model.mjs +0 -17
  44. package/esm2022/lib/policy-studio/gio-policy-studio.service.mjs +0 -74
  45. package/esm2022/public-api.mjs +0 -22
  46. package/esm2022/testing/gravitee-ui-policy-studio-angular-testing.mjs +0 -5
  47. package/esm2022/testing/lib/components/flow-details/gio-ps-flow-details.harness.mjs +0 -56
  48. package/esm2022/testing/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.harness.mjs +0 -35
  49. package/esm2022/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.mjs +0 -155
  50. package/esm2022/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.mjs +0 -69
  51. package/esm2022/testing/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.harness.mjs +0 -60
  52. package/esm2022/testing/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.harness.mjs +0 -128
  53. package/esm2022/testing/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.harness.mjs +0 -50
  54. package/esm2022/testing/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.harness.mjs +0 -98
  55. package/esm2022/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.mjs +0 -91
  56. package/esm2022/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.mjs +0 -87
  57. package/esm2022/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.mjs +0 -30
  58. package/esm2022/testing/lib/components/step-form/gio-ps-step-form.harness.mjs +0 -56
  59. package/esm2022/testing/lib/models/ApiProtocolType.mjs +0 -17
  60. package/esm2022/testing/lib/models/ApiType.mjs +0 -17
  61. package/esm2022/testing/lib/models/ConnectorsInfo.fixture.mjs +0 -182
  62. package/esm2022/testing/lib/models/ConnectorsInfo.mjs +0 -2
  63. package/esm2022/testing/lib/models/PolicySchemaFetcher.mjs +0 -2
  64. package/esm2022/testing/lib/models/SaveOutput.mjs +0 -2
  65. package/esm2022/testing/lib/models/flow/Flow.fixture.mjs +0 -122
  66. package/esm2022/testing/lib/models/flow/Flow.mjs +0 -2
  67. package/esm2022/testing/lib/models/flow/FlowExecution.fixture.mjs +0 -43
  68. package/esm2022/testing/lib/models/flow/FlowExecution.mjs +0 -17
  69. package/esm2022/testing/lib/models/flow/HttpMethod.mjs +0 -43
  70. package/esm2022/testing/lib/models/flow/Selector.mjs +0 -2
  71. package/esm2022/testing/lib/models/flow/Step.fixture.mjs +0 -92
  72. package/esm2022/testing/lib/models/flow/Step.mjs +0 -2
  73. package/esm2022/testing/lib/models/flow/index-testing.mjs +0 -19
  74. package/esm2022/testing/lib/models/flow/index.mjs +0 -21
  75. package/esm2022/testing/lib/models/index-testing.mjs +0 -20
  76. package/esm2022/testing/lib/models/index.mjs +0 -24
  77. package/esm2022/testing/lib/models/plan/Plan.fixture.mjs +0 -31
  78. package/esm2022/testing/lib/models/plan/Plan.mjs +0 -17
  79. package/esm2022/testing/lib/models/plan/index-testing.mjs +0 -17
  80. package/esm2022/testing/lib/models/plan/index.mjs +0 -17
  81. package/esm2022/testing/lib/models/policy/GenericPolicy.mjs +0 -24
  82. package/esm2022/testing/lib/models/policy/Policy.fixture.mjs +0 -194
  83. package/esm2022/testing/lib/models/policy/Policy.mjs +0 -44
  84. package/esm2022/testing/lib/models/policy/SharedPolicyGroupPolicy.mjs +0 -17
  85. package/esm2022/testing/lib/models/policy/index-testing.mjs +0 -17
  86. package/esm2022/testing/lib/models/policy/index.mjs +0 -19
  87. package/esm2022/testing/lib/policy-group-studio/gio-policy-group-studio.harness.mjs +0 -52
  88. package/esm2022/testing/lib/policy-studio/gio-policy-studio.harness.mjs +0 -202
  89. package/esm2022/testing/lib/policy-studio/gio-policy-studio.model.mjs +0 -17
  90. package/esm2022/testing/public-testing-api.mjs +0 -19
  91. package/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.d.ts +0 -8
  92. package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +0 -29
  93. package/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.d.ts +0 -20
  94. package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +0 -47
  95. package/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.d.ts +0 -33
  96. package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.d.ts +0 -18
  97. package/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.d.ts +0 -21
  98. package/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.component.d.ts +0 -21
  99. package/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.d.ts +0 -24
  100. package/lib/components/flow-form-dialog/gio-ps-flow-form-dialog-result.model.d.ts +0 -2
  101. package/lib/components/flows-menu/gio-ps-flows-menu.component.d.ts +0 -57
  102. package/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.d.ts +0 -47
  103. package/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.d.ts +0 -24
  104. package/lib/components/step-form/gio-ps-step-form.component.d.ts +0 -35
  105. package/lib/models/ApiProtocolType.d.ts +0 -1
  106. package/lib/models/ApiType.d.ts +0 -1
  107. package/lib/models/ConnectorsInfo.d.ts +0 -7
  108. package/lib/models/PolicySchemaFetcher.d.ts +0 -5
  109. package/lib/models/SaveOutput.d.ts +0 -7
  110. package/lib/models/flow/Flow.d.ts +0 -24
  111. package/lib/models/flow/FlowExecution.d.ts +0 -11
  112. package/lib/models/flow/HttpMethod.d.ts +0 -3
  113. package/lib/models/flow/Selector.d.ts +0 -37
  114. package/lib/models/flow/Step.d.ts +0 -34
  115. package/lib/models/flow/index.d.ts +0 -5
  116. package/lib/models/index.d.ts +0 -8
  117. package/lib/models/plan/Plan.d.ts +0 -6
  118. package/lib/models/plan/index.d.ts +0 -1
  119. package/lib/models/policy/GenericPolicy.d.ts +0 -22
  120. package/lib/models/policy/Policy.d.ts +0 -28
  121. package/lib/models/policy/SharedPolicyGroupPolicy.d.ts +0 -11
  122. package/lib/models/policy/index.d.ts +0 -3
  123. package/lib/policy-group-studio/gio-policy-group-studio.component.d.ts +0 -70
  124. package/lib/policy-studio/gio-policy-studio.component.d.ts +0 -98
  125. package/lib/policy-studio/gio-policy-studio.model.d.ts +0 -17
  126. package/lib/policy-studio/gio-policy-studio.service.d.ts +0 -30
  127. package/public-api.d.ts +0 -3
  128. package/testing/lib/components/flow-details/gio-ps-flow-details.harness.d.ts +0 -12
  129. package/testing/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.harness.d.ts +0 -5
  130. package/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.d.ts +0 -69
  131. package/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.d.ts +0 -21
  132. package/testing/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.harness.d.ts +0 -13
  133. package/testing/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.harness.d.ts +0 -37
  134. package/testing/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.harness.d.ts +0 -17
  135. package/testing/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.harness.d.ts +0 -33
  136. package/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.d.ts +0 -31
  137. package/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.d.ts +0 -20
  138. package/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.d.ts +0 -8
  139. package/testing/lib/components/step-form/gio-ps-step-form.harness.d.ts +0 -18
  140. package/testing/lib/models/ApiProtocolType.d.ts +0 -1
  141. package/testing/lib/models/ApiType.d.ts +0 -1
  142. package/testing/lib/models/ConnectorsInfo.d.ts +0 -7
  143. package/testing/lib/models/ConnectorsInfo.fixture.d.ts +0 -12
  144. package/testing/lib/models/PolicySchemaFetcher.d.ts +0 -5
  145. package/testing/lib/models/SaveOutput.d.ts +0 -7
  146. package/testing/lib/models/flow/Flow.d.ts +0 -24
  147. package/testing/lib/models/flow/Flow.fixture.d.ts +0 -6
  148. package/testing/lib/models/flow/FlowExecution.d.ts +0 -11
  149. package/testing/lib/models/flow/FlowExecution.fixture.d.ts +0 -3
  150. package/testing/lib/models/flow/HttpMethod.d.ts +0 -3
  151. package/testing/lib/models/flow/Selector.d.ts +0 -37
  152. package/testing/lib/models/flow/Step.d.ts +0 -34
  153. package/testing/lib/models/flow/Step.fixture.d.ts +0 -5
  154. package/testing/lib/models/flow/index-testing.d.ts +0 -3
  155. package/testing/lib/models/flow/index.d.ts +0 -5
  156. package/testing/lib/models/index-testing.d.ts +0 -4
  157. package/testing/lib/models/index.d.ts +0 -8
  158. package/testing/lib/models/plan/Plan.d.ts +0 -6
  159. package/testing/lib/models/plan/Plan.fixture.d.ts +0 -2
  160. package/testing/lib/models/plan/index-testing.d.ts +0 -1
  161. package/testing/lib/models/plan/index.d.ts +0 -1
  162. package/testing/lib/models/policy/GenericPolicy.d.ts +0 -22
  163. package/testing/lib/models/policy/Policy.d.ts +0 -28
  164. package/testing/lib/models/policy/Policy.fixture.d.ts +0 -4
  165. package/testing/lib/models/policy/SharedPolicyGroupPolicy.d.ts +0 -11
  166. package/testing/lib/models/policy/index-testing.d.ts +0 -1
  167. package/testing/lib/models/policy/index.d.ts +0 -3
  168. package/testing/lib/policy-group-studio/gio-policy-group-studio.harness.d.ts +0 -20
  169. package/testing/lib/policy-studio/gio-policy-studio.harness.d.ts +0 -78
  170. package/testing/lib/policy-studio/gio-policy-studio.model.d.ts +0 -17
  171. package/testing/public-testing-api.d.ts +0 -3
@@ -1,228 +0,0 @@
1
- /*
2
- * Copyright (C) 2024 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
17
- import { EMPTY } from 'rxjs';
18
- import { GioFormJsonSchemaModule, GioLoaderModule } from '@gravitee/ui-particles-angular';
19
- import { GioPolicyStudioDetailsPhaseComponent } from '../components/flow-details-phase/gio-ps-flow-details-phase.component';
20
- import { fromExecutionPhase, fromPolicyInput, toGenericPolicies, } from '../models';
21
- import * as i0 from "@angular/core";
22
- import * as i1 from "../policy-studio/gio-policy-studio.service";
23
- import * as i2 from "@gravitee/ui-particles-angular";
24
- export class GioPolicyGroupStudioComponent {
25
- /**
26
- * List of policies usable in the studio
27
- */
28
- set policies(value) {
29
- this._policies = value.map(fromPolicyInput);
30
- }
31
- get policies() {
32
- return this._policies;
33
- }
34
- /**
35
- * Execution phase targeted by the Policy Group Studio
36
- * @deprecated Use `flowPhase` instead. To keep as long as we support APIM < 4.6
37
- */
38
- set executionPhase(value) {
39
- this.flowPhase = fromExecutionPhase(value);
40
- }
41
- constructor(policyStudioService) {
42
- this.policyStudioService = policyStudioService;
43
- this._policies = [];
44
- /**
45
- * Whether the Policy Group Studio is in read-only mode
46
- */
47
- this.readOnly = false;
48
- /**
49
- * Called when Policy Group Studio needs to fetch the policy schema
50
- * @returns Observable of the policy schema
51
- */
52
- this.policySchemaFetcher = () => EMPTY;
53
- /**
54
- * Called when Policy Group Studio needs to fetch the policy documentation
55
- * @returns Observable of the policy documentation
56
- */
57
- this.policyDocumentationFetcher = () => EMPTY;
58
- this.policyGroup = [];
59
- /**
60
- * Output event when the Policy Group Studio changes
61
- */
62
- this.policyGroupChange = new EventEmitter();
63
- this.isLoading = true;
64
- this.createStartConnector = name => [
65
- {
66
- name,
67
- icon: 'gio:arrow-right',
68
- type: 'start',
69
- supportedModes: [],
70
- },
71
- ];
72
- this.createEndConnector = name => [
73
- {
74
- name,
75
- icon: 'gio:arrow-right',
76
- type: 'end',
77
- supportedModes: [],
78
- },
79
- ];
80
- this.steps = [];
81
- this.genericPolicies = [];
82
- this.startConnector = [];
83
- this.endConnector = [];
84
- this.phases = {
85
- // HTTP Proxy
86
- PROXY__REQUEST: {
87
- name: 'Request phase',
88
- description: 'Policies will be applied during the connection establishment',
89
- startConnectorName: 'Incoming request',
90
- endConnectorName: 'Outgoing request',
91
- },
92
- PROXY__RESPONSE: {
93
- name: 'Response phase',
94
- description: 'Policies will be applied to the response from the initial connection.',
95
- startConnectorName: 'Incoming response',
96
- endConnectorName: 'Outgoing response',
97
- },
98
- PROXY__PUBLISH: null, // n/a
99
- PROXY__SUBSCRIBE: null, // n/a
100
- PROXY__CONNECT: null, // n/a
101
- PROXY__INTERACT: null, // n/a
102
- // LLM Proxy
103
- LLM_PROXY__REQUEST: {
104
- name: 'Request phase',
105
- description: 'Policies will be applied during the connection establishment',
106
- startConnectorName: 'Incoming request',
107
- endConnectorName: 'Outgoing request',
108
- },
109
- LLM_PROXY__RESPONSE: {
110
- name: 'Response phase',
111
- description: 'Policies will be applied to the response from the initial connection.',
112
- startConnectorName: 'Incoming response',
113
- endConnectorName: 'Outgoing response',
114
- },
115
- LLM_PROXY__PUBLISH: null, // n/a
116
- LLM_PROXY__SUBSCRIBE: null, // n/a
117
- LLM_PROXY__CONNECT: null, // n/a
118
- LLM_PROXY__INTERACT: null, // n/a
119
- // MCP Proxy
120
- MCP_PROXY__REQUEST: {
121
- name: 'Request phase',
122
- description: 'Policies will be applied during the connection establishment',
123
- startConnectorName: 'Incoming request',
124
- endConnectorName: 'Outgoing request',
125
- },
126
- MCP_PROXY__RESPONSE: {
127
- name: 'Response phase',
128
- description: 'Policies will be applied to the response from the initial connection.',
129
- startConnectorName: 'Incoming response',
130
- endConnectorName: 'Outgoing response',
131
- },
132
- MCP_PROXY__PUBLISH: null, // n/a
133
- MCP_PROXY__SUBSCRIBE: null, // n/a
134
- MCP_PROXY__CONNECT: null, // n/a
135
- MCP_PROXY__INTERACT: null, // n/a
136
- // HTTP Message
137
- MESSAGE__REQUEST: {
138
- name: 'Request phase',
139
- description: 'Policies will be applied during the connection establishment',
140
- startConnectorName: 'Incoming request',
141
- endConnectorName: 'Outgoing request',
142
- },
143
- MESSAGE__RESPONSE: {
144
- name: 'Response phase',
145
- description: 'Policies will be applied during the connection termination',
146
- startConnectorName: 'Incoming response',
147
- endConnectorName: 'Outgoing response',
148
- },
149
- MESSAGE__PUBLISH: {
150
- name: 'Publish phase',
151
- description: 'Policies will be applied on messages sent to the endpoint',
152
- startConnectorName: 'Incoming message request',
153
- endConnectorName: 'Outgoing message request',
154
- },
155
- MESSAGE__SUBSCRIBE: {
156
- name: 'Subscribe phase',
157
- description: 'Policies will be applied on messages received by the entrypoint',
158
- startConnectorName: 'Incoming message response',
159
- endConnectorName: 'Outgoing message response',
160
- },
161
- MESSAGE__CONNECT: null, // n/a
162
- MESSAGE__INTERACT: null, // n/a
163
- // NATIVE
164
- // TODO: To implement we want to make PS compatible with the native API
165
- NATIVE__CONNECT: null, // n/a
166
- NATIVE__INTERACT: null, // n/a
167
- NATIVE__PUBLISH: null, // n/a
168
- NATIVE__SUBSCRIBE: null, // n/a
169
- NATIVE__REQUEST: null, // n/a
170
- NATIVE__RESPONSE: null, // n/a
171
- };
172
- }
173
- ngOnChanges(changes) {
174
- if (changes.policySchemaFetcher) {
175
- this.policyStudioService.setPolicySchemaFetcher(this.policySchemaFetcher);
176
- }
177
- if (changes.policyDocumentationFetcher) {
178
- this.policyStudioService.setPolicyDocumentationFetcher(this.policyDocumentationFetcher);
179
- }
180
- if (changes.policies) {
181
- this.isLoading = false;
182
- this.genericPolicies = toGenericPolicies(this._policies);
183
- }
184
- if (changes.executionPhase || changes.flowPhase) {
185
- this.policyGroupVM = this.phases[`${this.apiType}__${this.flowPhase}`] ?? undefined;
186
- this.startConnector = this.createStartConnector(this.policyGroupVM?.startConnectorName ?? '');
187
- this.endConnector = this.createEndConnector(this.policyGroupVM?.endConnectorName ?? '');
188
- }
189
- if (changes.policyGroup) {
190
- this.steps = this.policyGroup;
191
- }
192
- }
193
- onStepsChange(steps) {
194
- this.steps = steps;
195
- this.policyGroupChange.emit(steps);
196
- }
197
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyGroupStudioComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
198
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyGroupStudioComponent, isStandalone: true, selector: "gio-policy-group-studio", inputs: { policies: ["policies", "policies", (policies) => policies ?? []], readOnly: "readOnly", apiType: "apiType", executionPhase: "executionPhase", flowPhase: "flowPhase", policySchemaFetcher: "policySchemaFetcher", policyDocumentationFetcher: "policyDocumentationFetcher", policyGroup: "policyGroup" }, outputs: { policyGroupChange: "policyGroupChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector\"\n [endConnector]=\"endConnector\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n [policyFlowPhase]=\"flowPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n", styles: [""], dependencies: [{ kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "genericPolicies", "policyFlowPhase", "trialUrl", "disabledNotYetAvailable"], outputs: ["stepsChange"] }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i2.GioLoaderComponent, selector: "gio-loader" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
199
- }
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyGroupStudioComponent, decorators: [{
201
- type: Component,
202
- args: [{ selector: 'gio-policy-group-studio', imports: [GioPolicyStudioDetailsPhaseComponent, GioFormJsonSchemaModule, GioLoaderModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector\"\n [endConnector]=\"endConnector\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n [policyFlowPhase]=\"flowPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n" }]
203
- }], ctorParameters: () => [{ type: i1.GioPolicyStudioService }], propDecorators: { policies: [{
204
- type: Input,
205
- args: [{
206
- transform: (policies) => policies ?? [],
207
- }]
208
- }], readOnly: [{
209
- type: Input
210
- }], apiType: [{
211
- type: Input,
212
- args: [{ required: true }]
213
- }], executionPhase: [{
214
- type: Input
215
- }], flowPhase: [{
216
- type: Input
217
- }], policySchemaFetcher: [{
218
- type: Input,
219
- args: [{ required: true }]
220
- }], policyDocumentationFetcher: [{
221
- type: Input,
222
- args: [{ required: true }]
223
- }], policyGroup: [{
224
- type: Input
225
- }], policyGroupChange: [{
226
- type: Output
227
- }] } });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBvbGljeS1ncm91cC1zdHVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvcG9saWN5LWdyb3VwLXN0dWRpby9naW8tcG9saWN5LWdyb3VwLXN0dWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9wb2xpY3ktZ3JvdXAtc3R1ZGlvL2dpby1wb2xpY3ktZ3JvdXAtc3R1ZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFMUYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDNUgsT0FBTyxFQUtMLGtCQUFrQixFQUNsQixlQUFlLEVBT2YsaUJBQWlCLEdBQ2xCLE1BQU0sV0FBVyxDQUFDOzs7O0FBb0JuQixNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDOztPQUVHO0lBQ0gsSUFHVyxRQUFRLENBQUMsS0FBK0I7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFlRDs7O09BR0c7SUFDSCxJQUNXLGNBQWMsQ0FBQyxLQUFxQjtRQUM3QyxJQUFJ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QztJQUVTLGFBQWEsQ0FBQyxLQUFhO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0E3TVUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsd0dBSzNCLENBQUMsUUFBaUIsRUFBRSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsNlVDM0RwRCx5dENBbUNBLDBERGNZLG9DQUFvQywrUUFBRSx1QkFBdUIsOEJBQUUsZUFBZTs7MkZBSzdFLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSx5QkFBeUIsV0FDMUIsQ0FBQyxvQ0FBb0MsRUFBRSx1QkFBdUIsRUFBRSxlQUFlLENBQUMsbUJBR3hFLHVCQUF1QixDQUFDLE1BQU07MkZBU3BDLFFBQVE7c0JBSGxCLEtBQUs7dUJBQUM7d0JBQ0wsU0FBUyxFQUFFLENBQUMsUUFBaUIsRUFBRSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUU7cUJBQ2pEO2dCQWFNLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVFkLGNBQWM7c0JBRHhCLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixLQUFLO2dCQVFDLG1CQUFtQjtzQkFEekIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBUWxCLDBCQUEwQjtzQkFEaEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsaUJBQWlCO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyNCBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2lvRm9ybUpzb25TY2hlbWFNb2R1bGUsIEdpb0xvYWRlck1vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5cbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFwaVR5cGUsXG4gIENvbm5lY3RvckluZm8sXG4gIEV4ZWN1dGlvblBoYXNlLFxuICBGbG93UGhhc2UsXG4gIGZyb21FeGVjdXRpb25QaGFzZSxcbiAgZnJvbVBvbGljeUlucHV0LFxuICBHZW5lcmljUG9saWN5LFxuICBQb2xpY3ksXG4gIFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyLFxuICBQb2xpY3lJbnB1dCxcbiAgUG9saWN5U2NoZW1hRmV0Y2hlcixcbiAgU3RlcCxcbiAgdG9HZW5lcmljUG9saWNpZXMsXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlIH0gZnJvbSAnLi4vcG9saWN5LXN0dWRpby9naW8tcG9saWN5LXN0dWRpby5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgUG9saWN5R3JvdXBPdXRwdXQgPSBTdGVwW107XG5leHBvcnQgdHlwZSBQb2xpY3lHcm91cElucHV0ID0gU3RlcFtdO1xuXG50eXBlIFBvbGljeUdyb3VwVk0gPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhcnRDb25uZWN0b3JOYW1lOiBzdHJpbmc7XG4gIGVuZENvbm5lY3Rvck5hbWU6IHN0cmluZztcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wb2xpY3ktZ3JvdXAtc3R1ZGlvJyxcbiAgaW1wb3J0czogW0dpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCwgR2lvRm9ybUpzb25TY2hlbWFNb2R1bGUsIEdpb0xvYWRlck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcG9saWN5LWdyb3VwLXN0dWRpby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9naW8tcG9saWN5LWdyb3VwLXN0dWRpby5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lHcm91cFN0dWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHBvbGljaWVzIHVzYWJsZSBpbiB0aGUgc3R1ZGlvXG4gICAqL1xuICBASW5wdXQoe1xuICAgIHRyYW5zZm9ybTogKHBvbGljaWVzOiB1bmtub3duKSA9PiBwb2xpY2llcyA/PyBbXSxcbiAgfSlcbiAgcHVibGljIHNldCBwb2xpY2llcyh2YWx1ZTogKFBvbGljeUlucHV0IHwgUG9saWN5KVtdKSB7XG4gICAgdGhpcy5fcG9saWNpZXMgPSB2YWx1ZS5tYXAoZnJvbVBvbGljeUlucHV0KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHBvbGljaWVzKCk6IFBvbGljeVtdIHtcbiAgICByZXR1cm4gdGhpcy5fcG9saWNpZXM7XG4gIH1cbiAgcHJpdmF0ZSBfcG9saWNpZXM6IFBvbGljeVtdID0gW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIFBvbGljeSBHcm91cCBTdHVkaW8gaXMgaW4gcmVhZC1vbmx5IG1vZGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHRoZSBBUEkgdGFyZ2V0ZWQgYnkgdGhlIFBvbGljeSBHcm91cCBTdHVkaW9cbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICAvKipcbiAgICogRXhlY3V0aW9uIHBoYXNlIHRhcmdldGVkIGJ5IHRoZSBQb2xpY3kgR3JvdXAgU3R1ZGlvXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgZmxvd1BoYXNlYCBpbnN0ZWFkLiBUbyBrZWVwIGFzIGxvbmcgYXMgd2Ugc3VwcG9ydCBBUElNIDwgNC42XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGV4ZWN1dGlvblBoYXNlKHZhbHVlOiBFeGVjdXRpb25QaGFzZSkge1xuICAgIHRoaXMuZmxvd1BoYXNlID0gZnJvbUV4ZWN1dGlvblBoYXNlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRpb24gcGhhc2UgdGFyZ2V0ZWQgYnkgdGhlIFBvbGljeSBHcm91cCBTdHVkaW9cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93UGhhc2UhOiBGbG93UGhhc2U7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIFBvbGljeSBHcm91cCBTdHVkaW8gbmVlZHMgdG8gZmV0Y2ggdGhlIHBvbGljeSBzY2hlbWFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcG9saWN5IHNjaGVtYVxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHBvbGljeVNjaGVtYUZldGNoZXI6IFBvbGljeVNjaGVtYUZldGNoZXIgPSAoKSA9PiBFTVBUWTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gUG9saWN5IEdyb3VwIFN0dWRpbyBuZWVkcyB0byBmZXRjaCB0aGUgcG9saWN5IGRvY3VtZW50YXRpb25cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcG9saWN5IGRvY3VtZW50YXRpb25cbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBwb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlcjogUG9saWN5RG9jdW1lbnRhdGlvbkZldGNoZXIgPSAoKSA9PiBFTVBUWTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5R3JvdXA6IFBvbGljeUdyb3VwSW5wdXQgPSBbXTtcblxuICAvKipcbiAgICogT3V0cHV0IGV2ZW50IHdoZW4gdGhlIFBvbGljeSBHcm91cCBTdHVkaW8gY2hhbmdlc1xuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBwb2xpY3lHcm91cENoYW5nZTogRXZlbnRFbWl0dGVyPFBvbGljeUdyb3VwT3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9saWN5R3JvdXBPdXRwdXQ+KCk7XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHRydWU7XG4gIHByb3RlY3RlZCBjcmVhdGVTdGFydENvbm5lY3RvcjogKG5hbWU6IHN0cmluZykgPT4gQ29ubmVjdG9ySW5mb1tdID0gbmFtZSA9PiBbXG4gICAge1xuICAgICAgbmFtZSxcbiAgICAgIGljb246ICdnaW86YXJyb3ctcmlnaHQnLFxuICAgICAgdHlwZTogJ3N0YXJ0JyxcbiAgICAgIHN1cHBvcnRlZE1vZGVzOiBbXSxcbiAgICB9LFxuICBdO1xuICBwcm90ZWN0ZWQgY3JlYXRlRW5kQ29ubmVjdG9yOiAobmFtZTogc3RyaW5nKSA9PiBDb25uZWN0b3JJbmZvW10gPSBuYW1lID0+IFtcbiAgICB7XG4gICAgICBuYW1lLFxuICAgICAgaWNvbjogJ2dpbzphcnJvdy1yaWdodCcsXG4gICAgICB0eXBlOiAnZW5kJyxcbiAgICAgIHN1cHBvcnRlZE1vZGVzOiBbXSxcbiAgICB9LFxuICBdO1xuICBwcm90ZWN0ZWQgcG9saWN5R3JvdXBWTT86IFBvbGljeUdyb3VwVk07XG4gIHByb3RlY3RlZCBzdGVwczogU3RlcFtdID0gW107XG4gIHByb3RlY3RlZCB0cmlhbFVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgZ2VuZXJpY1BvbGljaWVzOiBHZW5lcmljUG9saWN5W10gPSBbXTtcbiAgcHJvdGVjdGVkIHN0YXJ0Q29ubmVjdG9yOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcbiAgcHJvdGVjdGVkIGVuZENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgcHJpdmF0ZSBwaGFzZXM6IFJlY29yZDxgJHtBcGlUeXBlfV9fJHtGbG93UGhhc2V9YCwgUG9saWN5R3JvdXBWTSB8IG51bGw+ID0ge1xuICAgIC8vIEhUVFAgUHJveHlcbiAgICBQUk9YWV9fUkVRVUVTVDoge1xuICAgICAgbmFtZTogJ1JlcXVlc3QgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQnLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgcmVxdWVzdCcsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVxdWVzdCcsXG4gICAgfSxcbiAgICBQUk9YWV9fUkVTUE9OU0U6IHtcbiAgICAgIG5hbWU6ICdSZXNwb25zZSBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgaW5pdGlhbCBjb25uZWN0aW9uLicsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXNwb25zZScsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVzcG9uc2UnLFxuICAgIH0sXG4gICAgUFJPWFlfX1BVQkxJU0g6IG51bGwsIC8vIG4vYVxuICAgIFBST1hZX19TVUJTQ1JJQkU6IG51bGwsIC8vIG4vYVxuICAgIFBST1hZX19DT05ORUNUOiBudWxsLCAvLyBuL2FcbiAgICBQUk9YWV9fSU5URVJBQ1Q6IG51bGwsIC8vIG4vYVxuICAgIC8vIExMTSBQcm94eVxuICAgIExMTV9QUk9YWV9fUkVRVUVTVDoge1xuICAgICAgbmFtZTogJ1JlcXVlc3QgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQnLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgcmVxdWVzdCcsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVxdWVzdCcsXG4gICAgfSxcbiAgICBMTE1fUFJPWFlfX1JFU1BPTlNFOiB7XG4gICAgICBuYW1lOiAnUmVzcG9uc2UgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHJlc3BvbnNlIGZyb20gdGhlIGluaXRpYWwgY29ubmVjdGlvbi4nLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgcmVzcG9uc2UnLFxuICAgICAgZW5kQ29ubmVjdG9yTmFtZTogJ091dGdvaW5nIHJlc3BvbnNlJyxcbiAgICB9LFxuICAgIExMTV9QUk9YWV9fUFVCTElTSDogbnVsbCwgLy8gbi9hXG4gICAgTExNX1BST1hZX19TVUJTQ1JJQkU6IG51bGwsIC8vIG4vYVxuICAgIExMTV9QUk9YWV9fQ09OTkVDVDogbnVsbCwgLy8gbi9hXG4gICAgTExNX1BST1hZX19JTlRFUkFDVDogbnVsbCwgLy8gbi9hXG4gICAgLy8gTUNQIFByb3h5XG4gICAgTUNQX1BST1hZX19SRVFVRVNUOiB7XG4gICAgICBuYW1lOiAnUmVxdWVzdCBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCcsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXF1ZXN0JyxcbiAgICAgIGVuZENvbm5lY3Rvck5hbWU6ICdPdXRnb2luZyByZXF1ZXN0JyxcbiAgICB9LFxuICAgIE1DUF9QUk9YWV9fUkVTUE9OU0U6IHtcbiAgICAgIG5hbWU6ICdSZXNwb25zZSBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgaW5pdGlhbCBjb25uZWN0aW9uLicsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXNwb25zZScsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVzcG9uc2UnLFxuICAgIH0sXG4gICAgTUNQX1BST1hZX19QVUJMSVNIOiBudWxsLCAvLyBuL2FcbiAgICBNQ1BfUFJPWFlfX1NVQlNDUklCRTogbnVsbCwgLy8gbi9hXG4gICAgTUNQX1BST1hZX19DT05ORUNUOiBudWxsLCAvLyBuL2FcbiAgICBNQ1BfUFJPWFlfX0lOVEVSQUNUOiBudWxsLCAvLyBuL2FcbiAgICAvLyBIVFRQIE1lc3NhZ2VcbiAgICBNRVNTQUdFX19SRVFVRVNUOiB7XG4gICAgICBuYW1lOiAnUmVxdWVzdCBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCcsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXF1ZXN0JyxcbiAgICAgIGVuZENvbm5lY3Rvck5hbWU6ICdPdXRnb2luZyByZXF1ZXN0JyxcbiAgICB9LFxuICAgIE1FU1NBR0VfX1JFU1BPTlNFOiB7XG4gICAgICBuYW1lOiAnUmVzcG9uc2UgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIHRlcm1pbmF0aW9uJyxcbiAgICAgIHN0YXJ0Q29ubmVjdG9yTmFtZTogJ0luY29taW5nIHJlc3BvbnNlJyxcbiAgICAgIGVuZENvbm5lY3Rvck5hbWU6ICdPdXRnb2luZyByZXNwb25zZScsXG4gICAgfSxcbiAgICBNRVNTQUdFX19QVUJMSVNIOiB7XG4gICAgICBuYW1lOiAnUHVibGlzaCBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBvbiBtZXNzYWdlcyBzZW50IHRvIHRoZSBlbmRwb2ludCcsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyBtZXNzYWdlIHJlcXVlc3QnLFxuICAgICAgZW5kQ29ubmVjdG9yTmFtZTogJ091dGdvaW5nIG1lc3NhZ2UgcmVxdWVzdCcsXG4gICAgfSxcbiAgICBNRVNTQUdFX19TVUJTQ1JJQkU6IHtcbiAgICAgIG5hbWU6ICdTdWJzY3JpYmUgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgb24gbWVzc2FnZXMgcmVjZWl2ZWQgYnkgdGhlIGVudHJ5cG9pbnQnLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgbWVzc2FnZSByZXNwb25zZScsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgbWVzc2FnZSByZXNwb25zZScsXG4gICAgfSxcbiAgICBNRVNTQUdFX19DT05ORUNUOiBudWxsLCAvLyBuL2FcbiAgICBNRVNTQUdFX19JTlRFUkFDVDogbnVsbCwgLy8gbi9hXG4gICAgLy8gTkFUSVZFXG4gICAgLy8gVE9ETzogVG8gaW1wbGVtZW50IHdlIHdhbnQgdG8gbWFrZSBQUyBjb21wYXRpYmxlIHdpdGggdGhlIG5hdGl2ZSBBUElcbiAgICBOQVRJVkVfX0NPTk5FQ1Q6IG51bGwsIC8vIG4vYVxuICAgIE5BVElWRV9fSU5URVJBQ1Q6IG51bGwsIC8vIG4vYVxuICAgIE5BVElWRV9fUFVCTElTSDogbnVsbCwgLy8gbi9hXG4gICAgTkFUSVZFX19TVUJTQ1JJQkU6IG51bGwsIC8vIG4vYVxuICAgIE5BVElWRV9fUkVRVUVTVDogbnVsbCwgLy8gbi9hXG4gICAgTkFUSVZFX19SRVNQT05TRTogbnVsbCwgLy8gbi9hXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwb2xpY3lTdHVkaW9TZXJ2aWNlOiBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMucG9saWN5U2NoZW1hRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeVNjaGVtYUZldGNoZXIodGhpcy5wb2xpY3lTY2hlbWFGZXRjaGVyKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5wb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyKHRoaXMucG9saWN5RG9jdW1lbnRhdGlvbkZldGNoZXIpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5wb2xpY2llcykge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZ2VuZXJpY1BvbGljaWVzID0gdG9HZW5lcmljUG9saWNpZXModGhpcy5fcG9saWNpZXMpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5leGVjdXRpb25QaGFzZSB8fCBjaGFuZ2VzLmZsb3dQaGFzZSkge1xuICAgICAgdGhpcy5wb2xpY3lHcm91cFZNID0gdGhpcy5waGFzZXNbYCR7dGhpcy5hcGlUeXBlfV9fJHt0aGlzLmZsb3dQaGFzZX1gXSA/PyB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0YXJ0Q29ubmVjdG9yID0gdGhpcy5jcmVhdGVTdGFydENvbm5lY3Rvcih0aGlzLnBvbGljeUdyb3VwVk0/LnN0YXJ0Q29ubmVjdG9yTmFtZSA/PyAnJyk7XG4gICAgICB0aGlzLmVuZENvbm5lY3RvciA9IHRoaXMuY3JlYXRlRW5kQ29ubmVjdG9yKHRoaXMucG9saWN5R3JvdXBWTT8uZW5kQ29ubmVjdG9yTmFtZSA/PyAnJyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnBvbGljeUdyb3VwKSB7XG4gICAgICB0aGlzLnN0ZXBzID0gdGhpcy5wb2xpY3lHcm91cDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TdGVwc0NoYW5nZShzdGVwczogU3RlcFtdKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcyA9IHN0ZXBzO1xuICAgIHRoaXMucG9saWN5R3JvdXBDaGFuZ2UuZW1pdChzdGVwcyk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyNCBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuQGlmICghaXNMb2FkaW5nICYmIHBvbGljeUdyb3VwVk0pIHtcbiAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICBbbmFtZV09XCJwb2xpY3lHcm91cFZNLm5hbWVcIlxuICAgIFtkZXNjcmlwdGlvbl09XCJwb2xpY3lHcm91cFZNLmRlc2NyaXB0aW9uXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFtzdGFydENvbm5lY3Rvcl09XCJzdGFydENvbm5lY3RvclwiXG4gICAgW2VuZENvbm5lY3Rvcl09XCJlbmRDb25uZWN0b3JcIlxuICAgIFtzdGVwc109XCJzdGVwc1wiXG4gICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgW3BvbGljeUZsb3dQaGFzZV09XCJmbG93UGhhc2VcIlxuICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCRldmVudClcIlxuICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxufSBAZWxzZSB7XG4gIDxnaW8tbG9hZGVyPjwvZ2lvLWxvYWRlcj5cbn1cbiJdfQ==