@effect-aws/client-sfn 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/LICENSE +1 -1
- package/lib/Errors.d.ts +39 -0
- package/lib/Errors.js +29 -0
- package/lib/SFNClientInstance.d.ts +32 -0
- package/lib/SFNClientInstance.js +52 -0
- package/lib/SFNClientInstanceConfig.d.ts +26 -0
- package/lib/SFNClientInstanceConfig.js +58 -0
- package/lib/SFNService.d.ts +193 -0
- package/lib/SFNService.js +114 -0
- package/lib/esm/Errors.js +3 -0
- package/lib/esm/SFNClientInstance.js +26 -0
- package/lib/esm/SFNClientInstanceConfig.js +32 -0
- package/lib/esm/SFNService.js +111 -0
- package/lib/esm/index.js +5 -3
- package/lib/index.d.ts +4 -2
- package/lib/index.js +5 -3
- package/package.json +3 -3
- package/lib/Context.d.ts +0 -15
- package/lib/Context.js +0 -49
- package/lib/SFN.d.ts +0 -153
- package/lib/SFN.js +0 -80
- package/lib/esm/Context.js +0 -22
- package/lib/esm/SFN.js +0 -54
package/lib/SFN.d.ts
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { CreateActivityCommandInput, CreateActivityCommandOutput, CreateStateMachineAliasCommandInput, CreateStateMachineAliasCommandOutput, CreateStateMachineCommandInput, CreateStateMachineCommandOutput, DeleteActivityCommandInput, DeleteActivityCommandOutput, DeleteStateMachineAliasCommandInput, DeleteStateMachineAliasCommandOutput, DeleteStateMachineCommandInput, DeleteStateMachineCommandOutput, DeleteStateMachineVersionCommandInput, DeleteStateMachineVersionCommandOutput, DescribeActivityCommandInput, DescribeActivityCommandOutput, DescribeExecutionCommandInput, DescribeExecutionCommandOutput, DescribeMapRunCommandInput, DescribeMapRunCommandOutput, DescribeStateMachineAliasCommandInput, DescribeStateMachineAliasCommandOutput, DescribeStateMachineCommandInput, DescribeStateMachineCommandOutput, DescribeStateMachineForExecutionCommandInput, DescribeStateMachineForExecutionCommandOutput, GetActivityTaskCommandInput, GetActivityTaskCommandOutput, GetExecutionHistoryCommandInput, GetExecutionHistoryCommandOutput, ListActivitiesCommandInput, ListActivitiesCommandOutput, ListExecutionsCommandInput, ListExecutionsCommandOutput, ListMapRunsCommandInput, ListMapRunsCommandOutput, ListStateMachineAliasesCommandInput, ListStateMachineAliasesCommandOutput, ListStateMachineVersionsCommandInput, ListStateMachineVersionsCommandOutput, ListStateMachinesCommandInput, ListStateMachinesCommandOutput, ListTagsForResourceCommandInput, ListTagsForResourceCommandOutput, PublishStateMachineVersionCommandInput, PublishStateMachineVersionCommandOutput, RedriveExecutionCommandInput, RedriveExecutionCommandOutput, SendTaskFailureCommandInput, SendTaskFailureCommandOutput, SendTaskHeartbeatCommandInput, SendTaskHeartbeatCommandOutput, SendTaskSuccessCommandInput, SendTaskSuccessCommandOutput, StartExecutionCommandInput, StartExecutionCommandOutput, StartSyncExecutionCommandInput, StartSyncExecutionCommandOutput, StopExecutionCommandInput, StopExecutionCommandOutput, TagResourceCommandInput, TagResourceCommandOutput, TestStateCommandInput, TestStateCommandOutput, UntagResourceCommandInput, UntagResourceCommandOutput, UpdateMapRunCommandInput, UpdateMapRunCommandOutput, UpdateStateMachineAliasCommandInput, UpdateStateMachineAliasCommandOutput, UpdateStateMachineCommandInput, UpdateStateMachineCommandOutput } from "@aws-sdk/client-sfn";
|
|
2
|
-
import { HttpHandlerOptions as __HttpHandlerOptions } from "@aws-sdk/types";
|
|
3
|
-
import * as Cause from "effect/Cause";
|
|
4
|
-
import * as Effect from "effect/Effect";
|
|
5
|
-
export interface SFNService {
|
|
6
|
-
/**
|
|
7
|
-
* @see {@link CreateActivityCommand}
|
|
8
|
-
*/
|
|
9
|
-
createActivity(args: CreateActivityCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, CreateActivityCommandOutput>;
|
|
10
|
-
/**
|
|
11
|
-
* @see {@link CreateStateMachineCommand}
|
|
12
|
-
*/
|
|
13
|
-
createStateMachine(args: CreateStateMachineCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, CreateStateMachineCommandOutput>;
|
|
14
|
-
/**
|
|
15
|
-
* @see {@link CreateStateMachineAliasCommand}
|
|
16
|
-
*/
|
|
17
|
-
createStateMachineAlias(args: CreateStateMachineAliasCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, CreateStateMachineAliasCommandOutput>;
|
|
18
|
-
/**
|
|
19
|
-
* @see {@link DeleteActivityCommand}
|
|
20
|
-
*/
|
|
21
|
-
deleteActivity(args: DeleteActivityCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DeleteActivityCommandOutput>;
|
|
22
|
-
/**
|
|
23
|
-
* @see {@link DeleteStateMachineCommand}
|
|
24
|
-
*/
|
|
25
|
-
deleteStateMachine(args: DeleteStateMachineCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DeleteStateMachineCommandOutput>;
|
|
26
|
-
/**
|
|
27
|
-
* @see {@link DeleteStateMachineAliasCommand}
|
|
28
|
-
*/
|
|
29
|
-
deleteStateMachineAlias(args: DeleteStateMachineAliasCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DeleteStateMachineAliasCommandOutput>;
|
|
30
|
-
/**
|
|
31
|
-
* @see {@link DeleteStateMachineVersionCommand}
|
|
32
|
-
*/
|
|
33
|
-
deleteStateMachineVersion(args: DeleteStateMachineVersionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DeleteStateMachineVersionCommandOutput>;
|
|
34
|
-
/**
|
|
35
|
-
* @see {@link DescribeActivityCommand}
|
|
36
|
-
*/
|
|
37
|
-
describeActivity(args: DescribeActivityCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DescribeActivityCommandOutput>;
|
|
38
|
-
/**
|
|
39
|
-
* @see {@link DescribeExecutionCommand}
|
|
40
|
-
*/
|
|
41
|
-
describeExecution(args: DescribeExecutionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DescribeExecutionCommandOutput>;
|
|
42
|
-
/**
|
|
43
|
-
* @see {@link DescribeMapRunCommand}
|
|
44
|
-
*/
|
|
45
|
-
describeMapRun(args: DescribeMapRunCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DescribeMapRunCommandOutput>;
|
|
46
|
-
/**
|
|
47
|
-
* @see {@link DescribeStateMachineCommand}
|
|
48
|
-
*/
|
|
49
|
-
describeStateMachine(args: DescribeStateMachineCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DescribeStateMachineCommandOutput>;
|
|
50
|
-
/**
|
|
51
|
-
* @see {@link DescribeStateMachineAliasCommand}
|
|
52
|
-
*/
|
|
53
|
-
describeStateMachineAlias(args: DescribeStateMachineAliasCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DescribeStateMachineAliasCommandOutput>;
|
|
54
|
-
/**
|
|
55
|
-
* @see {@link DescribeStateMachineForExecutionCommand}
|
|
56
|
-
*/
|
|
57
|
-
describeStateMachineForExecution(args: DescribeStateMachineForExecutionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, DescribeStateMachineForExecutionCommandOutput>;
|
|
58
|
-
/**
|
|
59
|
-
* @see {@link GetActivityTaskCommand}
|
|
60
|
-
*/
|
|
61
|
-
getActivityTask(args: GetActivityTaskCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, GetActivityTaskCommandOutput>;
|
|
62
|
-
/**
|
|
63
|
-
* @see {@link GetExecutionHistoryCommand}
|
|
64
|
-
*/
|
|
65
|
-
getExecutionHistory(args: GetExecutionHistoryCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, GetExecutionHistoryCommandOutput>;
|
|
66
|
-
/**
|
|
67
|
-
* @see {@link ListActivitiesCommand}
|
|
68
|
-
*/
|
|
69
|
-
listActivities(args: ListActivitiesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, ListActivitiesCommandOutput>;
|
|
70
|
-
/**
|
|
71
|
-
* @see {@link ListExecutionsCommand}
|
|
72
|
-
*/
|
|
73
|
-
listExecutions(args: ListExecutionsCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, ListExecutionsCommandOutput>;
|
|
74
|
-
/**
|
|
75
|
-
* @see {@link ListMapRunsCommand}
|
|
76
|
-
*/
|
|
77
|
-
listMapRuns(args: ListMapRunsCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, ListMapRunsCommandOutput>;
|
|
78
|
-
/**
|
|
79
|
-
* @see {@link ListStateMachineAliasesCommand}
|
|
80
|
-
*/
|
|
81
|
-
listStateMachineAliases(args: ListStateMachineAliasesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, ListStateMachineAliasesCommandOutput>;
|
|
82
|
-
/**
|
|
83
|
-
* @see {@link ListStateMachinesCommand}
|
|
84
|
-
*/
|
|
85
|
-
listStateMachines(args: ListStateMachinesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, ListStateMachinesCommandOutput>;
|
|
86
|
-
/**
|
|
87
|
-
* @see {@link ListStateMachineVersionsCommand}
|
|
88
|
-
*/
|
|
89
|
-
listStateMachineVersions(args: ListStateMachineVersionsCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, ListStateMachineVersionsCommandOutput>;
|
|
90
|
-
/**
|
|
91
|
-
* @see {@link ListTagsForResourceCommand}
|
|
92
|
-
*/
|
|
93
|
-
listTagsForResource(args: ListTagsForResourceCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, ListTagsForResourceCommandOutput>;
|
|
94
|
-
/**
|
|
95
|
-
* @see {@link PublishStateMachineVersionCommand}
|
|
96
|
-
*/
|
|
97
|
-
publishStateMachineVersion(args: PublishStateMachineVersionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, PublishStateMachineVersionCommandOutput>;
|
|
98
|
-
/**
|
|
99
|
-
* @see {@link RedriveExecutionCommand}
|
|
100
|
-
*/
|
|
101
|
-
redriveExecution(args: RedriveExecutionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, RedriveExecutionCommandOutput>;
|
|
102
|
-
/**
|
|
103
|
-
* @see {@link SendTaskFailureCommand}
|
|
104
|
-
*/
|
|
105
|
-
sendTaskFailure(args: SendTaskFailureCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, SendTaskFailureCommandOutput>;
|
|
106
|
-
/**
|
|
107
|
-
* @see {@link SendTaskHeartbeatCommand}
|
|
108
|
-
*/
|
|
109
|
-
sendTaskHeartbeat(args: SendTaskHeartbeatCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, SendTaskHeartbeatCommandOutput>;
|
|
110
|
-
/**
|
|
111
|
-
* @see {@link SendTaskSuccessCommand}
|
|
112
|
-
*/
|
|
113
|
-
sendTaskSuccess(args: SendTaskSuccessCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, SendTaskSuccessCommandOutput>;
|
|
114
|
-
/**
|
|
115
|
-
* @see {@link StartExecutionCommand}
|
|
116
|
-
*/
|
|
117
|
-
startExecution(args: StartExecutionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, StartExecutionCommandOutput>;
|
|
118
|
-
/**
|
|
119
|
-
* @see {@link StartSyncExecutionCommand}
|
|
120
|
-
*/
|
|
121
|
-
startSyncExecution(args: StartSyncExecutionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, StartSyncExecutionCommandOutput>;
|
|
122
|
-
/**
|
|
123
|
-
* @see {@link StopExecutionCommand}
|
|
124
|
-
*/
|
|
125
|
-
stopExecution(args: StopExecutionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, StopExecutionCommandOutput>;
|
|
126
|
-
/**
|
|
127
|
-
* @see {@link TagResourceCommand}
|
|
128
|
-
*/
|
|
129
|
-
tagResource(args: TagResourceCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, TagResourceCommandOutput>;
|
|
130
|
-
/**
|
|
131
|
-
* @see {@link TestStateCommand}
|
|
132
|
-
*/
|
|
133
|
-
testState(args: TestStateCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, TestStateCommandOutput>;
|
|
134
|
-
/**
|
|
135
|
-
* @see {@link UntagResourceCommand}
|
|
136
|
-
*/
|
|
137
|
-
untagResource(args: UntagResourceCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, UntagResourceCommandOutput>;
|
|
138
|
-
/**
|
|
139
|
-
* @see {@link UpdateMapRunCommand}
|
|
140
|
-
*/
|
|
141
|
-
updateMapRun(args: UpdateMapRunCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, UpdateMapRunCommandOutput>;
|
|
142
|
-
/**
|
|
143
|
-
* @see {@link UpdateStateMachineCommand}
|
|
144
|
-
*/
|
|
145
|
-
updateStateMachine(args: UpdateStateMachineCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, UpdateStateMachineCommandOutput>;
|
|
146
|
-
/**
|
|
147
|
-
* @see {@link UpdateStateMachineAliasCommand}
|
|
148
|
-
*/
|
|
149
|
-
updateStateMachineAlias(args: UpdateStateMachineAliasCommandInput, options?: __HttpHandlerOptions): Effect.Effect<never, Cause.UnknownException, UpdateStateMachineAliasCommandOutput>;
|
|
150
|
-
}
|
|
151
|
-
export declare const BaseSFNServiceEffect: Effect.Effect<import("@aws-sdk/client-sfn").SFNClient, never, SFNService>;
|
|
152
|
-
export declare const SFNServiceEffect: Effect.Effect<import("./Context").SFNClientOptions, never, SFNService>;
|
|
153
|
-
export declare const DefaultSFNServiceEffect: Effect.Effect<never, never, SFNService>;
|
package/lib/SFN.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.DefaultSFNServiceEffect = exports.SFNServiceEffect = exports.BaseSFNServiceEffect = void 0;
|
|
27
|
-
const client_sfn_1 = require("@aws-sdk/client-sfn");
|
|
28
|
-
const Effect = __importStar(require("effect/Effect"));
|
|
29
|
-
const RR = __importStar(require("effect/ReadonlyRecord"));
|
|
30
|
-
const Context_1 = require("./Context");
|
|
31
|
-
const commands = {
|
|
32
|
-
CreateActivityCommand: client_sfn_1.CreateActivityCommand,
|
|
33
|
-
CreateStateMachineCommand: client_sfn_1.CreateStateMachineCommand,
|
|
34
|
-
CreateStateMachineAliasCommand: client_sfn_1.CreateStateMachineAliasCommand,
|
|
35
|
-
DeleteActivityCommand: client_sfn_1.DeleteActivityCommand,
|
|
36
|
-
DeleteStateMachineCommand: client_sfn_1.DeleteStateMachineCommand,
|
|
37
|
-
DeleteStateMachineAliasCommand: client_sfn_1.DeleteStateMachineAliasCommand,
|
|
38
|
-
DeleteStateMachineVersionCommand: client_sfn_1.DeleteStateMachineVersionCommand,
|
|
39
|
-
DescribeActivityCommand: client_sfn_1.DescribeActivityCommand,
|
|
40
|
-
DescribeExecutionCommand: client_sfn_1.DescribeExecutionCommand,
|
|
41
|
-
DescribeMapRunCommand: client_sfn_1.DescribeMapRunCommand,
|
|
42
|
-
DescribeStateMachineCommand: client_sfn_1.DescribeStateMachineCommand,
|
|
43
|
-
DescribeStateMachineAliasCommand: client_sfn_1.DescribeStateMachineAliasCommand,
|
|
44
|
-
DescribeStateMachineForExecutionCommand: client_sfn_1.DescribeStateMachineForExecutionCommand,
|
|
45
|
-
GetActivityTaskCommand: client_sfn_1.GetActivityTaskCommand,
|
|
46
|
-
GetExecutionHistoryCommand: client_sfn_1.GetExecutionHistoryCommand,
|
|
47
|
-
ListActivitiesCommand: client_sfn_1.ListActivitiesCommand,
|
|
48
|
-
ListExecutionsCommand: client_sfn_1.ListExecutionsCommand,
|
|
49
|
-
ListMapRunsCommand: client_sfn_1.ListMapRunsCommand,
|
|
50
|
-
ListStateMachineAliasesCommand: client_sfn_1.ListStateMachineAliasesCommand,
|
|
51
|
-
ListStateMachinesCommand: client_sfn_1.ListStateMachinesCommand,
|
|
52
|
-
ListStateMachineVersionsCommand: client_sfn_1.ListStateMachineVersionsCommand,
|
|
53
|
-
ListTagsForResourceCommand: client_sfn_1.ListTagsForResourceCommand,
|
|
54
|
-
PublishStateMachineVersionCommand: client_sfn_1.PublishStateMachineVersionCommand,
|
|
55
|
-
RedriveExecutionCommand: client_sfn_1.RedriveExecutionCommand,
|
|
56
|
-
SendTaskFailureCommand: client_sfn_1.SendTaskFailureCommand,
|
|
57
|
-
SendTaskHeartbeatCommand: client_sfn_1.SendTaskHeartbeatCommand,
|
|
58
|
-
SendTaskSuccessCommand: client_sfn_1.SendTaskSuccessCommand,
|
|
59
|
-
StartExecutionCommand: client_sfn_1.StartExecutionCommand,
|
|
60
|
-
StartSyncExecutionCommand: client_sfn_1.StartSyncExecutionCommand,
|
|
61
|
-
StopExecutionCommand: client_sfn_1.StopExecutionCommand,
|
|
62
|
-
TagResourceCommand: client_sfn_1.TagResourceCommand,
|
|
63
|
-
TestStateCommand: client_sfn_1.TestStateCommand,
|
|
64
|
-
UntagResourceCommand: client_sfn_1.UntagResourceCommand,
|
|
65
|
-
UpdateMapRunCommand: client_sfn_1.UpdateMapRunCommand,
|
|
66
|
-
UpdateStateMachineCommand: client_sfn_1.UpdateStateMachineCommand,
|
|
67
|
-
UpdateStateMachineAliasCommand: client_sfn_1.UpdateStateMachineAliasCommand,
|
|
68
|
-
};
|
|
69
|
-
exports.BaseSFNServiceEffect = Effect.gen(function* (_) {
|
|
70
|
-
const client = yield* _(Context_1.SFNClientInstanceTag);
|
|
71
|
-
return RR.toEntries(commands).reduce((acc, [command]) => {
|
|
72
|
-
const CommandCtor = commands[command];
|
|
73
|
-
const methodImpl = (args, options) => Effect.tryPromise(() => client.send(new CommandCtor(args), options !== null && options !== void 0 ? options : {}));
|
|
74
|
-
const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
|
|
75
|
-
return { ...acc, [methodName]: methodImpl };
|
|
76
|
-
}, {});
|
|
77
|
-
});
|
|
78
|
-
exports.SFNServiceEffect = exports.BaseSFNServiceEffect.pipe(Effect.provide(Context_1.SFNClientInstanceLayer));
|
|
79
|
-
exports.DefaultSFNServiceEffect = exports.BaseSFNServiceEffect.pipe(Effect.provide(Context_1.DefaultSFNClientInstanceLayer));
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0ZOLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NGTi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQTZHNkI7QUFHN0Isc0RBQXdDO0FBQ3hDLDBEQUE0QztBQUM1Qyx1Q0FJbUI7QUFFbkIsTUFBTSxRQUFRLEdBQUc7SUFDZixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5QixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5QixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLHVCQUF1QixFQUF2QixvQ0FBdUI7SUFDdkIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLDJCQUEyQixFQUEzQix3Q0FBMkI7SUFDM0IsZ0NBQWdDLEVBQWhDLDZDQUFnQztJQUNoQyx1Q0FBdUMsRUFBdkMsb0RBQXVDO0lBQ3ZDLHNCQUFzQixFQUF0QixtQ0FBc0I7SUFDdEIsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLHFCQUFxQixFQUFyQixrQ0FBcUI7SUFDckIsa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLHdCQUF3QixFQUF4QixxQ0FBd0I7SUFDeEIsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQiwwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLGlDQUFpQyxFQUFqQyw4Q0FBaUM7SUFDakMsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2QixzQkFBc0IsRUFBdEIsbUNBQXNCO0lBQ3RCLHdCQUF3QixFQUF4QixxQ0FBd0I7SUFDeEIsc0JBQXNCLEVBQXRCLG1DQUFzQjtJQUN0QixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsb0JBQW9CLEVBQXBCLGlDQUFvQjtJQUNwQixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLGdCQUFnQixFQUFoQiw2QkFBZ0I7SUFDaEIsb0JBQW9CLEVBQXBCLGlDQUFvQjtJQUNwQixtQkFBbUIsRUFBbkIsZ0NBQW1CO0lBQ25CLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsOEJBQThCLEVBQTlCLDJDQUE4QjtDQUMvQixDQUFDO0FBcVZXLFFBQUEsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyw4QkFBb0IsQ0FBQyxDQUFDO0lBRTlDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1FBQ3RELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQVEsQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVMsRUFBRSxPQUFZLEVBQUUsRUFBRSxDQUM3QyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLEVBQUUsQ0FBQyxDQUNsRCxDQUFDO1FBQ0osTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDdEUsVUFBVSxFQUNWLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBZSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRVUsUUFBQSxnQkFBZ0IsR0FBRyw0QkFBb0IsQ0FBQyxJQUFJLENBQ3ZELE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0NBQXNCLENBQUMsQ0FDdkMsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQUcsNEJBQW9CLENBQUMsSUFBSSxDQUM5RCxNQUFNLENBQUMsT0FBTyxDQUFDLHVDQUE2QixDQUFDLENBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDcmVhdGVBY3Rpdml0eUNvbW1hbmQsXG4gIENyZWF0ZUFjdGl2aXR5Q29tbWFuZElucHV0LFxuICBDcmVhdGVBY3Rpdml0eUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZCxcbiAgQ3JlYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kSW5wdXQsXG4gIENyZWF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbiAgQ3JlYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICBDcmVhdGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBY3Rpdml0eUNvbW1hbmQsXG4gIERlbGV0ZUFjdGl2aXR5Q29tbWFuZElucHV0LFxuICBEZWxldGVBY3Rpdml0eUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kSW5wdXQsXG4gIERlbGV0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICBEZWxldGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlQWN0aXZpdHlDb21tYW5kLFxuICBEZXNjcmliZUFjdGl2aXR5Q29tbWFuZElucHV0LFxuICBEZXNjcmliZUFjdGl2aXR5Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVFeGVjdXRpb25Db21tYW5kLFxuICBEZXNjcmliZUV4ZWN1dGlvbkNvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVFeGVjdXRpb25Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZU1hcFJ1bkNvbW1hbmQsXG4gIERlc2NyaWJlTWFwUnVuQ29tbWFuZElucHV0LFxuICBEZXNjcmliZU1hcFJ1bkNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kLFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZElucHV0LFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVTdGF0ZU1hY2hpbmVDb21tYW5kLFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUNvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUZvckV4ZWN1dGlvbkNvbW1hbmQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lRm9yRXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUZvckV4ZWN1dGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEFjdGl2aXR5VGFza0NvbW1hbmQsXG4gIEdldEFjdGl2aXR5VGFza0NvbW1hbmRJbnB1dCxcbiAgR2V0QWN0aXZpdHlUYXNrQ29tbWFuZE91dHB1dCxcbiAgR2V0RXhlY3V0aW9uSGlzdG9yeUNvbW1hbmQsXG4gIEdldEV4ZWN1dGlvbkhpc3RvcnlDb21tYW5kSW5wdXQsXG4gIEdldEV4ZWN1dGlvbkhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICBMaXN0QWN0aXZpdGllc0NvbW1hbmQsXG4gIExpc3RBY3Rpdml0aWVzQ29tbWFuZElucHV0LFxuICBMaXN0QWN0aXZpdGllc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RFeGVjdXRpb25zQ29tbWFuZCxcbiAgTGlzdEV4ZWN1dGlvbnNDb21tYW5kSW5wdXQsXG4gIExpc3RFeGVjdXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdE1hcFJ1bnNDb21tYW5kLFxuICBMaXN0TWFwUnVuc0NvbW1hbmRJbnB1dCxcbiAgTGlzdE1hcFJ1bnNDb21tYW5kT3V0cHV0LFxuICBMaXN0U3RhdGVNYWNoaW5lQWxpYXNlc0NvbW1hbmQsXG4gIExpc3RTdGF0ZU1hY2hpbmVBbGlhc2VzQ29tbWFuZElucHV0LFxuICBMaXN0U3RhdGVNYWNoaW5lQWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RTdGF0ZU1hY2hpbmVWZXJzaW9uc0NvbW1hbmQsXG4gIExpc3RTdGF0ZU1hY2hpbmVWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFN0YXRlTWFjaGluZVZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFN0YXRlTWFjaGluZXNDb21tYW5kLFxuICBMaXN0U3RhdGVNYWNoaW5lc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFN0YXRlTWFjaGluZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFB1Ymxpc2hTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZCxcbiAgUHVibGlzaFN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kSW5wdXQsXG4gIFB1Ymxpc2hTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgUmVkcml2ZUV4ZWN1dGlvbkNvbW1hbmQsXG4gIFJlZHJpdmVFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gIFJlZHJpdmVFeGVjdXRpb25Db21tYW5kT3V0cHV0LFxuICBTZW5kVGFza0ZhaWx1cmVDb21tYW5kLFxuICBTZW5kVGFza0ZhaWx1cmVDb21tYW5kSW5wdXQsXG4gIFNlbmRUYXNrRmFpbHVyZUNvbW1hbmRPdXRwdXQsXG4gIFNlbmRUYXNrSGVhcnRiZWF0Q29tbWFuZCxcbiAgU2VuZFRhc2tIZWFydGJlYXRDb21tYW5kSW5wdXQsXG4gIFNlbmRUYXNrSGVhcnRiZWF0Q29tbWFuZE91dHB1dCxcbiAgU2VuZFRhc2tTdWNjZXNzQ29tbWFuZCxcbiAgU2VuZFRhc2tTdWNjZXNzQ29tbWFuZElucHV0LFxuICBTZW5kVGFza1N1Y2Nlc3NDb21tYW5kT3V0cHV0LFxuICBTdGFydEV4ZWN1dGlvbkNvbW1hbmQsXG4gIFN0YXJ0RXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICBTdGFydEV4ZWN1dGlvbkNvbW1hbmRPdXRwdXQsXG4gIFN0YXJ0U3luY0V4ZWN1dGlvbkNvbW1hbmQsXG4gIFN0YXJ0U3luY0V4ZWN1dGlvbkNvbW1hbmRJbnB1dCxcbiAgU3RhcnRTeW5jRXhlY3V0aW9uQ29tbWFuZE91dHB1dCxcbiAgU3RvcEV4ZWN1dGlvbkNvbW1hbmQsXG4gIFN0b3BFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gIFN0b3BFeGVjdXRpb25Db21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFRlc3RTdGF0ZUNvbW1hbmQsXG4gIFRlc3RTdGF0ZUNvbW1hbmRJbnB1dCxcbiAgVGVzdFN0YXRlQ29tbWFuZE91dHB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVNYXBSdW5Db21tYW5kLFxuICBVcGRhdGVNYXBSdW5Db21tYW5kSW5wdXQsXG4gIFVwZGF0ZU1hcFJ1bkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kSW5wdXQsXG4gIFVwZGF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNmblwiO1xuaW1wb3J0IHsgSHR0cEhhbmRsZXJPcHRpb25zIGFzIF9fSHR0cEhhbmRsZXJPcHRpb25zIH0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgKiBhcyBDYXVzZSBmcm9tIFwiZWZmZWN0L0NhdXNlXCI7XG5pbXBvcnQgKiBhcyBFZmZlY3QgZnJvbSBcImVmZmVjdC9FZmZlY3RcIjtcbmltcG9ydCAqIGFzIFJSIGZyb20gXCJlZmZlY3QvUmVhZG9ubHlSZWNvcmRcIjtcbmltcG9ydCB7XG4gIERlZmF1bHRTRk5DbGllbnRJbnN0YW5jZUxheWVyLFxuICBTRk5DbGllbnRJbnN0YW5jZUxheWVyLFxuICBTRk5DbGllbnRJbnN0YW5jZVRhZyxcbn0gZnJvbSBcIi4vQ29udGV4dFwiO1xuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQ3JlYXRlQWN0aXZpdHlDb21tYW5kLFxuICBDcmVhdGVTdGF0ZU1hY2hpbmVDb21tYW5kLFxuICBDcmVhdGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmQsXG4gIERlbGV0ZUFjdGl2aXR5Q29tbWFuZCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kLFxuICBEZWxldGVTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZCxcbiAgRGVzY3JpYmVBY3Rpdml0eUNvbW1hbmQsXG4gIERlc2NyaWJlRXhlY3V0aW9uQ29tbWFuZCxcbiAgRGVzY3JpYmVNYXBSdW5Db21tYW5kLFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUNvbW1hbmQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kLFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUZvckV4ZWN1dGlvbkNvbW1hbmQsXG4gIEdldEFjdGl2aXR5VGFza0NvbW1hbmQsXG4gIEdldEV4ZWN1dGlvbkhpc3RvcnlDb21tYW5kLFxuICBMaXN0QWN0aXZpdGllc0NvbW1hbmQsXG4gIExpc3RFeGVjdXRpb25zQ29tbWFuZCxcbiAgTGlzdE1hcFJ1bnNDb21tYW5kLFxuICBMaXN0U3RhdGVNYWNoaW5lQWxpYXNlc0NvbW1hbmQsXG4gIExpc3RTdGF0ZU1hY2hpbmVzQ29tbWFuZCxcbiAgTGlzdFN0YXRlTWFjaGluZVZlcnNpb25zQ29tbWFuZCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQsXG4gIFB1Ymxpc2hTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZCxcbiAgUmVkcml2ZUV4ZWN1dGlvbkNvbW1hbmQsXG4gIFNlbmRUYXNrRmFpbHVyZUNvbW1hbmQsXG4gIFNlbmRUYXNrSGVhcnRiZWF0Q29tbWFuZCxcbiAgU2VuZFRhc2tTdWNjZXNzQ29tbWFuZCxcbiAgU3RhcnRFeGVjdXRpb25Db21tYW5kLFxuICBTdGFydFN5bmNFeGVjdXRpb25Db21tYW5kLFxuICBTdG9wRXhlY3V0aW9uQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICBUZXN0U3RhdGVDb21tYW5kLFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVXBkYXRlTWFwUnVuQ29tbWFuZCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBTRk5TZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUFjdGl2aXR5Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUFjdGl2aXR5KFxuICAgIGFyZ3M6IENyZWF0ZUFjdGl2aXR5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbiwgQ3JlYXRlQWN0aXZpdHlDb21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVN0YXRlTWFjaGluZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVTdGF0ZU1hY2hpbmUoXG4gICAgYXJnczogQ3JlYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIENyZWF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVN0YXRlTWFjaGluZUFsaWFzKFxuICAgIGFyZ3M6IENyZWF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIENyZWF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQWN0aXZpdHlDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQWN0aXZpdHkoXG4gICAgYXJnczogRGVsZXRlQWN0aXZpdHlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBEZWxldGVBY3Rpdml0eUNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlU3RhdGVNYWNoaW5lQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVN0YXRlTWFjaGluZShcbiAgICBhcmdzOiBEZWxldGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgRGVsZXRlU3RhdGVNYWNoaW5lQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlU3RhdGVNYWNoaW5lQWxpYXMoXG4gICAgYXJnczogRGVsZXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgRGVsZXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVN0YXRlTWFjaGluZVZlcnNpb24oXG4gICAgYXJnczogRGVsZXRlU3RhdGVNYWNoaW5lVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBEZWxldGVTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVBY3Rpdml0eUNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZUFjdGl2aXR5KFxuICAgIGFyZ3M6IERlc2NyaWJlQWN0aXZpdHlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgRGVzY3JpYmVBY3Rpdml0eUNvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRXhlY3V0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRXhlY3V0aW9uKFxuICAgIGFyZ3M6IERlc2NyaWJlRXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIERlc2NyaWJlRXhlY3V0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVNYXBSdW5Db21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVNYXBSdW4oXG4gICAgYXJnczogRGVzY3JpYmVNYXBSdW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBEZXNjcmliZU1hcFJ1bkNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVTdGF0ZU1hY2hpbmVDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVTdGF0ZU1hY2hpbmUoXG4gICAgYXJnczogRGVzY3JpYmVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgRGVzY3JpYmVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlU3RhdGVNYWNoaW5lQWxpYXMoXG4gICAgYXJnczogRGVzY3JpYmVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBEZXNjcmliZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVTdGF0ZU1hY2hpbmVGb3JFeGVjdXRpb25Db21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVTdGF0ZU1hY2hpbmVGb3JFeGVjdXRpb24oXG4gICAgYXJnczogRGVzY3JpYmVTdGF0ZU1hY2hpbmVGb3JFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgRGVzY3JpYmVTdGF0ZU1hY2hpbmVGb3JFeGVjdXRpb25Db21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRBY3Rpdml0eVRhc2tDb21tYW5kfVxuICAgKi9cbiAgZ2V0QWN0aXZpdHlUYXNrKFxuICAgIGFyZ3M6IEdldEFjdGl2aXR5VGFza0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIENhdXNlLlVua25vd25FeGNlcHRpb24sIEdldEFjdGl2aXR5VGFza0NvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RXhlY3V0aW9uSGlzdG9yeUNvbW1hbmR9XG4gICAqL1xuICBnZXRFeGVjdXRpb25IaXN0b3J5KFxuICAgIGFyZ3M6IEdldEV4ZWN1dGlvbkhpc3RvcnlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgR2V0RXhlY3V0aW9uSGlzdG9yeUNvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RBY3Rpdml0aWVzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RBY3Rpdml0aWVzKFxuICAgIGFyZ3M6IExpc3RBY3Rpdml0aWVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbiwgTGlzdEFjdGl2aXRpZXNDb21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RFeGVjdXRpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RFeGVjdXRpb25zKFxuICAgIGFyZ3M6IExpc3RFeGVjdXRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbiwgTGlzdEV4ZWN1dGlvbnNDb21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RNYXBSdW5zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RNYXBSdW5zKFxuICAgIGFyZ3M6IExpc3RNYXBSdW5zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbiwgTGlzdE1hcFJ1bnNDb21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTdGF0ZU1hY2hpbmVBbGlhc2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RTdGF0ZU1hY2hpbmVBbGlhc2VzKFxuICAgIGFyZ3M6IExpc3RTdGF0ZU1hY2hpbmVBbGlhc2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIExpc3RTdGF0ZU1hY2hpbmVBbGlhc2VzQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFN0YXRlTWFjaGluZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFN0YXRlTWFjaGluZXMoXG4gICAgYXJnczogTGlzdFN0YXRlTWFjaGluZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgTGlzdFN0YXRlTWFjaGluZXNDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0U3RhdGVNYWNoaW5lVmVyc2lvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFN0YXRlTWFjaGluZVZlcnNpb25zKFxuICAgIGFyZ3M6IExpc3RTdGF0ZU1hY2hpbmVWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBMaXN0U3RhdGVNYWNoaW5lVmVyc2lvbnNDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzRm9yUmVzb3VyY2UoXG4gICAgYXJnczogTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVibGlzaFN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgcHVibGlzaFN0YXRlTWFjaGluZVZlcnNpb24oXG4gICAgYXJnczogUHVibGlzaFN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgUHVibGlzaFN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZWRyaXZlRXhlY3V0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlZHJpdmVFeGVjdXRpb24oXG4gICAgYXJnczogUmVkcml2ZUV4ZWN1dGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBSZWRyaXZlRXhlY3V0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2VuZFRhc2tGYWlsdXJlQ29tbWFuZH1cbiAgICovXG4gIHNlbmRUYXNrRmFpbHVyZShcbiAgICBhcmdzOiBTZW5kVGFza0ZhaWx1cmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBTZW5kVGFza0ZhaWx1cmVDb21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNlbmRUYXNrSGVhcnRiZWF0Q29tbWFuZH1cbiAgICovXG4gIHNlbmRUYXNrSGVhcnRiZWF0KFxuICAgIGFyZ3M6IFNlbmRUYXNrSGVhcnRiZWF0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIFNlbmRUYXNrSGVhcnRiZWF0Q29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2VuZFRhc2tTdWNjZXNzQ29tbWFuZH1cbiAgICovXG4gIHNlbmRUYXNrU3VjY2VzcyhcbiAgICBhcmdzOiBTZW5kVGFza1N1Y2Nlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBTZW5kVGFza1N1Y2Nlc3NDb21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0RXhlY3V0aW9uQ29tbWFuZH1cbiAgICovXG4gIHN0YXJ0RXhlY3V0aW9uKFxuICAgIGFyZ3M6IFN0YXJ0RXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbiwgU3RhcnRFeGVjdXRpb25Db21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0U3luY0V4ZWN1dGlvbkNvbW1hbmR9XG4gICAqL1xuICBzdGFydFN5bmNFeGVjdXRpb24oXG4gICAgYXJnczogU3RhcnRTeW5jRXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIFN0YXJ0U3luY0V4ZWN1dGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0b3BFeGVjdXRpb25Db21tYW5kfVxuICAgKi9cbiAgc3RvcEV4ZWN1dGlvbihcbiAgICBhcmdzOiBTdG9wRXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbiwgU3RvcEV4ZWN1dGlvbkNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdGFnUmVzb3VyY2UoXG4gICAgYXJnczogVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVGVzdFN0YXRlQ29tbWFuZH1cbiAgICovXG4gIHRlc3RTdGF0ZShcbiAgICBhcmdzOiBUZXN0U3RhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBUZXN0U3RhdGVDb21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbiwgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlTWFwUnVuQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZU1hcFJ1bihcbiAgICBhcmdzOiBVcGRhdGVNYXBSdW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBVcGRhdGVNYXBSdW5Db21tYW5kT3V0cHV0PjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVTdGF0ZU1hY2hpbmUoXG4gICAgYXJnczogVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVN0YXRlTWFjaGluZUFsaWFzKFxuICAgIGFyZ3M6IFVwZGF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIFVwZGF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZE91dHB1dFxuICA+O1xufVxuXG5leHBvcnQgY29uc3QgQmFzZVNGTlNlcnZpY2VFZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhTRk5DbGllbnRJbnN0YW5jZVRhZyk7XG5cbiAgcmV0dXJuIFJSLnRvRW50cmllcyhjb21tYW5kcykucmVkdWNlKChhY2MsIFtjb21tYW5kXSkgPT4ge1xuICAgIGNvbnN0IENvbW1hbmRDdG9yID0gY29tbWFuZHNbY29tbWFuZF0gYXMgYW55O1xuICAgIGNvbnN0IG1ldGhvZEltcGwgPSAoYXJnczogYW55LCBvcHRpb25zOiBhbnkpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSgoKSA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQ29tbWFuZEN0b3IoYXJncyksIG9wdGlvbnMgPz8ge30pLFxuICAgICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBTRk5TZXJ2aWNlO1xufSk7XG5cbmV4cG9ydCBjb25zdCBTRk5TZXJ2aWNlRWZmZWN0ID0gQmFzZVNGTlNlcnZpY2VFZmZlY3QucGlwZShcbiAgRWZmZWN0LnByb3ZpZGUoU0ZOQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdFNGTlNlcnZpY2VFZmZlY3QgPSBCYXNlU0ZOU2VydmljZUVmZmVjdC5waXBlKFxuICBFZmZlY3QucHJvdmlkZShEZWZhdWx0U0ZOQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuIl19
|
package/lib/esm/Context.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { SFNClient } from "@aws-sdk/client-sfn";
|
|
2
|
-
import * as Context from "effect/Context";
|
|
3
|
-
import * as Data from "effect/Data";
|
|
4
|
-
import * as Effect from "effect/Effect";
|
|
5
|
-
import * as Layer from "effect/Layer";
|
|
6
|
-
import * as Runtime from "effect/Runtime";
|
|
7
|
-
export class SFNClientOptions extends Data.TaggedClass("SFNClientOptions") {
|
|
8
|
-
}
|
|
9
|
-
export const SFNClientConfigTag = Context.Tag("@effect-aws/SFNClient/Config");
|
|
10
|
-
export const DefaultSFNClientConfigLayer = Layer.effect(SFNClientConfigTag, Effect.runtime().pipe(Effect.map((runtime) => new SFNClientOptions({
|
|
11
|
-
logger: {
|
|
12
|
-
info: (m) => Effect.logInfo(m).pipe(Runtime.runSync(runtime)),
|
|
13
|
-
warn: (m) => Effect.logWarning(m).pipe(Runtime.runSync(runtime)),
|
|
14
|
-
error: (m) => Effect.logError(m).pipe(Runtime.runSync(runtime)),
|
|
15
|
-
debug: (m) => Effect.logDebug(m).pipe(Runtime.runSync(runtime)),
|
|
16
|
-
trace: (m) => Effect.logTrace(m).pipe(Runtime.runSync(runtime)),
|
|
17
|
-
},
|
|
18
|
-
}))));
|
|
19
|
-
export const SFNClientInstanceTag = Context.Tag("@effect-aws/SFNClient/Instance");
|
|
20
|
-
export const SFNClientInstanceLayer = Layer.effect(SFNClientInstanceTag, SFNClientConfigTag.pipe(Effect.map((config) => new SFNClient(config))));
|
|
21
|
-
export const DefaultSFNClientInstanceLayer = SFNClientInstanceLayer.pipe(Layer.provide(DefaultSFNClientConfigLayer));
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxJQUFJLENBQUMsV0FBVyxDQUNwRCxrQkFBa0IsQ0FDRjtDQUFHO0FBRXJCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQzNDLDhCQUE4QixDQUMvQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDckQsa0JBQWtCLEVBQ2xCLE1BQU0sQ0FBQyxPQUFPLEVBQVMsQ0FBQyxJQUFJLENBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQ1IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLElBQUksZ0JBQWdCLENBQUM7SUFDbkIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNoRTtDQUNGLENBQUMsQ0FDTCxDQUNGLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQzdDLGdDQUFnQyxDQUNqQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDaEQsb0JBQW9CLEVBQ3BCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQ3RFLEtBQUssQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNGTkNsaWVudCwgU0ZOQ2xpZW50Q29uZmlnIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZm5cIjtcbmltcG9ydCAqIGFzIENvbnRleHQgZnJvbSBcImVmZmVjdC9Db250ZXh0XCI7XG5pbXBvcnQgKiBhcyBEYXRhIGZyb20gXCJlZmZlY3QvRGF0YVwiO1xuaW1wb3J0ICogYXMgRWZmZWN0IGZyb20gXCJlZmZlY3QvRWZmZWN0XCI7XG5pbXBvcnQgKiBhcyBMYXllciBmcm9tIFwiZWZmZWN0L0xheWVyXCI7XG5pbXBvcnQgKiBhcyBSdW50aW1lIGZyb20gXCJlZmZlY3QvUnVudGltZVwiO1xuXG5leHBvcnQgY2xhc3MgU0ZOQ2xpZW50T3B0aW9ucyBleHRlbmRzIERhdGEuVGFnZ2VkQ2xhc3MoXG4gIFwiU0ZOQ2xpZW50T3B0aW9uc1wiLFxuKTxTRk5DbGllbnRDb25maWc+IHt9XG5cbmV4cG9ydCBjb25zdCBTRk5DbGllbnRDb25maWdUYWcgPSBDb250ZXh0LlRhZzxTRk5DbGllbnRPcHRpb25zPihcbiAgXCJAZWZmZWN0LWF3cy9TRk5DbGllbnQvQ29uZmlnXCIsXG4pO1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdFNGTkNsaWVudENvbmZpZ0xheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBTRk5DbGllbnRDb25maWdUYWcsXG4gIEVmZmVjdC5ydW50aW1lPG5ldmVyPigpLnBpcGUoXG4gICAgRWZmZWN0Lm1hcChcbiAgICAgIChydW50aW1lKSA9PlxuICAgICAgICBuZXcgU0ZOQ2xpZW50T3B0aW9ucyh7XG4gICAgICAgICAgbG9nZ2VyOiB7XG4gICAgICAgICAgICBpbmZvOiAobSkgPT4gRWZmZWN0LmxvZ0luZm8obSkucGlwZShSdW50aW1lLnJ1blN5bmMocnVudGltZSkpLFxuICAgICAgICAgICAgd2FybjogKG0pID0+IEVmZmVjdC5sb2dXYXJuaW5nKG0pLnBpcGUoUnVudGltZS5ydW5TeW5jKHJ1bnRpbWUpKSxcbiAgICAgICAgICAgIGVycm9yOiAobSkgPT4gRWZmZWN0LmxvZ0Vycm9yKG0pLnBpcGUoUnVudGltZS5ydW5TeW5jKHJ1bnRpbWUpKSxcbiAgICAgICAgICAgIGRlYnVnOiAobSkgPT4gRWZmZWN0LmxvZ0RlYnVnKG0pLnBpcGUoUnVudGltZS5ydW5TeW5jKHJ1bnRpbWUpKSxcbiAgICAgICAgICAgIHRyYWNlOiAobSkgPT4gRWZmZWN0LmxvZ1RyYWNlKG0pLnBpcGUoUnVudGltZS5ydW5TeW5jKHJ1bnRpbWUpKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICApLFxuICApLFxuKTtcblxuZXhwb3J0IGNvbnN0IFNGTkNsaWVudEluc3RhbmNlVGFnID0gQ29udGV4dC5UYWc8U0ZOQ2xpZW50PihcbiAgXCJAZWZmZWN0LWF3cy9TRk5DbGllbnQvSW5zdGFuY2VcIixcbik7XG5cbmV4cG9ydCBjb25zdCBTRk5DbGllbnRJbnN0YW5jZUxheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBTRk5DbGllbnRJbnN0YW5jZVRhZyxcbiAgU0ZOQ2xpZW50Q29uZmlnVGFnLnBpcGUoRWZmZWN0Lm1hcCgoY29uZmlnKSA9PiBuZXcgU0ZOQ2xpZW50KGNvbmZpZykpKSxcbik7XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0U0ZOQ2xpZW50SW5zdGFuY2VMYXllciA9IFNGTkNsaWVudEluc3RhbmNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShEZWZhdWx0U0ZOQ2xpZW50Q29uZmlnTGF5ZXIpLFxuKTtcbiJdfQ==
|
package/lib/esm/SFN.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { CreateActivityCommand, CreateStateMachineAliasCommand, CreateStateMachineCommand, DeleteActivityCommand, DeleteStateMachineAliasCommand, DeleteStateMachineCommand, DeleteStateMachineVersionCommand, DescribeActivityCommand, DescribeExecutionCommand, DescribeMapRunCommand, DescribeStateMachineAliasCommand, DescribeStateMachineCommand, DescribeStateMachineForExecutionCommand, GetActivityTaskCommand, GetExecutionHistoryCommand, ListActivitiesCommand, ListExecutionsCommand, ListMapRunsCommand, ListStateMachineAliasesCommand, ListStateMachineVersionsCommand, ListStateMachinesCommand, ListTagsForResourceCommand, PublishStateMachineVersionCommand, RedriveExecutionCommand, SendTaskFailureCommand, SendTaskHeartbeatCommand, SendTaskSuccessCommand, StartExecutionCommand, StartSyncExecutionCommand, StopExecutionCommand, TagResourceCommand, TestStateCommand, UntagResourceCommand, UpdateMapRunCommand, UpdateStateMachineAliasCommand, UpdateStateMachineCommand, } from "@aws-sdk/client-sfn";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as RR from "effect/ReadonlyRecord";
|
|
4
|
-
import { DefaultSFNClientInstanceLayer, SFNClientInstanceLayer, SFNClientInstanceTag, } from "./Context";
|
|
5
|
-
const commands = {
|
|
6
|
-
CreateActivityCommand,
|
|
7
|
-
CreateStateMachineCommand,
|
|
8
|
-
CreateStateMachineAliasCommand,
|
|
9
|
-
DeleteActivityCommand,
|
|
10
|
-
DeleteStateMachineCommand,
|
|
11
|
-
DeleteStateMachineAliasCommand,
|
|
12
|
-
DeleteStateMachineVersionCommand,
|
|
13
|
-
DescribeActivityCommand,
|
|
14
|
-
DescribeExecutionCommand,
|
|
15
|
-
DescribeMapRunCommand,
|
|
16
|
-
DescribeStateMachineCommand,
|
|
17
|
-
DescribeStateMachineAliasCommand,
|
|
18
|
-
DescribeStateMachineForExecutionCommand,
|
|
19
|
-
GetActivityTaskCommand,
|
|
20
|
-
GetExecutionHistoryCommand,
|
|
21
|
-
ListActivitiesCommand,
|
|
22
|
-
ListExecutionsCommand,
|
|
23
|
-
ListMapRunsCommand,
|
|
24
|
-
ListStateMachineAliasesCommand,
|
|
25
|
-
ListStateMachinesCommand,
|
|
26
|
-
ListStateMachineVersionsCommand,
|
|
27
|
-
ListTagsForResourceCommand,
|
|
28
|
-
PublishStateMachineVersionCommand,
|
|
29
|
-
RedriveExecutionCommand,
|
|
30
|
-
SendTaskFailureCommand,
|
|
31
|
-
SendTaskHeartbeatCommand,
|
|
32
|
-
SendTaskSuccessCommand,
|
|
33
|
-
StartExecutionCommand,
|
|
34
|
-
StartSyncExecutionCommand,
|
|
35
|
-
StopExecutionCommand,
|
|
36
|
-
TagResourceCommand,
|
|
37
|
-
TestStateCommand,
|
|
38
|
-
UntagResourceCommand,
|
|
39
|
-
UpdateMapRunCommand,
|
|
40
|
-
UpdateStateMachineCommand,
|
|
41
|
-
UpdateStateMachineAliasCommand,
|
|
42
|
-
};
|
|
43
|
-
export const BaseSFNServiceEffect = Effect.gen(function* (_) {
|
|
44
|
-
const client = yield* _(SFNClientInstanceTag);
|
|
45
|
-
return RR.toEntries(commands).reduce((acc, [command]) => {
|
|
46
|
-
const CommandCtor = commands[command];
|
|
47
|
-
const methodImpl = (args, options) => Effect.tryPromise(() => client.send(new CommandCtor(args), options !== null && options !== void 0 ? options : {}));
|
|
48
|
-
const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
|
|
49
|
-
return { ...acc, [methodName]: methodImpl };
|
|
50
|
-
}, {});
|
|
51
|
-
});
|
|
52
|
-
export const SFNServiceEffect = BaseSFNServiceEffect.pipe(Effect.provide(SFNClientInstanceLayer));
|
|
53
|
-
export const DefaultSFNServiceEffect = BaseSFNServiceEffect.pipe(Effect.provide(DefaultSFNClientInstanceLayer));
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0ZOLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NGTi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBR3JCLDhCQUE4QixFQUc5Qix5QkFBeUIsRUFHekIscUJBQXFCLEVBR3JCLDhCQUE4QixFQUc5Qix5QkFBeUIsRUFHekIsZ0NBQWdDLEVBR2hDLHVCQUF1QixFQUd2Qix3QkFBd0IsRUFHeEIscUJBQXFCLEVBR3JCLGdDQUFnQyxFQUdoQywyQkFBMkIsRUFHM0IsdUNBQXVDLEVBR3ZDLHNCQUFzQixFQUd0QiwwQkFBMEIsRUFHMUIscUJBQXFCLEVBR3JCLHFCQUFxQixFQUdyQixrQkFBa0IsRUFHbEIsOEJBQThCLEVBRzlCLCtCQUErQixFQUcvQix3QkFBd0IsRUFHeEIsMEJBQTBCLEVBRzFCLGlDQUFpQyxFQUdqQyx1QkFBdUIsRUFHdkIsc0JBQXNCLEVBR3RCLHdCQUF3QixFQUd4QixzQkFBc0IsRUFHdEIscUJBQXFCLEVBR3JCLHlCQUF5QixFQUd6QixvQkFBb0IsRUFHcEIsa0JBQWtCLEVBR2xCLGdCQUFnQixFQUdoQixvQkFBb0IsRUFHcEIsbUJBQW1CLEVBR25CLDhCQUE4QixFQUc5Qix5QkFBeUIsR0FHMUIsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QixPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBQ3RCLG9CQUFvQixHQUNyQixNQUFNLFdBQVcsQ0FBQztBQUVuQixNQUFNLFFBQVEsR0FBRztJQUNmLHFCQUFxQjtJQUNyQix5QkFBeUI7SUFDekIsOEJBQThCO0lBQzlCLHFCQUFxQjtJQUNyQix5QkFBeUI7SUFDekIsOEJBQThCO0lBQzlCLGdDQUFnQztJQUNoQyx1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLHFCQUFxQjtJQUNyQiwyQkFBMkI7SUFDM0IsZ0NBQWdDO0lBQ2hDLHVDQUF1QztJQUN2QyxzQkFBc0I7SUFDdEIsMEJBQTBCO0lBQzFCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLDhCQUE4QjtJQUM5Qix3QkFBd0I7SUFDeEIsK0JBQStCO0lBQy9CLDBCQUEwQjtJQUMxQixpQ0FBaUM7SUFDakMsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0Qix3QkFBd0I7SUFDeEIsc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQix5QkFBeUI7SUFDekIsb0JBQW9CO0lBQ3BCLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQix5QkFBeUI7SUFDekIsOEJBQThCO0NBQy9CLENBQUM7QUFxVkYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTlDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1FBQ3RELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQVEsQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVMsRUFBRSxPQUFZLEVBQUUsRUFBRSxDQUM3QyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLEVBQUUsQ0FBQyxDQUNsRCxDQUFDO1FBQ0osTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDdEUsVUFBVSxFQUNWLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBZSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUN2RCxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQ3ZDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQzlELE1BQU0sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENyZWF0ZUFjdGl2aXR5Q29tbWFuZCxcbiAgQ3JlYXRlQWN0aXZpdHlDb21tYW5kSW5wdXQsXG4gIENyZWF0ZUFjdGl2aXR5Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kLFxuICBDcmVhdGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgQ3JlYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVTdGF0ZU1hY2hpbmVDb21tYW5kLFxuICBDcmVhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQsXG4gIENyZWF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUFjdGl2aXR5Q29tbWFuZCxcbiAgRGVsZXRlQWN0aXZpdHlDb21tYW5kSW5wdXQsXG4gIERlbGV0ZUFjdGl2aXR5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kLFxuICBEZWxldGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVTdGF0ZU1hY2hpbmVDb21tYW5kLFxuICBEZWxldGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQsXG4gIERlbGV0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kLFxuICBEZWxldGVTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZElucHV0LFxuICBEZWxldGVTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVBY3Rpdml0eUNvbW1hbmQsXG4gIERlc2NyaWJlQWN0aXZpdHlDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlQWN0aXZpdHlDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUV4ZWN1dGlvbkNvbW1hbmQsXG4gIERlc2NyaWJlRXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICBEZXNjcmliZUV4ZWN1dGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlTWFwUnVuQ29tbWFuZCxcbiAgRGVzY3JpYmVNYXBSdW5Db21tYW5kSW5wdXQsXG4gIERlc2NyaWJlTWFwUnVuQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUNvbW1hbmQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICBEZXNjcmliZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lRm9yRXhlY3V0aW9uQ29tbWFuZCxcbiAgRGVzY3JpYmVTdGF0ZU1hY2hpbmVGb3JFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lRm9yRXhlY3V0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QWN0aXZpdHlUYXNrQ29tbWFuZCxcbiAgR2V0QWN0aXZpdHlUYXNrQ29tbWFuZElucHV0LFxuICBHZXRBY3Rpdml0eVRhc2tDb21tYW5kT3V0cHV0LFxuICBHZXRFeGVjdXRpb25IaXN0b3J5Q29tbWFuZCxcbiAgR2V0RXhlY3V0aW9uSGlzdG9yeUNvbW1hbmRJbnB1dCxcbiAgR2V0RXhlY3V0aW9uSGlzdG9yeUNvbW1hbmRPdXRwdXQsXG4gIExpc3RBY3Rpdml0aWVzQ29tbWFuZCxcbiAgTGlzdEFjdGl2aXRpZXNDb21tYW5kSW5wdXQsXG4gIExpc3RBY3Rpdml0aWVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEV4ZWN1dGlvbnNDb21tYW5kLFxuICBMaXN0RXhlY3V0aW9uc0NvbW1hbmRJbnB1dCxcbiAgTGlzdEV4ZWN1dGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0TWFwUnVuc0NvbW1hbmQsXG4gIExpc3RNYXBSdW5zQ29tbWFuZElucHV0LFxuICBMaXN0TWFwUnVuc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RTdGF0ZU1hY2hpbmVBbGlhc2VzQ29tbWFuZCxcbiAgTGlzdFN0YXRlTWFjaGluZUFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIExpc3RTdGF0ZU1hY2hpbmVBbGlhc2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFN0YXRlTWFjaGluZVZlcnNpb25zQ29tbWFuZCxcbiAgTGlzdFN0YXRlTWFjaGluZVZlcnNpb25zQ29tbWFuZElucHV0LFxuICBMaXN0U3RhdGVNYWNoaW5lVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0U3RhdGVNYWNoaW5lc0NvbW1hbmQsXG4gIExpc3RTdGF0ZU1hY2hpbmVzQ29tbWFuZElucHV0LFxuICBMaXN0U3RhdGVNYWNoaW5lc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kLFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaFN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kLFxuICBQdWJsaXNoU3RhdGVNYWNoaW5lVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgUHVibGlzaFN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBSZWRyaXZlRXhlY3V0aW9uQ29tbWFuZCxcbiAgUmVkcml2ZUV4ZWN1dGlvbkNvbW1hbmRJbnB1dCxcbiAgUmVkcml2ZUV4ZWN1dGlvbkNvbW1hbmRPdXRwdXQsXG4gIFNlbmRUYXNrRmFpbHVyZUNvbW1hbmQsXG4gIFNlbmRUYXNrRmFpbHVyZUNvbW1hbmRJbnB1dCxcbiAgU2VuZFRhc2tGYWlsdXJlQ29tbWFuZE91dHB1dCxcbiAgU2VuZFRhc2tIZWFydGJlYXRDb21tYW5kLFxuICBTZW5kVGFza0hlYXJ0YmVhdENvbW1hbmRJbnB1dCxcbiAgU2VuZFRhc2tIZWFydGJlYXRDb21tYW5kT3V0cHV0LFxuICBTZW5kVGFza1N1Y2Nlc3NDb21tYW5kLFxuICBTZW5kVGFza1N1Y2Nlc3NDb21tYW5kSW5wdXQsXG4gIFNlbmRUYXNrU3VjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gIFN0YXJ0RXhlY3V0aW9uQ29tbWFuZCxcbiAgU3RhcnRFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gIFN0YXJ0RXhlY3V0aW9uQ29tbWFuZE91dHB1dCxcbiAgU3RhcnRTeW5jRXhlY3V0aW9uQ29tbWFuZCxcbiAgU3RhcnRTeW5jRXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICBTdGFydFN5bmNFeGVjdXRpb25Db21tYW5kT3V0cHV0LFxuICBTdG9wRXhlY3V0aW9uQ29tbWFuZCxcbiAgU3RvcEV4ZWN1dGlvbkNvbW1hbmRJbnB1dCxcbiAgU3RvcEV4ZWN1dGlvbkNvbW1hbmRPdXRwdXQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVGVzdFN0YXRlQ29tbWFuZCxcbiAgVGVzdFN0YXRlQ29tbWFuZElucHV0LFxuICBUZXN0U3RhdGVDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZU1hcFJ1bkNvbW1hbmQsXG4gIFVwZGF0ZU1hcFJ1bkNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlTWFwUnVuQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kLFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kLFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQsXG4gIFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2ZuXCI7XG5pbXBvcnQgeyBIdHRwSGFuZGxlck9wdGlvbnMgYXMgX19IdHRwSGFuZGxlck9wdGlvbnMgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCAqIGFzIENhdXNlIGZyb20gXCJlZmZlY3QvQ2F1c2VcIjtcbmltcG9ydCAqIGFzIEVmZmVjdCBmcm9tIFwiZWZmZWN0L0VmZmVjdFwiO1xuaW1wb3J0ICogYXMgUlIgZnJvbSBcImVmZmVjdC9SZWFkb25seVJlY29yZFwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFNGTkNsaWVudEluc3RhbmNlTGF5ZXIsXG4gIFNGTkNsaWVudEluc3RhbmNlTGF5ZXIsXG4gIFNGTkNsaWVudEluc3RhbmNlVGFnLFxufSBmcm9tIFwiLi9Db250ZXh0XCI7XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBDcmVhdGVBY3Rpdml0eUNvbW1hbmQsXG4gIENyZWF0ZVN0YXRlTWFjaGluZUNvbW1hbmQsXG4gIENyZWF0ZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZCxcbiAgRGVsZXRlQWN0aXZpdHlDb21tYW5kLFxuICBEZWxldGVTdGF0ZU1hY2hpbmVDb21tYW5kLFxuICBEZWxldGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmQsXG4gIERlbGV0ZVN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kLFxuICBEZXNjcmliZUFjdGl2aXR5Q29tbWFuZCxcbiAgRGVzY3JpYmVFeGVjdXRpb25Db21tYW5kLFxuICBEZXNjcmliZU1hcFJ1bkNvbW1hbmQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbiAgRGVzY3JpYmVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmQsXG4gIERlc2NyaWJlU3RhdGVNYWNoaW5lRm9yRXhlY3V0aW9uQ29tbWFuZCxcbiAgR2V0QWN0aXZpdHlUYXNrQ29tbWFuZCxcbiAgR2V0RXhlY3V0aW9uSGlzdG9yeUNvbW1hbmQsXG4gIExpc3RBY3Rpdml0aWVzQ29tbWFuZCxcbiAgTGlzdEV4ZWN1dGlvbnNDb21tYW5kLFxuICBMaXN0TWFwUnVuc0NvbW1hbmQsXG4gIExpc3RTdGF0ZU1hY2hpbmVBbGlhc2VzQ29tbWFuZCxcbiAgTGlzdFN0YXRlTWFjaGluZXNDb21tYW5kLFxuICBMaXN0U3RhdGVNYWNoaW5lVmVyc2lvbnNDb21tYW5kLFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgUHVibGlzaFN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kLFxuICBSZWRyaXZlRXhlY3V0aW9uQ29tbWFuZCxcbiAgU2VuZFRhc2tGYWlsdXJlQ29tbWFuZCxcbiAgU2VuZFRhc2tIZWFydGJlYXRDb21tYW5kLFxuICBTZW5kVGFza1N1Y2Nlc3NDb21tYW5kLFxuICBTdGFydEV4ZWN1dGlvbkNvbW1hbmQsXG4gIFN0YXJ0U3luY0V4ZWN1dGlvbkNvbW1hbmQsXG4gIFN0b3BFeGVjdXRpb25Db21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFRlc3RTdGF0ZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVcGRhdGVNYXBSdW5Db21tYW5kLFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kLFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmQsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNGTlNlcnZpY2Uge1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQWN0aXZpdHlDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQWN0aXZpdHkoXG4gICAgYXJnczogQ3JlYXRlQWN0aXZpdHlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBDcmVhdGVBY3Rpdml0eUNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlU3RhdGVNYWNoaW5lQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVN0YXRlTWFjaGluZShcbiAgICBhcmdzOiBDcmVhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgQ3JlYXRlU3RhdGVNYWNoaW5lQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlU3RhdGVNYWNoaW5lQWxpYXMoXG4gICAgYXJnczogQ3JlYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgQ3JlYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVBY3Rpdml0eUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVBY3Rpdml0eShcbiAgICBhcmdzOiBEZWxldGVBY3Rpdml0eUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIENhdXNlLlVua25vd25FeGNlcHRpb24sIERlbGV0ZUFjdGl2aXR5Q29tbWFuZE91dHB1dD47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVTdGF0ZU1hY2hpbmVDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlU3RhdGVNYWNoaW5lKFxuICAgIGFyZ3M6IERlbGV0ZVN0YXRlTWFjaGluZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBEZWxldGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVTdGF0ZU1hY2hpbmVBbGlhcyhcbiAgICBhcmdzOiBEZWxldGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBEZWxldGVTdGF0ZU1hY2hpbmVBbGlhc0NvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlU3RhdGVNYWNoaW5lVmVyc2lvbihcbiAgICBhcmdzOiBEZWxldGVTdGF0ZU1hY2hpbmVWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIERlbGV0ZVN0YXRlTWFjaGluZVZlcnNpb25Db21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZUFjdGl2aXR5Q29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlQWN0aXZpdHkoXG4gICAgYXJnczogRGVzY3JpYmVBY3Rpdml0eUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBEZXNjcmliZUFjdGl2aXR5Q29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVFeGVjdXRpb25Db21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVFeGVjdXRpb24oXG4gICAgYXJnczogRGVzY3JpYmVFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgRGVzY3JpYmVFeGVjdXRpb25Db21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZU1hcFJ1bkNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZU1hcFJ1bihcbiAgICBhcmdzOiBEZXNjcmliZU1hcFJ1bkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIENhdXNlLlVua25vd25FeGNlcHRpb24sIERlc2NyaWJlTWFwUnVuQ29tbWFuZE91dHB1dD47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVN0YXRlTWFjaGluZUNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVN0YXRlTWFjaGluZShcbiAgICBhcmdzOiBEZXNjcmliZVN0YXRlTWFjaGluZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBEZXNjcmliZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVTdGF0ZU1hY2hpbmVBbGlhcyhcbiAgICBhcmdzOiBEZXNjcmliZVN0YXRlTWFjaGluZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIERlc2NyaWJlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVN0YXRlTWFjaGluZUZvckV4ZWN1dGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVN0YXRlTWFjaGluZUZvckV4ZWN1dGlvbihcbiAgICBhcmdzOiBEZXNjcmliZVN0YXRlTWFjaGluZUZvckV4ZWN1dGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBEZXNjcmliZVN0YXRlTWFjaGluZUZvckV4ZWN1dGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEFjdGl2aXR5VGFza0NvbW1hbmR9XG4gICAqL1xuICBnZXRBY3Rpdml0eVRhc2soXG4gICAgYXJnczogR2V0QWN0aXZpdHlUYXNrQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbiwgR2V0QWN0aXZpdHlUYXNrQ29tbWFuZE91dHB1dD47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRFeGVjdXRpb25IaXN0b3J5Q29tbWFuZH1cbiAgICovXG4gIGdldEV4ZWN1dGlvbkhpc3RvcnkoXG4gICAgYXJnczogR2V0RXhlY3V0aW9uSGlzdG9yeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBHZXRFeGVjdXRpb25IaXN0b3J5Q29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEFjdGl2aXRpZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEFjdGl2aXRpZXMoXG4gICAgYXJnczogTGlzdEFjdGl2aXRpZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBMaXN0QWN0aXZpdGllc0NvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEV4ZWN1dGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEV4ZWN1dGlvbnMoXG4gICAgYXJnczogTGlzdEV4ZWN1dGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBMaXN0RXhlY3V0aW9uc0NvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdE1hcFJ1bnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdE1hcFJ1bnMoXG4gICAgYXJnczogTGlzdE1hcFJ1bnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBMaXN0TWFwUnVuc0NvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFN0YXRlTWFjaGluZUFsaWFzZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFN0YXRlTWFjaGluZUFsaWFzZXMoXG4gICAgYXJnczogTGlzdFN0YXRlTWFjaGluZUFsaWFzZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgTGlzdFN0YXRlTWFjaGluZUFsaWFzZXNDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0U3RhdGVNYWNoaW5lc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U3RhdGVNYWNoaW5lcyhcbiAgICBhcmdzOiBMaXN0U3RhdGVNYWNoaW5lc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBMaXN0U3RhdGVNYWNoaW5lc0NvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTdGF0ZU1hY2hpbmVWZXJzaW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U3RhdGVNYWNoaW5lVmVyc2lvbnMoXG4gICAgYXJnczogTGlzdFN0YXRlTWFjaGluZVZlcnNpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIExpc3RTdGF0ZU1hY2hpbmVWZXJzaW9uc0NvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRhZ3NGb3JSZXNvdXJjZShcbiAgICBhcmdzOiBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdWJsaXNoU3RhdGVNYWNoaW5lVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoU3RhdGVNYWNoaW5lVmVyc2lvbihcbiAgICBhcmdzOiBQdWJsaXNoU3RhdGVNYWNoaW5lVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgQ2F1c2UuVW5rbm93bkV4Y2VwdGlvbixcbiAgICBQdWJsaXNoU3RhdGVNYWNoaW5lVmVyc2lvbkNvbW1hbmRPdXRwdXRcbiAgPjtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlZHJpdmVFeGVjdXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVkcml2ZUV4ZWN1dGlvbihcbiAgICBhcmdzOiBSZWRyaXZlRXhlY3V0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLFxuICAgIFJlZHJpdmVFeGVjdXRpb25Db21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZW5kVGFza0ZhaWx1cmVDb21tYW5kfVxuICAgKi9cbiAgc2VuZFRhc2tGYWlsdXJlKFxuICAgIGFyZ3M6IFNlbmRUYXNrRmFpbHVyZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIENhdXNlLlVua25vd25FeGNlcHRpb24sIFNlbmRUYXNrRmFpbHVyZUNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2VuZFRhc2tIZWFydGJlYXRDb21tYW5kfVxuICAgKi9cbiAgc2VuZFRhc2tIZWFydGJlYXQoXG4gICAgYXJnczogU2VuZFRhc2tIZWFydGJlYXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgU2VuZFRhc2tIZWFydGJlYXRDb21tYW5kT3V0cHV0XG4gID47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZW5kVGFza1N1Y2Nlc3NDb21tYW5kfVxuICAgKi9cbiAgc2VuZFRhc2tTdWNjZXNzKFxuICAgIGFyZ3M6IFNlbmRUYXNrU3VjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIENhdXNlLlVua25vd25FeGNlcHRpb24sIFNlbmRUYXNrU3VjY2Vzc0NvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RhcnRFeGVjdXRpb25Db21tYW5kfVxuICAgKi9cbiAgc3RhcnRFeGVjdXRpb24oXG4gICAgYXJnczogU3RhcnRFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBTdGFydEV4ZWN1dGlvbkNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RhcnRTeW5jRXhlY3V0aW9uQ29tbWFuZH1cbiAgICovXG4gIHN0YXJ0U3luY0V4ZWN1dGlvbihcbiAgICBhcmdzOiBTdGFydFN5bmNFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgU3RhcnRTeW5jRXhlY3V0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RvcEV4ZWN1dGlvbkNvbW1hbmR9XG4gICAqL1xuICBzdG9wRXhlY3V0aW9uKFxuICAgIGFyZ3M6IFN0b3BFeGVjdXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBTdG9wRXhlY3V0aW9uQ29tbWFuZE91dHB1dD47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIENhdXNlLlVua25vd25FeGNlcHRpb24sIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dD47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUZXN0U3RhdGVDb21tYW5kfVxuICAgKi9cbiAgdGVzdFN0YXRlKFxuICAgIGFyZ3M6IFRlc3RTdGF0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIENhdXNlLlVua25vd25FeGNlcHRpb24sIFRlc3RTdGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVW50YWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB1bnRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBDYXVzZS5Vbmtub3duRXhjZXB0aW9uLCBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dD47XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVNYXBSdW5Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlTWFwUnVuKFxuICAgIGFyZ3M6IFVwZGF0ZU1hcFJ1bkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIENhdXNlLlVua25vd25FeGNlcHRpb24sIFVwZGF0ZU1hcFJ1bkNvbW1hbmRPdXRwdXQ+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVN0YXRlTWFjaGluZShcbiAgICBhcmdzOiBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZE91dHB1dFxuICA+O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlU3RhdGVNYWNoaW5lQWxpYXMoXG4gICAgYXJnczogVXBkYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIENhdXNlLlVua25vd25FeGNlcHRpb24sXG4gICAgVXBkYXRlU3RhdGVNYWNoaW5lQWxpYXNDb21tYW5kT3V0cHV0XG4gID47XG59XG5cbmV4cG9ydCBjb25zdCBCYXNlU0ZOU2VydmljZUVmZmVjdCA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKFNGTkNsaWVudEluc3RhbmNlVGFnKTtcblxuICByZXR1cm4gUlIudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM6IGFueSkgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKCgpID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwgb3B0aW9ucyA/PyB7fSksXG4gICAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIFNGTlNlcnZpY2U7XG59KTtcblxuZXhwb3J0IGNvbnN0IFNGTlNlcnZpY2VFZmZlY3QgPSBCYXNlU0ZOU2VydmljZUVmZmVjdC5waXBlKFxuICBFZmZlY3QucHJvdmlkZShTRk5DbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0U0ZOU2VydmljZUVmZmVjdCA9IEJhc2VTRk5TZXJ2aWNlRWZmZWN0LnBpcGUoXG4gIEVmZmVjdC5wcm92aWRlKERlZmF1bHRTRk5DbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG4iXX0=
|