@vendasta/iam 2.2.2 → 2.3.1
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/esm2020/lib/_generated/host.service.mjs +25 -0
- package/esm2020/lib/_generated/index.mjs +2 -0
- package/esm2020/lib/_internal/enums/api.enum.mjs +22 -0
- package/esm2020/lib/_internal/enums/index.mjs +12 -0
- package/esm2020/lib/_internal/enums/policies.enum.mjs +18 -0
- package/esm2020/lib/_internal/enums/resources.enum.mjs +14 -0
- package/esm2020/lib/_internal/enums/subjects.enum.mjs +17 -0
- package/esm2020/lib/_internal/enums/users.enum.mjs +13 -0
- package/esm2020/lib/_internal/iam.api.service.mjs +189 -0
- package/esm2020/lib/_internal/index.mjs +12 -0
- package/esm2020/lib/_internal/interfaces/annotations.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/api.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/attributes.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/policies.interface.mjs +3 -0
- package/esm2020/lib/_internal/interfaces/resources.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/security-logs.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/subjects.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/users.interface.mjs +2 -0
- package/esm2020/lib/_internal/objects/annotations.mjs +30 -0
- package/esm2020/lib/_internal/objects/api.mjs +1846 -0
- package/esm2020/lib/_internal/objects/attributes.mjs +158 -0
- package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
- package/esm2020/lib/_internal/objects/index.mjs +16 -0
- package/esm2020/lib/_internal/objects/policies.mjs +264 -0
- package/esm2020/lib/_internal/objects/resources.mjs +168 -0
- package/esm2020/lib/_internal/objects/security-logs.mjs +42 -0
- package/esm2020/lib/_internal/objects/subjects.mjs +352 -0
- package/esm2020/lib/_internal/objects/users.mjs +168 -0
- package/esm2020/lib/_internal/user-iam.api.service.mjs +65 -0
- package/esm2020/lib/http/http.interface.mjs +2 -0
- package/esm2020/lib/http/http.mjs +104 -0
- package/esm2020/lib/http/iam.http.api.service.mjs +67 -0
- package/esm2020/lib/iam.service.mjs +155 -0
- package/esm2020/lib/index.mjs +7 -0
- package/esm2020/lib/personas/account-group.mjs +9 -0
- package/esm2020/lib/personas/base-personas.mjs +93 -0
- package/esm2020/lib/personas/crm-role.mjs +9 -0
- package/esm2020/lib/personas/developer.mjs +9 -0
- package/esm2020/lib/personas/digital-agent.mjs +9 -0
- package/esm2020/lib/personas/index.mjs +13 -0
- package/esm2020/lib/personas/partner-app.mjs +9 -0
- package/esm2020/lib/personas/partner.mjs +25 -0
- package/esm2020/lib/personas/persona-type.enum.mjs +14 -0
- package/esm2020/lib/personas/personas.mjs +61 -0
- package/esm2020/lib/personas/salesperson.mjs +15 -0
- package/esm2020/lib/personas/smb.mjs +10 -0
- package/esm2020/lib/personas/success.mjs +9 -0
- package/esm2020/lib/personas/vendor.mjs +9 -0
- package/esm2020/public_api.mjs +2 -0
- package/esm2020/vendasta-iam.mjs +5 -0
- package/fesm2015/{vendasta-iam.js → vendasta-iam.mjs} +375 -388
- package/fesm2015/vendasta-iam.mjs.map +1 -0
- package/fesm2020/vendasta-iam.mjs +3948 -0
- package/fesm2020/vendasta-iam.mjs.map +1 -0
- package/lib/_generated/host.service.d.ts +4 -11
- package/lib/_internal/iam.api.service.d.ts +3 -2
- package/lib/_internal/user-iam.api.service.d.ts +3 -2
- package/lib/http/iam.http.api.service.d.ts +3 -2
- package/lib/iam.service.d.ts +2 -2
- package/lib/index.d.ts +1 -1
- package/lib/personas/crm-role.d.ts +5 -0
- package/lib/personas/index.d.ts +1 -0
- package/lib/personas/persona-type.enum.d.ts +2 -1
- package/package.json +27 -16
- package/{README.md → src/README.md} +0 -0
- package/CHANGELOG.md +0 -101
- package/bundles/vendasta-iam.umd.js +0 -4531
- package/bundles/vendasta-iam.umd.js.map +0 -1
- package/bundles/vendasta-iam.umd.min.js +0 -16
- package/bundles/vendasta-iam.umd.min.js.map +0 -1
- package/esm2015/lib/_generated/host.service.js +0 -64
- package/esm2015/lib/_generated/index.js +0 -2
- package/esm2015/lib/_internal/enums/api.enum.js +0 -22
- package/esm2015/lib/_internal/enums/index.js +0 -12
- package/esm2015/lib/_internal/enums/policies.enum.js +0 -18
- package/esm2015/lib/_internal/enums/resources.enum.js +0 -14
- package/esm2015/lib/_internal/enums/subjects.enum.js +0 -17
- package/esm2015/lib/_internal/enums/users.enum.js +0 -13
- package/esm2015/lib/_internal/iam.api.service.js +0 -188
- package/esm2015/lib/_internal/index.js +0 -12
- package/esm2015/lib/_internal/interfaces/annotations.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/api.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/attributes.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/index.js +0 -2
- package/esm2015/lib/_internal/interfaces/policies.interface.js +0 -3
- package/esm2015/lib/_internal/interfaces/resources.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/security-logs.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/subjects.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/users.interface.js +0 -2
- package/esm2015/lib/_internal/objects/annotations.js +0 -30
- package/esm2015/lib/_internal/objects/api.js +0 -1846
- package/esm2015/lib/_internal/objects/attributes.js +0 -158
- package/esm2015/lib/_internal/objects/field-mask.js +0 -27
- package/esm2015/lib/_internal/objects/index.js +0 -16
- package/esm2015/lib/_internal/objects/policies.js +0 -264
- package/esm2015/lib/_internal/objects/resources.js +0 -168
- package/esm2015/lib/_internal/objects/security-logs.js +0 -42
- package/esm2015/lib/_internal/objects/subjects.js +0 -352
- package/esm2015/lib/_internal/objects/users.js +0 -168
- package/esm2015/lib/_internal/user-iam.api.service.js +0 -64
- package/esm2015/lib/http/http.interface.js +0 -2
- package/esm2015/lib/http/http.js +0 -102
- package/esm2015/lib/http/iam.http.api.service.js +0 -65
- package/esm2015/lib/iam.service.js +0 -152
- package/esm2015/lib/index.js +0 -7
- package/esm2015/lib/personas/account-group.js +0 -9
- package/esm2015/lib/personas/base-personas.js +0 -89
- package/esm2015/lib/personas/developer.js +0 -9
- package/esm2015/lib/personas/digital-agent.js +0 -9
- package/esm2015/lib/personas/index.js +0 -12
- package/esm2015/lib/personas/partner-app.js +0 -9
- package/esm2015/lib/personas/partner.js +0 -25
- package/esm2015/lib/personas/persona-type.enum.js +0 -13
- package/esm2015/lib/personas/personas.js +0 -57
- package/esm2015/lib/personas/salesperson.js +0 -15
- package/esm2015/lib/personas/smb.js +0 -10
- package/esm2015/lib/personas/success.js +0 -9
- package/esm2015/lib/personas/vendor.js +0 -9
- package/esm2015/public_api.js +0 -2
- package/esm2015/vendasta-iam.js +0 -5
- package/fesm2015/vendasta-iam.js.map +0 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { PolicyNode } from './policies';
|
|
2
|
+
import * as e from '../enums';
|
|
3
|
+
export function enumStringToValue(enumRef, value) {
|
|
4
|
+
if (typeof value === 'number') {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
return enumRef[value];
|
|
8
|
+
}
|
|
9
|
+
export class AccessCheckFailures {
|
|
10
|
+
constructor(kwargs) {
|
|
11
|
+
if (!kwargs) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
Object.assign(this, kwargs);
|
|
15
|
+
}
|
|
16
|
+
static fromProto(proto) {
|
|
17
|
+
let m = new AccessCheckFailures();
|
|
18
|
+
m = Object.assign(m, proto);
|
|
19
|
+
if (proto.failures) {
|
|
20
|
+
m.failures = proto.failures.map(ResourceIdentifier.fromProto);
|
|
21
|
+
}
|
|
22
|
+
return m;
|
|
23
|
+
}
|
|
24
|
+
toApiJson() {
|
|
25
|
+
const toReturn = {};
|
|
26
|
+
if (typeof this.failures !== 'undefined' && this.failures !== null) {
|
|
27
|
+
toReturn['failures'] = 'toApiJson' in this.failures ? this.failures.toApiJson() : this.failures;
|
|
28
|
+
}
|
|
29
|
+
return toReturn;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export class ResourceIdentifierIdentifiersEntry {
|
|
33
|
+
constructor(kwargs) {
|
|
34
|
+
if (!kwargs) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
Object.assign(this, kwargs);
|
|
38
|
+
}
|
|
39
|
+
static fromProto(proto) {
|
|
40
|
+
let m = new ResourceIdentifierIdentifiersEntry();
|
|
41
|
+
m = Object.assign(m, proto);
|
|
42
|
+
if (proto.value) {
|
|
43
|
+
m.value = ValueList.fromProto(proto.value);
|
|
44
|
+
}
|
|
45
|
+
return m;
|
|
46
|
+
}
|
|
47
|
+
toApiJson() {
|
|
48
|
+
const toReturn = {};
|
|
49
|
+
if (typeof this.key !== 'undefined') {
|
|
50
|
+
toReturn['key'] = this.key;
|
|
51
|
+
}
|
|
52
|
+
if (typeof this.value !== 'undefined' && this.value !== null) {
|
|
53
|
+
toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;
|
|
54
|
+
}
|
|
55
|
+
return toReturn;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export class Policy {
|
|
59
|
+
constructor(kwargs) {
|
|
60
|
+
if (!kwargs) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
Object.assign(this, kwargs);
|
|
64
|
+
}
|
|
65
|
+
static fromProto(proto) {
|
|
66
|
+
let m = new Policy();
|
|
67
|
+
m = Object.assign(m, proto);
|
|
68
|
+
if (proto.operations) {
|
|
69
|
+
m.operations = proto.operations.map((v) => enumStringToValue(e.AccessScope, v));
|
|
70
|
+
}
|
|
71
|
+
if (proto.policy) {
|
|
72
|
+
m.policy = PolicyNode.fromProto(proto.policy);
|
|
73
|
+
}
|
|
74
|
+
return m;
|
|
75
|
+
}
|
|
76
|
+
toApiJson() {
|
|
77
|
+
const toReturn = {};
|
|
78
|
+
if (typeof this.appId !== 'undefined') {
|
|
79
|
+
toReturn['appId'] = this.appId;
|
|
80
|
+
}
|
|
81
|
+
if (typeof this.resourceId !== 'undefined') {
|
|
82
|
+
toReturn['resourceId'] = this.resourceId;
|
|
83
|
+
}
|
|
84
|
+
if (typeof this.policyId !== 'undefined') {
|
|
85
|
+
toReturn['policyId'] = this.policyId;
|
|
86
|
+
}
|
|
87
|
+
if (typeof this.policyName !== 'undefined') {
|
|
88
|
+
toReturn['policyName'] = this.policyName;
|
|
89
|
+
}
|
|
90
|
+
if (typeof this.operations !== 'undefined') {
|
|
91
|
+
toReturn['operations'] = this.operations;
|
|
92
|
+
}
|
|
93
|
+
if (typeof this.actions !== 'undefined') {
|
|
94
|
+
toReturn['actions'] = this.actions;
|
|
95
|
+
}
|
|
96
|
+
if (typeof this.policy !== 'undefined' && this.policy !== null) {
|
|
97
|
+
toReturn['policy'] = 'toApiJson' in this.policy ? this.policy.toApiJson() : this.policy;
|
|
98
|
+
}
|
|
99
|
+
return toReturn;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export class ResourceIdentifier {
|
|
103
|
+
constructor(kwargs) {
|
|
104
|
+
if (!kwargs) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
Object.assign(this, kwargs);
|
|
108
|
+
}
|
|
109
|
+
static fromProto(proto) {
|
|
110
|
+
let m = new ResourceIdentifier();
|
|
111
|
+
m = Object.assign(m, proto);
|
|
112
|
+
if (proto.identifiers) {
|
|
113
|
+
m.identifiers = Object.keys(proto.identifiers).reduce((obj, k) => { obj[k] = ValueList.fromProto(proto.identifiers[k]); return obj; }, {});
|
|
114
|
+
}
|
|
115
|
+
return m;
|
|
116
|
+
}
|
|
117
|
+
toApiJson() {
|
|
118
|
+
const toReturn = {};
|
|
119
|
+
if (typeof this.identifiers !== 'undefined' && this.identifiers !== null) {
|
|
120
|
+
toReturn['identifiers'] = 'toApiJson' in this.identifiers ? this.identifiers.toApiJson() : this.identifiers;
|
|
121
|
+
}
|
|
122
|
+
return toReturn;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export class ResourceOwner {
|
|
126
|
+
constructor(kwargs) {
|
|
127
|
+
if (!kwargs) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
Object.assign(this, kwargs);
|
|
131
|
+
}
|
|
132
|
+
static fromProto(proto) {
|
|
133
|
+
let m = new ResourceOwner();
|
|
134
|
+
m = Object.assign(m, proto);
|
|
135
|
+
return m;
|
|
136
|
+
}
|
|
137
|
+
toApiJson() {
|
|
138
|
+
const toReturn = {};
|
|
139
|
+
if (typeof this.appId !== 'undefined') {
|
|
140
|
+
toReturn['appId'] = this.appId;
|
|
141
|
+
}
|
|
142
|
+
if (typeof this.appName !== 'undefined') {
|
|
143
|
+
toReturn['appName'] = this.appName;
|
|
144
|
+
}
|
|
145
|
+
return toReturn;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
export class ValueList {
|
|
149
|
+
constructor(kwargs) {
|
|
150
|
+
if (!kwargs) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
Object.assign(this, kwargs);
|
|
154
|
+
}
|
|
155
|
+
static fromProto(proto) {
|
|
156
|
+
let m = new ValueList();
|
|
157
|
+
m = Object.assign(m, proto);
|
|
158
|
+
return m;
|
|
159
|
+
}
|
|
160
|
+
toApiJson() {
|
|
161
|
+
const toReturn = {};
|
|
162
|
+
if (typeof this.values !== 'undefined') {
|
|
163
|
+
toReturn['values'] = this.values;
|
|
164
|
+
}
|
|
165
|
+
return toReturn;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vaWFtX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL3Jlc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxtQkFBbUI7SUFVNUIsWUFBWSxNQUF1QztRQUMvQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQVpELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDbEMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUNwRixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFTRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxR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QU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDeEUsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUM5RSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sU0FBUztJQVNsQixZQUFZLE1BQTZCO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQVNELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBvbGljeU5vZGUgfSBmcm9tICcuL3BvbGljaWVzJztcbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFjY2Vzc0NoZWNrRmFpbHVyZXMgaW1wbGVtZW50cyBpLkFjY2Vzc0NoZWNrRmFpbHVyZXNJbnRlcmZhY2Uge1xuICAgIGZhaWx1cmVzOiBSZXNvdXJjZUlkZW50aWZpZXJbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEFjY2Vzc0NoZWNrRmFpbHVyZXMge1xuICAgICAgICBsZXQgbSA9IG5ldyBBY2Nlc3NDaGVja0ZhaWx1cmVzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmZhaWx1cmVzKSB7bS5mYWlsdXJlcyA9IHByb3RvLmZhaWx1cmVzLm1hcChSZXNvdXJjZUlkZW50aWZpZXIuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQWNjZXNzQ2hlY2tGYWlsdXJlc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZhaWx1cmVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmZhaWx1cmVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2ZhaWx1cmVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmZhaWx1cmVzID8gKHRoaXMuZmFpbHVyZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZmFpbHVyZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VJZGVudGlmaWVySWRlbnRpZmllcnNFbnRyeSBpbXBsZW1lbnRzIGkuUmVzb3VyY2VJZGVudGlmaWVySWRlbnRpZmllcnNFbnRyeUludGVyZmFjZSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IFZhbHVlTGlzdDtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlc291cmNlSWRlbnRpZmllcklkZW50aWZpZXJzRW50cnkge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZXNvdXJjZUlkZW50aWZpZXJJZGVudGlmaWVyc0VudHJ5KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnZhbHVlKSB7bS52YWx1ZSA9IFZhbHVlTGlzdC5mcm9tUHJvdG8ocHJvdG8udmFsdWUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZXNvdXJjZUlkZW50aWZpZXJJZGVudGlmaWVyc0VudHJ5SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMua2V5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydrZXknXSA9IHRoaXMua2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnZhbHVlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3ZhbHVlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnZhbHVlID8gKHRoaXMudmFsdWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudmFsdWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9saWN5IGltcGxlbWVudHMgaS5Qb2xpY3lJbnRlcmZhY2Uge1xuICAgIGFwcElkOiBzdHJpbmc7XG4gICAgcmVzb3VyY2VJZDogc3RyaW5nO1xuICAgIHBvbGljeUlkOiBzdHJpbmc7XG4gICAgcG9saWN5TmFtZTogc3RyaW5nO1xuICAgIG9wZXJhdGlvbnM6IGUuQWNjZXNzU2NvcGVbXTtcbiAgICBhY3Rpb25zOiBzdHJpbmdbXTtcbiAgICBwb2xpY3k6IFBvbGljeU5vZGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQb2xpY3kge1xuICAgICAgICBsZXQgbSA9IG5ldyBQb2xpY3koKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ub3BlcmF0aW9ucykge20ub3BlcmF0aW9ucyA9IHByb3RvLm9wZXJhdGlvbnMubWFwKCh2OiBzdHJpbmcpID0+IGVudW1TdHJpbmdUb1ZhbHVlPGUuQWNjZXNzU2NvcGU+KGUuQWNjZXNzU2NvcGUsIHYpKTt9XG4gICAgICAgIGlmIChwcm90by5wb2xpY3kpIHttLnBvbGljeSA9IFBvbGljeU5vZGUuZnJvbVByb3RvKHByb3RvLnBvbGljeSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBvbGljeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFwcElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhcHBJZCddID0gdGhpcy5hcHBJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNvdXJjZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXNvdXJjZUlkJ10gPSB0aGlzLnJlc291cmNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9saWN5SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BvbGljeUlkJ10gPSB0aGlzLnBvbGljeUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvbGljeU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BvbGljeU5hbWUnXSA9IHRoaXMucG9saWN5TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcGVyYXRpb25zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcGVyYXRpb25zJ10gPSB0aGlzLm9wZXJhdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWN0aW9ucyddID0gdGhpcy5hY3Rpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvbGljeSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wb2xpY3kgIT09IG51bGwpIHt0b1JldHVyblsncG9saWN5J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBvbGljeSA/ICh0aGlzLnBvbGljeSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wb2xpY3k7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VJZGVudGlmaWVyIGltcGxlbWVudHMgaS5SZXNvdXJjZUlkZW50aWZpZXJJbnRlcmZhY2Uge1xuICAgIGlkZW50aWZpZXJzOiB7W2tleTogc3RyaW5nXTogVmFsdWVMaXN0fTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlc291cmNlSWRlbnRpZmllciB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlc291cmNlSWRlbnRpZmllcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5pZGVudGlmaWVycykge20uaWRlbnRpZmllcnMgPSBPYmplY3Qua2V5cyhwcm90by5pZGVudGlmaWVycykucmVkdWNlPGFueT4oKG9iaiwgaykgPT4geyBvYmpba10gPSBWYWx1ZUxpc3QuZnJvbVByb3RvKHByb3RvLmlkZW50aWZpZXJzW2tdKTsgcmV0dXJuIG9iajsgfSwge30pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZXNvdXJjZUlkZW50aWZpZXJJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZGVudGlmaWVycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5pZGVudGlmaWVycyAhPT0gbnVsbCkge3RvUmV0dXJuWydpZGVudGlmaWVycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5pZGVudGlmaWVycyA/ICh0aGlzLmlkZW50aWZpZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmlkZW50aWZpZXJzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlT3duZXIgaW1wbGVtZW50cyBpLlJlc291cmNlT3duZXJJbnRlcmZhY2Uge1xuICAgIGFwcElkOiBzdHJpbmc7XG4gICAgYXBwTmFtZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUmVzb3VyY2VPd25lciB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlc291cmNlT3duZXIoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJlc291cmNlT3duZXJJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hcHBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYXBwSWQnXSA9IHRoaXMuYXBwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXBwTmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYXBwTmFtZSddID0gdGhpcy5hcHBOYW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbHVlTGlzdCBpbXBsZW1lbnRzIGkuVmFsdWVMaXN0SW50ZXJmYWNlIHtcbiAgICB2YWx1ZXM6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVmFsdWVMaXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVmFsdWVMaXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5WYWx1ZUxpc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZhbHVlcyddID0gdGhpcy52YWx1ZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export function enumStringToValue(enumRef, value) {
|
|
2
|
+
if (typeof value === 'number') {
|
|
3
|
+
return value;
|
|
4
|
+
}
|
|
5
|
+
return enumRef[value];
|
|
6
|
+
}
|
|
7
|
+
export class SecurityLog {
|
|
8
|
+
constructor(kwargs) {
|
|
9
|
+
if (!kwargs) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
Object.assign(this, kwargs);
|
|
13
|
+
}
|
|
14
|
+
static fromProto(proto) {
|
|
15
|
+
let m = new SecurityLog();
|
|
16
|
+
m = Object.assign(m, proto);
|
|
17
|
+
if (proto.created) {
|
|
18
|
+
m.created = new Date(proto.created);
|
|
19
|
+
}
|
|
20
|
+
return m;
|
|
21
|
+
}
|
|
22
|
+
toApiJson() {
|
|
23
|
+
const toReturn = {};
|
|
24
|
+
if (typeof this.userId !== 'undefined') {
|
|
25
|
+
toReturn['userId'] = this.userId;
|
|
26
|
+
}
|
|
27
|
+
if (typeof this.actionId !== 'undefined') {
|
|
28
|
+
toReturn['actionId'] = this.actionId;
|
|
29
|
+
}
|
|
30
|
+
if (typeof this.logId !== 'undefined') {
|
|
31
|
+
toReturn['logId'] = this.logId;
|
|
32
|
+
}
|
|
33
|
+
if (typeof this.description !== 'undefined') {
|
|
34
|
+
toReturn['description'] = this.description;
|
|
35
|
+
}
|
|
36
|
+
if (typeof this.created !== 'undefined' && this.created !== null) {
|
|
37
|
+
toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;
|
|
38
|
+
}
|
|
39
|
+
return toReturn;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktbG9ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2lhbV9zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9zZWN1cml0eS1sb2dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxXQUFXO0lBY3BCLFlBQVksTUFBK0I7UUFDdkMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFaRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUMxQixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FBQztRQUN6RCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFTRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FBQztRQUMzRSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDeEUsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FBQztRQUMxRixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUN6SyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5TG9nIGltcGxlbWVudHMgaS5TZWN1cml0eUxvZ0ludGVyZmFjZSB7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgYWN0aW9uSWQ6IHN0cmluZztcbiAgICBsb2dJZDogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogRGF0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNlY3VyaXR5TG9nIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2VjdXJpdHlMb2coKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY3JlYXRlZCkge20uY3JlYXRlZCA9IG5ldyBEYXRlKHByb3RvLmNyZWF0ZWQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TZWN1cml0eUxvZ0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcklkJ10gPSB0aGlzLnVzZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWN0aW9uSWQnXSA9IHRoaXMuYWN0aW9uSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9nSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvZ0lkJ10gPSB0aGlzLmxvZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZXNjcmlwdGlvbiddID0gdGhpcy5kZXNjcmlwdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVkID8gKHRoaXMuY3JlYXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import { StructAttribute } from './attributes';
|
|
2
|
+
import * as e from '../enums';
|
|
3
|
+
export function enumStringToValue(enumRef, value) {
|
|
4
|
+
if (typeof value === 'number') {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
return enumRef[value];
|
|
8
|
+
}
|
|
9
|
+
export class Context {
|
|
10
|
+
constructor(kwargs) {
|
|
11
|
+
if (!kwargs) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
Object.assign(this, kwargs);
|
|
15
|
+
}
|
|
16
|
+
static fromProto(proto) {
|
|
17
|
+
let m = new Context();
|
|
18
|
+
m = Object.assign(m, proto);
|
|
19
|
+
if (proto.namespaced) {
|
|
20
|
+
m.namespaced = NamespacedContext.fromProto(proto.namespaced);
|
|
21
|
+
}
|
|
22
|
+
if (proto.typed) {
|
|
23
|
+
m.typed = TypedContext.fromProto(proto.typed);
|
|
24
|
+
}
|
|
25
|
+
return m;
|
|
26
|
+
}
|
|
27
|
+
toApiJson() {
|
|
28
|
+
const toReturn = {};
|
|
29
|
+
if (typeof this.namespaced !== 'undefined' && this.namespaced !== null) {
|
|
30
|
+
toReturn['namespaced'] = 'toApiJson' in this.namespaced ? this.namespaced.toApiJson() : this.namespaced;
|
|
31
|
+
}
|
|
32
|
+
if (typeof this.typed !== 'undefined' && this.typed !== null) {
|
|
33
|
+
toReturn['typed'] = 'toApiJson' in this.typed ? this.typed.toApiJson() : this.typed;
|
|
34
|
+
}
|
|
35
|
+
return toReturn;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export class MultiValueAttribute {
|
|
39
|
+
constructor(kwargs) {
|
|
40
|
+
if (!kwargs) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
Object.assign(this, kwargs);
|
|
44
|
+
}
|
|
45
|
+
static fromProto(proto) {
|
|
46
|
+
let m = new MultiValueAttribute();
|
|
47
|
+
m = Object.assign(m, proto);
|
|
48
|
+
return m;
|
|
49
|
+
}
|
|
50
|
+
toApiJson() {
|
|
51
|
+
const toReturn = {};
|
|
52
|
+
if (typeof this.key !== 'undefined') {
|
|
53
|
+
toReturn['key'] = this.key;
|
|
54
|
+
}
|
|
55
|
+
if (typeof this.values !== 'undefined') {
|
|
56
|
+
toReturn['values'] = this.values;
|
|
57
|
+
}
|
|
58
|
+
return toReturn;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export class Mutation {
|
|
62
|
+
constructor(kwargs) {
|
|
63
|
+
if (!kwargs) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
Object.assign(this, kwargs);
|
|
67
|
+
}
|
|
68
|
+
static fromProto(proto) {
|
|
69
|
+
let m = new Mutation();
|
|
70
|
+
m = Object.assign(m, proto);
|
|
71
|
+
if (proto.add) {
|
|
72
|
+
m.add = SingleValueAttribute.fromProto(proto.add);
|
|
73
|
+
}
|
|
74
|
+
if (proto.replace) {
|
|
75
|
+
m.replace = MultiValueAttribute.fromProto(proto.replace);
|
|
76
|
+
}
|
|
77
|
+
if (proto.remove) {
|
|
78
|
+
m.remove = SingleValueAttribute.fromProto(proto.remove);
|
|
79
|
+
}
|
|
80
|
+
if (proto.replaceAttributes) {
|
|
81
|
+
m.replaceAttributes = StructAttribute.fromProto(proto.replaceAttributes);
|
|
82
|
+
}
|
|
83
|
+
if (proto.addAttributes) {
|
|
84
|
+
m.addAttributes = StructAttribute.fromProto(proto.addAttributes);
|
|
85
|
+
}
|
|
86
|
+
if (proto.removeAttributes) {
|
|
87
|
+
m.removeAttributes = StructAttribute.fromProto(proto.removeAttributes);
|
|
88
|
+
}
|
|
89
|
+
return m;
|
|
90
|
+
}
|
|
91
|
+
toApiJson() {
|
|
92
|
+
const toReturn = {};
|
|
93
|
+
if (typeof this.add !== 'undefined' && this.add !== null) {
|
|
94
|
+
toReturn['add'] = 'toApiJson' in this.add ? this.add.toApiJson() : this.add;
|
|
95
|
+
}
|
|
96
|
+
if (typeof this.replace !== 'undefined' && this.replace !== null) {
|
|
97
|
+
toReturn['replace'] = 'toApiJson' in this.replace ? this.replace.toApiJson() : this.replace;
|
|
98
|
+
}
|
|
99
|
+
if (typeof this.remove !== 'undefined' && this.remove !== null) {
|
|
100
|
+
toReturn['remove'] = 'toApiJson' in this.remove ? this.remove.toApiJson() : this.remove;
|
|
101
|
+
}
|
|
102
|
+
if (typeof this.dropKey !== 'undefined') {
|
|
103
|
+
toReturn['dropKey'] = this.dropKey;
|
|
104
|
+
}
|
|
105
|
+
if (typeof this.replaceAttributes !== 'undefined' && this.replaceAttributes !== null) {
|
|
106
|
+
toReturn['replaceAttributes'] = 'toApiJson' in this.replaceAttributes ? this.replaceAttributes.toApiJson() : this.replaceAttributes;
|
|
107
|
+
}
|
|
108
|
+
if (typeof this.addAttributes !== 'undefined' && this.addAttributes !== null) {
|
|
109
|
+
toReturn['addAttributes'] = 'toApiJson' in this.addAttributes ? this.addAttributes.toApiJson() : this.addAttributes;
|
|
110
|
+
}
|
|
111
|
+
if (typeof this.removeAttributes !== 'undefined' && this.removeAttributes !== null) {
|
|
112
|
+
toReturn['removeAttributes'] = 'toApiJson' in this.removeAttributes ? this.removeAttributes.toApiJson() : this.removeAttributes;
|
|
113
|
+
}
|
|
114
|
+
return toReturn;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export class NamespacedContext {
|
|
118
|
+
constructor(kwargs) {
|
|
119
|
+
if (!kwargs) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
Object.assign(this, kwargs);
|
|
123
|
+
}
|
|
124
|
+
static fromProto(proto) {
|
|
125
|
+
let m = new NamespacedContext();
|
|
126
|
+
m = Object.assign(m, proto);
|
|
127
|
+
return m;
|
|
128
|
+
}
|
|
129
|
+
toApiJson() {
|
|
130
|
+
const toReturn = {};
|
|
131
|
+
if (typeof this.namespace !== 'undefined') {
|
|
132
|
+
toReturn['namespace'] = this.namespace;
|
|
133
|
+
}
|
|
134
|
+
if (typeof this.type !== 'undefined') {
|
|
135
|
+
toReturn['type'] = this.type;
|
|
136
|
+
}
|
|
137
|
+
return toReturn;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export class Persona {
|
|
141
|
+
constructor(kwargs) {
|
|
142
|
+
if (!kwargs) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
Object.assign(this, kwargs);
|
|
146
|
+
}
|
|
147
|
+
static fromProto(proto) {
|
|
148
|
+
let m = new Persona();
|
|
149
|
+
m = Object.assign(m, proto);
|
|
150
|
+
if (proto.subject) {
|
|
151
|
+
m.subject = Subject.fromProto(proto.subject);
|
|
152
|
+
}
|
|
153
|
+
if (proto.context) {
|
|
154
|
+
m.context = Context.fromProto(proto.context);
|
|
155
|
+
}
|
|
156
|
+
return m;
|
|
157
|
+
}
|
|
158
|
+
toApiJson() {
|
|
159
|
+
const toReturn = {};
|
|
160
|
+
if (typeof this.subject !== 'undefined' && this.subject !== null) {
|
|
161
|
+
toReturn['subject'] = 'toApiJson' in this.subject ? this.subject.toApiJson() : this.subject;
|
|
162
|
+
}
|
|
163
|
+
if (typeof this.context !== 'undefined' && this.context !== null) {
|
|
164
|
+
toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;
|
|
165
|
+
}
|
|
166
|
+
return toReturn;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export class PublicKey {
|
|
170
|
+
constructor(kwargs) {
|
|
171
|
+
if (!kwargs) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
Object.assign(this, kwargs);
|
|
175
|
+
}
|
|
176
|
+
static fromProto(proto) {
|
|
177
|
+
let m = new PublicKey();
|
|
178
|
+
m = Object.assign(m, proto);
|
|
179
|
+
if (proto.algorithmType) {
|
|
180
|
+
m.algorithmType = enumStringToValue(e.AlgorithmType, proto.algorithmType);
|
|
181
|
+
}
|
|
182
|
+
return m;
|
|
183
|
+
}
|
|
184
|
+
toApiJson() {
|
|
185
|
+
const toReturn = {};
|
|
186
|
+
if (typeof this.key !== 'undefined') {
|
|
187
|
+
toReturn['key'] = this.key;
|
|
188
|
+
}
|
|
189
|
+
if (typeof this.id !== 'undefined') {
|
|
190
|
+
toReturn['id'] = this.id;
|
|
191
|
+
}
|
|
192
|
+
if (typeof this.algorithmType !== 'undefined') {
|
|
193
|
+
toReturn['algorithmType'] = this.algorithmType;
|
|
194
|
+
}
|
|
195
|
+
return toReturn;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
export class Query {
|
|
199
|
+
constructor(kwargs) {
|
|
200
|
+
if (!kwargs) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
Object.assign(this, kwargs);
|
|
204
|
+
}
|
|
205
|
+
static fromProto(proto) {
|
|
206
|
+
let m = new Query();
|
|
207
|
+
m = Object.assign(m, proto);
|
|
208
|
+
return m;
|
|
209
|
+
}
|
|
210
|
+
toApiJson() {
|
|
211
|
+
const toReturn = {};
|
|
212
|
+
if (typeof this.searchTerm !== 'undefined') {
|
|
213
|
+
toReturn['searchTerm'] = this.searchTerm;
|
|
214
|
+
}
|
|
215
|
+
if (typeof this.attributeKeys !== 'undefined') {
|
|
216
|
+
toReturn['attributeKeys'] = this.attributeKeys;
|
|
217
|
+
}
|
|
218
|
+
return toReturn;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
export class SingleValueAttribute {
|
|
222
|
+
constructor(kwargs) {
|
|
223
|
+
if (!kwargs) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
Object.assign(this, kwargs);
|
|
227
|
+
}
|
|
228
|
+
static fromProto(proto) {
|
|
229
|
+
let m = new SingleValueAttribute();
|
|
230
|
+
m = Object.assign(m, proto);
|
|
231
|
+
return m;
|
|
232
|
+
}
|
|
233
|
+
toApiJson() {
|
|
234
|
+
const toReturn = {};
|
|
235
|
+
if (typeof this.key !== 'undefined') {
|
|
236
|
+
toReturn['key'] = this.key;
|
|
237
|
+
}
|
|
238
|
+
if (typeof this.value !== 'undefined') {
|
|
239
|
+
toReturn['value'] = this.value;
|
|
240
|
+
}
|
|
241
|
+
return toReturn;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
export class Subject {
|
|
245
|
+
constructor(kwargs) {
|
|
246
|
+
if (!kwargs) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
Object.assign(this, kwargs);
|
|
250
|
+
}
|
|
251
|
+
static fromProto(proto) {
|
|
252
|
+
let m = new Subject();
|
|
253
|
+
m = Object.assign(m, proto);
|
|
254
|
+
if (proto.attributes) {
|
|
255
|
+
m.attributes = proto.attributes.map(MultiValueAttribute.fromProto);
|
|
256
|
+
}
|
|
257
|
+
if (proto.created) {
|
|
258
|
+
m.created = new Date(proto.created);
|
|
259
|
+
}
|
|
260
|
+
if (proto.updated) {
|
|
261
|
+
m.updated = new Date(proto.updated);
|
|
262
|
+
}
|
|
263
|
+
if (proto.lastLogin) {
|
|
264
|
+
m.lastLogin = new Date(proto.lastLogin);
|
|
265
|
+
}
|
|
266
|
+
if (proto.publicKeys) {
|
|
267
|
+
m.publicKeys = proto.publicKeys.map(PublicKey.fromProto);
|
|
268
|
+
}
|
|
269
|
+
if (proto.structAttributes) {
|
|
270
|
+
m.structAttributes = StructAttribute.fromProto(proto.structAttributes);
|
|
271
|
+
}
|
|
272
|
+
return m;
|
|
273
|
+
}
|
|
274
|
+
toApiJson() {
|
|
275
|
+
const toReturn = {};
|
|
276
|
+
if (typeof this.subjectId !== 'undefined') {
|
|
277
|
+
toReturn['subjectId'] = this.subjectId;
|
|
278
|
+
}
|
|
279
|
+
if (typeof this.email !== 'undefined') {
|
|
280
|
+
toReturn['email'] = this.email;
|
|
281
|
+
}
|
|
282
|
+
if (typeof this.userId !== 'undefined') {
|
|
283
|
+
toReturn['userId'] = this.userId;
|
|
284
|
+
}
|
|
285
|
+
if (typeof this.partnerId !== 'undefined') {
|
|
286
|
+
toReturn['partnerId'] = this.partnerId;
|
|
287
|
+
}
|
|
288
|
+
if (typeof this.attributes !== 'undefined' && this.attributes !== null) {
|
|
289
|
+
toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;
|
|
290
|
+
}
|
|
291
|
+
if (typeof this.created !== 'undefined' && this.created !== null) {
|
|
292
|
+
toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;
|
|
293
|
+
}
|
|
294
|
+
if (typeof this.updated !== 'undefined' && this.updated !== null) {
|
|
295
|
+
toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;
|
|
296
|
+
}
|
|
297
|
+
if (typeof this.lastLogin !== 'undefined' && this.lastLogin !== null) {
|
|
298
|
+
toReturn['lastLogin'] = 'toApiJson' in this.lastLogin ? this.lastLogin.toApiJson() : this.lastLogin;
|
|
299
|
+
}
|
|
300
|
+
if (typeof this.publicKeys !== 'undefined' && this.publicKeys !== null) {
|
|
301
|
+
toReturn['publicKeys'] = 'toApiJson' in this.publicKeys ? this.publicKeys.toApiJson() : this.publicKeys;
|
|
302
|
+
}
|
|
303
|
+
if (typeof this.structAttributes !== 'undefined' && this.structAttributes !== null) {
|
|
304
|
+
toReturn['structAttributes'] = 'toApiJson' in this.structAttributes ? this.structAttributes.toApiJson() : this.structAttributes;
|
|
305
|
+
}
|
|
306
|
+
return toReturn;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
export class SubjectResult {
|
|
310
|
+
constructor(kwargs) {
|
|
311
|
+
if (!kwargs) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
Object.assign(this, kwargs);
|
|
315
|
+
}
|
|
316
|
+
static fromProto(proto) {
|
|
317
|
+
let m = new SubjectResult();
|
|
318
|
+
m = Object.assign(m, proto);
|
|
319
|
+
if (proto.subject) {
|
|
320
|
+
m.subject = Subject.fromProto(proto.subject);
|
|
321
|
+
}
|
|
322
|
+
return m;
|
|
323
|
+
}
|
|
324
|
+
toApiJson() {
|
|
325
|
+
const toReturn = {};
|
|
326
|
+
if (typeof this.subject !== 'undefined' && this.subject !== null) {
|
|
327
|
+
toReturn['subject'] = 'toApiJson' in this.subject ? this.subject.toApiJson() : this.subject;
|
|
328
|
+
}
|
|
329
|
+
return toReturn;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
export class TypedContext {
|
|
333
|
+
constructor(kwargs) {
|
|
334
|
+
if (!kwargs) {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
Object.assign(this, kwargs);
|
|
338
|
+
}
|
|
339
|
+
static fromProto(proto) {
|
|
340
|
+
let m = new TypedContext();
|
|
341
|
+
m = Object.assign(m, proto);
|
|
342
|
+
return m;
|
|
343
|
+
}
|
|
344
|
+
toApiJson() {
|
|
345
|
+
const toReturn = {};
|
|
346
|
+
if (typeof this.type !== 'undefined') {
|
|
347
|
+
toReturn['type'] = this.type;
|
|
348
|
+
}
|
|
349
|
+
return toReturn;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9pYW1fc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvc3ViamVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUU5QixNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sT0FBTztJQVloQixZQUFZLE1BQTJCO1FBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBYkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUFDO1FBQ3JGLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtZQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FBQztRQUNqRSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFTRCxT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QyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUM7UUFDckUsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3RydWN0QXR0cmlidXRlIH0gZnJvbSAnLi9hdHRyaWJ1dGVzJztcbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbnRleHQgaW1wbGVtZW50cyBpLkNvbnRleHRJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZWQ6IE5hbWVzcGFjZWRDb250ZXh0O1xuICAgIHR5cGVkOiBUeXBlZENvbnRleHQ7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDb250ZXh0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ29udGV4dCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5uYW1lc3BhY2VkKSB7bS5uYW1lc3BhY2VkID0gTmFtZXNwYWNlZENvbnRleHQuZnJvbVByb3RvKHByb3RvLm5hbWVzcGFjZWQpO31cbiAgICAgICAgaWYgKHByb3RvLnR5cGVkKSB7bS50eXBlZCA9IFR5cGVkQ29udGV4dC5mcm9tUHJvdG8ocHJvdG8udHlwZWQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Db250ZXh0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5uYW1lc3BhY2VkICE9PSBudWxsKSB7dG9SZXR1cm5bJ25hbWVzcGFjZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubmFtZXNwYWNlZCA/ICh0aGlzLm5hbWVzcGFjZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubmFtZXNwYWNlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50eXBlZCAhPT0gbnVsbCkge3RvUmV0dXJuWyd0eXBlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50eXBlZCA/ICh0aGlzLnR5cGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnR5cGVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE11bHRpVmFsdWVBdHRyaWJ1dGUgaW1wbGVtZW50cyBpLk11bHRpVmFsdWVBdHRyaWJ1dGVJbnRlcmZhY2Uge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNdWx0aVZhbHVlQXR0cmlidXRlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTXVsdGlWYWx1ZUF0dHJpYnV0ZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTXVsdGlWYWx1ZUF0dHJpYnV0ZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2V5J10gPSB0aGlzLmtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZhbHVlcyddID0gdGhpcy52YWx1ZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTXV0YXRpb24gaW1wbGVtZW50cyBpLk11dGF0aW9uSW50ZXJmYWNlIHtcbiAgICBhZGQ6IFNpbmdsZVZhbHVlQXR0cmlidXRlO1xuICAgIHJlcGxhY2U6IE11bHRpVmFsdWVBdHRyaWJ1dGU7XG4gICAgcmVtb3ZlOiBTaW5nbGVWYWx1ZUF0dHJpYnV0ZTtcbiAgICBkcm9wS2V5OiBzdHJpbmc7XG4gICAgcmVwbGFjZUF0dHJpYnV0ZXM6IFN0cnVjdEF0dHJpYnV0ZTtcbiAgICBhZGRBdHRyaWJ1dGVzOiBTdHJ1Y3RBdHRyaWJ1dGU7XG4gICAgcmVtb3ZlQXR0cmlidXRlczogU3RydWN0QXR0cmlidXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTXV0YXRpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBNdXRhdGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hZGQpIHttLmFkZCA9IFNpbmdsZVZhbHVlQXR0cmlidXRlLmZyb21Qcm90byhwcm90by5hZGQpO31cbiAgICAgICAgaWYgKHByb3RvLnJlcGxhY2UpIHttLnJlcGxhY2UgPSBNdWx0aVZhbHVlQXR0cmlidXRlLmZyb21Qcm90byhwcm90by5yZXBsYWNlKTt9XG4gICAgICAgIGlmIChwcm90by5yZW1vdmUpIHttLnJlbW92ZSA9IFNpbmdsZVZhbHVlQXR0cmlidXRlLmZyb21Qcm90byhwcm90by5yZW1vdmUpO31cbiAgICAgICAgaWYgKHByb3RvLnJlcGxhY2VBdHRyaWJ1dGVzKSB7bS5yZXBsYWNlQXR0cmlidXRlcyA9IFN0cnVjdEF0dHJpYnV0ZS5mcm9tUHJvdG8ocHJvdG8ucmVwbGFjZUF0dHJpYnV0ZXMpO31cbiAgICAgICAgaWYgKHByb3RvLmFkZEF0dHJpYnV0ZXMpIHttLmFkZEF0dHJpYnV0ZXMgPSBTdHJ1Y3RBdHRyaWJ1dGUuZnJvbVByb3RvKHByb3RvLmFkZEF0dHJpYnV0ZXMpO31cbiAgICAgICAgaWYgKHByb3RvLnJlbW92ZUF0dHJpYnV0ZXMpIHttLnJlbW92ZUF0dHJpYnV0ZXMgPSBTdHJ1Y3RBdHRyaWJ1dGUuZnJvbVByb3RvKHByb3RvLnJlbW92ZUF0dHJpYnV0ZXMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5NdXRhdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFkZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hZGQgIT09IG51bGwpIHt0b1JldHVyblsnYWRkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFkZCA/ICh0aGlzLmFkZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hZGQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVwbGFjZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZXBsYWNlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3JlcGxhY2UnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucmVwbGFjZSA/ICh0aGlzLnJlcGxhY2UgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucmVwbGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZW1vdmUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucmVtb3ZlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3JlbW92ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5yZW1vdmUgPyAodGhpcy5yZW1vdmUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucmVtb3ZlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRyb3BLZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Ryb3BLZXknXSA9IHRoaXMuZHJvcEtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXBsYWNlQXR0cmlidXRlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZXBsYWNlQXR0cmlidXRlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydyZXBsYWNlQXR0cmlidXRlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5yZXBsYWNlQXR0cmlidXRlcyA/ICh0aGlzLnJlcGxhY2VBdHRyaWJ1dGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnJlcGxhY2VBdHRyaWJ1dGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFkZEF0dHJpYnV0ZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYWRkQXR0cmlidXRlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydhZGRBdHRyaWJ1dGVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFkZEF0dHJpYnV0ZXMgPyAodGhpcy5hZGRBdHRyaWJ1dGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFkZEF0dHJpYnV0ZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVtb3ZlQXR0cmlidXRlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZW1vdmVBdHRyaWJ1dGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3JlbW92ZUF0dHJpYnV0ZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucmVtb3ZlQXR0cmlidXRlcyA/ICh0aGlzLnJlbW92ZUF0dHJpYnV0ZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucmVtb3ZlQXR0cmlidXRlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VkQ29udGV4dCBpbXBsZW1lbnRzIGkuTmFtZXNwYWNlZENvbnRleHRJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IE5hbWVzcGFjZWRDb250ZXh0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTmFtZXNwYWNlZENvbnRleHQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk5hbWVzcGFjZWRDb250ZXh0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lc3BhY2UnXSA9IHRoaXMubmFtZXNwYWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3R5cGUnXSA9IHRoaXMudHlwZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXJzb25hIGltcGxlbWVudHMgaS5QZXJzb25hSW50ZXJmYWNlIHtcbiAgICBzdWJqZWN0OiBTdWJqZWN0O1xuICAgIGNvbnRleHQ6IENvbnRleHQ7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQZXJzb25hIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUGVyc29uYSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdWJqZWN0KSB7bS5zdWJqZWN0ID0gU3ViamVjdC5mcm9tUHJvdG8ocHJvdG8uc3ViamVjdCk7fVxuICAgICAgICBpZiAocHJvdG8uY29udGV4dCkge20uY29udGV4dCA9IENvbnRleHQuZnJvbVByb3RvKHByb3RvLmNvbnRleHQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5QZXJzb25hSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdWJqZWN0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YmplY3QnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3ViamVjdCA/ICh0aGlzLnN1YmplY3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3ViamVjdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb250ZXh0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNvbnRleHQgIT09IG51bGwpIHt0b1JldHVyblsnY29udGV4dCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb250ZXh0ID8gKHRoaXMuY29udGV4dCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb250ZXh0O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1YmxpY0tleSBpbXBsZW1lbnRzIGkuUHVibGljS2V5SW50ZXJmYWNlIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIGFsZ29yaXRobVR5cGU6IGUuQWxnb3JpdGhtVHlwZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFB1YmxpY0tleSB7XG4gICAgICAgIGxldCBtID0gbmV3IFB1YmxpY0tleSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hbGdvcml0aG1UeXBlKSB7bS5hbGdvcml0aG1UeXBlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5BbGdvcml0aG1UeXBlPihlLkFsZ29yaXRobVR5cGUsIHByb3RvLmFsZ29yaXRobVR5cGUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5QdWJsaWNLZXlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5rZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2tleSddID0gdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFsZ29yaXRobVR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FsZ29yaXRobVR5cGUnXSA9IHRoaXMuYWxnb3JpdGhtVHlwZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBRdWVyeSBpbXBsZW1lbnRzIGkuUXVlcnlJbnRlcmZhY2Uge1xuICAgIHNlYXJjaFRlcm06IHN0cmluZztcbiAgICBhdHRyaWJ1dGVLZXlzOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFF1ZXJ5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUXVlcnkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlF1ZXJ5SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VhcmNoVGVybSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VhcmNoVGVybSddID0gdGhpcy5zZWFyY2hUZXJtO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dHJpYnV0ZUtleXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2F0dHJpYnV0ZUtleXMnXSA9IHRoaXMuYXR0cmlidXRlS2V5czt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaW5nbGVWYWx1ZUF0dHJpYnV0ZSBpbXBsZW1lbnRzIGkuU2luZ2xlVmFsdWVBdHRyaWJ1dGVJbnRlcmZhY2Uge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTaW5nbGVWYWx1ZUF0dHJpYnV0ZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFNpbmdsZVZhbHVlQXR0cmlidXRlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TaW5nbGVWYWx1ZUF0dHJpYnV0ZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2V5J10gPSB0aGlzLmtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndmFsdWUnXSA9IHRoaXMudmFsdWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3ViamVjdCBpbXBsZW1lbnRzIGkuU3ViamVjdEludGVyZmFjZSB7XG4gICAgc3ViamVjdElkOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgICBhdHRyaWJ1dGVzOiBNdWx0aVZhbHVlQXR0cmlidXRlW107XG4gICAgY3JlYXRlZDogRGF0ZTtcbiAgICB1cGRhdGVkOiBEYXRlO1xuICAgIGxhc3RMb2dpbjogRGF0ZTtcbiAgICBwdWJsaWNLZXlzOiBQdWJsaWNLZXlbXTtcbiAgICBzdHJ1Y3RBdHRyaWJ1dGVzOiBTdHJ1Y3RBdHRyaWJ1dGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTdWJqZWN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hdHRyaWJ1dGVzKSB7bS5hdHRyaWJ1dGVzID0gcHJvdG8uYXR0cmlidXRlcy5tYXAoTXVsdGlWYWx1ZUF0dHJpYnV0ZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIGlmIChwcm90by51cGRhdGVkKSB7bS51cGRhdGVkID0gbmV3IERhdGUocHJvdG8udXBkYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8ubGFzdExvZ2luKSB7bS5sYXN0TG9naW4gPSBuZXcgRGF0ZShwcm90by5sYXN0TG9naW4pO31cbiAgICAgICAgaWYgKHByb3RvLnB1YmxpY0tleXMpIHttLnB1YmxpY0tleXMgPSBwcm90by5wdWJsaWNLZXlzLm1hcChQdWJsaWNLZXkuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5zdHJ1Y3RBdHRyaWJ1dGVzKSB7bS5zdHJ1Y3RBdHRyaWJ1dGVzID0gU3RydWN0QXR0cmlidXRlLmZyb21Qcm90byhwcm90by5zdHJ1Y3RBdHRyaWJ1dGVzKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU3ViamVjdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3ViamVjdElkJ10gPSB0aGlzLnN1YmplY3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbWFpbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW1haWwnXSA9IHRoaXMuZW1haWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRuZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydG5lcklkJ10gPSB0aGlzLnBhcnRuZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdHRyaWJ1dGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmF0dHJpYnV0ZXMgIT09IG51bGwpIHt0b1JldHVyblsnYXR0cmlidXRlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hdHRyaWJ1dGVzID8gKHRoaXMuYXR0cmlidXRlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hdHRyaWJ1dGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51cGRhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VwZGF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudXBkYXRlZCA/ICh0aGlzLnVwZGF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXBkYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0TG9naW4gIT09ICd1bmRlZmluZWQnICYmIHRoaXMubGFzdExvZ2luICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xhc3RMb2dpbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5sYXN0TG9naW4gPyAodGhpcy5sYXN0TG9naW4gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubGFzdExvZ2luO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnB1YmxpY0tleXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucHVibGljS2V5cyAhPT0gbnVsbCkge3RvUmV0dXJuWydwdWJsaWNLZXlzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnB1YmxpY0tleXMgPyAodGhpcy5wdWJsaWNLZXlzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnB1YmxpY0tleXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RydWN0QXR0cmlidXRlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdHJ1Y3RBdHRyaWJ1dGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0cnVjdEF0dHJpYnV0ZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RydWN0QXR0cmlidXRlcyA/ICh0aGlzLnN0cnVjdEF0dHJpYnV0ZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RydWN0QXR0cmlidXRlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdWJqZWN0UmVzdWx0IGltcGxlbWVudHMgaS5TdWJqZWN0UmVzdWx0SW50ZXJmYWNlIHtcbiAgICBzdWJqZWN0OiBTdWJqZWN0O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU3ViamVjdFJlc3VsdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFN1YmplY3RSZXN1bHQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3ViamVjdCkge20uc3ViamVjdCA9IFN1YmplY3QuZnJvbVByb3RvKHByb3RvLnN1YmplY3QpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TdWJqZWN0UmVzdWx0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdWJqZWN0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YmplY3QnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3ViamVjdCA/ICh0aGlzLnN1YmplY3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3ViamVjdDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBlZENvbnRleHQgaW1wbGVtZW50cyBpLlR5cGVkQ29udGV4dEludGVyZmFjZSB7XG4gICAgdHlwZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVHlwZWRDb250ZXh0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVHlwZWRDb250ZXh0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5UeXBlZENvbnRleHRJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0eXBlJ10gPSB0aGlzLnR5cGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
|