@dcl/asset-packs 2.15.2 → 2.16.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/bin/index.js +15036 -8077
- package/catalog.json +2 -2
- package/dist/actions.js +45 -2
- package/dist/add-child.d.ts +15 -0
- package/dist/add-child.js +223 -0
- package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.d.ts +2 -2
- package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.js +7 -7
- package/dist/admin-toolkit-ui/ModerationControl/utils.js +3 -3
- package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +8 -21
- package/dist/admin-toolkit-ui/VideoControl/api.js +3 -3
- package/dist/admin-toolkit-ui/VideoControl/utils.d.ts +1 -1
- package/dist/admin-toolkit-ui/VideoControl/utils.js +16 -28
- package/dist/admin-toolkit-ui/admin-message-bus.d.ts +12 -0
- package/dist/admin-toolkit-ui/admin-message-bus.js +231 -0
- package/dist/admin-toolkit-ui/index.d.ts +3 -2
- package/dist/admin-toolkit-ui/index.js +17 -10
- package/dist/asset-pack-provider.d.ts +2 -0
- package/dist/asset-pack-provider.js +20 -0
- package/dist/bin/index.js +15036 -8077
- package/dist/clone.js +16 -28
- package/dist/definitions.d.ts +6 -1
- package/dist/definitions.js +7 -2
- package/dist/enums.d.ts +2 -1
- package/dist/enums.js +2 -1
- package/dist/id.d.ts +1 -8
- package/dist/id.js +2 -18
- package/dist/mapping.d.ts +38 -0
- package/dist/mapping.js +91 -0
- package/dist/scene-entrypoint.js +13 -2
- package/package.json +5 -4
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Entity, IEngine } from '@dcl/ecs';
|
|
2
|
+
import { type Composite } from '@dcl/ecs';
|
|
3
|
+
import { type EntityMap } from './mapping';
|
|
4
|
+
type CompositeComponent = Composite.Definition['components'][number];
|
|
5
|
+
type ComponentDataEntry = ReturnType<CompositeComponent['data']['get']>;
|
|
6
|
+
export declare function getJsonPayload<T = unknown>(componentData: ComponentDataEntry): T | undefined;
|
|
7
|
+
export declare function deepReplaceAssetPath(value: unknown, replacement: string): void;
|
|
8
|
+
export declare function substituteAssetPathInComposite(composite: Composite.Definition, compositeSrc: string): void;
|
|
9
|
+
export declare function stripComponents(composite: Composite.Definition): Composite.Definition;
|
|
10
|
+
type IdMap = Map<string, number>;
|
|
11
|
+
export declare function allocateIdsForSpawnedComponents(engine: IEngine, composite: Composite.Definition, spawnedEntityByCompositeId: Map<number, Entity>): IdMap;
|
|
12
|
+
export declare function remapTriggerReferences(engine: IEngine, spawnedEntities: Iterable<[Entity, number]>, ids: IdMap): void;
|
|
13
|
+
export declare function remapSyncComponentIds(engine: IEngine, spawnedEntities: Iterable<[Entity, number]>): void;
|
|
14
|
+
export declare function initializeComponentIdsFromComposite(engine: IEngine, composite: Composite.Definition, entityMap: EntityMap): void;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { COMPONENTS_WITH_ID, getNextId } from './mapping';
|
|
2
|
+
import { getComponents } from './definitions';
|
|
3
|
+
import { getExplorerComponents } from './components';
|
|
4
|
+
const ASSET_PATH_TOKEN = '{assetPath}';
|
|
5
|
+
const SELF_REF = /^\{self:(.+)\}$/;
|
|
6
|
+
const CROSS_ENTITY_REF = /^\{(\d+):(.+)\}$/;
|
|
7
|
+
export function getJsonPayload(componentData) {
|
|
8
|
+
if (componentData?.data?.$case !== 'json')
|
|
9
|
+
return undefined;
|
|
10
|
+
return componentData.data.json;
|
|
11
|
+
}
|
|
12
|
+
function normalizePosix(p) {
|
|
13
|
+
const segments = p.split('/');
|
|
14
|
+
const out = [];
|
|
15
|
+
for (const seg of segments) {
|
|
16
|
+
if (seg === '' || seg === '.')
|
|
17
|
+
continue;
|
|
18
|
+
if (seg === '..') {
|
|
19
|
+
if (out.length === 0 || out[out.length - 1] === '..')
|
|
20
|
+
out.push('..');
|
|
21
|
+
else
|
|
22
|
+
out.pop();
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
out.push(seg);
|
|
26
|
+
}
|
|
27
|
+
const prefix = p.startsWith('/') ? '/' : '';
|
|
28
|
+
return prefix + out.join('/');
|
|
29
|
+
}
|
|
30
|
+
function containAssetPath(replacement, joined) {
|
|
31
|
+
const base = replacement === '' ? '.' : normalizePosix(replacement);
|
|
32
|
+
const normalized = normalizePosix(joined);
|
|
33
|
+
if (normalized === base)
|
|
34
|
+
return normalized;
|
|
35
|
+
if (normalized.startsWith(base + '/'))
|
|
36
|
+
return normalized;
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
function assetPathFrom(compositeSrc) {
|
|
40
|
+
const slash = compositeSrc.lastIndexOf('/');
|
|
41
|
+
return slash >= 0 ? compositeSrc.substring(0, slash) : '';
|
|
42
|
+
}
|
|
43
|
+
const JSON_WRAPPER_KEYS = new Set(['jsonPayload']);
|
|
44
|
+
export function deepReplaceAssetPath(value, replacement) {
|
|
45
|
+
if (value === null || typeof value !== 'object')
|
|
46
|
+
return;
|
|
47
|
+
const substitute = (raw) => {
|
|
48
|
+
const joined = raw.split(ASSET_PATH_TOKEN).join(replacement);
|
|
49
|
+
if (!joined.includes('/') && !joined.includes('\\'))
|
|
50
|
+
return joined;
|
|
51
|
+
const contained = containAssetPath(replacement, joined);
|
|
52
|
+
if (contained !== null)
|
|
53
|
+
return contained;
|
|
54
|
+
console.error(`[asset-packs] rejected {assetPath} substitution that escapes asset dir: ${JSON.stringify(raw)} -> ${JSON.stringify(joined)}`);
|
|
55
|
+
return replacement;
|
|
56
|
+
};
|
|
57
|
+
const substituteJsonWrapper = (raw) => {
|
|
58
|
+
const first = raw.charCodeAt(0);
|
|
59
|
+
if (first !== 0x7b && first !== 0x5b)
|
|
60
|
+
return null;
|
|
61
|
+
let parsed;
|
|
62
|
+
try {
|
|
63
|
+
parsed = JSON.parse(raw);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
if (parsed === null || typeof parsed !== 'object')
|
|
69
|
+
return null;
|
|
70
|
+
deepReplaceAssetPath(parsed, replacement);
|
|
71
|
+
return JSON.stringify(parsed);
|
|
72
|
+
};
|
|
73
|
+
if (Array.isArray(value)) {
|
|
74
|
+
for (let i = 0; i < value.length; i++) {
|
|
75
|
+
const item = value[i];
|
|
76
|
+
if (typeof item === 'string') {
|
|
77
|
+
if (item.includes(ASSET_PATH_TOKEN)) {
|
|
78
|
+
value[i] = substitute(item);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
deepReplaceAssetPath(item, replacement);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const obj = value;
|
|
88
|
+
for (const key of Object.keys(obj)) {
|
|
89
|
+
const item = obj[key];
|
|
90
|
+
if (typeof item === 'string') {
|
|
91
|
+
if (JSON_WRAPPER_KEYS.has(key) && item.includes(ASSET_PATH_TOKEN)) {
|
|
92
|
+
const next = substituteJsonWrapper(item);
|
|
93
|
+
if (next !== null) {
|
|
94
|
+
obj[key] = next;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (item.includes(ASSET_PATH_TOKEN)) {
|
|
99
|
+
obj[key] = substitute(item);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
deepReplaceAssetPath(item, replacement);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export function substituteAssetPathInComposite(composite, compositeSrc) {
|
|
108
|
+
const replacement = assetPathFrom(compositeSrc);
|
|
109
|
+
for (const component of composite.components) {
|
|
110
|
+
for (const [, componentData] of component.data) {
|
|
111
|
+
const payload = getJsonPayload(componentData);
|
|
112
|
+
if (payload !== undefined)
|
|
113
|
+
deepReplaceAssetPath(payload, replacement);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const COMPONENTS_PREFIXES = ['inspector::'];
|
|
118
|
+
export function stripComponents(composite) {
|
|
119
|
+
const kept = composite.components.filter(c => !COMPONENTS_PREFIXES.some(prefix => c.name.startsWith(prefix)));
|
|
120
|
+
if (kept.length === composite.components.length)
|
|
121
|
+
return composite;
|
|
122
|
+
return { ...composite, components: kept };
|
|
123
|
+
}
|
|
124
|
+
function idKey(componentName, entityId) {
|
|
125
|
+
return `${componentName}:${entityId}`;
|
|
126
|
+
}
|
|
127
|
+
function parsePlaceholderRef(ref) {
|
|
128
|
+
const self = ref.match(SELF_REF);
|
|
129
|
+
if (self)
|
|
130
|
+
return { componentName: self[1] };
|
|
131
|
+
const cross = ref.match(CROSS_ENTITY_REF);
|
|
132
|
+
if (cross)
|
|
133
|
+
return { componentName: cross[2], entityId: Number(cross[1]) };
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
export function allocateIdsForSpawnedComponents(engine, composite, spawnedEntityByCompositeId) {
|
|
137
|
+
const ids = new Map();
|
|
138
|
+
for (const component of composite.components) {
|
|
139
|
+
if (!COMPONENTS_WITH_ID.includes(component.name))
|
|
140
|
+
continue;
|
|
141
|
+
const ComponentDef = engine.getComponentOrNull(component.name);
|
|
142
|
+
if (!ComponentDef)
|
|
143
|
+
continue;
|
|
144
|
+
for (const [compositeEntityId, componentData] of component.data) {
|
|
145
|
+
const payload = getJsonPayload(componentData);
|
|
146
|
+
if (!payload || `${payload.id}` !== '{self}')
|
|
147
|
+
continue;
|
|
148
|
+
const destEntity = spawnedEntityByCompositeId.get(compositeEntityId);
|
|
149
|
+
if (destEntity === undefined)
|
|
150
|
+
continue;
|
|
151
|
+
const newId = getNextId(engine);
|
|
152
|
+
ids.set(idKey(component.name, compositeEntityId), newId);
|
|
153
|
+
const live = ComponentDef.getMutableOrNull(destEntity);
|
|
154
|
+
if (live)
|
|
155
|
+
live.id = newId;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return ids;
|
|
159
|
+
}
|
|
160
|
+
export function remapTriggerReferences(engine, spawnedEntities, ids) {
|
|
161
|
+
const { Triggers } = getComponents(engine);
|
|
162
|
+
const resolve = (idRef, ownCompositeEntityId) => {
|
|
163
|
+
if (typeof idRef !== 'string')
|
|
164
|
+
return idRef;
|
|
165
|
+
const parsed = parsePlaceholderRef(idRef);
|
|
166
|
+
if (!parsed)
|
|
167
|
+
return idRef;
|
|
168
|
+
const lookupEntityId = parsed.entityId ?? ownCompositeEntityId;
|
|
169
|
+
return ids.get(idKey(parsed.componentName, lookupEntityId)) ?? idRef;
|
|
170
|
+
};
|
|
171
|
+
for (const [destEntity, compositeEntityId] of spawnedEntities) {
|
|
172
|
+
const triggers = Triggers.getMutableOrNull(destEntity);
|
|
173
|
+
if (!triggers)
|
|
174
|
+
continue;
|
|
175
|
+
for (const trigger of triggers.value) {
|
|
176
|
+
if (trigger.conditions) {
|
|
177
|
+
for (const condition of trigger.conditions) {
|
|
178
|
+
condition.id = resolve(condition.id, compositeEntityId);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
for (const action of trigger.actions) {
|
|
182
|
+
action.id = resolve(action.id, compositeEntityId);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
export function remapSyncComponentIds(engine, spawnedEntities) {
|
|
188
|
+
const { SyncComponents } = getExplorerComponents(engine);
|
|
189
|
+
for (const [destEntity] of spawnedEntities) {
|
|
190
|
+
const sync = SyncComponents.getOrNull(destEntity);
|
|
191
|
+
if (!sync || !Array.isArray(sync.componentIds))
|
|
192
|
+
continue;
|
|
193
|
+
let changed = false;
|
|
194
|
+
const resolved = sync.componentIds.reduce((acc, id) => {
|
|
195
|
+
if (typeof id === 'number') {
|
|
196
|
+
acc.push(id);
|
|
197
|
+
}
|
|
198
|
+
else if (typeof id === 'string') {
|
|
199
|
+
changed = true;
|
|
200
|
+
const component = engine.getComponentOrNull(id);
|
|
201
|
+
if (component)
|
|
202
|
+
acc.push(component.componentId);
|
|
203
|
+
else
|
|
204
|
+
console.error(`[asset-packs] SyncComponents references unknown component "${id}"`);
|
|
205
|
+
}
|
|
206
|
+
return acc;
|
|
207
|
+
}, []);
|
|
208
|
+
if (changed)
|
|
209
|
+
SyncComponents.createOrReplace(destEntity, { componentIds: resolved });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
export function initializeComponentIdsFromComposite(engine, composite, entityMap) {
|
|
213
|
+
const spawnedEntityByCompositeId = new Map();
|
|
214
|
+
const inverse = [];
|
|
215
|
+
for (const [src, dst] of entityMap.entries()) {
|
|
216
|
+
spawnedEntityByCompositeId.set(src, dst);
|
|
217
|
+
inverse.push([dst, src]);
|
|
218
|
+
}
|
|
219
|
+
const ids = allocateIdsForSpawnedComponents(engine, composite, spawnedEntityByCompositeId);
|
|
220
|
+
remapTriggerReferences(engine, inverse, ids);
|
|
221
|
+
remapSyncComponentIds(engine, inverse);
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWNoaWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FkZC1jaGlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBa0IsTUFBTSxXQUFXLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJckQsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDdkMsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUM7QUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQWE1QyxNQUFNLFVBQVUsY0FBYyxDQUFjLGFBQWlDO0lBQzNFLElBQUksYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLEtBQUssTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFxQixDQUFDO0FBQ2xELENBQUM7QUFTRCxTQUFTLGNBQWMsQ0FBQyxDQUFTO0lBQy9CLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsS0FBSyxHQUFHO1lBQUUsU0FBUztRQUN4QyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNqQixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUk7Z0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7Z0JBQ2hFLEdBQUcsQ0FBQyxHQUFHLEVB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Q0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQzdDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxHQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDM0Ysc0JBQXNCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnVudGltZSBob29rcyBmb3IgYXNzZXQtcGFjayBjb21wb3NpdGVzIGxvYWRlZCBvbi1kZW1hbmQgKGkuZS4gdmlhIHRoZVxuICogU1BBV05fRU5USVRZIGFjdGlvbikuIENvdmVyczpcbiAqXG4gKiAgIDEuIGB7YXNzZXRQYXRofWAgc3Vic3RpdHV0aW9uIGF0IGNvbXBvc2l0ZS1sb2FkIHRpbWUsIHNvIG9uLWRpc2sgYXNzZXRcbiAqICAgICAgcGFja3MgY2FuIGtlZXAgdGhlaXIgcG9ydGFibGUgcGxhY2Vob2xkZXIgY29udmVudGlvbi5cbiAqICAgMi4gSUQgcHJlLWFsbG9jYXRpb24gKyBUcmlnZ2VyIHJlZmVyZW5jZSByZW1hcCBhdCBzcGF3biB0aW1lLCBzbyB0aGVcbiAqICAgICAgY29tcG9zaXRlJ3MgYHtzZWxmfWAgLyBge3NlbGY6Y29tcG9uZW50fWAgLyBge2VudGl0eTpjb21wb25lbnR9YFxuICogICAgICBwbGFjZWhvbGRlcnMgcmVzb2x2ZSB0byBsaXZlIG51bWVyaWMgSURzIGJlZm9yZSBpbml0QWN0aW9ucyAvXG4gKiAgICAgIGluaXRUcmlnZ2VycyBiaW5kIGhhbmRsZXJzLlxuICpcbiAqIEhlbHBlcnMgZXhwb3J0ZWQgaGVyZSAoYHN1YnN0aXR1dGVBc3NldFBhdGhJbkNvbXBvc2l0ZWAsXG4gKiBgYWxsb2NhdGVJZHNGb3JTcGF3bmVkQ29tcG9uZW50c2AsIGByZW1hcFRyaWdnZXJSZWZlcmVuY2VzYCwgYGRlZXBSZXBsYWNlQXNzZXRQYXRoYCxcbiAqIGBnZXRKc29uUGF5bG9hZGApIGFyZSB0aGUgY2Fub25pY2FsIGltcGxlbWVudGF0aW9ucyBvZiBhc3NldC1wYWNrIGNvbXBvc2l0ZVxuICogY29udmVudGlvbnMuIEluc3BlY3RvciBhZGQtYXNzZXQgYW5kIGNyZWF0ZS1jdXN0b20tYXNzZXQgb3BlcmF0aW9ucyBjb25zdW1lXG4gKiB0aGVtLiBNYXRlcmlhbC92aWRlb1RleHR1cmUgcGFyc2luZyBhbmQgTm9kZXMtdHJlZSB1cGRhdGVzIHN0YXkgaW5zcGVjdG9yLXNpZGVcbiAqIOKAlCB0aGV5IHRvdWNoIGVkaXRvci1zcGVjaWZpYyBydW50aW1lIHN0YXRlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRW50aXR5LCBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgdHlwZSBDb21wb3NpdGUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgeyBDT01QT05FTlRTX1dJVEhfSUQsIGdldE5leHRJZCwgdHlwZSBFbnRpdHlNYXAgfSBmcm9tICcuL21hcHBpbmcnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgZ2V0RXhwbG9yZXJDb21wb25lbnRzIH0gZnJvbSAnLi9jb21wb25lbnRzJztcblxuLy8g4pSA4pSA4pSAIENvbnN0YW50cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuY29uc3QgQVNTRVRfUEFUSF9UT0tFTiA9ICd7YXNzZXRQYXRofSc7XG5jb25zdCBTRUxGX1JFRiA9IC9eXFx7c2VsZjooLispXFx9JC87XG5jb25zdCBDUk9TU19FTlRJVFlfUkVGID0gL15cXHsoXFxkKyk6KC4rKVxcfSQvO1xuXG4vLyDilIDilIDilIAgdHMtcHJvdG8gc2hhcGUgaGVscGVycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vXG4vLyBgQ29tcG9uZW50RGF0YWAgaXMgZ2VuZXJhdGVkIGJ5IHRzLXByb3RvIHdpdGggYSBkaXNjcmltaW5hdGVkIHVuaW9uOlxuLy8gICB7IGRhdGE6IHsgJGNhc2U6ICdqc29uJywganNvbjogVCB9IHwgeyAkY2FzZTogJ2JpbmFyeScsIGJpbmFyeTogVWludDhBcnJheSB9IHwgdW5kZWZpbmVkIH1cbi8vIEFsbCB0aHJlZSBydW50aW1lIGNvbmNlcm5zIGJlbG93IHJlYWQgdGhlIEpTT04tc2hhcGVkIHBheWxvYWQsIHNvIGV2ZXJ5XG4vLyBhY2Nlc3MgZ29lcyB0aHJvdWdoIGBnZXRKc29uUGF5bG9hZGAuIElmIHRoZSB1cHN0cmVhbSBzaGFwZSBjaGFuZ2VzLCB0aGlzXG4vLyBpcyB0aGUgc2luZ2xlIHVwZGF0ZSBwb2ludC5cblxudHlwZSBDb21wb3NpdGVDb21wb25lbnQgPSBDb21wb3NpdGUuRGVmaW5pdGlvblsnY29tcG9uZW50cyddW251bWJlcl07XG50eXBlIENvbXBvbmVudERhdGFFbnRyeSA9IFJldHVyblR5cGU8Q29tcG9zaXRlQ29tcG9uZW50WydkYXRhJ11bJ2dldCddPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEpzb25QYXlsb2FkPFQgPSB1bmtub3duPihjb21wb25lbnREYXRhOiBDb21wb25lbnREYXRhRW50cnkpOiBUIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNvbXBvbmVudERhdGE/LmRhdGE/LiRjYXNlICE9PSAnanNvbicpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBjb21wb25lbnREYXRhLmRhdGEuanNvbiBhcyBUIHwgdW5kZWZpbmVkO1xufVxuXG4vLyDilIDilIDilIAgYHthc3NldFBhdGh9YCBzdWJzdGl0dXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8vIElubGluZSBQT1NJWC1ub3JtYWxpemUuIFdlIGNhbid0IGltcG9ydCBgcGF0aGAgaGVyZTogYGFkZC1jaGlsZC50c2AgaXNcbi8vIGJ1bmRsZWQgaW50byBydW50aW1lIHNjZW5lcyAoc2FuZGJveGVkOyBubyBOb2RlKSwgYW5kIGBwYXRoLWJyb3dzZXJpZnlgXG4vLyBpcyBub3QgYSBkZXBlbmRlbmN5LiBUaGUgbm9ybWFsaXplciB3YWxrcyBzZWdtZW50cywgZHJvcHMgYC5gLCBwb3BzIG9uXG4vLyBgLi5gLCBhbmQgam9pbnMgd2l0aCBgL2Ag4oCUIG1hdGNoaW5nIGBwYXRoLnBvc2l4Lm5vcm1hbGl6ZWAgZm9yIHRoZVxuLy8gc3Vic3RyaW5nIHNoYXBlcyB3ZSBmZWVkIGl0LlxuZnVuY3Rpb24gbm9ybWFsaXplUG9zaXgocDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2VnbWVudHMgPSBwLnNwbGl0KCcvJyk7XG4gIGNvbnN0IG91dDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIHtcbiAgICBpZiAoc2VnID09PSAnJyB8fCBzZWcgPT09ICcuJykgY29udGludWU7XG4gICAgaWYgKHNlZyA9PT0gJy4uJykge1xuICAgICAgaWYgKG91dC5sZW5ndGggPT09IDAgfHwgb3V0W291dC5sZW5ndGggLSAxXSA9PT0gJy4uJykgb3V0LnB1c2goJy4uJyk7XG4gICAgICBlbHNlIG91dC5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBvdXQucHVzaChzZWcpO1xuICB9XG4gIGNvbnN0IHByZWZpeCA9IHAuc3RhcnRzV2l0aCgnLycpID8gJy8nIDogJyc7XG4gIHJldHVybiBwcmVmaXggKyBvdXQuam9pbignLycpO1xufVxuXG4vLyBQYXRoLWNvbnRhaW5tZW50IGNob2tlcG9pbnQgZm9yIGB7YXNzZXRQYXRofWAgc3Vic3RpdHV0aW9uLiBHaXZlbiB0aGVcbi8vIHBvc3Qtc3Vic3RpdHV0aW9uIHBhdGggY2FuZGlkYXRlIGBqb2luZWRgIGFuZCB0aGUgYXNzZXQgZGlyZWN0b3J5XG4vLyBgcmVwbGFjZW1lbnRgLCByZXR1cm4gdGhlIG5vcm1hbGl6ZWQgYGpvaW5lZGAgaWYgYW5kIG9ubHkgaWZcbi8vIFBPU0lYLW5vcm1hbGl6YXRpb24ga2VlcHMgaXQgaW5zaWRlIGByZXBsYWNlbWVudGAgKGVxdWFsIHRvIGl0IG9yXG4vLyBwcmVmaXhlZCBieSBgcmVwbGFjZW1lbnQgKyAnLydgKS4gUmV0dXJucyBgbnVsbGAgZm9yIHRyYXZlcnNhbCBwYXlsb2Fkc1xuLy8gbGlrZSBge2Fzc2V0UGF0aH0vLi4vLi4vZXRjL3Bhc3N3ZGAuXG4vL1xuLy8gUmlza3ktQVBJIG5vdGU6IHRoaXMgaXMgdGhlIHNpbmdsZSBzZWN1cml0eSBwcmltaXRpdmUgZm9yIHRoZVxuLy8gYHthc3NldFBhdGh9YCB3YWxrZXIuIERvIG5vdCBzd2FwIGBub3JtYWxpemVQb3NpeGAgZm9yIGEgcmVnZXggYC4uYFxuLy8gYmxhY2tsaXN0IOKAlCB0aGF0IHJlamVjdHMgbGVnaXRpbWF0ZSBzaWJsaW5nIHBhdGhzLlxuZnVuY3Rpb24gY29udGFpbkFzc2V0UGF0aChyZXBsYWNlbWVudDogc3RyaW5nLCBqb2luZWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAvLyBObyByZXBsYWNlbWVudCAoY29tcG9zaXRlU3JjIGhhZCBubyBgL2ApOiBhbnkgdHJhdmVyc2FsIGlzIHN1c3BpY2lvdXNcbiAgLy8gYmVjYXVzZSB0aGUgYXNzZXQgZGlyIGlzIHRoZSBpbXBsaWNpdCBjd2QuIEFwcGx5IHRoZSBzYW1lIGNvbnRhaW5tZW50XG4gIC8vIGxvZ2ljIGFnYWluc3QgYSBgLmAgYmFzZS5cbiAgY29uc3QgYmFzZSA9IHJlcGxhY2VtZW50ID09PSAnJyA/ICcuJyA6IG5vcm1hbGl6ZVBvc2l4KHJlcGxhY2VtZW50KTtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBvc2l4KGpvaW5lZCk7XG4gIGlmIChub3JtYWxpemVkID09PSBiYXNlKSByZXR1cm4gbm9ybWFsaXplZDtcbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChiYXNlICsgJy8nKSkgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBhc3NldFBhdGhGcm9tKGNvbXBvc2l0ZVNyYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2xhc2ggPSBjb21wb3NpdGVTcmMubGFzdEluZGV4T2YoJy8nKTtcbiAgcmV0dXJuIHNsYXNoID49IDAgPyBjb21wb3NpdGVTcmMuc3Vic3RyaW5nKDAsIHNsYXNoKSA6ICcnO1xufVxuXG4vLyBTdHJpbmdpZmllZC1KU09OIGNhcnJpZXIgY29udmVudGlvbi4gQXNzZXQtcGFja3MgQWN0aW9ucyBlbmNvZGUgdGhlaXJcbi8vIHBlci1hY3Rpb24gcGF5bG9hZCBhcyBhIEpTT04tZW5jb2RlZCBzdHJpbmcgb24gdGhlIGBqc29uUGF5bG9hZGAgZmllbGRcbi8vIChzZWUgYFJFU09VUkNFX0FDVElPTl9UWVBFU2AgaW4gaW5zcGVjdG9yL2NyZWF0ZS1jdXN0b20tYXNzZXQpLiBXaGVuIHRoZVxuLy8gd2Fsa2VyIGVuY291bnRlcnMgdGhpcyBmaWVsZCwgbmHDr3ZlIHN0cmluZy1sZXZlbCBzdWJzdGl0dXRpb24gd291bGQgdHJlYXRcbi8vIHRoZSB3aG9sZSBKU09OIGxpdGVyYWwgYXMgYSBwYXRoIGNhbmRpZGF0ZSBhbmQgYGNvbnRhaW5Bc3NldFBhdGhgIHdvdWxkXG4vLyByZWplY3QgaXQgKHRoZSBzdHJpbmcgc3RhcnRzIHdpdGggYHtgLCBub3QgdGhlIGFzc2V0IGRpciksIGNvbGxhcHNpbmcgdGhlXG4vLyBwYXlsb2FkIHRvIHRoZSBiYXJlIHJlcGxhY2VtZW50LiBQYXJzZSDihpIgcmVjdXJzZSDihpIgcmUtc2VyaWFsaXplIGtlZXBzIHRoZVxuLy8gY29udGFpbm1lbnQgY2hva2Vwb2ludCBpbnRhY3QgZm9yIHRoZSBhY3R1YWwgcGF0aCBmaWVsZHMgKmluc2lkZSogdGhlXG4vLyBwYXlsb2FkLlxuLy9cbi8vIElmIGEgZnV0dXJlIGNvbXBvbmVudCBpbnRyb2R1Y2VzIGEgZGlmZmVyZW50IHN0cmluZ2lmaWVkLUpTT04gd3JhcHBlciBrZXksXG4vLyBhZGQgdGhlIGtleSBoZXJlLiBOb24tYGpzb25QYXlsb2FkYCBzdHJpbmdzIGNvbnRpbnVlIHRvIGZsb3cgdGhyb3VnaCB0aGVcbi8vIHBsYWluIHBhdGgtc3Vic3RpdHV0aW9uIGJyYW5jaC5cbmNvbnN0IEpTT05fV1JBUFBFUl9LRVlTID0gbmV3IFNldChbJ2pzb25QYXlsb2FkJ10pO1xuXG4vKipcbiAqIFJlcGxhY2UgYHthc3NldFBhdGh9YCB3aXRoIGByZXBsYWNlbWVudGAgaW4gZXZlcnkgc3RyaW5nIHZhbHVlIHJlYWNoYWJsZVxuICogZnJvbSBgdmFsdWVgLCBpbmNsdWRpbmcgc3RyaW5ncyBuZXN0ZWQgaW5zaWRlIHN0cmluZ2lmaWVkIHBheWxvYWRzXG4gKiAoZS5nLiBgYXNzZXQtcGFja3M6OkFjdGlvbnNbaV0uanNvblBheWxvYWRgKS4gTXV0YXRlcyBpbiBwbGFjZS4gSWRlbXBvdGVudC5cbiAqXG4gKiBDb252ZW50aW9ucyBmb3IgZnV0dXJlIGNvbnRyaWJ1dG9ycyBhZGRpbmcgYHthc3NldFBhdGh9YC1iZWFyaW5nIGZpZWxkczpcbiAqICAgLSBQbGFpbiBwYXRoIHN0cmluZyBhdCBhbnkgZGVwdGg6IGp1c3Qgd29ya3MgKHN0cnVjdHVyYWwgcmVjdXJzaW9uKS5cbiAqICAgLSBTdHJpbmdpZmllZC1KU09OIHdyYXBwZXI6IG5hbWUgdGhlIGZpZWxkIGBqc29uUGF5bG9hZGAgKG9yIGV4dGVuZFxuICogICAgIGBKU09OX1dSQVBQRVJfS0VZU2AgYWJvdmUpLlxuICogICAtIEF2b2lkIGVtYmVkZGluZyBge2Fzc2V0UGF0aH1gIGluc2lkZSBsYXJnZXIgbm9uLXBhdGggc3RyaW5ncyAoVVJMcyB3aXRoXG4gKiAgICAgcXVlcnkgcGFyYW1ldGVycyBldGMuKSDigJQgdGhlIGNvbnRhaW5tZW50IGNoZWNrIHJlamVjdHMgdGhvc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwUmVwbGFjZUFzc2V0UGF0aCh2YWx1ZTogdW5rbm93biwgcmVwbGFjZW1lbnQ6IHN0cmluZyk6IHZvaWQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuXG4gIGNvbnN0IHN1YnN0aXR1dGUgPSAocmF3OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGpvaW5lZCA9IHJhdy5zcGxpdChBU1NFVF9QQVRIX1RPS0VOKS5qb2luKHJlcGxhY2VtZW50KTtcbiAgICAvLyBTdHJpbmdzIHRoYXQgZG9uJ3QgY29udGFpbiBhbnkgcGF0aCBzZXBhcmF0b3IgYWZ0ZXIgc3Vic3RpdHV0aW9uXG4gICAgLy8gY2FuJ3QgdHJhdmVyc2Ug4oCUIHNraXAgdGhlIGNvbnRhaW5tZW50IGNoZWNrIGZvciBwZXJmIChlLmcuXG4gICAgLy8gcGxhY2Vob2xkZXJzIHVzZWQgYXMgbGFiZWxzKS5cbiAgICBpZiAoIWpvaW5lZC5pbmNsdWRlcygnLycpICYmICFqb2luZWQuaW5jbHVkZXMoJ1xcXFwnKSkgcmV0dXJuIGpvaW5lZDtcbiAgICBjb25zdCBjb250YWluZWQgPSBjb250YWluQXNzZXRQYXRoKHJlcGxhY2VtZW50LCBqb2luZWQpO1xuICAgIGlmIChjb250YWluZWQgIT09IG51bGwpIHJldHVybiBjb250YWluZWQ7XG4gICAgLy8gVHJhdmVyc2FsIGRldGVjdGVkLiBMb2cgb25jZSBhbmQgZmFsbCBiYWNrIHRvIGByZXBsYWNlbWVudGAgaXRzZWxmLFxuICAgIC8vIHdoaWNoIGlzIGF0IG1pbmltdW0gc3ludGFjdGljYWxseSBpbnNpZGUgdGhlIGFzc2V0IGRpci4gUmV0dXJuaW5nXG4gICAgLy8gdGhlIG9yaWdpbmFsIGByYXdgIHdvdWxkIGxlYXZlIHRoZSB1bnJlc29sdmVkIGB7YXNzZXRQYXRofWAgdG9rZW5cbiAgICAvLyBpbiB0aGUgb3V0cHV0LCBicmVha2luZyB0aGUgcnVudGltZSBtb3JlIHZpc2libHk7IHJldHVybmluZyB0aGVcbiAgICAvLyBiYXJlIGByZXBsYWNlbWVudGAgcmVzdWx0cyBpbiBhIDQwNC1vbi1sb2FkIHRoYXQncyBlYXNpZXIgdG8gZGVidWcuXG4gICAgLy8gVXNlIGBjb25zb2xlLmVycm9yYCAobm90IGB3YXJuYCk6IHRoZSBTREsgcnVudGltZSBgY29uc29sZWAgc2hpbVxuICAgIC8vIGV4cG9zZXMgb25seSBgbG9nYCBhbmQgYGVycm9yYC4gSW5zcGVjdG9yIC8gTm9kZSBjb25zdW1lcnMgc3RpbGxcbiAgICAvLyBzdXJmYWNlIHRoaXMgdGhyb3VnaCB0aGVpciBub3JtYWwgc3RkZXJyLlxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgW2Fzc2V0LXBhY2tzXSByZWplY3RlZCB7YXNzZXRQYXRofSBzdWJzdGl0dXRpb24gdGhhdCBlc2NhcGVzIGFzc2V0IGRpcjogJHtKU09OLnN0cmluZ2lmeShyYXcpfSAtPiAke0pTT04uc3RyaW5naWZ5KGpvaW5lZCl9YCxcbiAgICApO1xuICAgIHJldHVybiByZXBsYWNlbWVudDtcbiAgfTtcblxuICAvLyBQYXJzZSBhIHN0cmluZ2lmaWVkLUpTT04gd3JhcHBlciwgcmVjdXJzZSBpbnRvIHRoZSBwYXJzZWQgdmFsdWUgd2l0aCB0aGVcbiAgLy8gc2FtZSBgcmVwbGFjZW1lbnRgLCBhbmQgcmUtc2VyaWFsaXplLiBSZXR1cm5zIHRoZSBuZXcgc3RyaW5nIG9uIHN1Y2Nlc3NcbiAgLy8gb3IgYG51bGxgIGlmIHRoZSB2YWx1ZSBpcyBub3QgYSBKU09OIG9iamVjdC9hcnJheSDigJQgY2FsbGVycyBmYWxsIGJhY2sgdG9cbiAgLy8gdGhlIHBsYWluIHBhdGgtc3Vic3RpdHV0aW9uIGJyYW5jaCBpbiB0aGF0IGNhc2UuXG4gIGNvbnN0IHN1YnN0aXR1dGVKc29uV3JhcHBlciA9IChyYXc6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIC8vIENoZWFwIHNoYXBlIGNoZWNrIGJlZm9yZSBhdHRlbXB0aW5nIHBhcnNlIOKAlCBza2lwcyBwcmltaXRpdmVzLCBwYXRocyxcbiAgICAvLyBhbmQgbGFiZWxzIHRoYXQgaGFwcGVuIHRvIGxpdmUgdW5kZXIgYSBganNvblBheWxvYWRgIGtleS5cbiAgICBjb25zdCBmaXJzdCA9IHJhdy5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChmaXJzdCAhPT0gMHg3YiAvKiAneycgKi8gJiYgZmlyc3QgIT09IDB4NWIgLyogJ1snICovKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICAgIHRyeSB7XG4gICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHBhcnNlZCA9PT0gbnVsbCB8fCB0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0JykgcmV0dXJuIG51bGw7XG4gICAgZGVlcFJlcGxhY2VBc3NldFBhdGgocGFyc2VkLCByZXBsYWNlbWVudCk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHBhcnNlZCk7XG4gIH07XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IHZhbHVlW2ldO1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoaXRlbS5pbmNsdWRlcyhBU1NFVF9QQVRIX1RPS0VOKSkge1xuICAgICAgICAgIHZhbHVlW2ldID0gc3Vic3RpdHV0ZShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVlcFJlcGxhY2VBc3NldFBhdGgoaXRlbSwgcmVwbGFjZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvYmogPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xuICAgIGNvbnN0IGl0ZW0gPSBvYmpba2V5XTtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoSlNPTl9XUkFQUEVSX0tFWVMuaGFzKGtleSkgJiYgaXRlbS5pbmNsdWRlcyhBU1NFVF9QQVRIX1RPS0VOKSkge1xuICAgICAgICBjb25zdCBuZXh0ID0gc3Vic3RpdHV0ZUpzb25XcmFwcGVyKGl0ZW0pO1xuICAgICAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgIG9ialtrZXldID0gbmV4dDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uaW5jbHVkZXMoQVNTRVRfUEFUSF9UT0tFTikpIHtcbiAgICAgICAgb2JqW2tleV0gPSBzdWJzdGl0dXRlKGl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWVwUmVwbGFjZUFzc2V0UGF0aChpdGVtLCByZXBsYWNlbWVudCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRlQXNzZXRQYXRoSW5Db21wb3NpdGUoXG4gIGNvbXBvc2l0ZTogQ29tcG9zaXRlLkRlZmluaXRpb24sXG4gIGNvbXBvc2l0ZVNyYzogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJlcGxhY2VtZW50ID0gYXNzZXRQYXRoRnJvbShjb21wb3NpdGVTcmMpO1xuICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb3NpdGUuY29tcG9uZW50cykge1xuICAgIGZvciAoY29uc3QgWywgY29tcG9uZW50RGF0YV0gb2YgY29tcG9uZW50LmRhdGEpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBnZXRKc29uUGF5bG9hZChjb21wb25lbnREYXRhKTtcbiAgICAgIGlmIChwYXlsb2FkICE9PSB1bmRlZmluZWQpIGRlZXBSZXBsYWNlQXNzZXRQYXRoKHBheWxvYWQsIHJlcGxhY2VtZW50KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ29tcG9uZW50IG5hbWUgcHJlZml4ZXMgdG8gc3RyaXAgYmVmb3JlIGluc3RhbmNpbmcgYSBzcGF3bmVkIGNvbXBvc2l0ZS4gVG9kYXlcbi8vIHRoaXMgaXMgZWRpdG9yLW9ubHkgbWV0YWRhdGE6IHRoZSBJbnNwZWN0b3IgYmFrZXMgYGluc3BlY3Rvcjo6KmAgY29tcG9uZW50c1xuLy8gKENvbmZpZywgU2VsZWN0aW9uLCBOb2RlcywgSGlkZSwgTG9jaywg4oCmKSBpbnRvIGF1dGhvcmVkIGNvbXBvc2l0ZXMgZm9yIGl0cyBvd25cbi8vIHVzZS4gVGhleSBjYXJyeSBubyBganNvblNjaGVtYWAsIGFyZSByZWdpc3RlcmVkIG5vd2hlcmUgaW4gdGhlIHNjZW5lIHJ1bnRpbWUsXG4vLyBhbmQgYXJlIG1lYW5pbmdsZXNzIG9uY2UgZGVwbG95ZWQg4oCUIHNvIGBDb21wb3NpdGUuaW5zdGFuY2VgIHRocm93cyBvbiB0aGVtXG4vLyAoXCJyZWZlcmVuY2VzIHVuZGVmaW5lZCBjb21wb25lbnRcIikuIEFkZCBmdXJ0aGVyIHByZWZpeGVzIGhlcmUgaWYgbW9yZSBuZWVkXG4vLyBzdHJpcHBpbmcuXG5jb25zdCBDT01QT05FTlRTX1BSRUZJWEVTID0gWydpbnNwZWN0b3I6OiddO1xuXG4vKipcbiAqIFJldHVybiBhIGNvbXBvc2l0ZSB3aXRoIGV2ZXJ5IGNvbXBvbmVudCB3aG9zZSBuYW1lIG1hdGNoZXMgYVxuICogYENPTVBPTkVOVFNfUFJFRklYRVNgIGVudHJ5IHJlbW92ZWQuXG4gKlxuICogUHVyZTogcmV0dXJucyB0aGUgc2FtZSByZWZlcmVuY2Ugd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHN0cmlwIChzbyBjYWxsZXJzIGNhblxuICogY2hlYXBseSBkZXRlY3QgYSBuby1vcCBhbmQgYXZvaWQgY29weWluZyksIG90aGVyd2lzZSBhIHNoYWxsb3cgY29weSB3aXRoIGFcbiAqIGZpbHRlcmVkIGBjb21wb25lbnRzYCBhcnJheS4gRW50aXRpZXMgYXJlIHVudG91Y2hlZCDigJQgb25seSB0aGUgc3RyaXBwZWRcbiAqIGNvbXBvbmVudHMgYXR0YWNoZWQgdG8gdGhlbSBhcmUgZHJvcHBlZCwgc28gZW50aXR5IG1hcHBpbmcgYW5kIElEIHJlbWFwIGFyZVxuICogdW5hZmZlY3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQ29tcG9uZW50cyhjb21wb3NpdGU6IENvbXBvc2l0ZS5EZWZpbml0aW9uKTogQ29tcG9zaXRlLkRlZmluaXRpb24ge1xuICBjb25zdCBrZXB0ID0gY29tcG9zaXRlLmNvbXBvbmVudHMuZmlsdGVyKFxuICAgIGMgPT4gIUNPTVBPTkVOVFNfUFJFRklYRVMuc29tZShwcmVmaXggPT4gYy5uYW1lLnN0YXJ0c1dpdGgocHJlZml4KSksXG4gICk7XG4gIGlmIChrZXB0Lmxlbmd0aCA9PT0gY29tcG9zaXRlLmNvbXBvbmVudHMubGVuZ3RoKSByZXR1cm4gY29tcG9zaXRlO1xuICByZXR1cm4geyAuLi5jb21wb3NpdGUsIGNvbXBvbmVudHM6IGtlcHQgfTtcbn1cblxuLy8g4pSA4pSA4pSAIElEIGFsbG9jYXRpb24gKyBUcmlnZ2VyIHJlZmVyZW5jZSByZW1hcCAoc3Bhd24tdGltZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbnR5cGUgSWRNYXAgPSBNYXA8c3RyaW5nLCBudW1iZXI+O1xuXG5mdW5jdGlvbiBpZEtleShjb21wb25lbnROYW1lOiBzdHJpbmcsIGVudGl0eUlkOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Y29tcG9uZW50TmFtZX06JHtlbnRpdHlJZH1gO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VkUmVmIHtcbiAgY29tcG9uZW50TmFtZTogc3RyaW5nO1xuICBlbnRpdHlJZD86IG51bWJlcjsgLy8gdW5kZWZpbmVkIOKHkiByZXNvbHZlIGFnYWluc3QgdGhlIHJlZidzIG93biBlbnRpdHlcbn1cblxuZnVuY3Rpb24gcGFyc2VQbGFjZWhvbGRlclJlZihyZWY6IHN0cmluZyk6IFBhcnNlZFJlZiB8IG51bGwge1xuICBjb25zdCBzZWxmID0gcmVmLm1hdGNoKFNFTEZfUkVGKTtcbiAgaWYgKHNlbGYpIHJldHVybiB7IGNvbXBvbmVudE5hbWU6IHNlbGZbMV0gfTtcbiAgY29uc3QgY3Jvc3MgPSByZWYubWF0Y2goQ1JPU1NfRU5USVRZX1JFRik7XG4gIGlmIChjcm9zcykgcmV0dXJuIHsgY29tcG9uZW50TmFtZTogY3Jvc3NbMl0sIGVudGl0eUlkOiBOdW1iZXIoY3Jvc3NbMV0pIH07XG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBNaW5pbWFsIHN0cnVjdHVyYWwgc2hhcGUgd2UgbmVlZCBmcm9tIGFueSBpZC1iZWFyaW5nIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuLy8gQWN0aW9ucyAvIFN0YXRlcyAvIENvdW50ZXIgYWxsIGV4cG9zZSBgZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpYCByZXR1cm5pbmdcbi8vIGEgdmFsdWUgd2l0aCBgLmlkOiBudW1iZXJgLCBidXQgdGhlaXIgYHZhbHVlYCBmaWVsZCB0eXBlcyBkaXZlcmdlIChBY3Rpb25bXVxuLy8gdnMgc3RyaW5nW10gdnMgbnVtYmVyKSB3aGljaCBtYWtlcyB0aGVtIGluY29tcGF0aWJsZSBhcyBhIFJlY29yZCB2YWx1ZVxuLy8gdHlwZS4gV2Ugb25seSBldmVyIHJlYWQvd3JpdGUgYC5pZGAsIHNvIHRoaXMgbmFycm93IHNoYXBlIGlzIGVub3VnaC5cbnR5cGUgSWRNdXRhYmxlQ29tcG9uZW50ID0ge1xuICBnZXRNdXRhYmxlT3JOdWxsKGVudGl0eTogRW50aXR5KTogeyBpZD86IG51bWJlciB9IHwgbnVsbDtcbn07XG5cbi8qKlxuICogRm9yIGVhY2ggY29tcG9zaXRlIGNvbXBvbmVudCBsaXN0ZWQgaW4gQ09NUE9ORU5UU19XSVRIX0lEIHdob3NlIHBheWxvYWRcbiAqIGNhcnJpZXMgYGlkOiAne3NlbGZ9J2AsIGFsbG9jYXRlIGEgZnJlc2ggbnVtZXJpYyBJRCB2aWEgYGdldE5leHRJZGAsXG4gKiB3cml0ZSBpdCBvbnRvIHRoZSBsaXZlIHNwYXduZWQgY29tcG9uZW50LCBhbmQgcmV0dXJuIHRoZSBtYXBwaW5nIHNvXG4gKiBUcmlnZ2VyIHJlZmVyZW5jZXMgY2FuIGJlIHJlbWFwcGVkIGluIGEgc2Vjb25kIHBhc3MuXG4gKlxuICogVGhlIGVuZ2luZSBsb29rcyB1cCB0aGUgY29tcG9uZW50IGRlZmluaXRpb24gYnkgbmFtZSBkaXJlY3RseSDigJQgbm9cbiAqIHBhcmFsbGVsIGBuYW1lIOKGkiBjb21wb25lbnRgIHRhYmxlIHRvIG1haW50YWluLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2NhdGVJZHNGb3JTcGF3bmVkQ29tcG9uZW50cyhcbiAgZW5naW5lOiBJRW5naW5lLFxuICBjb21wb3NpdGU6IENvbXBvc2l0ZS5EZWZpbml0aW9uLFxuICBzcGF3bmVkRW50aXR5QnlDb21wb3NpdGVJZDogTWFwPG51bWJlciwgRW50aXR5Pixcbik6IElkTWFwIHtcbiAgY29uc3QgaWRzOiBJZE1hcCA9IG5ldyBNYXAoKTtcbiAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9zaXRlLmNvbXBvbmVudHMpIHtcbiAgICBpZiAoIUNPTVBPTkVOVFNfV0lUSF9JRC5pbmNsdWRlcyhjb21wb25lbnQubmFtZSkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IENvbXBvbmVudERlZiA9IGVuZ2luZS5nZXRDb21wb25lbnRPck51bGwoY29tcG9uZW50Lm5hbWUpIGFzIElkTXV0YWJsZUNvbXBvbmVudCB8IG51bGw7XG4gICAgaWYgKCFDb21wb25lbnREZWYpIGNvbnRpbnVlO1xuXG4gICAgZm9yIChjb25zdCBbY29tcG9zaXRlRW50aXR5SWQsIGNvbXBvbmVudERhdGFdIG9mIGNvbXBvbmVudC5kYXRhKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gZ2V0SnNvblBheWxvYWQ8eyBpZD86IHVua25vd24gfT4oY29tcG9uZW50RGF0YSk7XG4gICAgICBpZiAoIXBheWxvYWQgfHwgYCR7cGF5bG9hZC5pZH1gICE9PSAne3NlbGZ9JykgY29udGludWU7XG5cbiAgICAgIGNvbnN0IGRlc3RFbnRpdHkgPSBzcGF3bmVkRW50aXR5QnlDb21wb3NpdGVJZC5nZXQoY29tcG9zaXRlRW50aXR5SWQpO1xuICAgICAgaWYgKGRlc3RFbnRpdHkgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IG5ld0lkID0gZ2V0TmV4dElkKGVuZ2luZSk7XG4gICAgICBpZHMuc2V0KGlkS2V5KGNvbXBvbmVudC5uYW1lLCBjb21wb3NpdGVFbnRpdHlJZCksIG5ld0lkKTtcbiAgICAgIGNvbnN0IGxpdmUgPSBDb21wb25lbnREZWYuZ2V0TXV0YWJsZU9yTnVsbChkZXN0RW50aXR5KTtcbiAgICAgIGlmIChsaXZlKSBsaXZlLmlkID0gbmV3SWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBpZHM7XG59XG5cbi8qKlxuICogUmV3cml0ZSBUcmlnZ2VyIGBhY3Rpb25zW10uaWRgIGFuZCBgY29uZGl0aW9uc1tdLmlkYCBwbGFjZWhvbGRlciBzdHJpbmdzXG4gKiAoYHtzZWxmOkNvbXBvbmVudH1gIC8gYHtlbnRpdHk6Q29tcG9uZW50fWApIGludG8gdGhlIG51bWVyaWMgSURzIGFsbG9jYXRlZFxuICogaW4gdGhlIHByZXZpb3VzIHBhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1hcFRyaWdnZXJSZWZlcmVuY2VzKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHNwYXduZWRFbnRpdGllczogSXRlcmFibGU8W0VudGl0eSwgbnVtYmVyXT4sXG4gIGlkczogSWRNYXAsXG4pOiB2b2lkIHtcbiAgY29uc3QgeyBUcmlnZ2VycyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIGNvbnN0IHJlc29sdmUgPSAoaWRSZWY6IHVua25vd24sIG93bkNvbXBvc2l0ZUVudGl0eUlkOiBudW1iZXIpOiB1bmtub3duID0+IHtcbiAgICBpZiAodHlwZW9mIGlkUmVmICE9PSAnc3RyaW5nJykgcmV0dXJuIGlkUmVmO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUGxhY2Vob2xkZXJSZWYoaWRSZWYpO1xuICAgIGlmICghcGFyc2VkKSByZXR1cm4gaWRSZWY7XG4gICAgY29uc3QgbG9va3VwRW50aXR5SWQgPSBwYXJzZWQuZW50aXR5SWQgPz8gb3duQ29tcG9zaXRlRW50aXR5SWQ7XG4gICAgcmV0dXJuIGlkcy5nZXQoaWRLZXkocGFyc2VkLmNvbXBvbmVudE5hbWUsIGxvb2t1cEVudGl0eUlkKSkgPz8gaWRSZWY7XG4gIH07XG5cbiAgZm9yIChjb25zdCBbZGVzdEVudGl0eSwgY29tcG9zaXRlRW50aXR5SWRdIG9mIHNwYXduZWRFbnRpdGllcykge1xuICAgIGNvbnN0IHRyaWdnZXJzID0gVHJpZ2dlcnMuZ2V0TXV0YWJsZU9yTnVsbChkZXN0RW50aXR5KTtcbiAgICBpZiAoIXRyaWdnZXJzKSBjb250aW51ZTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMudmFsdWUpIHtcbiAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgdHJpZ2dlci5jb25kaXRpb25zKSB7XG4gICAgICAgICAgKGNvbmRpdGlvbiBhcyB7IGlkOiB1bmtub3duIH0pLmlkID0gcmVzb2x2ZShjb25kaXRpb24uaWQsIGNvbXBvc2l0ZUVudGl0eUlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdHJpZ2dlci5hY3Rpb25zKSB7XG4gICAgICAgIChhY3Rpb24gYXMgeyBpZDogdW5rbm93biB9KS5pZCA9IHJlc29sdmUoYWN0aW9uLmlkLCBjb21wb3NpdGVFbnRpdHlJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmV3cml0ZSBgY29yZS1zY2hlbWE6OlN5bmMtQ29tcG9uZW50c2AuYGNvbXBvbmVudElkc2Agb24gdGhlIHNwYXduZWQgc3VidHJlZVxuICogZnJvbSBjb21wb25lbnQtKm5hbWUqIHBsYWNlaG9sZGVycyB0byB0aGUgbnVtZXJpYyBjb21wb25lbnQgaWRzIHRoZSBlbmdpbmVcbiAqIHNlcmlhbGl6ZXMuXG4gKlxuICogQXNzZXQtcGFjayBjb21wb3NpdGVzIHN0b3JlIHRoZXNlIGlkcyBhcyBwb3J0YWJsZSBuYW1lcyAoZS5nLlxuICogYFwiYXNzZXQtcGFja3M6OlN0YXRlc1wiYCkg4oCUIHRoZSBzYW1lIGNvbnZlbnRpb24gdGhlIEluc3BlY3RvciByZXNvbHZlcyB2aWFcbiAqIGBwYXJzZVN5bmNDb21wb25lbnRzYCB3aGVuIHBsYWNpbmcgYSBzbWFydCBpdGVtIGZyb20gdGhlIGNhdGFsb2cuIFRoZVxuICogU1BBV05fRU5USVRZIHBhdGggbG9hZHMgdGhlIGNvbXBvc2l0ZS5qc29uIGRpcmVjdGx5LCBzbyB3aXRob3V0IHRoaXMgcGFzcyB0aGVcbiAqIHJhdyBuYW1lcyByZWFjaCB0aGUgbGl2ZSBgU3luY0NvbXBvbmVudHNgIGNvbXBvbmVudCwgd2hvc2Ugc2NoZW1hIGlzXG4gKiBgQXJyYXkoSW50NjQpYDsgdGhlIENSRFQgc2VyaWFsaXplciB0aGVuIHRocm93c1xuICogYENhbm5vdCBjb252ZXJ0IDxuYW1lPiB0byBhIEJpZ0ludGAgZXZlcnkgdGljay5cbiAqXG4gKiBSdW5zIHBvc3QtaW5zdGFuY2UgKGFsb25nc2lkZSBgcmVtYXBUcmlnZ2VyUmVmZXJlbmNlc2ApIHNvIGV2ZXJ5IGNvbXBvbmVudFxuICogdGhlIGNvbXBvc2l0ZSByZWZlcmVuY2VzIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBhbmQgcmVzb2x2YWJsZSBieSBuYW1lLlxuICogTnVtZXJpYyBlbnRyaWVzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQg4oCUIHNvbWUgcGFja3MgYWxyZWFkeSBzaGlwIHJlc29sdmVkXG4gKiBpZHMg4oCUIGFuZCB0aGUgd3JpdGUgaXMgc2tpcHBlZCBlbnRpcmVseSB3aGVuIG5vdGhpbmcgbmVlZGVkIHJlc29sdmluZywgdG9cbiAqIGF2b2lkIGEgcmVkdW5kYW50IENSRFQgdXBkYXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtYXBTeW5jQ29tcG9uZW50SWRzKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHNwYXduZWRFbnRpdGllczogSXRlcmFibGU8W0VudGl0eSwgbnVtYmVyXT4sXG4pOiB2b2lkIHtcbiAgY29uc3QgeyBTeW5jQ29tcG9uZW50cyB9ID0gZ2V0RXhwbG9yZXJDb21wb25lbnRzKGVuZ2luZSk7XG4gIGZvciAoY29uc3QgW2Rlc3RFbnRpdHldIG9mIHNwYXduZWRFbnRpdGllcykge1xuICAgIGNvbnN0IHN5bmMgPSBTeW5jQ29tcG9uZW50cy5nZXRPck51bGwoZGVzdEVudGl0eSk7XG4gICAgaWYgKCFzeW5jIHx8ICFBcnJheS5pc0FycmF5KHN5bmMuY29tcG9uZW50SWRzKSkgY29udGludWU7XG5cbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHJlc29sdmVkID0gKHN5bmMuY29tcG9uZW50SWRzIGFzIHVua25vd25bXSkucmVkdWNlPG51bWJlcltdPigoYWNjLCBpZCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgYWNjLnB1c2goaWQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50T3JOdWxsKGlkKTtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkgYWNjLnB1c2goY29tcG9uZW50LmNvbXBvbmVudElkKTtcbiAgICAgICAgZWxzZSBjb25zb2xlLmVycm9yKGBbYXNzZXQtcGFja3NdIFN5bmNDb21wb25lbnRzIHJlZmVyZW5jZXMgdW5rbm93biBjb21wb25lbnQgXCIke2lkfVwiYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcblxuICAgIGlmIChjaGFuZ2VkKSBTeW5jQ29tcG9uZW50cy5jcmVhdGVPclJlcGxhY2UoZGVzdEVudGl0eSwgeyBjb21wb25lbnRJZHM6IHJlc29sdmVkIH0pO1xuICB9XG59XG5cbi8qKlxuICogQWZ0ZXIgYENvbXBvc2l0ZS5pbnN0YW5jZWAgc3Bhd25zIGEgc21hcnQtaXRlbSBzdWJ0cmVlLCByZXNvbHZlIGl0c1xuICogcGxhY2Vob2xkZXIgSURzIHNvIGhhbmRsZXJzIGNhbiBmaXJlOlxuICpcbiAqICAgMS4gQWxsb2NhdGUgZnJlc2ggbnVtZXJpYyBJRHMgZm9yIEFjdGlvbnMvU3RhdGVzL0NvdW50ZXIgY29tcG9uZW50cyB3aG9zZVxuICogICAgICBjb21wb3NpdGUtc2lkZSBpZCBpcyB0aGUgbGl0ZXJhbCBge3NlbGZ9YC5cbiAqICAgMi4gUmV3cml0ZSBUcmlnZ2VyIGBhY3Rpb25zW10uaWRgIC8gYGNvbmRpdGlvbnNbXS5pZGAgcGxhY2Vob2xkZXJzIHRvXG4gKiAgICAgIHBvaW50IGF0IHRoZSBuZXdseS1hbGxvY2F0ZWQgbnVtZXJpYyBJRHMuXG4gKiAgIDMuIFJlc29sdmUgYFN5bmNDb21wb25lbnRzLmNvbXBvbmVudElkc2AgY29tcG9uZW50LW5hbWUgcGxhY2Vob2xkZXJzIHRvXG4gKiAgICAgIHRoZWlyIG51bWVyaWMgY29tcG9uZW50IGlkcy5cbiAqXG4gKiBUaGUgY2FsbGVyIHN1cHBsaWVzIHRoZSBjb21wb3NpdGUtZW50aXR5IOKGkiBsaXZlLWVudGl0eSBtYXAgZGlyZWN0bHkgKHZpYVxuICogdGhlIGBFbnRpdHlNYXBgIHBvcHVsYXRlZCBieSBgRU1NX0RJUkVDVF9NQVBQSU5HYCkuIFdlIG5vIGxvbmdlciByZWFkIGl0XG4gKiBiYWNrIGZyb20gYENvbXBvc2l0ZVJvb3RgOiB0aGUgbmV3IFNESyBvbmx5IHdyaXRlcyB0aGF0IGNvbXBvbmVudCBmb3JcbiAqIGNvbXBvc2l0ZXMgY29udGFpbmluZyBuZXN0ZWQgY2hpbGRyZW4sIHNvIGxlYWYgY29tcG9zaXRlcyBoYXZlIG5vIHJvdyB0b1xuICogcmVhZC5cbiAqXG4gKiBNaXJyb3JzIHRoZSBpbnNwZWN0b3IncyBkcmFnLW4tZHJvcCBpbml0aWFsaXphdGlvbiBwYXNzOyBib3RoIHNob3VsZFxuICogZXZlbnR1YWxseSBjYWxsIHRoaXMgZnVuY3Rpb24gKHNlZSBUT0RPIGF0IHRvcCBvZiBmaWxlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDb21wb25lbnRJZHNGcm9tQ29tcG9zaXRlKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIGNvbXBvc2l0ZTogQ29tcG9zaXRlLkRlZmluaXRpb24sXG4gIGVudGl0eU1hcDogRW50aXR5TWFwLFxuKTogdm9pZCB7XG4gIGNvbnN0IHNwYXduZWRFbnRpdHlCeUNvbXBvc2l0ZUlkID0gbmV3IE1hcDxudW1iZXIsIEVudGl0eT4oKTtcbiAgY29uc3QgaW52ZXJzZTogW0VudGl0eSwgbnVtYmVyXVtdID0gW107XG4gIGZvciAoY29uc3QgW3NyYywgZHN0XSBvZiBlbnRpdHlNYXAuZW50cmllcygpKSB7XG4gICAgc3Bhd25lZEVudGl0eUJ5Q29tcG9zaXRlSWQuc2V0KHNyYyBhcyBudW1iZXIsIGRzdCk7XG4gICAgaW52ZXJzZS5wdXNoKFtkc3QsIHNyYyBhcyBudW1iZXJdKTtcbiAgfVxuXG4gIGNvbnN0IGlkcyA9IGFsbG9jYXRlSWRzRm9yU3Bhd25lZENvbXBvbmVudHMoZW5naW5lLCBjb21wb3NpdGUsIHNwYXduZWRFbnRpdHlCeUNvbXBvc2l0ZUlkKTtcbiAgcmVtYXBUcmlnZ2VyUmVmZXJlbmNlcyhlbmdpbmUsIGludmVyc2UsIGlkcyk7XG4gIHJlbWFwU3luY0NvbXBvbmVudElkcyhlbmdpbmUsIGludmVyc2UpO1xufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IEngine } from '@dcl/ecs';
|
|
1
|
+
import type { IEngine } from '@dcl/ecs';
|
|
2
2
|
import ReactEcs from '@dcl/react-ecs';
|
|
3
|
-
import { SceneAdmin } from '.';
|
|
3
|
+
import type { SceneAdmin } from '.';
|
|
4
4
|
export declare function RemoveAdminConfirmation({ admin, engine }: {
|
|
5
5
|
admin: SceneAdmin;
|
|
6
6
|
engine: IEngine;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Color4 } from '@dcl/ecs-math';
|
|
2
2
|
import ReactEcs, { UiEntity, Label } from '@dcl/react-ecs';
|
|
3
3
|
import { Button } from '../Button';
|
|
4
|
-
import { deleteSceneAdmin } from './api';
|
|
5
|
-
import { moderationControlState } from '.';
|
|
6
4
|
import { LoadingDots } from '../Loading';
|
|
7
5
|
import { Error } from '../Error';
|
|
8
|
-
import {
|
|
6
|
+
import { fetchAndSyncSceneAdmins } from '..';
|
|
7
|
+
import { deleteSceneAdmin } from './api';
|
|
8
|
+
import { moderationControlState } from '.';
|
|
9
9
|
export function RemoveAdminConfirmation({ admin, engine }) {
|
|
10
10
|
const [isLoading, setIsLoading] = ReactEcs.useState(false);
|
|
11
11
|
const [error, setError] = ReactEcs.useState('');
|
|
@@ -27,9 +27,9 @@ export function RemoveAdminConfirmation({ admin, engine }) {
|
|
|
27
27
|
borderRadius: 12,
|
|
28
28
|
}, uiBackground: { color: Color4.Black() } },
|
|
29
29
|
ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'row', maxWidth: 675 } },
|
|
30
|
-
ReactEcs.createElement(Label, { value:
|
|
30
|
+
ReactEcs.createElement(Label, { value: 'Are you sure you want to remove ', fontSize: 18, color: Color4.White() }),
|
|
31
31
|
ReactEcs.createElement(Label, { value: `<b>${admin.name || (admin.address ? `${admin.address.substring(0, 6)}...${admin.address.substring(admin.address.length - 4)}` : '')}</b>`, fontSize: 18, color: Color4.fromHexString('#FF2D55') }),
|
|
32
|
-
ReactEcs.createElement(Label, { value:
|
|
32
|
+
ReactEcs.createElement(Label, { value: ' from the Admin list?', fontSize: 18, color: Color4.White() })),
|
|
33
33
|
ReactEcs.createElement(Label, { value: "If you proceed, they will lose access to tehe Admin Tools for this scene.", fontSize: 14, color: Color4.Gray(), uiTransform: {
|
|
34
34
|
margin: { top: 12, bottom: 24 },
|
|
35
35
|
} }),
|
|
@@ -64,7 +64,7 @@ export function RemoveAdminConfirmation({ admin, engine }) {
|
|
|
64
64
|
}
|
|
65
65
|
else {
|
|
66
66
|
moderationControlState.adminToRemove = undefined;
|
|
67
|
-
await
|
|
67
|
+
await fetchAndSyncSceneAdmins();
|
|
68
68
|
}
|
|
69
69
|
setIsLoading(false);
|
|
70
70
|
}
|
|
@@ -72,4 +72,4 @@ export function RemoveAdminConfirmation({ admin, engine }) {
|
|
|
72
72
|
isLoading && ReactEcs.createElement(LoadingDots, { engine: engine }),
|
|
73
73
|
error && (ReactEcs.createElement(Error, { uiTransform: { margin: { top: 16 } }, text: error })))));
|
|
74
74
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3ZlQWRtaW5Db25maXJtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC9SZW1vdmVBZG1pbkNvbmZpcm1hdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxHQUFHLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLElBQUksQ0FBQztBQUV0QyxNQUFNLFVBQVUsdUJBQXVCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQztJQUMvRixNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWhELE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsY0FBYyxFQUFFLFFBQVE7WUFDeEIsVUFBVSxFQUFFLFFBQVE7U0FDckI7UUFFRCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO2dCQUNYLEtBQUssRUFBRSxHQUFHO2dCQUNWLFNBQVMsRUFBRSxHQUFHO2dCQUNkLE9BQU8sRUFBRSxFQUFFO2dCQUNYLE9BQU8sRUFBRSxNQUFNO2dCQUNmLGFBQWEsRUFBRSxRQUFRO2dCQUN2QixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsY0FBYyxFQUFFLFFBQVE7Z0JBQ3hCLFlBQVksRUFBRSxFQUFFO2FBQ2pCLEVBQ0QsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUV2Qyx1QkFBQyxRQUFRLElBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUM1RCx1QkFBQyxLQUFLLElBQ0osS0FBSyxFQUFFLGtDQUFrQyxFQUN6QyxRQUFRLEVBQUUsRUFBRSxFQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQ3JCO2dCQUNGLHVCQUFDLEtBQUssSUFDSixLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFDakosUUFBUSxFQUFFLEVBQUUsRUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FDdEM7Z0JBQ0YsdUJBQUMsS0FBSyxJQUNKLEtBQUssRUFBRSx1QkFBdUIsRUFDOUIsUUFBUSxFQUFFLEVBQUUsRUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUNyQixDQUNPO1lBRVgsdUJBQUMsS0FBSyxJQUNKLEtBQUssRUFBQywyRUFBMkUsRUFDakYsUUFBUSxFQUFFLEVBQUUsRUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUNwQixXQUFXLEVBQUU7b0JBQ1gsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2lCQUNoQyxHQUNEO1lBRUYsdUJBQUMsUUFBUSxJQUNQLFdBQVcsRUFBRTtvQkFDWCxPQUFPLEVBQUUsTUFBTTtvQkFDZixhQUFhLEVBQUUsS0FBSztvQkFDcEIsY0FBYyxFQUFFLFFBQVE7b0JBQ3hCLFVBQVUsRUFBRSxRQUFRO29CQUNwQixLQUFLLEVBQUUsTUFBTTtpQkFDZDtnQkFFQSxDQUFDLFNBQVMsSUFBSSxDQUNiLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsZUFBZSxFQUNsQixLQUFLLEVBQUMsZUFBZSxFQUNyQixPQUFPLEVBQUMsU0FBUyxFQUNqQixRQUFRLEVBQUUsRUFBRSxFQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQ3JCLFdBQVcsRUFBRTt3QkFDWCxLQUFLLEVBQUUsRUFBRTt3QkFDVCxNQUFNLEVBQUUsRUFBRTt3QkFDVixPQUFPLEVBQUUsTUFBTTt3QkFDZixjQUFjLEVBQUUsUUFBUTt3QkFDeEIsVUFBVSxFQUFFLFFBQVE7d0JBQ3BCLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtxQkFDaEMsRUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFO3dCQUNoQixzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO29CQUNuRCxDQUFDLEdBQ0QsQ0FDSDtnQkFDQSxDQUFDLFNBQVMsSUFBSSxDQUNiLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsZ0JBQWdCLEVBQ25CLEtBQUssRUFBRSxlQUFlLEVBQ3RCLE9BQU8sRUFBQyxTQUFTLEVBQ2pCLFFBQVEsRUFBRSxFQUFFLEVBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFDckIsV0FBVyxFQUFFO3dCQUNYLEtBQUssRUFBRSxHQUFHO3dCQUNWLE1BQU0sRUFBRSxFQUFFO3dCQUNWLGNBQWMsRUFBRSxRQUFRO3dCQUN4QixVQUFVLEVBQUUsUUFBUTtxQkFDckIsRUFDRCxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUN4RCxXQUFXLEVBQUUsS0FBSyxJQUFJLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUNoQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ25CLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQ0FDVixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2xCLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dDQUNqRCxNQUFNLGdCQUFnQixFQUFFLENBQUM7NEJBQzNCLENBQUM7NEJBQ0QsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN0QixDQUFDO29CQUNILENBQUMsR0FDRCxDQUNILENBQ1E7WUFDVixTQUFTLElBQUksdUJBQUMsV0FBVyxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUk7WUFDNUMsS0FBSyxJQUFJLENBQ1IsdUJBQUMsS0FBSyxJQUNKLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUNwQyxJQUFJLEVBQUUsS0FBSyxHQUNYLENBQ0gsQ0FDUSxDQUNGLENBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9lY3MtbWF0aCc7XG5pbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHksIExhYmVsIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgZGVsZXRlU2NlbmVBZG1pbiB9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IG1vZGVyYXRpb25Db250cm9sU3RhdGUsIFNjZW5lQWRtaW4gfSBmcm9tICcuJztcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vTG9hZGluZyc7XG5pbXBvcnQgeyBFcnJvciB9IGZyb20gJy4uL0Vycm9yJztcbmltcG9ydCB7IGZldGNoU2NlbmVBZG1pbnMgfSBmcm9tICcuLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVBZG1pbkNvbmZpcm1hdGlvbih7IGFkbWluLCBlbmdpbmUgfTogeyBhZG1pbjogU2NlbmVBZG1pbjsgZW5naW5lOiBJRW5naW5lIH0pIHtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IFJlYWN0RWNzLnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSBSZWFjdEVjcy51c2VTdGF0ZSgnJyk7XG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIHdpZHRoOiA2NzUsXG4gICAgICAgICAgbWluSGVpZ2h0OiAyNzksXG4gICAgICAgICAgcGFkZGluZzogMjQsXG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDEyLFxuICAgICAgICB9fVxuICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5CbGFjaygpIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgbWF4V2lkdGg6IDY3NSB9fT5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPXtgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSBgfVxuICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICB2YWx1ZT17YDxiPiR7YWRtaW4ubmFtZSB8fCAoYWRtaW4uYWRkcmVzcyA/IGAke2FkbWluLmFkZHJlc3Muc3Vic3RyaW5nKDAsIDYpfS4uLiR7YWRtaW4uYWRkcmVzcy5zdWJzdHJpbmcoYWRtaW4uYWRkcmVzcy5sZW5ndGggLSA0KX1gIDogJycpfTwvYj5gfVxuICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkYyRDU1Jyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPXtgIGZyb20gdGhlIEFkbWluIGxpc3Q/YH1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuXG4gICAgICAgIDxMYWJlbFxuICAgICAgICAgIHZhbHVlPVwiSWYgeW91IHByb2NlZWQsIHRoZXkgd2lsbCBsb3NlIGFjY2VzcyB0byB0ZWhlIEFkbWluIFRvb2xzIGZvciB0aGlzIHNjZW5lLlwiXG4gICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgIGNvbG9yPXtDb2xvcjQuR3JheSgpfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAxMiwgYm90dG9tOiAyNCB9LFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7IWlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwiY2FuY2VsLXJlbW92ZVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+Q2FuY2VsPC9iPlwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LkJsYWNrKCl9XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDkwLFxuICAgICAgICAgICAgICAgIGhlaWdodDogNDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDMwLCBsZWZ0OiAzMCB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuYWRtaW5Ub1JlbW92ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IWlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwiY29uZmlybS1yZW1vdmVcIlxuICAgICAgICAgICAgICB2YWx1ZT17JzxiPlJlbW92ZTwvYj4nfVxuICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNjAsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRjJENTUnKSB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17YXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNMb2FkaW5nICYmIGFkbWluLmFkZHJlc3MpIHtcbiAgICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFtlcnJvcl0gPSBhd2FpdCBkZWxldGVTY2VuZUFkbWluKGFkbWluLmFkZHJlc3MpO1xuICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuYWRtaW5Ub1JlbW92ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmV0Y2hTY2VuZUFkbWlucygpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIHtpc0xvYWRpbmcgJiYgPExvYWRpbmdEb3RzIGVuZ2luZT17ZW5naW5lfSAvPn1cbiAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICA8RXJyb3JcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyB0b3A6IDE2IH0gfX1cbiAgICAgICAgICAgIHRleHQ9e2Vycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59XG4iXX0=
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3ZlQWRtaW5Db25maXJtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC9SZW1vdmVBZG1pbkNvbmZpcm1hdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUczQyxNQUFNLFVBQVUsdUJBQXVCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQztJQUMvRixNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWhELE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsY0FBYyxFQUFFLFFBQVE7WUFDeEIsVUFBVSxFQUFFLFFBQVE7U0FDckI7UUFFRCx1QkFBQyxR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QUNYLEtBQUssRUFBRSxHQUFHO3dCQUNWLE1BQU0sRUFBRSxFQUFFO3dCQUNWLGNBQWMsRUFBRSxRQUFRO3dCQUN4QixVQUFVLEVBQUUsUUFBUTtxQkFDckIsRUFDRCxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUN4RCxXQUFXLEVBQUUsS0FBSyxJQUFJLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUNoQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ25CLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQ0FDVixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2xCLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dDQUNqRCxNQUFNLHVCQUF1QixFQUFFLENBQUM7NEJBQ2xDLENBQUM7NEJBQ0QsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN0QixDQUFDO29CQUNILENBQUMsR0FDRCxDQUNILENBQ1E7WUFDVixTQUFTLElBQUksdUJBQUMsV0FBVyxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUk7WUFDNUMsS0FBSyxJQUFJLENBQ1IsdUJBQUMsS0FBSyxJQUNKLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUNwQyxJQUFJLEVBQUUsS0FBSyxHQUNYLENBQ0gsQ0FDUSxDQUNGLENBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL2Vjcy1tYXRoJztcbmltcG9ydCBSZWFjdEVjcywgeyBVaUVudGl0eSwgTGFiZWwgfSBmcm9tICdAZGNsL3JlYWN0LWVjcyc7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgeyBMb2FkaW5nRG90cyB9IGZyb20gJy4uL0xvYWRpbmcnO1xuaW1wb3J0IHsgRXJyb3IgfSBmcm9tICcuLi9FcnJvcic7XG5pbXBvcnQgeyBmZXRjaEFuZFN5bmNTY2VuZUFkbWlucyB9IGZyb20gJy4uJztcbmltcG9ydCB7IGRlbGV0ZVNjZW5lQWRtaW4gfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBtb2RlcmF0aW9uQ29udHJvbFN0YXRlIH0gZnJvbSAnLic7XG5pbXBvcnQgdHlwZSB7IFNjZW5lQWRtaW4gfSBmcm9tICcuJztcblxuZXhwb3J0IGZ1bmN0aW9uIFJlbW92ZUFkbWluQ29uZmlybWF0aW9uKHsgYWRtaW4sIGVuZ2luZSB9OiB7IGFkbWluOiBTY2VuZUFkbWluOyBlbmdpbmU6IElFbmdpbmUgfSkge1xuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IFJlYWN0RWNzLnVzZVN0YXRlKCcnKTtcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgd2lkdGg6IDY3NSxcbiAgICAgICAgICBtaW5IZWlnaHQ6IDI3OSxcbiAgICAgICAgICBwYWRkaW5nOiAyNCxcbiAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogMTIsXG4gICAgICAgIH19XG4gICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LkJsYWNrKCkgfX1cbiAgICAgID5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBtYXhXaWR0aDogNjc1IH19PlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdmFsdWU9eydBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlICd9XG4gICAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPXtgPGI+JHthZG1pbi5uYW1lIHx8IChhZG1pbi5hZGRyZXNzID8gYCR7YWRtaW4uYWRkcmVzcy5zdWJzdHJpbmcoMCwgNil9Li4uJHthZG1pbi5hZGRyZXNzLnN1YnN0cmluZyhhZG1pbi5hZGRyZXNzLmxlbmd0aCAtIDQpfWAgOiAnJyl9PC9iPmB9XG4gICAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRjJENTUnKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdmFsdWU9eycgZnJvbSB0aGUgQWRtaW4gbGlzdD8nfVxuICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgdmFsdWU9XCJJZiB5b3UgcHJvY2VlZCwgdGhleSB3aWxsIGxvc2UgYWNjZXNzIHRvIHRlaGUgQWRtaW4gVG9vbHMgZm9yIHRoaXMgc2NlbmUuXCJcbiAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgY29sb3I9e0NvbG9yNC5HcmF5KCl9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDEyLCBib3R0b206IDI0IH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cblxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJjYW5jZWwtcmVtb3ZlXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5DYW5jZWw8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuQmxhY2soKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICB3aWR0aDogOTAsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogMzAsIGxlZnQ6IDMwIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgbW9kZXJhdGlvbkNvbnRyb2xTdGF0ZS5hZG1pblRvUmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJjb25maXJtLXJlbW92ZVwiXG4gICAgICAgICAgICAgIHZhbHVlPXsnPGI+UmVtb3ZlPC9iPid9XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE2MCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwLFxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZGMkQ1NScpIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0xvYWRpbmcgJiYgYWRtaW4uYWRkcmVzcykge1xuICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgW2Vycm9yXSA9IGF3YWl0IGRlbGV0ZVNjZW5lQWRtaW4oYWRtaW4uYWRkcmVzcyk7XG4gICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZXJhdGlvbkNvbnRyb2xTdGF0ZS5hZG1pblRvUmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZXRjaEFuZFN5bmNTY2VuZUFkbWlucygpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIHtpc0xvYWRpbmcgJiYgPExvYWRpbmdEb3RzIGVuZ2luZT17ZW5naW5lfSAvPn1cbiAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICA8RXJyb3JcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyB0b3A6IDE2IH0gfX1cbiAgICAgICAgICAgIHRleHQ9e2Vycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fetchAndSyncSceneAdmins, fetchSceneBans } from '..';
|
|
2
2
|
import { postSceneAdmin, postSceneBan, deleteSceneBan } from './api';
|
|
3
3
|
export const handleAddAdmin = async (adminData, setError, setLoading, clearInput) => {
|
|
4
4
|
setLoading(true);
|
|
@@ -9,7 +9,7 @@ export const handleAddAdmin = async (adminData, setError, setLoading, clearInput
|
|
|
9
9
|
else {
|
|
10
10
|
setError('');
|
|
11
11
|
clearInput();
|
|
12
|
-
await
|
|
12
|
+
await fetchAndSyncSceneAdmins();
|
|
13
13
|
}
|
|
14
14
|
setLoading(false);
|
|
15
15
|
};
|
|
@@ -38,4 +38,4 @@ export const handleUnbanUser = async (address) => {
|
|
|
38
38
|
return true;
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUNqQyxTQUErQyxFQUMvQyxRQUFpQyxFQUNqQyxVQUFzQyxFQUN0QyxVQUFzQixFQUN0QixFQUFFO0lBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLFFBQVEsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7U0FBTSxDQUFDO1FBQ04sUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsVUFBVSxFQUFFLENBQUM7UUFDYixNQUFNLHVCQUF1QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUNoQyxPQUE2RCxFQUM3RCxRQUFpQyxFQUNqQyxVQUFzQyxFQUN0QyxVQUFzQixFQUN0QixFQUFFO0lBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLFFBQVEsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7U0FBTSxDQUFDO1FBQ04sUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsVUFBVSxFQUFFLENBQUM7UUFDYixNQUFNLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxPQUFlLEVBQW9CLEVBQUU7SUFDekUsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxjQUFjLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmZXRjaEFuZFN5bmNTY2VuZUFkbWlucywgZmV0Y2hTY2VuZUJhbnMgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBwb3N0U2NlbmVBZG1pbiwgcG9zdFNjZW5lQmFuLCBkZWxldGVTY2VuZUJhbiB9IGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUFkZEFkbWluID0gYXN5bmMgKFxuICBhZG1pbkRhdGE6IHsgYWRtaW46IHN0cmluZyB9IHwgeyBuYW1lOiBzdHJpbmcgfSxcbiAgc2V0RXJyb3I6IChlcnJvcjogc3RyaW5nKSA9PiB2b2lkLFxuICBzZXRMb2FkaW5nOiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZCxcbiAgY2xlYXJJbnB1dDogKCkgPT4gdm9pZCxcbikgPT4ge1xuICBzZXRMb2FkaW5nKHRydWUpO1xuICBjb25zdCBbZXJyb3IsIF9dID0gYXdhaXQgcG9zdFNjZW5lQWRtaW4oYWRtaW5EYXRhKTtcbiAgaWYgKGVycm9yKSB7XG4gICAgc2V0RXJyb3IoJ1BsZWFzZSB0cnkgYWdhaW4gd2l0aCBhIHZhbGlkIE5BTUUgb3Igd2FsbGV0IGFkZHJlc3MuJyk7XG4gIH0gZWxzZSB7XG4gICAgc2V0RXJyb3IoJycpO1xuICAgIGNsZWFySW5wdXQoKTtcbiAgICBhd2FpdCBmZXRjaEFuZFN5bmNTY2VuZUFkbWlucygpO1xuICB9XG4gIHNldExvYWRpbmcoZmFsc2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUJhblVzZXIgPSBhc3luYyAoXG4gIGJhbkRhdGE6IHsgYmFubmVkX2FkZHJlc3M6IHN0cmluZyB9IHwgeyBiYW5uZWRfbmFtZTogc3RyaW5nIH0sXG4gIHNldEVycm9yOiAoZXJyb3I6IHN0cmluZykgPT4gdm9pZCxcbiAgc2V0TG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHZvaWQsXG4gIGNsZWFySW5wdXQ6ICgpID0+IHZvaWQsXG4pID0+IHtcbiAgc2V0TG9hZGluZyh0cnVlKTtcbiAgY29uc3QgW2Vycm9yLCBfXSA9IGF3YWl0IHBvc3RTY2VuZUJhbihiYW5EYXRhKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICBzZXRFcnJvcignUGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGEgdmFsaWQgTkFNRSBvciB3YWxsZXQgYWRkcmVzcy4nKTtcbiAgfSBlbHNlIHtcbiAgICBzZXRFcnJvcignJyk7XG4gICAgY2xlYXJJbnB1dCgpO1xuICAgIGF3YWl0IGZldGNoU2NlbmVCYW5zKCk7XG4gIH1cbiAgc2V0TG9hZGluZyhmYWxzZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlVW5iYW5Vc2VyID0gYXN5bmMgKGFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBpZiAoIWFkZHJlc3MpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgW2Vycm9yLCBfXSA9IGF3YWl0IGRlbGV0ZVNjZW5lQmFuKGFkZHJlc3MpO1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgZmV0Y2hTY2VuZUJhbnMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiJdfQ==
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import ReactEcs, { Label, UiEntity, Input } from '@dcl/react-ecs';
|
|
2
2
|
import { Color4 } from '@dcl/sdk/math';
|
|
3
|
-
import { getComponents } from '../definitions';
|
|
4
3
|
import { Button } from './Button';
|
|
5
4
|
import { getContentUrl } from './constants';
|
|
6
5
|
import { Header } from './Header';
|
|
7
6
|
import { Card } from './Card';
|
|
7
|
+
import { getAdminMessageBus } from './admin-message-bus';
|
|
8
8
|
const ICONS = {
|
|
9
9
|
get TEXT_ANNOUNCEMENT_CONTROL() {
|
|
10
10
|
return `${getContentUrl()}/admin_toolkit/assets/icons/text-announcement-control.png`;
|
|
@@ -75,32 +75,19 @@ export function TextAnnouncementsControl({ engine, state, player, }) {
|
|
|
75
75
|
display: ANNOUNCEMENT_STATE !== undefined ? 'flex' : 'none',
|
|
76
76
|
}, value: `Message ${ANNOUNCEMENT_STATE === 'sent' ? 'sent' : 'cleared'}!`, fontSize: 14, color: Color4.create(187 / 255, 187 / 255, 187 / 255, 1) })))));
|
|
77
77
|
}
|
|
78
|
-
function handleClearTextAnnouncement(
|
|
79
|
-
|
|
80
|
-
const textAnnouncement = TextAnnouncements.getMutableOrNull(state.adminToolkitUiEntity);
|
|
81
|
-
if (textAnnouncement) {
|
|
82
|
-
textAnnouncement.text = '';
|
|
83
|
-
textAnnouncement.id = '';
|
|
84
|
-
textAnnouncement.author = '';
|
|
85
|
-
}
|
|
78
|
+
function handleClearTextAnnouncement(_engine, state) {
|
|
79
|
+
getAdminMessageBus().emitClearAnnouncement();
|
|
86
80
|
state.textAnnouncementControl.announcements = [];
|
|
87
81
|
ANNOUNCEMENT_STATE = 'cleared';
|
|
88
82
|
}
|
|
89
|
-
function handleSendTextAnnouncement(
|
|
83
|
+
function handleSendTextAnnouncement(_engine, state, text, player) {
|
|
90
84
|
if (!text) {
|
|
91
85
|
return;
|
|
92
86
|
}
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
const author = player?.name;
|
|
97
|
-
const timestamp = Date.now();
|
|
98
|
-
textAnnouncement.author = author;
|
|
99
|
-
textAnnouncement.id = `${timestamp}-${author}`;
|
|
100
|
-
textAnnouncement.text = text.slice(0, 90);
|
|
101
|
-
}
|
|
87
|
+
const author = player?.name;
|
|
88
|
+
const timestamp = Date.now();
|
|
89
|
+
getAdminMessageBus().emitSetAnnouncement(text.slice(0, 90), author, `${timestamp}-${author}`);
|
|
102
90
|
state.textAnnouncementControl.text = '';
|
|
103
91
|
ANNOUNCEMENT_STATE = 'sent';
|
|
104
|
-
return;
|
|
105
92
|
}
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEFubm91bmNlbWVudHNDb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVGV4dEFubm91bmNlbWVudHNDb250cm9sLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUc5QixNQUFNLEtBQUssR0FBRztJQUNaLElBQUkseUJBQXlCO1FBQzNCLE9BQU8sR0FBRyxhQUFhLEVBQUUsMkRBQTJELENBQUM7SUFDdkYsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sR0FBRyxhQUFhLEVBQUUseURBQXlELENBQUM7SUFDckYsQ0FBQztJQUNELElBQUksMkJBQTJCO1FBQzdCLE9BQU8sR0FBRyxhQUFhLEVBQUUsZ0VBQWdFLENBQUM7SUFDNUYsQ0FBQztJQUNELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sR0FBRyxhQUFhLEVBQUUsZ0VBQWdFLENBQUM7SUFDNUYsQ0FBQztDQUNGLENBQUM7QUFFRixJQUFJLGtCQUFzQyxDQUFDO0FBRTNDLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUN2QyxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FLUDtJQUNDLE9BQU8sQ0FDTCx1QkFBQyxJQUFJO1FBQ0gsdUJBQUMsUUFBUSxJ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Q0FBQyxFQUFFLEdBQUcsR0FBRyxTQUFTLElBQUksTUFBTSxFQUFFLENBQUM7UUFDL0MsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV4QyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7SUFFNUIsT0FBTztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgUmVhY3RFY3MsIHsgTGFiZWwsIFVpRW50aXR5LCBJbnB1dCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IHR5cGUgR2V0UGxheWVyRGF0YVJlcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGdldENvbnRlbnRVcmwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBIZWFkZXIgfSBmcm9tICcuL0hlYWRlcic7XG5pbXBvcnQgeyBDYXJkIH0gZnJvbSAnLi9DYXJkJztcbmltcG9ydCB7IHR5cGUgU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgSUNPTlMgPSB7XG4gIGdldCBURVhUX0FOTk9VTkNFTUVOVF9DT05UUk9MKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNvbnRyb2wucG5nYDtcbiAgfSxcbiAgZ2V0IENIRUNLKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNoZWNrLnBuZ2A7XG4gIH0sXG4gIGdldCBCVE5fQ0xPU0VfVEVYVF9BTk5PVU5DRU1FTlQoKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdGV4dC1hbm5vdW5jZW1lbnQtY2xvc2UtYnV0dG9uLnBuZ2A7XG4gIH0sXG4gIGdldCBDSEFUX01FU1NBR0VfSUNPTigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy90ZXh0LWFubm91bmNlbWVudC1jaGF0LW1lc3NhZ2UucG5nYDtcbiAgfSxcbn07XG5cbmxldCBBTk5PVU5DRU1FTlRfU1RBVEU6ICdzZW50JyB8ICdjbGVhcmVkJztcblxuZXhwb3J0IGZ1bmN0aW9uIFRleHRBbm5vdW5jZW1lbnRzQ29udHJvbCh7XG4gIGVuZ2luZSxcbiAgc3RhdGUsXG4gIHBsYXllcixcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIHBsYXllcj86IEdldFBsYXllckRhdGFSZXMgfCBudWxsO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxDYXJkPlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPEhlYWRlclxuICAgICAgICAgIGljb25TcmM9e0lDT05TLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0x9XG4gICAgICAgICAgdGl0bGU9XCJURVhUIEFOTk9VTkNFTUVOVFNcIlxuICAgICAgICAvPlxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPk1lc3NhZ2Ugd2luZG93PC9iPlwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgYm90dG9tOiAxNiB9IH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgb25TdWJtaXQ9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VuZFRleHRBbm5vdW5jZW1lbnQoZW5naW5lLCBzdGF0ZSwgdmFsdWUsIHBsYXllcik7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dCA9IHZhbHVlO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnV3JpdGUgeW91ciBhbm5vdW5jZW1lbnQgaGVyZSd9XG4gICAgICAgICAgICBwbGFjZWhvbGRlckNvbG9yPXtDb2xvcjQuY3JlYXRlKDE2MCAvIDI1NSwgMTU1IC8gMjU1LCAxNjggLyAyNTUsIDEpfVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuV2hpdGUoKSB9fVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA4MCxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMTAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dD8ubGVuZ3RoID8/IDB9IC8gOTBgfVxuICAgICAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuY3JlYXRlKDE4NyAvIDI1NSwgMTg3IC8gMjU1LCAxODcgLyAyNTUsIDEpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBmbGV4R3JvdzogMSB9fVxuICAgICAgICAgICAgICB0ZXh0QWxpZ249XCJ0b3AtbGVmdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInRleHRfYW5ub3VuY2VtZW50X2NvbnRyb2xfY2xlYXJcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkNsZWFyIEFubm91bmNlbWVudHM8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUNsZWFyVGV4dEFubm91bmNlbWVudChlbmdpbmUsIHN0YXRlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwidGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbF9zaGFyZVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+U2hhcmU8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDIwLCByaWdodDogMjAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgaGVpZ2h0OiA0MCB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbmRUZXh0QW5ub3VuY2VtZW50KFxuICAgICAgICAgICAgICAgICAgZW5naW5lLFxuICAgICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0LFxuICAgICAgICAgICAgICAgICAgcGxheWVyLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IG1pbkhlaWdodDogMzAgfX0+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiBBTk5PVU5DRU1FTlRfU1RBVEUgIT09IHVuZGVmaW5lZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgd2lkdGg6IDMwLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDMwLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICB0ZXh0dXJlOiB7IHNyYzogSUNPTlMuQ0hFQ0sgfSxcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IEFOTk9VTkNFTUVOVF9TVEFURSAhPT0gdW5kZWZpbmVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHZhbHVlPXtgTWVzc2FnZSAke0FOTk9VTkNFTUVOVF9TVEFURSA9PT0gJ3NlbnQnID8gJ3NlbnQnIDogJ2NsZWFyZWQnfSFgfVxuICAgICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5jcmVhdGUoMTg3IC8gMjU1LCAxODcgLyAyNTUsIDE4NyAvIDI1NSwgMSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9DYXJkPlxuICApO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVDbGVhclRleHRBbm5vdW5jZW1lbnQoZW5naW5lOiBJRW5naW5lLCBzdGF0ZTogU3RhdGUpIHtcbiAgY29uc3QgeyBUZXh0QW5ub3VuY2VtZW50cyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuICBjb25zdCB0ZXh0QW5ub3VuY2VtZW50ID0gVGV4dEFubm91bmNlbWVudHMuZ2V0TXV0YWJsZU9yTnVsbChzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSk7XG4gIGlmICh0ZXh0QW5ub3VuY2VtZW50KSB7XG4gICAgdGV4dEFubm91bmNlbWVudC50ZXh0ID0gJyc7XG4gICAgdGV4dEFubm91bmNlbWVudC5pZCA9ICcnO1xuICAgIHRleHRBbm5vdW5jZW1lbnQuYXV0aG9yID0gJyc7XG4gIH1cbiAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wuYW5ub3VuY2VtZW50cyA9IFtdO1xuICBBTk5PVU5DRU1FTlRfU1RBVEUgPSAnY2xlYXJlZCc7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNlbmRUZXh0QW5ub3VuY2VtZW50KFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHN0YXRlOiBTdGF0ZSxcbiAgdGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBwbGF5ZXI/OiBHZXRQbGF5ZXJEYXRhUmVzIHwgbnVsbCxcbikge1xuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7IFRleHRBbm5vdW5jZW1lbnRzIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG4gIGNvbnN0IHRleHRBbm5vdW5jZW1lbnQgPSBUZXh0QW5ub3VuY2VtZW50cy5nZXRNdXRhYmxlT3JOdWxsKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5KTtcblxuICBpZiAodGV4dEFubm91bmNlbWVudCkge1xuICAgIGNvbnN0IGF1dGhvciA9IHBsYXllcj8ubmFtZTtcbiAgICAvLyBHZXQgY3VycmVudCB0aW1lc3RhbXAgYW5kIGVuc3VyZSB1bmlxdWVuZXNzXG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuICAgIHRleHRBbm5vdW5jZW1lbnQuYXV0aG9yID0gYXV0aG9yO1xuICAgIHRleHRBbm5vdW5jZW1lbnQuaWQgPSBgJHt0aW1lc3RhbXB9LSR7YXV0aG9yfWA7XG4gICAgdGV4dEFubm91bmNlbWVudC50ZXh0ID0gdGV4dC5zbGljZSgwLCA5MCk7XG4gIH1cblxuICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0ID0gJyc7XG5cbiAgQU5OT1VOQ0VNRU5UX1NUQVRFID0gJ3NlbnQnO1xuXG4gIHJldHVybjtcbn1cbiJdfQ==
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEFubm91bmNlbWVudHNDb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVGV4dEFubm91bmNlbWVudHNDb250cm9sLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxHQUFHLGFBQWEsRUFBRSwyREFBMkQsQ0FBQztJQUN2RixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxHQUFHLGFBQWEsRUFBRSx5REFBeUQsQ0FBQztJQUNyRixDQUFDO0lBQ0QsSUFBSSwyQkFBMkI7UUFDN0IsT0FBTyxHQUFHLGFBQWEsRUFBRSxnRUFBZ0UsQ0FBQztJQUM1RixDQUFDO0lBQ0QsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxHQUFHLGFBQWEsRUFBRSxnRUFBZ0UsQ0FBQztJQUM1RixDQUFDO0NBQ0YsQ0FBQztBQUVGLElBQUksa0JBQXNDLENBQUM7QUFFM0MsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEVBQ3ZDLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUtQO0lBQ0MsT0FBTyxDQUNMLHVCQUFDLElBQUk7UUFDSCx1QkFBQyxRQUFR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QUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUN4RCxDQUNPLENBQ0YsQ0FDTixDQUNSLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUywyQkFBMkIsQ0FBQyxPQUFnQixFQUFFLEtBQVk7SUFDakUsa0JBQWtCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzdDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ2pELGtCQUFrQixHQUFHLFNBQVMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FDakMsT0FBZ0IsRUFDaEIsS0FBWSxFQUNaLElBQXdCLEVBQ3hCLE1BQWdDO0lBRWhDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQztJQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0Isa0JBQWtCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU5RixLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN4QyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgSUVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmltcG9ydCBSZWFjdEVjcywgeyBMYWJlbCwgVWlFbnRpdHksIElucHV0IH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5pbXBvcnQgeyB0eXBlIEdldFBsYXllckRhdGFSZXMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBnZXRDb250ZW50VXJsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSGVhZGVyIH0gZnJvbSAnLi9IZWFkZXInO1xuaW1wb3J0IHsgQ2FyZCB9IGZyb20gJy4vQ2FyZCc7XG5pbXBvcnQgeyB0eXBlIFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRBZG1pbk1lc3NhZ2VCdXMgfSBmcm9tICcuL2FkbWluLW1lc3NhZ2UtYnVzJztcblxuY29uc3QgSUNPTlMgPSB7XG4gIGdldCBURVhUX0FOTk9VTkNFTUVOVF9DT05UUk9MKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNvbnRyb2wucG5nYDtcbiAgfSxcbiAgZ2V0IENIRUNLKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNoZWNrLnBuZ2A7XG4gIH0sXG4gIGdldCBCVE5fQ0xPU0VfVEVYVF9BTk5PVU5DRU1FTlQoKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdGV4dC1hbm5vdW5jZW1lbnQtY2xvc2UtYnV0dG9uLnBuZ2A7XG4gIH0sXG4gIGdldCBDSEFUX01FU1NBR0VfSUNPTigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy90ZXh0LWFubm91bmNlbWVudC1jaGF0LW1lc3NhZ2UucG5nYDtcbiAgfSxcbn07XG5cbmxldCBBTk5PVU5DRU1FTlRfU1RBVEU6ICdzZW50JyB8ICdjbGVhcmVkJztcblxuZXhwb3J0IGZ1bmN0aW9uIFRleHRBbm5vdW5jZW1lbnRzQ29udHJvbCh7XG4gIGVuZ2luZSxcbiAgc3RhdGUsXG4gIHBsYXllcixcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIHBsYXllcj86IEdldFBsYXllckRhdGFSZXMgfCBudWxsO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxDYXJkPlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPEhlYWRlclxuICAgICAgICAgIGljb25TcmM9e0lDT05TLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0x9XG4gICAgICAgICAgdGl0bGU9XCJURVhUIEFOTk9VTkNFTUVOVFNcIlxuICAgICAgICAvPlxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPk1lc3NhZ2Ugd2luZG93PC9iPlwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgYm90dG9tOiAxNiB9IH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgb25TdWJtaXQ9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VuZFRleHRBbm5vdW5jZW1lbnQoZW5naW5lLCBzdGF0ZSwgdmFsdWUsIHBsYXllcik7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dCA9IHZhbHVlO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnV3JpdGUgeW91ciBhbm5vdW5jZW1lbnQgaGVyZSd9XG4gICAgICAgICAgICBwbGFjZWhvbGRlckNvbG9yPXtDb2xvcjQuY3JlYXRlKDE2MCAvIDI1NSwgMTU1IC8gMjU1LCAxNjggLyAyNTUsIDEpfVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuV2hpdGUoKSB9fVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA4MCxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMTAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dD8ubGVuZ3RoID8/IDB9IC8gOTBgfVxuICAgICAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuY3JlYXRlKDE4NyAvIDI1NSwgMTg3IC8gMjU1LCAxODcgLyAyNTUsIDEpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBmbGV4R3JvdzogMSB9fVxuICAgICAgICAgICAgICB0ZXh0QWxpZ249XCJ0b3AtbGVmdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInRleHRfYW5ub3VuY2VtZW50X2NvbnRyb2xfY2xlYXJcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkNsZWFyIEFubm91bmNlbWVudHM8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUNsZWFyVGV4dEFubm91bmNlbWVudChlbmdpbmUsIHN0YXRlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwidGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbF9zaGFyZVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+U2hhcmU8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDIwLCByaWdodDogMjAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgaGVpZ2h0OiA0MCB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbmRUZXh0QW5ub3VuY2VtZW50KFxuICAgICAgICAgICAgICAgICAgZW5naW5lLFxuICAgICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0LFxuICAgICAgICAgICAgICAgICAgcGxheWVyLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IG1pbkhlaWdodDogMzAgfX0+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiBBTk5PVU5DRU1FTlRfU1RBVEUgIT09IHVuZGVmaW5lZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgd2lkdGg6IDMwLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDMwLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICB0ZXh0dXJlOiB7IHNyYzogSUNPTlMuQ0hFQ0sgfSxcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IEFOTk9VTkNFTUVOVF9TVEFURSAhPT0gdW5kZWZpbmVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHZhbHVlPXtgTWVzc2FnZSAke0FOTk9VTkNFTUVOVF9TVEFURSA9PT0gJ3NlbnQnID8gJ3NlbnQnIDogJ2NsZWFyZWQnfSFgfVxuICAgICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5jcmVhdGUoMTg3IC8gMjU1LCAxODcgLyAyNTUsIDE4NyAvIDI1NSwgMSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9DYXJkPlxuICApO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVDbGVhclRleHRBbm5vdW5jZW1lbnQoX2VuZ2luZTogSUVuZ2luZSwgc3RhdGU6IFN0YXRlKSB7XG4gIGdldEFkbWluTWVzc2FnZUJ1cygpLmVtaXRDbGVhckFubm91bmNlbWVudCgpO1xuICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC5hbm5vdW5jZW1lbnRzID0gW107XG4gIEFOTk9VTkNFTUVOVF9TVEFURSA9ICdjbGVhcmVkJztcbn1cblxuZnVuY3Rpb24gaGFuZGxlU2VuZFRleHRBbm5vdW5jZW1lbnQoXG4gIF9lbmdpbmU6IElFbmdpbmUsXG4gIHN0YXRlOiBTdGF0ZSxcbiAgdGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBwbGF5ZXI/OiBHZXRQbGF5ZXJEYXRhUmVzIHwgbnVsbCxcbikge1xuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhdXRob3IgPSBwbGF5ZXI/Lm5hbWU7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gIGdldEFkbWluTWVzc2FnZUJ1cygpLmVtaXRTZXRBbm5vdW5jZW1lbnQodGV4dC5zbGljZSgwLCA5MCksIGF1dGhvciwgYCR7dGltZXN0YW1wfS0ke2F1dGhvcn1gKTtcblxuICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0ID0gJyc7XG4gIEFOTk9VTkNFTUVOVF9TVEFURSA9ICdzZW50Jztcbn1cbiJdfQ==
|