@cdktn/provider-azuread 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.
- package/.jsii +112042 -0
- package/LICENSE +355 -0
- package/README.md +94 -0
- package/lib/access-package/index.d.ts +151 -0
- package/lib/access-package/index.js +354 -0
- package/lib/access-package-assignment-policy/index.d.ts +1098 -0
- package/lib/access-package-assignment-policy/index.js +2711 -0
- package/lib/access-package-catalog/index.d.ts +152 -0
- package/lib/access-package-catalog/index.js +357 -0
- package/lib/access-package-catalog-role-assignment/index.d.ts +140 -0
- package/lib/access-package-catalog-role-assignment/index.js +333 -0
- package/lib/access-package-resource-catalog-association/index.d.ts +131 -0
- package/lib/access-package-resource-catalog-association/index.js +307 -0
- package/lib/access-package-resource-package-association/index.d.ts +132 -0
- package/lib/access-package-resource-package-association/index.js +310 -0
- package/lib/administrative-unit/index.d.ts +165 -0
- package/lib/administrative-unit/index.js +385 -0
- package/lib/administrative-unit-member/index.d.ts +123 -0
- package/lib/administrative-unit-member/index.js +295 -0
- package/lib/administrative-unit-role-member/index.d.ts +131 -0
- package/lib/administrative-unit-role-member/index.js +307 -0
- package/lib/app-role-assignment/index.d.ts +134 -0
- package/lib/app-role-assignment/index.js +319 -0
- package/lib/application/index.d.ts +1352 -0
- package/lib/application/index.js +3262 -0
- package/lib/application-api-access/index.d.ts +152 -0
- package/lib/application-api-access/index.js +357 -0
- package/lib/application-app-role/index.d.ts +171 -0
- package/lib/application-app-role/index.js +390 -0
- package/lib/application-certificate/index.d.ts +196 -0
- package/lib/application-certificate/index.js +441 -0
- package/lib/application-fallback-public-client/index.d.ts +122 -0
- package/lib/application-fallback-public-client/index.js +292 -0
- package/lib/application-federated-identity-credential/index.d.ts +172 -0
- package/lib/application-federated-identity-credential/index.js +394 -0
- package/lib/application-flexible-federated-identity-credential/index.d.ts +172 -0
- package/lib/application-flexible-federated-identity-credential/index.js +394 -0
- package/lib/application-from-template/index.d.ts +134 -0
- package/lib/application-from-template/index.js +334 -0
- package/lib/application-identifier-uri/index.d.ts +121 -0
- package/lib/application-identifier-uri/index.js +289 -0
- package/lib/application-known-clients/index.d.ts +130 -0
- package/lib/application-known-clients/index.js +315 -0
- package/lib/application-optional-claims/index.d.ts +381 -0
- package/lib/application-optional-claims/index.js +918 -0
- package/lib/application-owner/index.d.ts +121 -0
- package/lib/application-owner/index.js +289 -0
- package/lib/application-password/index.d.ts +185 -0
- package/lib/application-password/index.js +410 -0
- package/lib/application-permission-scope/index.d.ts +193 -0
- package/lib/application-permission-scope/index.js +432 -0
- package/lib/application-pre-authorized/index.d.ts +140 -0
- package/lib/application-pre-authorized/index.js +333 -0
- package/lib/application-redirect-uris/index.d.ts +140 -0
- package/lib/application-redirect-uris/index.js +333 -0
- package/lib/application-registration/index.d.ts +278 -0
- package/lib/application-registration/index.js +610 -0
- package/lib/authentication-strength-policy/index.d.ts +141 -0
- package/lib/authentication-strength-policy/index.js +336 -0
- package/lib/claims-mapping-policy/index.d.ts +130 -0
- package/lib/claims-mapping-policy/index.js +315 -0
- package/lib/conditional-access-policy/index.d.ts +959 -0
- package/lib/conditional-access-policy/index.js +2705 -0
- package/lib/custom-directory-role/index.d.ts +216 -0
- package/lib/custom-directory-role/index.js +505 -0
- package/lib/data-azuread-access-package/index.d.ts +118 -0
- package/lib/data-azuread-access-package/index.js +272 -0
- package/lib/data-azuread-access-package-catalog/index.d.ts +108 -0
- package/lib/data-azuread-access-package-catalog/index.js +258 -0
- package/lib/data-azuread-access-package-catalog-role/index.d.ts +107 -0
- package/lib/data-azuread-access-package-catalog-role/index.js +254 -0
- package/lib/data-azuread-administrative-unit/index.d.ts +135 -0
- package/lib/data-azuread-administrative-unit/index.js +336 -0
- package/lib/data-azuread-application/index.d.ts +654 -0
- package/lib/data-azuread-application/index.js +1606 -0
- package/lib/data-azuread-application-published-app-ids/index.d.ts +85 -0
- package/lib/data-azuread-application-published-app-ids/index.js +206 -0
- package/lib/data-azuread-application-template/index.d.ts +111 -0
- package/lib/data-azuread-application-template/index.js +270 -0
- package/lib/data-azuread-client-config/index.d.ts +86 -0
- package/lib/data-azuread-client-config/index.js +216 -0
- package/lib/data-azuread-directory-object/index.d.ts +94 -0
- package/lib/data-azuread-directory-object/index.js +223 -0
- package/lib/data-azuread-directory-role-templates/index.d.ts +120 -0
- package/lib/data-azuread-directory-role-templates/index.js +293 -0
- package/lib/data-azuread-directory-roles/index.d.ts +122 -0
- package/lib/data-azuread-directory-roles/index.js +301 -0
- package/lib/data-azuread-domains/index.d.ts +190 -0
- package/lib/data-azuread-domains/index.js +435 -0
- package/lib/data-azuread-group/index.d.ts +207 -0
- package/lib/data-azuread-group/index.js +506 -0
- package/lib/data-azuread-group-role-management-policy/index.d.ts +105 -0
- package/lib/data-azuread-group-role-management-policy/index.js +248 -0
- package/lib/data-azuread-groups/index.d.ts +160 -0
- package/lib/data-azuread-groups/index.js +348 -0
- package/lib/data-azuread-named-location/index.d.ts +163 -0
- package/lib/data-azuread-named-location/index.js +398 -0
- package/lib/data-azuread-service-principal/index.d.ts +325 -0
- package/lib/data-azuread-service-principal/index.js +817 -0
- package/lib/data-azuread-service-principals/index.d.ts +183 -0
- package/lib/data-azuread-service-principals/index.js +430 -0
- package/lib/data-azuread-user/index.d.ts +177 -0
- package/lib/data-azuread-user/index.js +465 -0
- package/lib/data-azuread-users/index.d.ts +204 -0
- package/lib/data-azuread-users/index.js +468 -0
- package/lib/directory-role/index.d.ts +125 -0
- package/lib/directory-role/index.js +306 -0
- package/lib/directory-role-assignment/index.d.ts +143 -0
- package/lib/directory-role-assignment/index.js +331 -0
- package/lib/directory-role-eligibility-schedule-request/index.d.ts +141 -0
- package/lib/directory-role-eligibility-schedule-request/index.js +325 -0
- package/lib/directory-role-member/index.d.ts +123 -0
- package/lib/directory-role-member/index.js +295 -0
- package/lib/group/index.d.ts +392 -0
- package/lib/group/index.js +872 -0
- package/lib/group-member/index.d.ts +121 -0
- package/lib/group-member/index.js +289 -0
- package/lib/group-role-management-policy/index.d.ts +1043 -0
- package/lib/group-role-management-policy/index.js +2775 -0
- package/lib/group-without-members/index.d.ts +381 -0
- package/lib/group-without-members/index.js +851 -0
- package/lib/index.d.ts +79 -0
- package/lib/index.js +85 -0
- package/lib/invitation/index.d.ts +203 -0
- package/lib/invitation/index.js +490 -0
- package/lib/lazy-index.d.ts +4 -0
- package/lib/lazy-index.js +82 -0
- package/lib/named-location/index.d.ts +212 -0
- package/lib/named-location/index.js +571 -0
- package/lib/privileged-access-group-assignment-schedule/index.d.ts +218 -0
- package/lib/privileged-access-group-assignment-schedule/index.js +484 -0
- package/lib/privileged-access-group-eligibility-schedule/index.d.ts +218 -0
- package/lib/privileged-access-group-eligibility-schedule/index.js +484 -0
- package/lib/provider/index.d.ts +289 -0
- package/lib/provider/index.js +549 -0
- package/lib/service-principal/index.d.ts +547 -0
- package/lib/service-principal/index.js +1305 -0
- package/lib/service-principal-certificate/index.d.ts +187 -0
- package/lib/service-principal-certificate/index.js +415 -0
- package/lib/service-principal-claims-mapping-policy-assignment/index.d.ts +121 -0
- package/lib/service-principal-claims-mapping-policy-assignment/index.js +289 -0
- package/lib/service-principal-delegated-permission-grant/index.d.ts +151 -0
- package/lib/service-principal-delegated-permission-grant/index.js +354 -0
- package/lib/service-principal-password/index.d.ts +176 -0
- package/lib/service-principal-password/index.js +384 -0
- package/lib/service-principal-token-signing-certificate/index.d.ts +137 -0
- package/lib/service-principal-token-signing-certificate/index.js +329 -0
- package/lib/synchronization-job/index.d.ts +177 -0
- package/lib/synchronization-job/index.js +424 -0
- package/lib/synchronization-job-provision-on-demand/index.d.ts +254 -0
- package/lib/synchronization-job-provision-on-demand/index.js +590 -0
- package/lib/synchronization-secret/index.d.ts +184 -0
- package/lib/synchronization-secret/index.js +449 -0
- package/lib/user/index.d.ts +517 -0
- package/lib/user/index.js +1084 -0
- package/lib/user-flow-attribute/index.d.ts +141 -0
- package/lib/user-flow-attribute/index.js +340 -0
- package/package.json +155 -0
|
@@ -0,0 +1,610 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ApplicationRegistration = exports.ApplicationRegistrationTimeoutsOutputReference = void 0;
|
|
5
|
+
exports.applicationRegistrationTimeoutsToTerraform = applicationRegistrationTimeoutsToTerraform;
|
|
6
|
+
exports.applicationRegistrationTimeoutsToHclTerraform = applicationRegistrationTimeoutsToHclTerraform;
|
|
7
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
8
|
+
const cdktn = require("cdktn");
|
|
9
|
+
function applicationRegistrationTimeoutsToTerraform(struct) {
|
|
10
|
+
if (!cdktn.canInspect(struct) || cdktn.Tokenization.isResolvable(struct)) {
|
|
11
|
+
return struct;
|
|
12
|
+
}
|
|
13
|
+
if (cdktn.isComplexElement(struct)) {
|
|
14
|
+
throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
create: cdktn.stringToTerraform(struct.create),
|
|
18
|
+
delete: cdktn.stringToTerraform(struct.delete),
|
|
19
|
+
read: cdktn.stringToTerraform(struct.read),
|
|
20
|
+
update: cdktn.stringToTerraform(struct.update),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function applicationRegistrationTimeoutsToHclTerraform(struct) {
|
|
24
|
+
if (!cdktn.canInspect(struct) || cdktn.Tokenization.isResolvable(struct)) {
|
|
25
|
+
return struct;
|
|
26
|
+
}
|
|
27
|
+
if (cdktn.isComplexElement(struct)) {
|
|
28
|
+
throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
|
|
29
|
+
}
|
|
30
|
+
const attrs = {
|
|
31
|
+
create: {
|
|
32
|
+
value: cdktn.stringToHclTerraform(struct.create),
|
|
33
|
+
isBlock: false,
|
|
34
|
+
type: "simple",
|
|
35
|
+
storageClassType: "string",
|
|
36
|
+
},
|
|
37
|
+
delete: {
|
|
38
|
+
value: cdktn.stringToHclTerraform(struct.delete),
|
|
39
|
+
isBlock: false,
|
|
40
|
+
type: "simple",
|
|
41
|
+
storageClassType: "string",
|
|
42
|
+
},
|
|
43
|
+
read: {
|
|
44
|
+
value: cdktn.stringToHclTerraform(struct.read),
|
|
45
|
+
isBlock: false,
|
|
46
|
+
type: "simple",
|
|
47
|
+
storageClassType: "string",
|
|
48
|
+
},
|
|
49
|
+
update: {
|
|
50
|
+
value: cdktn.stringToHclTerraform(struct.update),
|
|
51
|
+
isBlock: false,
|
|
52
|
+
type: "simple",
|
|
53
|
+
storageClassType: "string",
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
// remove undefined attributes
|
|
57
|
+
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
|
|
58
|
+
}
|
|
59
|
+
class ApplicationRegistrationTimeoutsOutputReference extends cdktn.ComplexObject {
|
|
60
|
+
/**
|
|
61
|
+
* @param terraformResource The parent resource
|
|
62
|
+
* @param terraformAttribute The attribute on the parent resource this class is referencing
|
|
63
|
+
*/
|
|
64
|
+
constructor(terraformResource, terraformAttribute) {
|
|
65
|
+
super(terraformResource, terraformAttribute, false);
|
|
66
|
+
this.isEmptyObject = false;
|
|
67
|
+
}
|
|
68
|
+
get internalValue() {
|
|
69
|
+
if (this.resolvableValue) {
|
|
70
|
+
return this.resolvableValue;
|
|
71
|
+
}
|
|
72
|
+
let hasAnyValues = this.isEmptyObject;
|
|
73
|
+
const internalValueResult = {};
|
|
74
|
+
if (this._create !== undefined) {
|
|
75
|
+
hasAnyValues = true;
|
|
76
|
+
internalValueResult.create = this._create;
|
|
77
|
+
}
|
|
78
|
+
if (this._delete !== undefined) {
|
|
79
|
+
hasAnyValues = true;
|
|
80
|
+
internalValueResult.delete = this._delete;
|
|
81
|
+
}
|
|
82
|
+
if (this._read !== undefined) {
|
|
83
|
+
hasAnyValues = true;
|
|
84
|
+
internalValueResult.read = this._read;
|
|
85
|
+
}
|
|
86
|
+
if (this._update !== undefined) {
|
|
87
|
+
hasAnyValues = true;
|
|
88
|
+
internalValueResult.update = this._update;
|
|
89
|
+
}
|
|
90
|
+
return hasAnyValues ? internalValueResult : undefined;
|
|
91
|
+
}
|
|
92
|
+
set internalValue(value) {
|
|
93
|
+
if (value === undefined) {
|
|
94
|
+
this.isEmptyObject = false;
|
|
95
|
+
this.resolvableValue = undefined;
|
|
96
|
+
this._create = undefined;
|
|
97
|
+
this._delete = undefined;
|
|
98
|
+
this._read = undefined;
|
|
99
|
+
this._update = undefined;
|
|
100
|
+
}
|
|
101
|
+
else if (cdktn.Tokenization.isResolvable(value)) {
|
|
102
|
+
this.isEmptyObject = false;
|
|
103
|
+
this.resolvableValue = value;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this.isEmptyObject = Object.keys(value).length === 0;
|
|
107
|
+
this.resolvableValue = undefined;
|
|
108
|
+
this._create = value.create;
|
|
109
|
+
this._delete = value.delete;
|
|
110
|
+
this._read = value.read;
|
|
111
|
+
this._update = value.update;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
get create() {
|
|
115
|
+
return this.getStringAttribute('create');
|
|
116
|
+
}
|
|
117
|
+
set create(value) {
|
|
118
|
+
this._create = value;
|
|
119
|
+
}
|
|
120
|
+
resetCreate() {
|
|
121
|
+
this._create = undefined;
|
|
122
|
+
}
|
|
123
|
+
// Temporarily expose input value. Use with caution.
|
|
124
|
+
get createInput() {
|
|
125
|
+
return this._create;
|
|
126
|
+
}
|
|
127
|
+
get delete() {
|
|
128
|
+
return this.getStringAttribute('delete');
|
|
129
|
+
}
|
|
130
|
+
set delete(value) {
|
|
131
|
+
this._delete = value;
|
|
132
|
+
}
|
|
133
|
+
resetDelete() {
|
|
134
|
+
this._delete = undefined;
|
|
135
|
+
}
|
|
136
|
+
// Temporarily expose input value. Use with caution.
|
|
137
|
+
get deleteInput() {
|
|
138
|
+
return this._delete;
|
|
139
|
+
}
|
|
140
|
+
get read() {
|
|
141
|
+
return this.getStringAttribute('read');
|
|
142
|
+
}
|
|
143
|
+
set read(value) {
|
|
144
|
+
this._read = value;
|
|
145
|
+
}
|
|
146
|
+
resetRead() {
|
|
147
|
+
this._read = undefined;
|
|
148
|
+
}
|
|
149
|
+
// Temporarily expose input value. Use with caution.
|
|
150
|
+
get readInput() {
|
|
151
|
+
return this._read;
|
|
152
|
+
}
|
|
153
|
+
get update() {
|
|
154
|
+
return this.getStringAttribute('update');
|
|
155
|
+
}
|
|
156
|
+
set update(value) {
|
|
157
|
+
this._update = value;
|
|
158
|
+
}
|
|
159
|
+
resetUpdate() {
|
|
160
|
+
this._update = undefined;
|
|
161
|
+
}
|
|
162
|
+
// Temporarily expose input value. Use with caution.
|
|
163
|
+
get updateInput() {
|
|
164
|
+
return this._update;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.ApplicationRegistrationTimeoutsOutputReference = ApplicationRegistrationTimeoutsOutputReference;
|
|
168
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
169
|
+
ApplicationRegistrationTimeoutsOutputReference[_a] = { fqn: "@cdktn/provider-azuread.applicationRegistration.ApplicationRegistrationTimeoutsOutputReference", version: "15.0.0" };
|
|
170
|
+
/**
|
|
171
|
+
* Represents a {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/application_registration azuread_application_registration}
|
|
172
|
+
*/
|
|
173
|
+
class ApplicationRegistration extends cdktn.TerraformResource {
|
|
174
|
+
// ==============
|
|
175
|
+
// STATIC Methods
|
|
176
|
+
// ==============
|
|
177
|
+
/**
|
|
178
|
+
* Generates CDKTN code for importing a ApplicationRegistration resource upon running "cdktn plan <stack-name>"
|
|
179
|
+
* @param scope The scope in which to define this construct
|
|
180
|
+
* @param importToId The construct id used in the generated config for the ApplicationRegistration to import
|
|
181
|
+
* @param importFromId The id of the existing ApplicationRegistration that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/application_registration#import import section} in the documentation of this resource for the id to use
|
|
182
|
+
* @param provider? Optional instance of the provider where the ApplicationRegistration to import is found
|
|
183
|
+
*/
|
|
184
|
+
static generateConfigForImport(scope, importToId, importFromId, provider) {
|
|
185
|
+
return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "azuread_application_registration", importId: importFromId, provider });
|
|
186
|
+
}
|
|
187
|
+
// ===========
|
|
188
|
+
// INITIALIZER
|
|
189
|
+
// ===========
|
|
190
|
+
/**
|
|
191
|
+
* Create a new {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/application_registration azuread_application_registration} Resource
|
|
192
|
+
*
|
|
193
|
+
* @param scope The scope in which to define this construct
|
|
194
|
+
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
|
|
195
|
+
* @param options ApplicationRegistrationConfig
|
|
196
|
+
*/
|
|
197
|
+
constructor(scope, id, config) {
|
|
198
|
+
super(scope, id, {
|
|
199
|
+
terraformResourceType: 'azuread_application_registration',
|
|
200
|
+
terraformGeneratorMetadata: {
|
|
201
|
+
providerName: 'azuread',
|
|
202
|
+
providerVersion: '3.7.0',
|
|
203
|
+
providerVersionConstraint: '~> 3.0'
|
|
204
|
+
},
|
|
205
|
+
provider: config.provider,
|
|
206
|
+
dependsOn: config.dependsOn,
|
|
207
|
+
count: config.count,
|
|
208
|
+
lifecycle: config.lifecycle,
|
|
209
|
+
provisioners: config.provisioners,
|
|
210
|
+
connection: config.connection,
|
|
211
|
+
forEach: config.forEach
|
|
212
|
+
});
|
|
213
|
+
// timeouts - computed: false, optional: true, required: false
|
|
214
|
+
this._timeouts = new ApplicationRegistrationTimeoutsOutputReference(this, "timeouts");
|
|
215
|
+
this._description = config.description;
|
|
216
|
+
this._displayName = config.displayName;
|
|
217
|
+
this._groupMembershipClaims = config.groupMembershipClaims;
|
|
218
|
+
this._homepageUrl = config.homepageUrl;
|
|
219
|
+
this._id = config.id;
|
|
220
|
+
this._implicitAccessTokenIssuanceEnabled = config.implicitAccessTokenIssuanceEnabled;
|
|
221
|
+
this._implicitIdTokenIssuanceEnabled = config.implicitIdTokenIssuanceEnabled;
|
|
222
|
+
this._logoutUrl = config.logoutUrl;
|
|
223
|
+
this._marketingUrl = config.marketingUrl;
|
|
224
|
+
this._notes = config.notes;
|
|
225
|
+
this._privacyStatementUrl = config.privacyStatementUrl;
|
|
226
|
+
this._requestedAccessTokenVersion = config.requestedAccessTokenVersion;
|
|
227
|
+
this._serviceManagementReference = config.serviceManagementReference;
|
|
228
|
+
this._signInAudience = config.signInAudience;
|
|
229
|
+
this._supportUrl = config.supportUrl;
|
|
230
|
+
this._termsOfServiceUrl = config.termsOfServiceUrl;
|
|
231
|
+
this._timeouts.internalValue = config.timeouts;
|
|
232
|
+
}
|
|
233
|
+
// ==========
|
|
234
|
+
// ATTRIBUTES
|
|
235
|
+
// ==========
|
|
236
|
+
// client_id - computed: true, optional: false, required: false
|
|
237
|
+
get clientId() {
|
|
238
|
+
return this.getStringAttribute('client_id');
|
|
239
|
+
}
|
|
240
|
+
get description() {
|
|
241
|
+
return this.getStringAttribute('description');
|
|
242
|
+
}
|
|
243
|
+
set description(value) {
|
|
244
|
+
this._description = value;
|
|
245
|
+
}
|
|
246
|
+
resetDescription() {
|
|
247
|
+
this._description = undefined;
|
|
248
|
+
}
|
|
249
|
+
// Temporarily expose input value. Use with caution.
|
|
250
|
+
get descriptionInput() {
|
|
251
|
+
return this._description;
|
|
252
|
+
}
|
|
253
|
+
// disabled_by_microsoft - computed: true, optional: false, required: false
|
|
254
|
+
get disabledByMicrosoft() {
|
|
255
|
+
return this.getStringAttribute('disabled_by_microsoft');
|
|
256
|
+
}
|
|
257
|
+
get displayName() {
|
|
258
|
+
return this.getStringAttribute('display_name');
|
|
259
|
+
}
|
|
260
|
+
set displayName(value) {
|
|
261
|
+
this._displayName = value;
|
|
262
|
+
}
|
|
263
|
+
// Temporarily expose input value. Use with caution.
|
|
264
|
+
get displayNameInput() {
|
|
265
|
+
return this._displayName;
|
|
266
|
+
}
|
|
267
|
+
get groupMembershipClaims() {
|
|
268
|
+
return cdktn.Fn.tolist(this.getListAttribute('group_membership_claims'));
|
|
269
|
+
}
|
|
270
|
+
set groupMembershipClaims(value) {
|
|
271
|
+
this._groupMembershipClaims = value;
|
|
272
|
+
}
|
|
273
|
+
resetGroupMembershipClaims() {
|
|
274
|
+
this._groupMembershipClaims = undefined;
|
|
275
|
+
}
|
|
276
|
+
// Temporarily expose input value. Use with caution.
|
|
277
|
+
get groupMembershipClaimsInput() {
|
|
278
|
+
return this._groupMembershipClaims;
|
|
279
|
+
}
|
|
280
|
+
get homepageUrl() {
|
|
281
|
+
return this.getStringAttribute('homepage_url');
|
|
282
|
+
}
|
|
283
|
+
set homepageUrl(value) {
|
|
284
|
+
this._homepageUrl = value;
|
|
285
|
+
}
|
|
286
|
+
resetHomepageUrl() {
|
|
287
|
+
this._homepageUrl = undefined;
|
|
288
|
+
}
|
|
289
|
+
// Temporarily expose input value. Use with caution.
|
|
290
|
+
get homepageUrlInput() {
|
|
291
|
+
return this._homepageUrl;
|
|
292
|
+
}
|
|
293
|
+
get id() {
|
|
294
|
+
return this.getStringAttribute('id');
|
|
295
|
+
}
|
|
296
|
+
set id(value) {
|
|
297
|
+
this._id = value;
|
|
298
|
+
}
|
|
299
|
+
resetId() {
|
|
300
|
+
this._id = undefined;
|
|
301
|
+
}
|
|
302
|
+
// Temporarily expose input value. Use with caution.
|
|
303
|
+
get idInput() {
|
|
304
|
+
return this._id;
|
|
305
|
+
}
|
|
306
|
+
get implicitAccessTokenIssuanceEnabled() {
|
|
307
|
+
return this.getBooleanAttribute('implicit_access_token_issuance_enabled');
|
|
308
|
+
}
|
|
309
|
+
set implicitAccessTokenIssuanceEnabled(value) {
|
|
310
|
+
this._implicitAccessTokenIssuanceEnabled = value;
|
|
311
|
+
}
|
|
312
|
+
resetImplicitAccessTokenIssuanceEnabled() {
|
|
313
|
+
this._implicitAccessTokenIssuanceEnabled = undefined;
|
|
314
|
+
}
|
|
315
|
+
// Temporarily expose input value. Use with caution.
|
|
316
|
+
get implicitAccessTokenIssuanceEnabledInput() {
|
|
317
|
+
return this._implicitAccessTokenIssuanceEnabled;
|
|
318
|
+
}
|
|
319
|
+
get implicitIdTokenIssuanceEnabled() {
|
|
320
|
+
return this.getBooleanAttribute('implicit_id_token_issuance_enabled');
|
|
321
|
+
}
|
|
322
|
+
set implicitIdTokenIssuanceEnabled(value) {
|
|
323
|
+
this._implicitIdTokenIssuanceEnabled = value;
|
|
324
|
+
}
|
|
325
|
+
resetImplicitIdTokenIssuanceEnabled() {
|
|
326
|
+
this._implicitIdTokenIssuanceEnabled = undefined;
|
|
327
|
+
}
|
|
328
|
+
// Temporarily expose input value. Use with caution.
|
|
329
|
+
get implicitIdTokenIssuanceEnabledInput() {
|
|
330
|
+
return this._implicitIdTokenIssuanceEnabled;
|
|
331
|
+
}
|
|
332
|
+
get logoutUrl() {
|
|
333
|
+
return this.getStringAttribute('logout_url');
|
|
334
|
+
}
|
|
335
|
+
set logoutUrl(value) {
|
|
336
|
+
this._logoutUrl = value;
|
|
337
|
+
}
|
|
338
|
+
resetLogoutUrl() {
|
|
339
|
+
this._logoutUrl = undefined;
|
|
340
|
+
}
|
|
341
|
+
// Temporarily expose input value. Use with caution.
|
|
342
|
+
get logoutUrlInput() {
|
|
343
|
+
return this._logoutUrl;
|
|
344
|
+
}
|
|
345
|
+
get marketingUrl() {
|
|
346
|
+
return this.getStringAttribute('marketing_url');
|
|
347
|
+
}
|
|
348
|
+
set marketingUrl(value) {
|
|
349
|
+
this._marketingUrl = value;
|
|
350
|
+
}
|
|
351
|
+
resetMarketingUrl() {
|
|
352
|
+
this._marketingUrl = undefined;
|
|
353
|
+
}
|
|
354
|
+
// Temporarily expose input value. Use with caution.
|
|
355
|
+
get marketingUrlInput() {
|
|
356
|
+
return this._marketingUrl;
|
|
357
|
+
}
|
|
358
|
+
get notes() {
|
|
359
|
+
return this.getStringAttribute('notes');
|
|
360
|
+
}
|
|
361
|
+
set notes(value) {
|
|
362
|
+
this._notes = value;
|
|
363
|
+
}
|
|
364
|
+
resetNotes() {
|
|
365
|
+
this._notes = undefined;
|
|
366
|
+
}
|
|
367
|
+
// Temporarily expose input value. Use with caution.
|
|
368
|
+
get notesInput() {
|
|
369
|
+
return this._notes;
|
|
370
|
+
}
|
|
371
|
+
// object_id - computed: true, optional: false, required: false
|
|
372
|
+
get objectId() {
|
|
373
|
+
return this.getStringAttribute('object_id');
|
|
374
|
+
}
|
|
375
|
+
get privacyStatementUrl() {
|
|
376
|
+
return this.getStringAttribute('privacy_statement_url');
|
|
377
|
+
}
|
|
378
|
+
set privacyStatementUrl(value) {
|
|
379
|
+
this._privacyStatementUrl = value;
|
|
380
|
+
}
|
|
381
|
+
resetPrivacyStatementUrl() {
|
|
382
|
+
this._privacyStatementUrl = undefined;
|
|
383
|
+
}
|
|
384
|
+
// Temporarily expose input value. Use with caution.
|
|
385
|
+
get privacyStatementUrlInput() {
|
|
386
|
+
return this._privacyStatementUrl;
|
|
387
|
+
}
|
|
388
|
+
// publisher_domain - computed: true, optional: false, required: false
|
|
389
|
+
get publisherDomain() {
|
|
390
|
+
return this.getStringAttribute('publisher_domain');
|
|
391
|
+
}
|
|
392
|
+
get requestedAccessTokenVersion() {
|
|
393
|
+
return this.getNumberAttribute('requested_access_token_version');
|
|
394
|
+
}
|
|
395
|
+
set requestedAccessTokenVersion(value) {
|
|
396
|
+
this._requestedAccessTokenVersion = value;
|
|
397
|
+
}
|
|
398
|
+
resetRequestedAccessTokenVersion() {
|
|
399
|
+
this._requestedAccessTokenVersion = undefined;
|
|
400
|
+
}
|
|
401
|
+
// Temporarily expose input value. Use with caution.
|
|
402
|
+
get requestedAccessTokenVersionInput() {
|
|
403
|
+
return this._requestedAccessTokenVersion;
|
|
404
|
+
}
|
|
405
|
+
get serviceManagementReference() {
|
|
406
|
+
return this.getStringAttribute('service_management_reference');
|
|
407
|
+
}
|
|
408
|
+
set serviceManagementReference(value) {
|
|
409
|
+
this._serviceManagementReference = value;
|
|
410
|
+
}
|
|
411
|
+
resetServiceManagementReference() {
|
|
412
|
+
this._serviceManagementReference = undefined;
|
|
413
|
+
}
|
|
414
|
+
// Temporarily expose input value. Use with caution.
|
|
415
|
+
get serviceManagementReferenceInput() {
|
|
416
|
+
return this._serviceManagementReference;
|
|
417
|
+
}
|
|
418
|
+
get signInAudience() {
|
|
419
|
+
return this.getStringAttribute('sign_in_audience');
|
|
420
|
+
}
|
|
421
|
+
set signInAudience(value) {
|
|
422
|
+
this._signInAudience = value;
|
|
423
|
+
}
|
|
424
|
+
resetSignInAudience() {
|
|
425
|
+
this._signInAudience = undefined;
|
|
426
|
+
}
|
|
427
|
+
// Temporarily expose input value. Use with caution.
|
|
428
|
+
get signInAudienceInput() {
|
|
429
|
+
return this._signInAudience;
|
|
430
|
+
}
|
|
431
|
+
get supportUrl() {
|
|
432
|
+
return this.getStringAttribute('support_url');
|
|
433
|
+
}
|
|
434
|
+
set supportUrl(value) {
|
|
435
|
+
this._supportUrl = value;
|
|
436
|
+
}
|
|
437
|
+
resetSupportUrl() {
|
|
438
|
+
this._supportUrl = undefined;
|
|
439
|
+
}
|
|
440
|
+
// Temporarily expose input value. Use with caution.
|
|
441
|
+
get supportUrlInput() {
|
|
442
|
+
return this._supportUrl;
|
|
443
|
+
}
|
|
444
|
+
get termsOfServiceUrl() {
|
|
445
|
+
return this.getStringAttribute('terms_of_service_url');
|
|
446
|
+
}
|
|
447
|
+
set termsOfServiceUrl(value) {
|
|
448
|
+
this._termsOfServiceUrl = value;
|
|
449
|
+
}
|
|
450
|
+
resetTermsOfServiceUrl() {
|
|
451
|
+
this._termsOfServiceUrl = undefined;
|
|
452
|
+
}
|
|
453
|
+
// Temporarily expose input value. Use with caution.
|
|
454
|
+
get termsOfServiceUrlInput() {
|
|
455
|
+
return this._termsOfServiceUrl;
|
|
456
|
+
}
|
|
457
|
+
get timeouts() {
|
|
458
|
+
return this._timeouts;
|
|
459
|
+
}
|
|
460
|
+
putTimeouts(value) {
|
|
461
|
+
this._timeouts.internalValue = value;
|
|
462
|
+
}
|
|
463
|
+
resetTimeouts() {
|
|
464
|
+
this._timeouts.internalValue = undefined;
|
|
465
|
+
}
|
|
466
|
+
// Temporarily expose input value. Use with caution.
|
|
467
|
+
get timeoutsInput() {
|
|
468
|
+
return this._timeouts.internalValue;
|
|
469
|
+
}
|
|
470
|
+
// =========
|
|
471
|
+
// SYNTHESIS
|
|
472
|
+
// =========
|
|
473
|
+
synthesizeAttributes() {
|
|
474
|
+
return {
|
|
475
|
+
description: cdktn.stringToTerraform(this._description),
|
|
476
|
+
display_name: cdktn.stringToTerraform(this._displayName),
|
|
477
|
+
group_membership_claims: cdktn.listMapper(cdktn.stringToTerraform, false)(this._groupMembershipClaims),
|
|
478
|
+
homepage_url: cdktn.stringToTerraform(this._homepageUrl),
|
|
479
|
+
id: cdktn.stringToTerraform(this._id),
|
|
480
|
+
implicit_access_token_issuance_enabled: cdktn.booleanToTerraform(this._implicitAccessTokenIssuanceEnabled),
|
|
481
|
+
implicit_id_token_issuance_enabled: cdktn.booleanToTerraform(this._implicitIdTokenIssuanceEnabled),
|
|
482
|
+
logout_url: cdktn.stringToTerraform(this._logoutUrl),
|
|
483
|
+
marketing_url: cdktn.stringToTerraform(this._marketingUrl),
|
|
484
|
+
notes: cdktn.stringToTerraform(this._notes),
|
|
485
|
+
privacy_statement_url: cdktn.stringToTerraform(this._privacyStatementUrl),
|
|
486
|
+
requested_access_token_version: cdktn.numberToTerraform(this._requestedAccessTokenVersion),
|
|
487
|
+
service_management_reference: cdktn.stringToTerraform(this._serviceManagementReference),
|
|
488
|
+
sign_in_audience: cdktn.stringToTerraform(this._signInAudience),
|
|
489
|
+
support_url: cdktn.stringToTerraform(this._supportUrl),
|
|
490
|
+
terms_of_service_url: cdktn.stringToTerraform(this._termsOfServiceUrl),
|
|
491
|
+
timeouts: applicationRegistrationTimeoutsToTerraform(this._timeouts.internalValue),
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
synthesizeHclAttributes() {
|
|
495
|
+
const attrs = {
|
|
496
|
+
description: {
|
|
497
|
+
value: cdktn.stringToHclTerraform(this._description),
|
|
498
|
+
isBlock: false,
|
|
499
|
+
type: "simple",
|
|
500
|
+
storageClassType: "string",
|
|
501
|
+
},
|
|
502
|
+
display_name: {
|
|
503
|
+
value: cdktn.stringToHclTerraform(this._displayName),
|
|
504
|
+
isBlock: false,
|
|
505
|
+
type: "simple",
|
|
506
|
+
storageClassType: "string",
|
|
507
|
+
},
|
|
508
|
+
group_membership_claims: {
|
|
509
|
+
value: cdktn.listMapperHcl(cdktn.stringToHclTerraform, false)(this._groupMembershipClaims),
|
|
510
|
+
isBlock: false,
|
|
511
|
+
type: "set",
|
|
512
|
+
storageClassType: "stringList",
|
|
513
|
+
},
|
|
514
|
+
homepage_url: {
|
|
515
|
+
value: cdktn.stringToHclTerraform(this._homepageUrl),
|
|
516
|
+
isBlock: false,
|
|
517
|
+
type: "simple",
|
|
518
|
+
storageClassType: "string",
|
|
519
|
+
},
|
|
520
|
+
id: {
|
|
521
|
+
value: cdktn.stringToHclTerraform(this._id),
|
|
522
|
+
isBlock: false,
|
|
523
|
+
type: "simple",
|
|
524
|
+
storageClassType: "string",
|
|
525
|
+
},
|
|
526
|
+
implicit_access_token_issuance_enabled: {
|
|
527
|
+
value: cdktn.booleanToHclTerraform(this._implicitAccessTokenIssuanceEnabled),
|
|
528
|
+
isBlock: false,
|
|
529
|
+
type: "simple",
|
|
530
|
+
storageClassType: "boolean",
|
|
531
|
+
},
|
|
532
|
+
implicit_id_token_issuance_enabled: {
|
|
533
|
+
value: cdktn.booleanToHclTerraform(this._implicitIdTokenIssuanceEnabled),
|
|
534
|
+
isBlock: false,
|
|
535
|
+
type: "simple",
|
|
536
|
+
storageClassType: "boolean",
|
|
537
|
+
},
|
|
538
|
+
logout_url: {
|
|
539
|
+
value: cdktn.stringToHclTerraform(this._logoutUrl),
|
|
540
|
+
isBlock: false,
|
|
541
|
+
type: "simple",
|
|
542
|
+
storageClassType: "string",
|
|
543
|
+
},
|
|
544
|
+
marketing_url: {
|
|
545
|
+
value: cdktn.stringToHclTerraform(this._marketingUrl),
|
|
546
|
+
isBlock: false,
|
|
547
|
+
type: "simple",
|
|
548
|
+
storageClassType: "string",
|
|
549
|
+
},
|
|
550
|
+
notes: {
|
|
551
|
+
value: cdktn.stringToHclTerraform(this._notes),
|
|
552
|
+
isBlock: false,
|
|
553
|
+
type: "simple",
|
|
554
|
+
storageClassType: "string",
|
|
555
|
+
},
|
|
556
|
+
privacy_statement_url: {
|
|
557
|
+
value: cdktn.stringToHclTerraform(this._privacyStatementUrl),
|
|
558
|
+
isBlock: false,
|
|
559
|
+
type: "simple",
|
|
560
|
+
storageClassType: "string",
|
|
561
|
+
},
|
|
562
|
+
requested_access_token_version: {
|
|
563
|
+
value: cdktn.numberToHclTerraform(this._requestedAccessTokenVersion),
|
|
564
|
+
isBlock: false,
|
|
565
|
+
type: "simple",
|
|
566
|
+
storageClassType: "number",
|
|
567
|
+
},
|
|
568
|
+
service_management_reference: {
|
|
569
|
+
value: cdktn.stringToHclTerraform(this._serviceManagementReference),
|
|
570
|
+
isBlock: false,
|
|
571
|
+
type: "simple",
|
|
572
|
+
storageClassType: "string",
|
|
573
|
+
},
|
|
574
|
+
sign_in_audience: {
|
|
575
|
+
value: cdktn.stringToHclTerraform(this._signInAudience),
|
|
576
|
+
isBlock: false,
|
|
577
|
+
type: "simple",
|
|
578
|
+
storageClassType: "string",
|
|
579
|
+
},
|
|
580
|
+
support_url: {
|
|
581
|
+
value: cdktn.stringToHclTerraform(this._supportUrl),
|
|
582
|
+
isBlock: false,
|
|
583
|
+
type: "simple",
|
|
584
|
+
storageClassType: "string",
|
|
585
|
+
},
|
|
586
|
+
terms_of_service_url: {
|
|
587
|
+
value: cdktn.stringToHclTerraform(this._termsOfServiceUrl),
|
|
588
|
+
isBlock: false,
|
|
589
|
+
type: "simple",
|
|
590
|
+
storageClassType: "string",
|
|
591
|
+
},
|
|
592
|
+
timeouts: {
|
|
593
|
+
value: applicationRegistrationTimeoutsToHclTerraform(this._timeouts.internalValue),
|
|
594
|
+
isBlock: true,
|
|
595
|
+
type: "struct",
|
|
596
|
+
storageClassType: "ApplicationRegistrationTimeouts",
|
|
597
|
+
},
|
|
598
|
+
};
|
|
599
|
+
// remove undefined attributes
|
|
600
|
+
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
exports.ApplicationRegistration = ApplicationRegistration;
|
|
604
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
605
|
+
ApplicationRegistration[_b] = { fqn: "@cdktn/provider-azuread.applicationRegistration.ApplicationRegistration", version: "15.0.0" };
|
|
606
|
+
// =================
|
|
607
|
+
// STATIC PROPERTIES
|
|
608
|
+
// =================
|
|
609
|
+
ApplicationRegistration.tfResourceType = "azuread_application_registration";
|
|
610
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24tcmVnaXN0cmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUF5SUEsZ0dBV0M7QUFHRCxzR0FrQ0M7O0FBaExELCtCQUErQjtBQWdJL0IsU0FBZ0IsMENBQTBDLENBQUMsTUFBNEQ7SUFDckgsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sTUFBTSxDQUFDO0lBQUMsQ0FBQztJQUM1RixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsb0hBQW9ILENBQUMsQ0FBQztJQUN4SSxDQUFDO0lBQ0QsT0FBTztRQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLE1BQU0sQ0FBQztRQUMvQyxNQUFNLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxNQUFNLENBQUM7UUFDL0MsSUFBSSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsSUFBSSxDQUFDO1FBQzNDLE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLE1BQU0sQ0FBQztLQUNoRCxDQUFBO0FBQ0gsQ0FBQztBQUdELFNBQWdCLDZDQUE2QyxDQUFDLE1BQTREO0lBQ3hILElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLE1BQU0sQ0FBQztJQUFDLENBQUM7SUFDNUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxD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OWVILDBEQStlQzs7O0FBN2VDLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ0csc0NBQWMsR0FBRyxrQ0FBa0MsQUFBckMsQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAyMSwgMjAyNlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG4vLyBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmVnaXN0cmF0aW9uXG4vLyBnZW5lcmF0ZWQgZnJvbSB0ZXJyYWZvcm0gcmVzb3VyY2Ugc2NoZW1hXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSAnY2RrdG4nO1xuXG4vLyBDb25maWd1cmF0aW9uXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25SZWdpc3RyYXRpb25Db25maWcgZXh0ZW5kcyBjZGt0bi5UZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgLyoqXG4gICogRGVzY3JpcHRpb24gb2YgdGhlIGFwcGxpY2F0aW9uIGFzIHNob3duIHRvIGVuZCB1c2Vyc1xuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmVnaXN0cmF0aW9uI2Rlc2NyaXB0aW9uIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uI2Rlc2NyaXB0aW9ufVxuICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICogVGhlIGRpc3BsYXkgbmFtZSBmb3IgdGhlIGFwcGxpY2F0aW9uXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9yZWdpc3RyYXRpb24jZGlzcGxheV9uYW1lIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uI2Rpc3BsYXlfbmFtZX1cbiAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICogQ29uZmlndXJlcyB0aGUgYGdyb3Vwc2AgY2xhaW0gdGhhdCB0aGUgYXBwIGV4cGVjdHMgaXNzdWVkIGluIGEgdXNlciBvciBPQXV0aCBhY2Nlc3MgdG9rZW5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNncm91cF9tZW1iZXJzaGlwX2NsYWltcyBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiNncm91cF9tZW1iZXJzaGlwX2NsYWltc31cbiAgKi9cbiAgcmVhZG9ubHkgZ3JvdXBNZW1iZXJzaGlwQ2xhaW1zPzogc3RyaW5nW107XG4gIC8qKlxuICAqIFVSTCBvZiB0aGUgaG9tZSBwYWdlIGZvciB0aGUgYXBwbGljYXRpb25cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNob21lcGFnZV91cmwgQXBwbGljYXRpb25SZWdpc3RyYXRpb24jaG9tZXBhZ2VfdXJsfVxuICAqL1xuICByZWFkb25seSBob21lcGFnZVVybD86IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmVnaXN0cmF0aW9uI2lkIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uI2lkfVxuICAqXG4gICogUGxlYXNlIGJlIGF3YXJlIHRoYXQgdGhlIGlkIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxsIHJlc291cmNlcyBpbiBUZXJyYWZvcm0gcHJvdmlkZXJzIHVzaW5nIGEgVGVycmFmb3JtIHByb3ZpZGVyIFNESyB2ZXJzaW9uIGJlbG93IDIuXG4gICogSWYgeW91IGV4cGVyaWVuY2UgcHJvYmxlbXMgc2V0dGluZyB0aGlzIHZhbHVlIGl0IG1pZ2h0IG5vdCBiZSBzZXR0YWJsZS4gUGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSBwcm92aWRlciBkb2N1bWVudGF0aW9uIHRvIGVuc3VyZSBpdCBzaG91bGQgYmUgc2V0dGFibGUuXG4gICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICAvKipcbiAgKiBXaGV0aGVyIHRoaXMgYXBwbGljYXRpb24gY2FuIHJlcXVlc3QgYW4gYWNjZXNzIHRva2VuIHVzaW5nIE9BdXRoIGltcGxpY2l0IGZsb3dcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNpbXBsaWNpdF9hY2Nlc3NfdG9rZW5faXNzdWFuY2VfZW5hYmxlZCBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiNpbXBsaWNpdF9hY2Nlc3NfdG9rZW5faXNzdWFuY2VfZW5hYmxlZH1cbiAgKi9cbiAgcmVhZG9ubHkgaW1wbGljaXRBY2Nlc3NUb2tlbklzc3VhbmNlRW5hYmxlZD86IGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICogV2hldGhlciB0aGlzIGFwcGxpY2F0aW9uIGNhbiByZXF1ZXN0IGFuIElEIHRva2VuIHVzaW5nIE9BdXRoIGltcGxpY2l0IGZsb3dcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNpbXBsaWNpdF9pZF90b2tlbl9pc3N1YW5jZV9lbmFibGVkIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uI2ltcGxpY2l0X2lkX3Rva2VuX2lzc3VhbmNlX2VuYWJsZWR9XG4gICovXG4gIHJlYWRvbmx5IGltcGxpY2l0SWRUb2tlbklzc3VhbmNlRW5hYmxlZD86IGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICogVVJMIG9mIHRoZSBsb2dvdXQgcGFnZSBmb3IgdGhlIGFwcGxpY2F0aW9uLCB3aGVyZSB0aGUgc2Vzc2lvbiBpcyBjbGVhcmVkIGZvciBzaW5nbGUgc2lnbi1vdXRcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNsb2dvdXRfdXJsIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uI2xvZ291dF91cmx9XG4gICovXG4gIHJlYWRvbmx5IGxvZ291dFVybD86IHN0cmluZztcbiAgLyoqXG4gICogVVJMIG9mIHRoZSBtYXJrZXRpbmcgcGFnZSBmb3IgdGhlIGFwcGxpY2F0aW9uXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9yZWdpc3RyYXRpb24jbWFya2V0aW5nX3VybCBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiNtYXJrZXRpbmdfdXJsfVxuICAqL1xuICByZWFkb25seSBtYXJrZXRpbmdVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFVzZXItc3BlY2lmaWVkIG5vdGVzIHJlbGV2YW50IGZvciB0aGUgbWFuYWdlbWVudCBvZiB0aGUgYXBwbGljYXRpb25cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNub3RlcyBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiNub3Rlc31cbiAgKi9cbiAgcmVhZG9ubHkgbm90ZXM/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFVSTCBvZiB0aGUgcHJpdmFjeSBzdGF0ZW1lbnQgZm9yIHRoZSBhcHBsaWNhdGlvblxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmVnaXN0cmF0aW9uI3ByaXZhY3lfc3RhdGVtZW50X3VybCBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiNwcml2YWN5X3N0YXRlbWVudF91cmx9XG4gICovXG4gIHJlYWRvbmx5IHByaXZhY3lTdGF0ZW1lbnRVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFRoZSBhY2Nlc3MgdG9rZW4gdmVyc2lvbiBleHBlY3RlZCBieSB0aGlzIHJlc291cmNlXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9yZWdpc3RyYXRpb24jcmVxdWVzdGVkX2FjY2Vzc190b2tlbl92ZXJzaW9uIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uI3JlcXVlc3RlZF9hY2Nlc3NfdG9rZW5fdmVyc2lvbn1cbiAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdGVkQWNjZXNzVG9rZW5WZXJzaW9uPzogbnVtYmVyO1xuICAvKipcbiAgKiBSZWZlcmVuY2VzIGFwcGxpY2F0aW9uIG9yIGNvbnRhY3QgaW5mb3JtYXRpb24gZnJvbSBhIHNlcnZpY2Ugb3IgYXNzZXQgbWFuYWdlbWVudCBkYXRhYmFzZVxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmVnaXN0cmF0aW9uI3NlcnZpY2VfbWFuYWdlbWVudF9yZWZlcmVuY2UgQXBwbGljYXRpb25SZWdpc3RyYXRpb24jc2VydmljZV9tYW5hZ2VtZW50X3JlZmVyZW5jZX1cbiAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU1hbmFnZW1lbnRSZWZlcmVuY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFRoZSBNaWNyb3NvZnQgYWNjb3VudCB0eXBlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgZm9yIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9yZWdpc3RyYXRpb24jc2lnbl9pbl9hdWRpZW5jZSBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiNzaWduX2luX2F1ZGllbmNlfVxuICAqL1xuICByZWFkb25seSBzaWduSW5BdWRpZW5jZT86IHN0cmluZztcbiAgLyoqXG4gICogVVJMIG9mIHRoZSBzdXBwb3J0IHBhZ2UgZm9yIHRoZSBhcHBsaWNhdGlvblxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmVnaXN0cmF0aW9uI3N1cHBvcnRfdXJsIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uI3N1cHBvcnRfdXJsfVxuICAqL1xuICByZWFkb25seSBzdXBwb3J0VXJsPzogc3RyaW5nO1xuICAvKipcbiAgKiBVUkwgb2YgdGhlIHRlcm1zIG9mIHNlcnZpY2Ugc3RhdGVtZW50IGZvciB0aGUgYXBwbGljYXRpb25cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiN0ZXJtc19vZl9zZXJ2aWNlX3VybCBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiN0ZXJtc19vZl9zZXJ2aWNlX3VybH1cbiAgKi9cbiAgcmVhZG9ubHkgdGVybXNPZlNlcnZpY2VVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAqIHRpbWVvdXRzIGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9yZWdpc3RyYXRpb24jdGltZW91dHMgQXBwbGljYXRpb25SZWdpc3RyYXRpb24jdGltZW91dHN9XG4gICovXG4gIHJlYWRvbmx5IHRpbWVvdXRzPzogQXBwbGljYXRpb25SZWdpc3RyYXRpb25UaW1lb3V0cztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25SZWdpc3RyYXRpb25UaW1lb3V0cyB7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNjcmVhdGUgQXBwbGljYXRpb25SZWdpc3RyYXRpb24jY3JlYXRlfVxuICAqL1xuICByZWFkb25seSBjcmVhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNkZWxldGUgQXBwbGljYXRpb25SZWdpc3RyYXRpb24jZGVsZXRlfVxuICAqL1xuICByZWFkb25seSBkZWxldGU/OiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNyZWFkIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uI3JlYWR9XG4gICovXG4gIHJlYWRvbmx5IHJlYWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiN1cGRhdGUgQXBwbGljYXRpb25SZWdpc3RyYXRpb24jdXBkYXRlfVxuICAqL1xuICByZWFkb25seSB1cGRhdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBsaWNhdGlvblJlZ2lzdHJhdGlvblRpbWVvdXRzVG9UZXJyYWZvcm0oc3RydWN0PzogQXBwbGljYXRpb25SZWdpc3RyYXRpb25UaW1lb3V0cyB8IGNka3RuLklSZXNvbHZhYmxlKTogYW55IHtcbiAgaWYgKCFjZGt0bi5jYW5JbnNwZWN0KHN0cnVjdCkgfHwgY2RrdG4uVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZShzdHJ1Y3QpKSB7IHJldHVybiBzdHJ1Y3Q7IH1cbiAgaWYgKGNka3RuLmlzQ29tcGxleEVsZW1lbnQoc3RydWN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgY29tcGxleCBlbGVtZW50IHdhcyB1c2VkIGFzIGNvbmZpZ3VyYXRpb24sIHRoaXMgaXMgbm90IHN1cHBvcnRlZDogaHR0cHM6Ly9jZGsudGYvY29tcGxleC1vYmplY3QtYXMtY29uZmlndXJhdGlvblwiKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNyZWF0ZTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5jcmVhdGUpLFxuICAgIGRlbGV0ZTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5kZWxldGUpLFxuICAgIHJlYWQ6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEucmVhZCksXG4gICAgdXBkYXRlOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybShzdHJ1Y3QhLnVwZGF0ZSksXG4gIH1cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25SZWdpc3RyYXRpb25UaW1lb3V0c1RvSGNsVGVycmFmb3JtKHN0cnVjdD86IEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uVGltZW91dHMgfCBjZGt0bi5JUmVzb2x2YWJsZSk6IGFueSB7XG4gIGlmICghY2RrdG4uY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RuLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkgeyByZXR1cm4gc3RydWN0OyB9XG4gIGlmIChjZGt0bi5pc0NvbXBsZXhFbGVtZW50KHN0cnVjdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGNvbXBsZXggZWxlbWVudCB3YXMgdXNlZCBhcyBjb25maWd1cmF0aW9uLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQ6IGh0dHBzOi8vY2RrLnRmL2NvbXBsZXgtb2JqZWN0LWFzLWNvbmZpZ3VyYXRpb25cIik7XG4gIH1cbiAgY29uc3QgYXR0cnMgPSB7XG4gICAgY3JlYXRlOiB7XG4gICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0oc3RydWN0IS5jcmVhdGUpLFxuICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICB9LFxuICAgIGRlbGV0ZToge1xuICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHN0cnVjdCEuZGVsZXRlKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgICByZWFkOiB7XG4gICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0oc3RydWN0IS5yZWFkKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgICB1cGRhdGU6IHtcbiAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybShzdHJ1Y3QhLnVwZGF0ZSksXG4gICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gIH07XG5cbiAgLy8gcmVtb3ZlIHVuZGVmaW5lZCBhdHRyaWJ1dGVzXG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkKSk7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvblRpbWVvdXRzT3V0cHV0UmVmZXJlbmNlIGV4dGVuZHMgY2RrdG4uQ29tcGxleE9iamVjdCB7XG4gIHByaXZhdGUgaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICBwcml2YXRlIHJlc29sdmFibGVWYWx1ZT86IGNka3RuLklSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAqIEBwYXJhbSB0ZXJyYWZvcm1SZXNvdXJjZSBUaGUgcGFyZW50IHJlc291cmNlXG4gICogQHBhcmFtIHRlcnJhZm9ybUF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG9uIHRoZSBwYXJlbnQgcmVzb3VyY2UgdGhpcyBjbGFzcyBpcyByZWZlcmVuY2luZ1xuICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IodGVycmFmb3JtUmVzb3VyY2U6IGNka3RuLklJbnRlcnBvbGF0aW5nUGFyZW50LCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW50ZXJuYWxWYWx1ZSgpOiBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvblRpbWVvdXRzIHwgY2RrdG4uSVJlc29sdmFibGUgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnJlc29sdmFibGVWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2YWJsZVZhbHVlO1xuICAgIH1cbiAgICBsZXQgaGFzQW55VmFsdWVzID0gdGhpcy5pc0VtcHR5T2JqZWN0O1xuICAgIGNvbnN0IGludGVybmFsVmFsdWVSZXN1bHQ6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLl9jcmVhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQuY3JlYXRlID0gdGhpcy5fY3JlYXRlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVsZXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LmRlbGV0ZSA9IHRoaXMuX2RlbGV0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3JlYWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQucmVhZCA9IHRoaXMuX3JlYWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLl91cGRhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQudXBkYXRlID0gdGhpcy5fdXBkYXRlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzQW55VmFsdWVzID8gaW50ZXJuYWxWYWx1ZVJlc3VsdCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaW50ZXJuYWxWYWx1ZSh2YWx1ZTogQXBwbGljYXRpb25SZWdpc3RyYXRpb25UaW1lb3V0cyB8IGNka3RuLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jcmVhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9kZWxldGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9yZWFkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fdXBkYXRlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIGlmIChjZGt0bi5Ub2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHZhbHVlKSkge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDA7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2NyZWF0ZSA9IHZhbHVlLmNyZWF0ZTtcbiAgICAgIHRoaXMuX2RlbGV0ZSA9IHZhbHVlLmRlbGV0ZTtcbiAgICAgIHRoaXMuX3JlYWQgPSB2YWx1ZS5yZWFkO1xuICAgICAgdGhpcy5fdXBkYXRlID0gdmFsdWUudXBkYXRlO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNyZWF0ZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9jcmVhdGU/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGNyZWF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2NyZWF0ZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgY3JlYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jcmVhdGUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRDcmVhdGUoKSB7XG4gICAgdGhpcy5fY3JlYXRlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBjcmVhdGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlO1xuICB9XG5cbiAgLy8gZGVsZXRlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2RlbGV0ZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgZGVsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnZGVsZXRlJyk7XG4gIH1cbiAgcHVibGljIHNldCBkZWxldGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2RlbGV0ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldERlbGV0ZSgpIHtcbiAgICB0aGlzLl9kZWxldGUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGRlbGV0ZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kZWxldGU7XG4gIH1cblxuICAvLyByZWFkIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3JlYWQ/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IHJlYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdyZWFkJyk7XG4gIH1cbiAgcHVibGljIHNldCByZWFkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yZWFkID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0UmVhZCgpIHtcbiAgICB0aGlzLl9yZWFkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByZWFkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWQ7XG4gIH1cblxuICAvLyB1cGRhdGUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfdXBkYXRlPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCB1cGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCd1cGRhdGUnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHVwZGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXBkYXRlID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0VXBkYXRlKCkge1xuICAgIHRoaXMuX3VwZGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdXBkYXRlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZTtcbiAgfVxufVxuXG4vKipcbiogUmVwcmVzZW50cyBhIHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmVnaXN0cmF0aW9uIGF6dXJlYWRfYXBwbGljYXRpb25fcmVnaXN0cmF0aW9ufVxuKi9cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiBleHRlbmRzIGNka3RuLlRlcnJhZm9ybVJlc291cmNlIHtcblxuICAvLyA9PT09PT09PT09PT09PT09PVxuICAvLyBTVEFUSUMgUFJPUEVSVElFU1xuICAvLyA9PT09PT09PT09PT09PT09PVxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRmUmVzb3VyY2VUeXBlID0gXCJhenVyZWFkX2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvblwiO1xuXG4gIC8vID09PT09PT09PT09PT09XG4gIC8vIFNUQVRJQyBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09XG4gIC8qKlxuICAqIEdlbmVyYXRlcyBDREtUTiBjb2RlIGZvciBpbXBvcnRpbmcgYSBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiByZXNvdXJjZSB1cG9uIHJ1bm5pbmcgXCJjZGt0biBwbGFuIDxzdGFjay1uYW1lPlwiXG4gICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgKiBAcGFyYW0gaW1wb3J0VG9JZCBUaGUgY29uc3RydWN0IGlkIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBjb25maWcgZm9yIHRoZSBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvbiB0byBpbXBvcnRcbiAgKiBAcGFyYW0gaW1wb3J0RnJvbUlkIFRoZSBpZCBvZiB0aGUgZXhpc3RpbmcgQXBwbGljYXRpb25SZWdpc3RyYXRpb24gdGhhdCBzaG91bGQgYmUgaW1wb3J0ZWQuIFJlZmVyIHRvIHRoZSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbiNpbXBvcnQgaW1wb3J0IHNlY3Rpb259IGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgcmVzb3VyY2UgZm9yIHRoZSBpZCB0byB1c2VcbiAgKiBAcGFyYW0gcHJvdmlkZXI/IE9wdGlvbmFsIGluc3RhbmNlIG9mIHRoZSBwcm92aWRlciB3aGVyZSB0aGUgQXBwbGljYXRpb25SZWdpc3RyYXRpb24gdG8gaW1wb3J0IGlzIGZvdW5kXG4gICovXG4gIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVDb25maWdGb3JJbXBvcnQoc2NvcGU6IENvbnN0cnVjdCwgaW1wb3J0VG9JZDogc3RyaW5nLCBpbXBvcnRGcm9tSWQ6IHN0cmluZywgcHJvdmlkZXI/OiBjZGt0bi5UZXJyYWZvcm1Qcm92aWRlcikge1xuICAgICAgICByZXR1cm4gbmV3IGNka3RuLkltcG9ydGFibGVSZXNvdXJjZShzY29wZSwgaW1wb3J0VG9JZCwgeyB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IFwiYXp1cmVhZF9hcHBsaWNhdGlvbl9yZWdpc3RyYXRpb25cIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9yZWdpc3RyYXRpb24gYXp1cmVhZF9hcHBsaWNhdGlvbl9yZWdpc3RyYXRpb259IFJlc291cmNlXG4gICpcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpZCBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgYW1vbmdzdCBzaWJsaW5ncyBpbiB0aGUgc2FtZSBzY29wZVxuICAqIEBwYXJhbSBvcHRpb25zIEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uQ29uZmlnXG4gICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICdhenVyZWFkX2FwcGxpY2F0aW9uX3JlZ2lzdHJhdGlvbicsXG4gICAgICB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YToge1xuICAgICAgICBwcm92aWRlck5hbWU6ICdhenVyZWFkJyxcbiAgICAgICAgcHJvdmlkZXJWZXJzaW9uOiAnMy43LjAnLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiAnfj4gMy4wJ1xuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiBjb25maWcucHJvdmlkZXIsXG4gICAgICBkZXBlbmRzT246IGNvbmZpZy5kZXBlbmRzT24sXG4gICAgICBjb3VudDogY29uZmlnLmNvdW50LFxuICAgICAgbGlmZWN5Y2xlOiBjb25maWcubGlmZWN5Y2xlLFxuICAgICAgcHJvdmlzaW9uZXJzOiBjb25maWcucHJvdmlzaW9uZXJzLFxuICAgICAgY29ubmVjdGlvbjogY29uZmlnLmNvbm5lY3Rpb24sXG4gICAgICBmb3JFYWNoOiBjb25maWcuZm9yRWFjaFxuICAgIH0pO1xuICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gY29uZmlnLmRpc3BsYXlOYW1lO1xuICAgIHRoaXMuX2dyb3VwTWVtYmVyc2hpcENsYWltcyA9IGNvbmZpZy5ncm91cE1lbWJlcnNoaXBDbGFpbXM7XG4gICAgdGhpcy5faG9tZXBhZ2VVcmwgPSBjb25maWcuaG9tZXBhZ2VVcmw7XG4gICAgdGhpcy5faWQgPSBjb25maWcuaWQ7XG4gICAgdGhpcy5faW1wbGljaXRBY2Nlc3NUb2tlbklzc3VhbmNlRW5hYmxlZCA9IGNvbmZpZy5pbXBsaWNpdEFjY2Vzc1Rva2VuSXNzdWFuY2VFbmFibGVkO1xuICAgIHRoaXMuX2ltcGxpY2l0SWRUb2tlbklzc3VhbmNlRW5hYmxlZCA9IGNvbmZpZy5pbXBsaWNpdElkVG9rZW5Jc3N1YW5jZUVuYWJsZWQ7XG4gICAgdGhpcy5fbG9nb3V0VXJsID0gY29uZmlnLmxvZ291dFVybDtcbiAgICB0aGlzLl9tYXJrZXRpbmdVcmwgPSBjb25maWcubWFya2V0aW5nVXJsO1xuICAgIHRoaXMuX25vdGVzID0gY29uZmlnLm5vdGVzO1xuICAgIHRoaXMuX3ByaXZhY3lTdGF0ZW1lbnRVcmwgPSBjb25maWcucHJpdmFjeVN0YXRlbWVudFVybDtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRBY2Nlc3NUb2tlblZlcnNpb24gPSBjb25maWcucmVxdWVzdGVkQWNjZXNzVG9rZW5WZXJzaW9uO1xuICAgIHRoaXMuX3NlcnZpY2VNYW5hZ2VtZW50UmVmZXJlbmNlID0gY29uZmlnLnNlcnZpY2VNYW5hZ2VtZW50UmVmZXJlbmNlO1xuICAgIHRoaXMuX3NpZ25JbkF1ZGllbmNlID0gY29uZmlnLnNpZ25JbkF1ZGllbmNlO1xuICAgIHRoaXMuX3N1cHBvcnRVcmwgPSBjb25maWcuc3VwcG9ydFVybDtcbiAgICB0aGlzLl90ZXJtc09mU2VydmljZVVybCA9IGNvbmZpZy50ZXJtc09mU2VydmljZVVybDtcbiAgICB0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlID0gY29uZmlnLnRpbWVvdXRzO1xuICB9XG5cbiAgLy8gPT09PT09PT09PVxuICAvLyBBVFRSSUJVVEVTXG4gIC8vID09PT09PT09PT1cblxuICAvLyBjbGllbnRfaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBjbGllbnRJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2NsaWVudF9pZCcpO1xuICB9XG5cbiAgLy8gZGVzY3JpcHRpb24gLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfZGVzY3JpcHRpb24/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnZGVzY3JpcHRpb24nKTtcbiAgfVxuICBwdWJsaWMgc2V0IGRlc2NyaXB0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldERlc2NyaXB0aW9uKCkge1xuICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8vIGRpc2FibGVkX2J5X21pY3Jvc29mdCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkQnlNaWNyb3NvZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdkaXNhYmxlZF9ieV9taWNyb3NvZnQnKTtcbiAgfVxuXG4gIC8vIGRpc3BsYXlfbmFtZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9kaXNwbGF5TmFtZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgZGlzcGxheU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdkaXNwbGF5X25hbWUnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc3BsYXlOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkaXNwbGF5TmFtZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTtcbiAgfVxuXG4gIC8vIGdyb3VwX21lbWJlcnNoaXBfY2xhaW1zIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2dyb3VwTWVtYmVyc2hpcENsYWltcz86IHN0cmluZ1tdOyBcbiAgcHVibGljIGdldCBncm91cE1lbWJlcnNoaXBDbGFpbXMoKSB7XG4gICAgcmV0dXJuIGNka3RuLkZuLnRvbGlzdCh0aGlzLmdldExpc3RBdHRyaWJ1dGUoJ2dyb3VwX21lbWJlcnNoaXBfY2xhaW1zJykpO1xuICB9XG4gIHB1YmxpYyBzZXQgZ3JvdXBNZW1iZXJzaGlwQ2xhaW1zKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2dyb3VwTWVtYmVyc2hpcENsYWltcyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldEdyb3VwTWVtYmVyc2hpcENsYWltcygpIHtcbiAgICB0aGlzLl9ncm91cE1lbWJlcnNoaXBDbGFpbXMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGdyb3VwTWVtYmVyc2hpcENsYWltc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9ncm91cE1lbWJlcnNoaXBDbGFpbXM7XG4gIH1cblxuICAvLyBob21lcGFnZV91cmwgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaG9tZXBhZ2VVcmw/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGhvbWVwYWdlVXJsKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnaG9tZXBhZ2VfdXJsJyk7XG4gIH1cbiAgcHVibGljIHNldCBob21lcGFnZVVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faG9tZXBhZ2VVcmwgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRIb21lcGFnZVVybCgpIHtcbiAgICB0aGlzLl9ob21lcGFnZVVybCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaG9tZXBhZ2VVcmxJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faG9tZXBhZ2VVcmw7XG4gIH1cblxuICAvLyBpZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2lkPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2lkJyk7XG4gIH1cbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faWQgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRJZCgpIHtcbiAgICB0aGlzLl9pZCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaWRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICAvLyBpbXBsaWNpdF9hY2Nlc3NfdG9rZW5faXNzdWFuY2VfZW5hYmxlZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9pbXBsaWNpdEFjY2Vzc1Rva2VuSXNzdWFuY2VFbmFibGVkPzogYm9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlOyBcbiAgcHVibGljIGdldCBpbXBsaWNpdEFjY2Vzc1Rva2VuSXNzdWFuY2VFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdldEJvb2xlYW5BdHRyaWJ1dGUoJ2ltcGxpY2l0X2FjY2Vzc190b2tlbl9pc3N1YW5jZV9lbmFibGVkJyk7XG4gIH1cbiAgcHVibGljIHNldCBpbXBsaWNpdEFjY2Vzc1Rva2VuSXNzdWFuY2VFbmFibGVkKHZhbHVlOiBib29sZWFuIHwgY2RrdG4uSVJlc29sdmFibGUpIHtcbiAgICB0aGlzLl9pbXBsaWNpdEFjY2Vzc1Rva2VuSXNzdWFuY2VFbmFibGVkID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0SW1wbGljaXRBY2Nlc3NUb2tlbklzc3VhbmNlRW5hYmxlZCgpIHtcbiAgICB0aGlzLl9pbXBsaWNpdEFjY2Vzc1Rva2VuSXNzdWFuY2VFbmFibGVkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpbXBsaWNpdEFjY2Vzc1Rva2VuSXNzdWFuY2VFbmFibGVkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ltcGxpY2l0QWNjZXNzVG9rZW5Jc3N1YW5jZUVuYWJsZWQ7XG4gIH1cblxuICAvLyBpbXBsaWNpdF9pZF90b2tlbl9pc3N1YW5jZV9lbmFibGVkIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2ltcGxpY2l0SWRUb2tlbklzc3VhbmNlRW5hYmxlZD86IGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZTsgXG4gIHB1YmxpYyBnZXQgaW1wbGljaXRJZFRva2VuSXNzdWFuY2VFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdldEJvb2xlYW5BdHRyaWJ1dGUoJ2ltcGxpY2l0X2lkX3Rva2VuX2lzc3VhbmNlX2VuYWJsZWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGltcGxpY2l0SWRUb2tlbklzc3VhbmNlRW5hYmxlZCh2YWx1ZTogYm9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5faW1wbGljaXRJZFRva2VuSXNzdWFuY2VFbmFibGVkID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0SW1wbGljaXRJZFRva2VuSXNzdWFuY2VFbmFibGVkKCkge1xuICAgIHRoaXMuX2ltcGxpY2l0SWRUb2tlbklzc3VhbmNlRW5hYmxlZCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaW1wbGljaXRJZFRva2VuSXNzdWFuY2VFbmFibGVkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ltcGxpY2l0SWRUb2tlbklzc3VhbmNlRW5hYmxlZDtcbiAgfVxuXG4gIC8vIGxvZ291dF91cmwgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfbG9nb3V0VXJsPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBsb2dvdXRVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdsb2dvdXRfdXJsJyk7XG4gIH1cbiAgcHVibGljIHNldCBsb2dvdXRVcmwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xvZ291dFVybCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldExvZ291dFVybCgpIHtcbiAgICB0aGlzLl9sb2dvdXRVcmwgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGxvZ291dFVybElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9sb2dvdXRVcmw7XG4gIH1cblxuICAvLyBtYXJrZXRpbmdfdXJsIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX21hcmtldGluZ1VybD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgbWFya2V0aW5nVXJsKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnbWFya2V0aW5nX3VybCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgbWFya2V0aW5nVXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9tYXJrZXRpbmdVcmwgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRNYXJrZXRpbmdVcmwoKSB7XG4gICAgdGhpcy5fbWFya2V0aW5nVXJsID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBtYXJrZXRpbmdVcmxJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2V0aW5nVXJsO1xuICB9XG5cbiAgLy8gbm90ZXMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfbm90ZXM/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IG5vdGVzKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnbm90ZXMnKTtcbiAgfVxuICBwdWJsaWMgc2V0IG5vdGVzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ub3RlcyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldE5vdGVzKCkge1xuICAgIHRoaXMuX25vdGVzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBub3Rlc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9ub3RlcztcbiAgfVxuXG4gIC8vIG9iamVjdF9pZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZVxuICBwdWJsaWMgZ2V0IG9iamVjdElkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnb2JqZWN0X2lkJyk7XG4gIH1cblxuICAvLyBwcml2YWN5X3N0YXRlbWVudF91cmwgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfcHJpdmFjeVN0YXRlbWVudFVybD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgcHJpdmFjeVN0YXRlbWVudFVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ3ByaXZhY3lfc3RhdGVtZW50X3VybCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgcHJpdmFjeVN0YXRlbWVudFVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcHJpdmFjeVN0YXRlbWVudFVybCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFByaXZhY3lTdGF0ZW1lbnRVcmwoKSB7XG4gICAgdGhpcy5fcHJpdmFjeVN0YXRlbWVudFVybCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcHJpdmFjeVN0YXRlbWVudFVybElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YWN5U3RhdGVtZW50VXJsO1xuICB9XG5cbiAgLy8gcHVibGlzaGVyX2RvbWFpbiAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZVxuICBwdWJsaWMgZ2V0IHB1Ymxpc2hlckRvbWFpbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ3B1Ymxpc2hlcl9kb21haW4nKTtcbiAgfVxuXG4gIC8vIHJlcXVlc3RlZF9hY2Nlc3NfdG9rZW5fdmVyc2lvbiAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZXF1ZXN0ZWRBY2Nlc3NUb2tlblZlcnNpb24/OiBudW1iZXI7IFxuICBwdWJsaWMgZ2V0IHJlcXVlc3RlZEFjY2Vzc1Rva2VuVmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJBdHRyaWJ1dGUoJ3JlcXVlc3RlZF9hY2Nlc3NfdG9rZW5fdmVyc2lvbicpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVxdWVzdGVkQWNjZXNzVG9rZW5WZXJzaW9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRBY2Nlc3NUb2tlblZlcnNpb24gPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZXF1ZXN0ZWRBY2Nlc3NUb2tlblZlcnNpb24oKSB7XG4gICAgdGhpcy5fcmVxdWVzdGVkQWNjZXNzVG9rZW5WZXJzaW9uID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByZXF1ZXN0ZWRBY2Nlc3NUb2tlblZlcnNpb25JbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWVzdGVkQWNjZXNzVG9rZW5WZXJzaW9uO1xuICB9XG5cbiAgLy8gc2VydmljZV9tYW5hZ2VtZW50X3JlZmVyZW5jZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9zZXJ2aWNlTWFuYWdlbWVudFJlZmVyZW5jZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgc2VydmljZU1hbmFnZW1lbnRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdzZXJ2aWNlX21hbmFnZW1lbnRfcmVmZXJlbmNlJyk7XG4gIH1cbiAgcHVibGljIHNldCBzZXJ2aWNlTWFuYWdlbWVudFJlZmVyZW5jZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2VydmljZU1hbmFnZW1lbnRSZWZlcmVuY2UgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRTZXJ2aWNlTWFuYWdlbWVudFJlZmVyZW5jZSgpIHtcbiAgICB0aGlzLl9zZXJ2aWNlTWFuYWdlbWVudFJlZmVyZW5jZSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgc2VydmljZU1hbmFnZW1lbnRSZWZlcmVuY2VJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZU1hbmFnZW1lbnRSZWZlcmVuY2U7XG4gIH1cblxuICAvLyBzaWduX2luX2F1ZGllbmNlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3NpZ25JbkF1ZGllbmNlPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBzaWduSW5BdWRpZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ3NpZ25faW5fYXVkaWVuY2UnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHNpZ25JbkF1ZGllbmNlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zaWduSW5BdWRpZW5jZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFNpZ25JbkF1ZGllbmNlKCkge1xuICAgIHRoaXMuX3NpZ25JbkF1ZGllbmNlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBzaWduSW5BdWRpZW5jZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9zaWduSW5BdWRpZW5jZTtcbiAgfVxuXG4gIC8vIHN1cHBvcnRfdXJsIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3N1cHBvcnRVcmw/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IHN1cHBvcnRVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdzdXBwb3J0X3VybCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgc3VwcG9ydFVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3VwcG9ydFVybCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFN1cHBvcnRVcmwoKSB7XG4gICAgdGhpcy5fc3VwcG9ydFVybCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgc3VwcG9ydFVybElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9zdXBwb3J0VXJsO1xuICB9XG5cbiAgLy8gdGVybXNfb2Zfc2VydmljZV91cmwgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfdGVybXNPZlNlcnZpY2VVcmw/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IHRlcm1zT2ZTZXJ2aWNlVXJsKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgndGVybXNfb2Zfc2VydmljZV91cmwnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHRlcm1zT2ZTZXJ2aWNlVXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZXJtc09mU2VydmljZVVybCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFRlcm1zT2ZTZXJ2aWNlVXJsKCkge1xuICAgIHRoaXMuX3Rlcm1zT2ZTZXJ2aWNlVXJsID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCB0ZXJtc09mU2VydmljZVVybElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl90ZXJtc09mU2VydmljZVVybDtcbiAgfVxuXG4gIC8vIHRpbWVvdXRzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3RpbWVvdXRzID0gbmV3IEFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uVGltZW91dHNPdXRwdXRSZWZlcmVuY2UodGhpcywgXCJ0aW1lb3V0c1wiKTtcbiAgcHVibGljIGdldCB0aW1lb3V0cygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZW91dHM7XG4gIH1cbiAgcHVibGljIHB1dFRpbWVvdXRzKHZhbHVlOiBBcHBsaWNhdGlvblJlZ2lzdHJhdGlvblRpbWVvdXRzKSB7XG4gICAgdGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFRpbWVvdXRzKCkge1xuICAgIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHRpbWVvdXRzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWU7XG4gIH1cblxuICAvLyA9PT09PT09PT1cbiAgLy8gU1lOVEhFU0lTXG4gIC8vID09PT09PT09PVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9kZXNjcmlwdGlvbiksXG4gICAgICBkaXNwbGF5X25hbWU6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2Rpc3BsYXlOYW1lKSxcbiAgICAgIGdyb3VwX21lbWJlcnNoaXBfY2xhaW1zOiBjZGt0bi5saXN0TWFwcGVyKGNka3RuLnN0cmluZ1RvVGVycmFmb3JtLCBmYWxzZSkodGhpcy5fZ3JvdXBNZW1iZXJzaGlwQ2xhaW1zKSxcbiAgICAgIGhvbWVwYWdlX3VybDogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5faG9tZXBhZ2VVcmwpLFxuICAgICAgaWQ6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2lkKSxcbiAgICAgIGltcGxpY2l0X2FjY2Vzc190b2tlbl9pc3N1YW5jZV9lbmFibGVkOiBjZGt0bi5ib29sZWFuVG9UZXJyYWZvcm0odGhpcy5faW1wbGljaXRBY2Nlc3NUb2tlbklzc3VhbmNlRW5hYmxlZCksXG4gICAgICBpbXBsaWNpdF9pZF90b2tlbl9pc3N1YW5jZV9lbmFibGVkOiBjZGt0bi5ib29sZWFuVG9UZXJyYWZvcm0odGhpcy5faW1wbGljaXRJZFRva2VuSXNzdWFuY2VFbmFibGVkKSxcbiAgICAgIGxvZ291dF91cmw6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2xvZ291dFVybCksXG4gICAgICBtYXJrZXRpbmdfdXJsOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9tYXJrZXRpbmdVcmwpLFxuICAgICAgbm90ZXM6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX25vdGVzKSxcbiAgICAgIHByaXZhY3lfc3RhdGVtZW50X3VybDogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fcHJpdmFjeVN0YXRlbWVudFVybCksXG4gICAgICByZXF1ZXN0ZWRfYWNjZXNzX3Rva2VuX3ZlcnNpb246IGNka3RuLm51bWJlclRvVGVycmFmb3JtKHRoaXMuX3JlcXVlc3RlZEFjY2Vzc1Rva2VuVmVyc2lvbiksXG4gICAgICBzZXJ2aWNlX21hbmFnZW1lbnRfcmVmZXJlbmNlOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9zZXJ2aWNlTWFuYWdlbWVudFJlZmVyZW5jZSksXG4gICAgICBzaWduX2luX2F1ZGllbmNlOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9zaWduSW5BdWRpZW5jZSksXG4gICAgICBzdXBwb3J0X3VybDogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fc3VwcG9ydFVybCksXG4gICAgICB0ZXJtc19vZl9zZXJ2aWNlX3VybDogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fdGVybXNPZlNlcnZpY2VVcmwpLFxuICAgICAgdGltZW91dHM6IGFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uVGltZW91dHNUb1RlcnJhZm9ybSh0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBhdHRycyA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9kZXNjcmlwdGlvbiksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIGRpc3BsYXlfbmFtZToge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fZGlzcGxheU5hbWUpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBncm91cF9tZW1iZXJzaGlwX2NsYWltczoge1xuICAgICAgICB2YWx1ZTogY2RrdG4ubGlzdE1hcHBlckhjbChjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX2dyb3VwTWVtYmVyc2hpcENsYWltcyksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ0xpc3RcIixcbiAgICAgIH0sXG4gICAgICBob21lcGFnZV91cmw6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2hvbWVwYWdlVXJsKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgaWQ6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2lkKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgaW1wbGljaXRfYWNjZXNzX3Rva2VuX2lzc3VhbmNlX2VuYWJsZWQ6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLmJvb2xlYW5Ub0hjbFRlcnJhZm9ybSh0aGlzLl9pbXBsaWNpdEFjY2Vzc1Rva2VuSXNzdWFuY2VFbmFibGVkKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgfSxcbiAgICAgIGltcGxpY2l0X2lkX3Rva2VuX2lzc3VhbmNlX2VuYWJsZWQ6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLmJvb2xlYW5Ub0hjbFRlcnJhZm9ybSh0aGlzLl9pbXBsaWNpdElkVG9rZW5Jc3N1YW5jZUVuYWJsZWQpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJib29sZWFuXCIsXG4gICAgICB9LFxuICAgICAgbG9nb3V0X3VybDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fbG9nb3V0VXJsKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgbWFya2V0aW5nX3VybDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fbWFya2V0aW5nVXJsKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgbm90ZXM6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX25vdGVzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgcHJpdmFjeV9zdGF0ZW1lbnRfdXJsOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9wcml2YWN5U3RhdGVtZW50VXJsKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgcmVxdWVzdGVkX2FjY2Vzc190b2tlbl92ZXJzaW9uOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5udW1iZXJUb0hjbFRlcnJhZm9ybSh0aGlzLl9yZXF1ZXN0ZWRBY2Nlc3NUb2tlblZlcnNpb24pLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJudW1iZXJcIixcbiAgICAgIH0sXG4gICAgICBzZXJ2aWNlX21hbmFnZW1lbnRfcmVmZXJlbmNlOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9zZXJ2aWNlTWFuYWdlbWVudFJlZmVyZW5jZSksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHNpZ25faW5fYXVkaWVuY2U6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX3NpZ25JbkF1ZGllbmNlKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgc3VwcG9ydF91cmw6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX3N1cHBvcnRVcmwpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICB0ZXJtc19vZl9zZXJ2aWNlX3VybDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fdGVybXNPZlNlcnZpY2VVcmwpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0czoge1xuICAgICAgICB2YWx1ZTogYXBwbGljYXRpb25SZWdpc3RyYXRpb25UaW1lb3V0c1RvSGNsVGVycmFmb3JtKHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWUpLFxuICAgICAgICBpc0Jsb2NrOiB0cnVlLFxuICAgICAgICB0eXBlOiBcInN0cnVjdFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcIkFwcGxpY2F0aW9uUmVnaXN0cmF0aW9uVGltZW91dHNcIixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIHJlbW92ZSB1bmRlZmluZWQgYXR0cmlidXRlc1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICkpXG4gIH1cbn1cbiJdfQ==
|