@effect-aws/client-sns 0.6.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/LICENSE +1 -1
- package/docgen.json +8 -0
- package/lib/SNSClientInstance.d.ts +35 -0
- package/lib/SNSClientInstance.js +55 -0
- package/lib/SNSClientInstanceConfig.d.ts +29 -0
- package/lib/SNSClientInstanceConfig.js +58 -0
- package/lib/{SNS.d.ts → SNSService.d.ts} +49 -3
- package/lib/SNSService.js +126 -0
- package/lib/esm/SNSClientInstance.js +29 -0
- package/lib/esm/SNSClientInstanceConfig.js +32 -0
- package/lib/esm/SNSService.js +123 -0
- package/lib/esm/index.js +4 -3
- package/lib/index.d.ts +3 -2
- package/lib/index.js +4 -3
- package/package.json +11 -7
- package/.gitattributes +0 -21
- package/.prettierignore +0 -1
- package/.prettierrc.json +0 -3
- package/lib/Context.d.ts +0 -15
- package/lib/Context.js +0 -49
- package/lib/SNS.js +0 -109
- package/lib/esm/Context.js +0 -22
- package/lib/esm/SNS.js +0 -83
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { AddPermissionCommand, CheckIfPhoneNumberIsOptedOutCommand, ConfirmSubscriptionCommand, CreatePlatformApplicationCommand, CreatePlatformEndpointCommand, CreateSMSSandboxPhoneNumberCommand, CreateTopicCommand, DeleteEndpointCommand, DeletePlatformApplicationCommand, DeleteSMSSandboxPhoneNumberCommand, DeleteTopicCommand, GetDataProtectionPolicyCommand, GetEndpointAttributesCommand, GetPlatformApplicationAttributesCommand, GetSMSAttributesCommand, GetSMSSandboxAccountStatusCommand, GetSubscriptionAttributesCommand, GetTopicAttributesCommand, ListEndpointsByPlatformApplicationCommand, ListOriginationNumbersCommand, ListPhoneNumbersOptedOutCommand, ListPlatformApplicationsCommand, ListSMSSandboxPhoneNumbersCommand, ListSubscriptionsByTopicCommand, ListSubscriptionsCommand, ListTagsForResourceCommand, ListTopicsCommand, OptInPhoneNumberCommand, PublishBatchCommand, PublishCommand, PutDataProtectionPolicyCommand, RemovePermissionCommand, SNSServiceException, SetEndpointAttributesCommand, SetPlatformApplicationAttributesCommand, SetSMSAttributesCommand, SetSubscriptionAttributesCommand, SetTopicAttributesCommand, SubscribeCommand, TagResourceCommand, UnsubscribeCommand, UntagResourceCommand, VerifySMSSandboxPhoneNumberCommand, } from "@aws-sdk/client-sns";
|
|
5
|
+
import { Context, Data, Effect, Layer, ReadonlyRecord } from "effect";
|
|
6
|
+
import { SdkError, } from "./Errors";
|
|
7
|
+
import { DefaultSNSClientInstanceLayer, SNSClientInstance, SNSClientInstanceLayer, } from "./SNSClientInstance";
|
|
8
|
+
import { DefaultSNSClientConfigLayer } from "./SNSClientInstanceConfig";
|
|
9
|
+
const commands = {
|
|
10
|
+
AddPermissionCommand,
|
|
11
|
+
CheckIfPhoneNumberIsOptedOutCommand,
|
|
12
|
+
ConfirmSubscriptionCommand,
|
|
13
|
+
CreatePlatformApplicationCommand,
|
|
14
|
+
CreatePlatformEndpointCommand,
|
|
15
|
+
CreateSMSSandboxPhoneNumberCommand,
|
|
16
|
+
CreateTopicCommand,
|
|
17
|
+
DeleteEndpointCommand,
|
|
18
|
+
DeletePlatformApplicationCommand,
|
|
19
|
+
DeleteSMSSandboxPhoneNumberCommand,
|
|
20
|
+
DeleteTopicCommand,
|
|
21
|
+
GetDataProtectionPolicyCommand,
|
|
22
|
+
GetEndpointAttributesCommand,
|
|
23
|
+
GetPlatformApplicationAttributesCommand,
|
|
24
|
+
GetSMSAttributesCommand,
|
|
25
|
+
GetSMSSandboxAccountStatusCommand,
|
|
26
|
+
GetSubscriptionAttributesCommand,
|
|
27
|
+
GetTopicAttributesCommand,
|
|
28
|
+
ListEndpointsByPlatformApplicationCommand,
|
|
29
|
+
ListOriginationNumbersCommand,
|
|
30
|
+
ListPhoneNumbersOptedOutCommand,
|
|
31
|
+
ListPlatformApplicationsCommand,
|
|
32
|
+
ListSMSSandboxPhoneNumbersCommand,
|
|
33
|
+
ListSubscriptionsCommand,
|
|
34
|
+
ListSubscriptionsByTopicCommand,
|
|
35
|
+
ListTagsForResourceCommand,
|
|
36
|
+
ListTopicsCommand,
|
|
37
|
+
OptInPhoneNumberCommand,
|
|
38
|
+
PublishCommand,
|
|
39
|
+
PublishBatchCommand,
|
|
40
|
+
PutDataProtectionPolicyCommand,
|
|
41
|
+
RemovePermissionCommand,
|
|
42
|
+
SetEndpointAttributesCommand,
|
|
43
|
+
SetPlatformApplicationAttributesCommand,
|
|
44
|
+
SetSMSAttributesCommand,
|
|
45
|
+
SetSubscriptionAttributesCommand,
|
|
46
|
+
SetTopicAttributesCommand,
|
|
47
|
+
SubscribeCommand,
|
|
48
|
+
TagResourceCommand,
|
|
49
|
+
UnsubscribeCommand,
|
|
50
|
+
UntagResourceCommand,
|
|
51
|
+
VerifySMSSandboxPhoneNumberCommand,
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* @since 1.0.0
|
|
55
|
+
* @category tags
|
|
56
|
+
*/
|
|
57
|
+
export const SNSService = Context.Tag(Symbol.for("@effect-aws/client-sns/SNSService"));
|
|
58
|
+
/**
|
|
59
|
+
* @since 1.0.0
|
|
60
|
+
* @category constructors
|
|
61
|
+
*/
|
|
62
|
+
export const makeSNSService = Effect.gen(function* (_) {
|
|
63
|
+
const client = yield* _(SNSClientInstance);
|
|
64
|
+
return ReadonlyRecord.toEntries(commands).reduce((acc, [command]) => {
|
|
65
|
+
const CommandCtor = commands[command];
|
|
66
|
+
const methodImpl = (args, options) => Effect.tryPromise({
|
|
67
|
+
try: () => client.send(new CommandCtor(args), options !== null && options !== void 0 ? options : {}),
|
|
68
|
+
catch: (e) => {
|
|
69
|
+
if (e instanceof SNSServiceException) {
|
|
70
|
+
const ServiceException = Data.tagged(e.name);
|
|
71
|
+
return ServiceException({
|
|
72
|
+
...e,
|
|
73
|
+
message: e.message,
|
|
74
|
+
stack: e.stack,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (e instanceof Error) {
|
|
78
|
+
return SdkError({
|
|
79
|
+
...e,
|
|
80
|
+
name: "SdkError",
|
|
81
|
+
message: e.message,
|
|
82
|
+
stack: e.stack,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
throw e;
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
|
|
89
|
+
return { ...acc, [methodName]: methodImpl };
|
|
90
|
+
}, {});
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* @since 1.0.0
|
|
94
|
+
* @category layers
|
|
95
|
+
*/
|
|
96
|
+
export const BaseSNSServiceLayer = Layer.effect(SNSService, makeSNSService);
|
|
97
|
+
/**
|
|
98
|
+
* @since 1.0.0
|
|
99
|
+
* @category layers
|
|
100
|
+
*/
|
|
101
|
+
export const SNSServiceLayer = BaseSNSServiceLayer.pipe(Layer.provide(SNSClientInstanceLayer));
|
|
102
|
+
/**
|
|
103
|
+
* @since 1.0.0
|
|
104
|
+
* @category layers
|
|
105
|
+
*/
|
|
106
|
+
export const DefaultSNSServiceLayer = SNSServiceLayer.pipe(Layer.provide(DefaultSNSClientConfigLayer));
|
|
107
|
+
// -------------------- Danger Zone --------------------
|
|
108
|
+
/**
|
|
109
|
+
* @since 0.1.0
|
|
110
|
+
* @deprecated
|
|
111
|
+
*/
|
|
112
|
+
export const BaseSNSServiceEffect = makeSNSService;
|
|
113
|
+
/**
|
|
114
|
+
* @since 0.1.0
|
|
115
|
+
* @deprecated
|
|
116
|
+
*/
|
|
117
|
+
export const SNSServiceEffect = BaseSNSServiceEffect.pipe(Effect.provide(SNSClientInstanceLayer));
|
|
118
|
+
/**
|
|
119
|
+
* @since 0.1.0
|
|
120
|
+
* @deprecated
|
|
121
|
+
*/
|
|
122
|
+
export const DefaultSNSServiceEffect = BaseSNSServiceEffect.pipe(Effect.provide(DefaultSNSClientInstanceLayer));
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU05TU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TTlNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUNMLG9CQUFvQixFQUdwQixtQ0FBbUMsRUFHbkMsMEJBQTBCLEVBRzFCLGdDQUFnQyxFQUdoQyw2QkFBNkIsRUFHN0Isa0NBQWtDLEVBR2xDLGtCQUFrQixFQUdsQixxQkFBcUIsRUFHckIsZ0NBQWdDLEVBR2hDLGtDQUFrQyxFQUdsQyxrQkFBa0IsRUFHbEIsOEJBQThCLEVBRzlCLDRCQUE0QixFQUc1Qix1Q0FBdUMsRUFHdkMsdUJBQXVCLEVBR3ZCLGlDQUFpQyxFQUdqQyxnQ0FBZ0MsRUFHaEMseUJBQXlCLEVBR3pCLHlDQUF5QyxFQUd6Qyw2QkFBNkIsRUFHN0IsK0JBQStCLEVBRy9CLCtCQUErQixFQUcvQixpQ0FBaUMsRUFHakMsK0JBQStCLEVBRy9CLHdCQUF3QixFQUd4QiwwQkFBMEIsRUFHMUIsaUJBQWlCLEVBR2pCLHVCQUF1QixFQUd2QixtQkFBbUIsRUFHbkIsY0FBYyxFQUdkLDhCQUE4QixFQUc5Qix1QkFBdUIsRUFHdkIsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUc1Qix1Q0FBdUMsRUFHdkMsdUJBQXVCLEVBR3ZCLGdDQUFnQyxFQUdoQyx5QkFBeUIsRUFHekIsZ0JBQWdCLEVBR2hCLGtCQUFrQixFQUdsQixrQkFBa0IsRUFHbEIsb0JBQW9CLEVBR3BCLGtDQUFrQyxHQUduQyxNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RFLE9BQU8sRUF1QkwsUUFBUSxHQVlULE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsaUJBQWlCLEVBQ2pCLHNCQUFzQixHQUN2QixNQUFNLHFCQUFx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Q0FBQyxDQUFDLE9BQU8sQ0FDdEUsVUFBVSxFQUNWLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBZSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFNUU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FDckQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUN0QyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUMzQyxDQUFDO0FBRUYsd0RBQXdEO0FBRXhEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGNBQWMsQ0FBQztBQUVuRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQ3ZELE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FDdkMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FDOUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmQsXG4gIEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIEFkZFBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZCxcbiAgQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmRJbnB1dCxcbiAgQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmRPdXRwdXQsXG4gIENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kLFxuICBDb25maXJtU3Vic2NyaXB0aW9uQ29tbWFuZElucHV0LFxuICBDb25maXJtU3Vic2NyaXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIENyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZCxcbiAgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmQsXG4gIENyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVG9waWNDb21tYW5kLFxuICBDcmVhdGVUb3BpY0NvbW1hbmRJbnB1dCxcbiAgQ3JlYXRlVG9waWNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVFbmRwb2ludENvbW1hbmQsXG4gIERlbGV0ZUVuZHBvaW50Q29tbWFuZElucHV0LFxuICBEZWxldGVFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kLFxuICBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVUb3BpY0NvbW1hbmQsXG4gIERlbGV0ZVRvcGljQ29tbWFuZElucHV0LFxuICBEZWxldGVUb3BpY0NvbW1hbmRPdXRwdXQsXG4gIEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZCxcbiAgR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gIEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIEdldFNNU0F0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kLFxuICBHZXRTTVNTYW5kYm94QWNjb3VudFN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIExpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIExpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZCxcbiAgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmRJbnB1dCxcbiAgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RQaG9uZU51bWJlcnNPcHRlZE91dENvbW1hbmQsXG4gIExpc3RQaG9uZU51bWJlcnNPcHRlZE91dENvbW1hbmRJbnB1dCxcbiAgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZE91dHB1dCxcbiAgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZCxcbiAgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZElucHV0LFxuICBMaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmQsXG4gIExpc3RTTVNTYW5kYm94UGhvbmVOdW1iZXJzQ29tbWFuZElucHV0LFxuICBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmQsXG4gIExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmRJbnB1dCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZE91dHB1dCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNDb21tYW5kLFxuICBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIExpc3RUb3BpY3NDb21tYW5kLFxuICBMaXN0VG9waWNzQ29tbWFuZElucHV0LFxuICBMaXN0VG9waWNzQ29tbWFuZE91dHB1dCxcbiAgT3B0SW5QaG9uZU51bWJlckNvbW1hbmQsXG4gIE9wdEluUGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gIE9wdEluUGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxuICBQdWJsaXNoQmF0Y2hDb21tYW5kLFxuICBQdWJsaXNoQmF0Y2hDb21tYW5kSW5wdXQsXG4gIFB1Ymxpc2hCYXRjaENvbW1hbmRPdXRwdXQsXG4gIFB1Ymxpc2hDb21tYW5kLFxuICBQdWJsaXNoQ29tbWFuZElucHV0LFxuICBQdWJsaXNoQ29tbWFuZE91dHB1dCxcbiAgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kLFxuICBQdXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kT3V0cHV0LFxuICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFNOU1NlcnZpY2VFeGNlcHRpb24sXG4gIFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgU2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBTZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0U01TQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgU2V0U01TQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIFNldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBTdWJzY3JpYmVDb21tYW5kLFxuICBTdWJzY3JpYmVDb21tYW5kSW5wdXQsXG4gIFN1YnNjcmliZUNvbW1hbmRPdXRwdXQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVW5zdWJzY3JpYmVDb21tYW5kLFxuICBVbnN1YnNjcmliZUNvbW1hbmRJbnB1dCxcbiAgVW5zdWJzY3JpYmVDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmQsXG4gIFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zbnNcIjtcbmltcG9ydCB7IEh0dHBIYW5kbGVyT3B0aW9ucyBhcyBfX0h0dHBIYW5kbGVyT3B0aW9ucyB9IGZyb20gXCJAYXdzLXNkay90eXBlc1wiO1xuaW1wb3J0IHsgQ29udGV4dCwgRGF0YSwgRWZmZWN0LCBMYXllciwgUmVhZG9ubHlSZWNvcmQgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQge1xuICBBdXRob3JpemF0aW9uRXJyb3IsXG4gIEJhdGNoRW50cnlJZHNOb3REaXN0aW5jdEVycm9yLFxuICBCYXRjaFJlcXVlc3RUb29Mb25nRXJyb3IsXG4gIENvbmN1cnJlbnRBY2Nlc3NFcnJvcixcbiAgRW1wdHlCYXRjaFJlcXVlc3RFcnJvcixcbiAgRW5kcG9pbnREaXNhYmxlZEVycm9yLFxuICBGaWx0ZXJQb2xpY3lMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIEludmFsaWRCYXRjaEVudHJ5SWRFcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgSW52YWxpZFNlY3VyaXR5RXJyb3IsXG4gIEtNU0FjY2Vzc0RlbmllZEVycm9yLFxuICBLTVNEaXNhYmxlZEVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS01TTm90Rm91bmRFcnJvcixcbiAgS01TT3B0SW5SZXF1aXJlZEVycm9yLFxuICBLTVNUaHJvdHRsaW5nRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE9wdGVkT3V0RXJyb3IsXG4gIFBsYXRmb3JtQXBwbGljYXRpb25EaXNhYmxlZEVycm9yLFxuICBSZXNvdXJjZU5vdEZvdW5kRXJyb3IsXG4gIFNka0Vycm9yLFxuICBTdGFsZVRhZ0Vycm9yLFxuICBTdWJzY3JpcHRpb25MaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIFRhZ0xpbWl0RXhjZWVkZWRFcnJvcixcbiAgVGFnUG9saWN5RXJyb3IsXG4gIFRhZ2dlZEV4Y2VwdGlvbixcbiAgVGhyb3R0bGVkRXJyb3IsXG4gIFRvb01hbnlFbnRyaWVzSW5CYXRjaFJlcXVlc3RFcnJvcixcbiAgVG9waWNMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIFVzZXJFcnJvcixcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBWZXJpZmljYXRpb25FcnJvcixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U05TQ2xpZW50SW5zdGFuY2VMYXllcixcbiAgU05TQ2xpZW50SW5zdGFuY2UsXG4gIFNOU0NsaWVudEluc3RhbmNlTGF5ZXIsXG59IGZyb20gXCIuL1NOU0NsaWVudEluc3RhbmNlXCI7XG5pbXBvcnQgeyBEZWZhdWx0U05TQ2xpZW50Q29uZmlnTGF5ZXIgfSBmcm9tIFwiLi9TTlNDbGllbnRJbnN0YW5jZUNvbmZpZ1wiO1xuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmQsXG4gIENoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXRDb21tYW5kLFxuICBDb25maXJtU3Vic2NyaXB0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZVBsYXRmb3JtRW5kcG9pbnRDb21tYW5kLFxuICBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kLFxuICBDcmVhdGVUb3BpY0NvbW1hbmQsXG4gIERlbGV0ZUVuZHBvaW50Q29tbWFuZCxcbiAgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmQsXG4gIERlbGV0ZVRvcGljQ29tbWFuZCxcbiAgR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kLFxuICBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFNNU0F0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRTTVNTYW5kYm94QWNjb3VudFN0YXR1c0NvbW1hbmQsXG4gIEdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kLFxuICBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmQsXG4gIExpc3RQaG9uZU51bWJlcnNPcHRlZE91dENvbW1hbmQsXG4gIExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmQsXG4gIExpc3RTTVNTYW5kYm94UGhvbmVOdW1iZXJzQ29tbWFuZCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNDb21tYW5kLFxuICBMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNDb21tYW5kLFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgTGlzdFRvcGljc0NvbW1hbmQsXG4gIE9wdEluUGhvbmVOdW1iZXJDb21tYW5kLFxuICBQdWJsaXNoQ29tbWFuZCxcbiAgUHVibGlzaEJhdGNoQ29tbWFuZCxcbiAgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kLFxuICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZCxcbiAgU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFRvcGljQXR0cmlidXRlc0NvbW1hbmQsXG4gIFN1YnNjcmliZUNvbW1hbmQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVW5zdWJzY3JpYmVDb21tYW5kLFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbn07XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU05TU2VydmljZSB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZFBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgYWRkUGVybWlzc2lvbihcbiAgICBhcmdzOiBBZGRQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZH1cbiAgICovXG4gIGNoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXQoXG4gICAgYXJnczogQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yLFxuICAgIENoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXRDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kfVxuICAgKi9cbiAgY29uZmlybVN1YnNjcmlwdGlvbihcbiAgICBhcmdzOiBDb25maXJtU3Vic2NyaXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEZpbHRlclBvbGljeUxpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBTdWJzY3JpcHRpb25MaW1pdEV4Y2VlZGVkRXJyb3IsXG4gICAgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uKFxuICAgIGFyZ3M6IENyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgQXV0aG9yaXphdGlvbkVycm9yIHwgSW50ZXJuYWxFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJFcnJvcixcbiAgICBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVBsYXRmb3JtRW5kcG9pbnQoXG4gICAgYXJnczogQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlcihcbiAgICBhcmdzOiBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBPcHRlZE91dEVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICAgIHwgVXNlckVycm9yLFxuICAgIENyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlVG9waWNDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlVG9waWMoXG4gICAgYXJnczogQ3JlYXRlVG9waWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQ29uY3VycmVudEFjY2Vzc0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yXG4gICAgfCBUb3BpY0xpbWl0RXhjZWVkZWRFcnJvcixcbiAgICBDcmVhdGVUb3BpY0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRW5kcG9pbnQoXG4gICAgYXJnczogRGVsZXRlRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgQXV0aG9yaXphdGlvbkVycm9yIHwgSW50ZXJuYWxFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJFcnJvcixcbiAgICBEZWxldGVFbmRwb2ludENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgQXV0aG9yaXphdGlvbkVycm9yIHwgSW50ZXJuYWxFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJFcnJvcixcbiAgICBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyKFxuICAgIGFyZ3M6IERlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgICB8IFVzZXJFcnJvcixcbiAgICBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVRvcGljQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVRvcGljKFxuICAgIGFyZ3M6IERlbGV0ZVRvcGljQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IENvbmN1cnJlbnRBY2Nlc3NFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdQb2xpY3lFcnJvcixcbiAgICBEZWxldGVUb3BpY0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgZ2V0RGF0YVByb3RlY3Rpb25Qb2xpY3koXG4gICAgYXJnczogR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldEVuZHBvaW50QXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yLFxuICAgIEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXMoXG4gICAgYXJnczogR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yLFxuICAgIEdldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldFNNU0F0dHJpYnV0ZXMoXG4gICAgYXJnczogR2V0U01TQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yLFxuICAgIEdldFNNU0F0dHJpYnV0ZXNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzKFxuICAgIGFyZ3M6IEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBUaHJvdHRsZWRFcnJvcixcbiAgICBHZXRTTVNTYW5kYm94QWNjb3VudFN0YXR1c0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBnZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yLFxuICAgIEdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBnZXRUb3BpY0F0dHJpYnV0ZXMoXG4gICAgYXJnczogR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGxpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb24oXG4gICAgYXJnczogTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0T3JpZ2luYXRpb25OdW1iZXJzKFxuICAgIGFyZ3M6IExpc3RPcmlnaW5hdGlvbk51bWJlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yLFxuICAgIExpc3RPcmlnaW5hdGlvbk51bWJlcnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RQaG9uZU51bWJlcnNPcHRlZE91dENvbW1hbmR9XG4gICAqL1xuICBsaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXQoXG4gICAgYXJnczogTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3IsXG4gICAgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFBsYXRmb3JtQXBwbGljYXRpb25zKFxuICAgIGFyZ3M6IExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICAgIExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnMoXG4gICAgYXJnczogTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yLFxuICAgIExpc3RTTVNTYW5kYm94UGhvbmVOdW1iZXJzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U3Vic2NyaXB0aW9ucyhcbiAgICBhcmdzOiBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICAgIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljKFxuICAgIGFyZ3M6IExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzRm9yUmVzb3VyY2UoXG4gICAgYXJnczogTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBDb25jdXJyZW50QWNjZXNzRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUYWdQb2xpY3lFcnJvcixcbiAgICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VG9waWNzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUb3BpY3MoXG4gICAgYXJnczogTGlzdFRvcGljc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICAgIExpc3RUb3BpY3NDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE9wdEluUGhvbmVOdW1iZXJDb21tYW5kfVxuICAgKi9cbiAgb3B0SW5QaG9uZU51bWJlcihcbiAgICBhcmdzOiBPcHRJblBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3IsXG4gICAgT3B0SW5QaG9uZU51bWJlckNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVibGlzaENvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoKFxuICAgIGFyZ3M6IFB1Ymxpc2hDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgRW5kcG9pbnREaXNhYmxlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBLTVNBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgS01TRGlzYWJsZWRFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEtNU05vdEZvdW5kRXJyb3JcbiAgICB8IEtNU09wdEluUmVxdWlyZWRFcnJvclxuICAgIHwgS01TVGhyb3R0bGluZ0Vycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUGxhdGZvcm1BcHBsaWNhdGlvbkRpc2FibGVkRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvcixcbiAgICBQdWJsaXNoQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdWJsaXNoQmF0Y2hDb21tYW5kfVxuICAgKi9cbiAgcHVibGlzaEJhdGNoKFxuICAgIGFyZ3M6IFB1Ymxpc2hCYXRjaENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBCYXRjaEVudHJ5SWRzTm90RGlzdGluY3RFcnJvclxuICAgIHwgQmF0Y2hSZXF1ZXN0VG9vTG9uZ0Vycm9yXG4gICAgfCBFbXB0eUJhdGNoUmVxdWVzdEVycm9yXG4gICAgfCBFbmRwb2ludERpc2FibGVkRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRCYXRjaEVudHJ5SWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgS01TQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEtNU0Rpc2FibGVkRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBLTVNOb3RGb3VuZEVycm9yXG4gICAgfCBLTVNPcHRJblJlcXVpcmVkRXJyb3JcbiAgICB8IEtNU1Rocm90dGxpbmdFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFBsYXRmb3JtQXBwbGljYXRpb25EaXNhYmxlZEVycm9yXG4gICAgfCBUb29NYW55RW50cmllc0luQmF0Y2hSZXF1ZXN0RXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvcixcbiAgICBQdWJsaXNoQmF0Y2hDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZH1cbiAgICovXG4gIHB1dERhdGFQcm90ZWN0aW9uUG9saWN5KFxuICAgIGFyZ3M6IFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlUGVybWlzc2lvbihcbiAgICBhcmdzOiBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgc2V0RW5kcG9pbnRBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBzZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlcyhcbiAgICBhcmdzOiBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgU2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgc2V0U01TQXR0cmlidXRlcyhcbiAgICBhcmdzOiBTZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3IsXG4gICAgU2V0U01TQXR0cmlidXRlc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBzZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgRmlsdGVyUG9saWN5TGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHNldFRvcGljQXR0cmlidXRlcyhcbiAgICBhcmdzOiBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN1YnNjcmliZUNvbW1hbmR9XG4gICAqL1xuICBzdWJzY3JpYmUoXG4gICAgYXJnczogU3Vic2NyaWJlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEZpbHRlclBvbGljeUxpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgU3Vic2NyaXB0aW9uTGltaXRFeGNlZWRlZEVycm9yLFxuICAgIFN1YnNjcmliZUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdGFnUmVzb3VyY2UoXG4gICAgYXJnczogVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQ29uY3VycmVudEFjY2Vzc0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU3RhbGVUYWdFcnJvclxuICAgIHwgVGFnTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBUYWdQb2xpY3lFcnJvcixcbiAgICBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVW5zdWJzY3JpYmVDb21tYW5kfVxuICAgKi9cbiAgdW5zdWJzY3JpYmUoXG4gICAgYXJnczogVW5zdWJzY3JpYmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBVbnN1YnNjcmliZUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVW50YWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB1bnRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQ29uY3VycmVudEFjY2Vzc0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU3RhbGVUYWdFcnJvclxuICAgIHwgVGFnTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBUYWdQb2xpY3lFcnJvcixcbiAgICBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kfVxuICAgKi9cbiAgdmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyKFxuICAgIGFyZ3M6IFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgICB8IFZlcmlmaWNhdGlvbkVycm9yLFxuICAgIFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRPdXRwdXRcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjb25zdCBTTlNTZXJ2aWNlID0gQ29udGV4dC5UYWc8U05TU2VydmljZT4oXG4gIFN5bWJvbC5mb3IoXCJAZWZmZWN0LWF3cy9jbGllbnQtc25zL1NOU1NlcnZpY2VcIiksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZVNOU1NlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhTTlNDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlYWRvbmx5UmVjb3JkLnRvRW50cmllcyhjb21tYW5kcykucmVkdWNlKChhY2MsIFtjb21tYW5kXSkgPT4ge1xuICAgIGNvbnN0IENvbW1hbmRDdG9yID0gY29tbWFuZHNbY29tbWFuZF0gYXMgYW55O1xuICAgIGNvbnN0IG1ldGhvZEltcGwgPSAoYXJnczogYW55LCBvcHRpb25zOiBhbnkpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKCkgPT4gY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCBvcHRpb25zID8/IHt9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTTlNTZXJ2aWNlRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBTZXJ2aWNlRXhjZXB0aW9uID0gRGF0YS50YWdnZWQ8XG4gICAgICAgICAgICAgIFRhZ2dlZEV4Y2VwdGlvbjxTTlNTZXJ2aWNlRXhjZXB0aW9uPlxuICAgICAgICAgICAgPihlLm5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gU2VydmljZUV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFNka0Vycm9yKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbmFtZTogXCJTZGtFcnJvclwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBTTlNTZXJ2aWNlO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlU05TU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KFNOU1NlcnZpY2UsIG1ha2VTTlNTZXJ2aWNlKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFNOU1NlcnZpY2VMYXllciA9IEJhc2VTTlNTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShTTlNDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0U05TU2VydmljZUxheWVyID0gU05TU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdFNOU0NsaWVudENvbmZpZ0xheWVyKSxcbik7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIERhbmdlciBab25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQHNpbmNlIDAuMS4wXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgQmFzZVNOU1NlcnZpY2VFZmZlY3QgPSBtYWtlU05TU2VydmljZTtcblxuLyoqXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBTTlNTZXJ2aWNlRWZmZWN0ID0gQmFzZVNOU1NlcnZpY2VFZmZlY3QucGlwZShcbiAgRWZmZWN0LnByb3ZpZGUoU05TQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAwLjEuMFxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRTTlNTZXJ2aWNlRWZmZWN0ID0gQmFzZVNOU1NlcnZpY2VFZmZlY3QucGlwZShcbiAgRWZmZWN0LnByb3ZpZGUoRGVmYXVsdFNOU0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcbiJdfQ==
|
package/lib/esm/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export * from "./Context";
|
|
2
1
|
export * from "./Errors";
|
|
3
|
-
export * from "./
|
|
4
|
-
|
|
2
|
+
export * from "./SNSClientInstance";
|
|
3
|
+
export * from "./SNSClientInstanceConfig";
|
|
4
|
+
export * from "./SNSService";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vRXJyb3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9TTlNDbGllbnRJbnN0YW5jZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vU05TQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1NOU1NlcnZpY2VcIjtcbiJdfQ==
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -14,7 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./Context"), exports);
|
|
18
17
|
__exportStar(require("./Errors"), exports);
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
|
|
18
|
+
__exportStar(require("./SNSClientInstance"), exports);
|
|
19
|
+
__exportStar(require("./SNSClientInstanceConfig"), exports);
|
|
20
|
+
__exportStar(require("./SNSService"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QixzREFBb0M7QUFDcEMsNERBQTBDO0FBQzFDLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0Vycm9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vU05TQ2xpZW50SW5zdGFuY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1NOU0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9TTlNTZXJ2aWNlXCI7XG4iXX0=
|
package/package.json
CHANGED
|
@@ -6,27 +6,28 @@
|
|
|
6
6
|
"organization": false
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
|
+
"@effect/docgen": "^0.3.8",
|
|
9
10
|
"@types/jest": "^29.5.5",
|
|
10
|
-
"@types/node": "^
|
|
11
|
+
"@types/node": "^18",
|
|
11
12
|
"@typescript-eslint/eslint-plugin": "^6",
|
|
12
13
|
"@typescript-eslint/parser": "^6",
|
|
13
14
|
"aws-sdk-client-mock": "^3.0.0",
|
|
14
15
|
"aws-sdk-client-mock-jest": "^3.0.0",
|
|
15
|
-
"
|
|
16
|
+
"constructs": "^10.0.0",
|
|
17
|
+
"effect": "2.0.1",
|
|
16
18
|
"eslint": "^8",
|
|
17
19
|
"eslint-config-prettier": "^9.0.0",
|
|
18
|
-
"eslint-import-resolver-node": "^0.3.9",
|
|
19
20
|
"eslint-import-resolver-typescript": "^3.6.1",
|
|
20
21
|
"eslint-plugin-import": "^2.28.1",
|
|
21
22
|
"eslint-plugin-prettier": "^5.0.0",
|
|
22
23
|
"jest": "^29.7.0",
|
|
23
24
|
"prettier": "^3.0.3",
|
|
24
|
-
"projen": "^0.
|
|
25
|
+
"projen": "^0.79.6",
|
|
25
26
|
"ts-jest": "^29.1.1",
|
|
26
27
|
"typescript": "^5.2.2"
|
|
27
28
|
},
|
|
28
29
|
"peerDependencies": {
|
|
29
|
-
"effect": "^2.0.
|
|
30
|
+
"effect": "^2.0.1"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
33
|
"@aws-sdk/client-sns": "^3",
|
|
@@ -34,12 +35,14 @@
|
|
|
34
35
|
},
|
|
35
36
|
"main": "lib/index.js",
|
|
36
37
|
"license": "MIT",
|
|
38
|
+
"homepage": "https://floydspace.github.io/effect-aws",
|
|
37
39
|
"publishConfig": {
|
|
38
40
|
"access": "public"
|
|
39
41
|
},
|
|
40
|
-
"version": "0.
|
|
42
|
+
"version": "1.0.1",
|
|
41
43
|
"types": "lib/index.d.ts",
|
|
42
44
|
"module": "lib/esm/index.js",
|
|
45
|
+
"sideEffects": [],
|
|
43
46
|
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".",
|
|
44
47
|
"scripts": {
|
|
45
48
|
"build": "npx projen build",
|
|
@@ -51,6 +54,7 @@
|
|
|
51
54
|
"pre-compile": "npx projen pre-compile",
|
|
52
55
|
"test": "npx projen test",
|
|
53
56
|
"test:watch": "npx projen test:watch",
|
|
54
|
-
"watch": "npx projen watch"
|
|
57
|
+
"watch": "npx projen watch",
|
|
58
|
+
"docgen": "docgen"
|
|
55
59
|
}
|
|
56
60
|
}
|
package/.gitattributes
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
|
|
2
|
-
|
|
3
|
-
/./tsconfig.esm.json linguist-generated
|
|
4
|
-
/.eslintrc.json linguist-generated
|
|
5
|
-
/.gitattributes linguist-generated
|
|
6
|
-
/.gitignore linguist-generated
|
|
7
|
-
/.npmignore linguist-generated
|
|
8
|
-
/.npmrc linguist-generated
|
|
9
|
-
/.prettierignore linguist-generated
|
|
10
|
-
/.prettierrc.json linguist-generated
|
|
11
|
-
/.projen/** linguist-generated
|
|
12
|
-
/.projen/deps.json linguist-generated
|
|
13
|
-
/.projen/files.json linguist-generated
|
|
14
|
-
/.projen/tasks.json linguist-generated
|
|
15
|
-
/jest.config.json linguist-generated
|
|
16
|
-
/LICENSE linguist-generated
|
|
17
|
-
/package.json linguist-generated
|
|
18
|
-
/pnpm-lock.yaml linguist-generated
|
|
19
|
-
/project.json linguist-generated
|
|
20
|
-
/tsconfig.dev.json linguist-generated
|
|
21
|
-
/tsconfig.json linguist-generated
|
package/.prettierignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
|
package/.prettierrc.json
DELETED
package/lib/Context.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { SNSClient, SNSClientConfig } from "@aws-sdk/client-sns";
|
|
2
|
-
import * as Context from "effect/Context";
|
|
3
|
-
import * as Data from "effect/Data";
|
|
4
|
-
import * as Layer from "effect/Layer";
|
|
5
|
-
declare const SNSClientOptions_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<A> & {
|
|
6
|
-
readonly _tag: "SNSClientOptions";
|
|
7
|
-
}>;
|
|
8
|
-
export declare class SNSClientOptions extends SNSClientOptions_base<SNSClientConfig> {
|
|
9
|
-
}
|
|
10
|
-
export declare const SNSClientConfigTag: Context.Tag<SNSClientOptions, SNSClientOptions>;
|
|
11
|
-
export declare const DefaultSNSClientConfigLayer: Layer.Layer<never, never, SNSClientOptions>;
|
|
12
|
-
export declare const SNSClientInstanceTag: Context.Tag<SNSClient, SNSClient>;
|
|
13
|
-
export declare const SNSClientInstanceLayer: Layer.Layer<SNSClientOptions, never, SNSClient>;
|
|
14
|
-
export declare const DefaultSNSClientInstanceLayer: Layer.Layer<never, never, SNSClient>;
|
|
15
|
-
export {};
|
package/lib/Context.js
DELETED
|
@@ -1,49 +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.DefaultSNSClientInstanceLayer = exports.SNSClientInstanceLayer = exports.SNSClientInstanceTag = exports.DefaultSNSClientConfigLayer = exports.SNSClientConfigTag = exports.SNSClientOptions = void 0;
|
|
27
|
-
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
28
|
-
const Context = __importStar(require("effect/Context"));
|
|
29
|
-
const Data = __importStar(require("effect/Data"));
|
|
30
|
-
const Effect = __importStar(require("effect/Effect"));
|
|
31
|
-
const Layer = __importStar(require("effect/Layer"));
|
|
32
|
-
const Runtime = __importStar(require("effect/Runtime"));
|
|
33
|
-
class SNSClientOptions extends Data.TaggedClass("SNSClientOptions") {
|
|
34
|
-
}
|
|
35
|
-
exports.SNSClientOptions = SNSClientOptions;
|
|
36
|
-
exports.SNSClientConfigTag = Context.Tag("@effect-aws/SNSClient/Config");
|
|
37
|
-
exports.DefaultSNSClientConfigLayer = Layer.effect(exports.SNSClientConfigTag, Effect.runtime().pipe(Effect.map((runtime) => new SNSClientOptions({
|
|
38
|
-
logger: {
|
|
39
|
-
info: (m) => Effect.logInfo(m).pipe(Runtime.runSync(runtime)),
|
|
40
|
-
warn: (m) => Effect.logWarning(m).pipe(Runtime.runSync(runtime)),
|
|
41
|
-
error: (m) => Effect.logError(m).pipe(Runtime.runSync(runtime)),
|
|
42
|
-
debug: (m) => Effect.logDebug(m).pipe(Runtime.runSync(runtime)),
|
|
43
|
-
trace: (m) => Effect.logTrace(m).pipe(Runtime.runSync(runtime)),
|
|
44
|
-
},
|
|
45
|
-
}))));
|
|
46
|
-
exports.SNSClientInstanceTag = Context.Tag("@effect-aws/SNSClient/Instance");
|
|
47
|
-
exports.SNSClientInstanceLayer = Layer.effect(exports.SNSClientInstanceTag, exports.SNSClientConfigTag.pipe(Effect.map((config) => new client_sns_1.SNSClient(config))));
|
|
48
|
-
exports.DefaultSNSClientInstanceLayer = exports.SNSClientInstanceLayer.pipe(Layer.provide(exports.DefaultSNSClientConfigLayer));
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Db250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQWlFO0FBQ2pFLHdEQUEwQztBQUMxQyxrREFBb0M7QUFDcEMsc0RBQXdDO0FBQ3hDLG9EQUFzQztBQUN0Qyx3REFBMEM7QUFFMUMsTUFBYSxnQkFBaUIsU0FBUSxJQUFJLENBQUMsV0FBVyxDQUNwRCxrQkFBa0IsQ0FDRjtDQUFHO0FBRnJCLDRDQUVxQjtBQUVSLFFBQUEsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FDM0MsOEJBQThCLENBQy9CLENBQUM7QUFFVyxRQUFBLDJCQUEyQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ3JELDBCQUFrQixFQUNsQixNQUFNLENBQUMsT0FBTyxFQUFTLENBQUMsSUFBSSxDQUMxQixNQUFNLENBQUMsR0FBRyxDQUNSLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDVixJQUFJLGdCQUFnQixDQUFDO0lBQ25CLE1BQU0sRUFBRTtRQUNOLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDaEU7Q0FDRixDQUFDLENBQ0wsQ0FDRixDQUNGLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQzdDLGdDQUFnQyxDQUNqQyxDQUFDO0FBRVcsUUFBQSxzQkFBc0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNoRCw0QkFBb0IsRUFDcEIsMEJBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksc0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7QUFFVyxRQUFBLDZCQUE2QixHQUFHLDhCQUFzQixDQUFDLElBQUksQ0FDdEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQ0FBMkIsQ0FBQyxDQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05TQ2xpZW50LCBTTlNDbGllbnRDb25maWcgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNuc1wiO1xuaW1wb3J0ICogYXMgQ29udGV4dCBmcm9tIFwiZWZmZWN0L0NvbnRleHRcIjtcbmltcG9ydCAqIGFzIERhdGEgZnJvbSBcImVmZmVjdC9EYXRhXCI7XG5pbXBvcnQgKiBhcyBFZmZlY3QgZnJvbSBcImVmZmVjdC9FZmZlY3RcIjtcbmltcG9ydCAqIGFzIExheWVyIGZyb20gXCJlZmZlY3QvTGF5ZXJcIjtcbmltcG9ydCAqIGFzIFJ1bnRpbWUgZnJvbSBcImVmZmVjdC9SdW50aW1lXCI7XG5cbmV4cG9ydCBjbGFzcyBTTlNDbGllbnRPcHRpb25zIGV4dGVuZHMgRGF0YS5UYWdnZWRDbGFzcyhcbiAgXCJTTlNDbGllbnRPcHRpb25zXCIsXG4pPFNOU0NsaWVudENvbmZpZz4ge31cblxuZXhwb3J0IGNvbnN0IFNOU0NsaWVudENvbmZpZ1RhZyA9IENvbnRleHQuVGFnPFNOU0NsaWVudE9wdGlvbnM+KFxuICBcIkBlZmZlY3QtYXdzL1NOU0NsaWVudC9Db25maWdcIixcbik7XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0U05TQ2xpZW50Q29uZmlnTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIFNOU0NsaWVudENvbmZpZ1RhZyxcbiAgRWZmZWN0LnJ1bnRpbWU8bmV2ZXI+KCkucGlwZShcbiAgICBFZmZlY3QubWFwKFxuICAgICAgKHJ1bnRpbWUpID0+XG4gICAgICAgIG5ldyBTTlNDbGllbnRPcHRpb25zKHtcbiAgICAgICAgICBsb2dnZXI6IHtcbiAgICAgICAgICAgIGluZm86IChtKSA9PiBFZmZlY3QubG9nSW5mbyhtKS5waXBlKFJ1bnRpbWUucnVuU3luYyhydW50aW1lKSksXG4gICAgICAgICAgICB3YXJuOiAobSkgPT4gRWZmZWN0LmxvZ1dhcm5pbmcobSkucGlwZShSdW50aW1lLnJ1blN5bmMocnVudGltZSkpLFxuICAgICAgICAgICAgZXJyb3I6IChtKSA9PiBFZmZlY3QubG9nRXJyb3IobSkucGlwZShSdW50aW1lLnJ1blN5bmMocnVudGltZSkpLFxuICAgICAgICAgICAgZGVidWc6IChtKSA9PiBFZmZlY3QubG9nRGVidWcobSkucGlwZShSdW50aW1lLnJ1blN5bmMocnVudGltZSkpLFxuICAgICAgICAgICAgdHJhY2U6IChtKSA9PiBFZmZlY3QubG9nVHJhY2UobSkucGlwZShSdW50aW1lLnJ1blN5bmMocnVudGltZSkpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICksXG4gICksXG4pO1xuXG5leHBvcnQgY29uc3QgU05TQ2xpZW50SW5zdGFuY2VUYWcgPSBDb250ZXh0LlRhZzxTTlNDbGllbnQ+KFxuICBcIkBlZmZlY3QtYXdzL1NOU0NsaWVudC9JbnN0YW5jZVwiLFxuKTtcblxuZXhwb3J0IGNvbnN0IFNOU0NsaWVudEluc3RhbmNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIFNOU0NsaWVudEluc3RhbmNlVGFnLFxuICBTTlNDbGllbnRDb25maWdUYWcucGlwZShFZmZlY3QubWFwKChjb25maWcpID0+IG5ldyBTTlNDbGllbnQoY29uZmlnKSkpLFxuKTtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRTTlNDbGllbnRJbnN0YW5jZUxheWVyID0gU05TQ2xpZW50SW5zdGFuY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKERlZmF1bHRTTlNDbGllbnRDb25maWdMYXllciksXG4pO1xuIl19
|
package/lib/SNS.js
DELETED
|
@@ -1,109 +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.DefaultSNSServiceEffect = exports.SNSServiceEffect = exports.BaseSNSServiceEffect = void 0;
|
|
27
|
-
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
28
|
-
const Data = __importStar(require("effect/Data"));
|
|
29
|
-
const Effect = __importStar(require("effect/Effect"));
|
|
30
|
-
const RR = __importStar(require("effect/ReadonlyRecord"));
|
|
31
|
-
const Context_1 = require("./Context");
|
|
32
|
-
const Errors_1 = require("./Errors");
|
|
33
|
-
const commands = {
|
|
34
|
-
AddPermissionCommand: client_sns_1.AddPermissionCommand,
|
|
35
|
-
CheckIfPhoneNumberIsOptedOutCommand: client_sns_1.CheckIfPhoneNumberIsOptedOutCommand,
|
|
36
|
-
ConfirmSubscriptionCommand: client_sns_1.ConfirmSubscriptionCommand,
|
|
37
|
-
CreatePlatformApplicationCommand: client_sns_1.CreatePlatformApplicationCommand,
|
|
38
|
-
CreatePlatformEndpointCommand: client_sns_1.CreatePlatformEndpointCommand,
|
|
39
|
-
CreateSMSSandboxPhoneNumberCommand: client_sns_1.CreateSMSSandboxPhoneNumberCommand,
|
|
40
|
-
CreateTopicCommand: client_sns_1.CreateTopicCommand,
|
|
41
|
-
DeleteEndpointCommand: client_sns_1.DeleteEndpointCommand,
|
|
42
|
-
DeletePlatformApplicationCommand: client_sns_1.DeletePlatformApplicationCommand,
|
|
43
|
-
DeleteSMSSandboxPhoneNumberCommand: client_sns_1.DeleteSMSSandboxPhoneNumberCommand,
|
|
44
|
-
DeleteTopicCommand: client_sns_1.DeleteTopicCommand,
|
|
45
|
-
GetDataProtectionPolicyCommand: client_sns_1.GetDataProtectionPolicyCommand,
|
|
46
|
-
GetEndpointAttributesCommand: client_sns_1.GetEndpointAttributesCommand,
|
|
47
|
-
GetPlatformApplicationAttributesCommand: client_sns_1.GetPlatformApplicationAttributesCommand,
|
|
48
|
-
GetSMSAttributesCommand: client_sns_1.GetSMSAttributesCommand,
|
|
49
|
-
GetSMSSandboxAccountStatusCommand: client_sns_1.GetSMSSandboxAccountStatusCommand,
|
|
50
|
-
GetSubscriptionAttributesCommand: client_sns_1.GetSubscriptionAttributesCommand,
|
|
51
|
-
GetTopicAttributesCommand: client_sns_1.GetTopicAttributesCommand,
|
|
52
|
-
ListEndpointsByPlatformApplicationCommand: client_sns_1.ListEndpointsByPlatformApplicationCommand,
|
|
53
|
-
ListOriginationNumbersCommand: client_sns_1.ListOriginationNumbersCommand,
|
|
54
|
-
ListPhoneNumbersOptedOutCommand: client_sns_1.ListPhoneNumbersOptedOutCommand,
|
|
55
|
-
ListPlatformApplicationsCommand: client_sns_1.ListPlatformApplicationsCommand,
|
|
56
|
-
ListSMSSandboxPhoneNumbersCommand: client_sns_1.ListSMSSandboxPhoneNumbersCommand,
|
|
57
|
-
ListSubscriptionsCommand: client_sns_1.ListSubscriptionsCommand,
|
|
58
|
-
ListSubscriptionsByTopicCommand: client_sns_1.ListSubscriptionsByTopicCommand,
|
|
59
|
-
ListTagsForResourceCommand: client_sns_1.ListTagsForResourceCommand,
|
|
60
|
-
ListTopicsCommand: client_sns_1.ListTopicsCommand,
|
|
61
|
-
OptInPhoneNumberCommand: client_sns_1.OptInPhoneNumberCommand,
|
|
62
|
-
PublishCommand: client_sns_1.PublishCommand,
|
|
63
|
-
PublishBatchCommand: client_sns_1.PublishBatchCommand,
|
|
64
|
-
PutDataProtectionPolicyCommand: client_sns_1.PutDataProtectionPolicyCommand,
|
|
65
|
-
RemovePermissionCommand: client_sns_1.RemovePermissionCommand,
|
|
66
|
-
SetEndpointAttributesCommand: client_sns_1.SetEndpointAttributesCommand,
|
|
67
|
-
SetPlatformApplicationAttributesCommand: client_sns_1.SetPlatformApplicationAttributesCommand,
|
|
68
|
-
SetSMSAttributesCommand: client_sns_1.SetSMSAttributesCommand,
|
|
69
|
-
SetSubscriptionAttributesCommand: client_sns_1.SetSubscriptionAttributesCommand,
|
|
70
|
-
SetTopicAttributesCommand: client_sns_1.SetTopicAttributesCommand,
|
|
71
|
-
SubscribeCommand: client_sns_1.SubscribeCommand,
|
|
72
|
-
TagResourceCommand: client_sns_1.TagResourceCommand,
|
|
73
|
-
UnsubscribeCommand: client_sns_1.UnsubscribeCommand,
|
|
74
|
-
UntagResourceCommand: client_sns_1.UntagResourceCommand,
|
|
75
|
-
VerifySMSSandboxPhoneNumberCommand: client_sns_1.VerifySMSSandboxPhoneNumberCommand,
|
|
76
|
-
};
|
|
77
|
-
exports.BaseSNSServiceEffect = Effect.gen(function* (_) {
|
|
78
|
-
const client = yield* _(Context_1.SNSClientInstanceTag);
|
|
79
|
-
return RR.toEntries(commands).reduce((acc, [command]) => {
|
|
80
|
-
const CommandCtor = commands[command];
|
|
81
|
-
const methodImpl = (args, options) => Effect.tryPromise({
|
|
82
|
-
try: () => client.send(new CommandCtor(args), options !== null && options !== void 0 ? options : {}),
|
|
83
|
-
catch: (e) => {
|
|
84
|
-
if (e instanceof client_sns_1.SNSServiceException) {
|
|
85
|
-
const ServiceException = Data.tagged(e.name);
|
|
86
|
-
return ServiceException({
|
|
87
|
-
...e,
|
|
88
|
-
message: e.message,
|
|
89
|
-
stack: e.stack,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
if (e instanceof Error) {
|
|
93
|
-
return (0, Errors_1.SdkError)({
|
|
94
|
-
...e,
|
|
95
|
-
name: "SdkError",
|
|
96
|
-
message: e.message,
|
|
97
|
-
stack: e.stack,
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
throw e;
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
|
|
104
|
-
return { ...acc, [methodName]: methodImpl };
|
|
105
|
-
}, {});
|
|
106
|
-
});
|
|
107
|
-
exports.SNSServiceEffect = exports.BaseSNSServiceEffect.pipe(Effect.provide(Context_1.SNSClientInstanceLayer));
|
|
108
|
-
exports.DefaultSNSServiceEffect = exports.BaseSNSServiceEffect.pipe(Effect.provide(Context_1.DefaultSNSClientInstanceLayer));
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU05TLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NOUy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQWdJNkI7QUFFN0Isa0RBQW9DO0FBQ3BDLHNEQUF3QztBQUN4QywwREFBNEM7QUFDNUMsdUNBSW1CO0FBQ25CLHFDQW1Da0I7QUFFbEIsTUFBTSxRQUFRLEdBQUc7SUFDZixvQkFBb0IsRUFBcEIsaUNBQW9CO0lBQ3BCLG1DQUFtQyxFQUFuQyxnREFBbUM7SUFDbkMsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLDZCQUE2QixFQUE3QiwwQ0FBNkI7SUFDN0Isa0NBQWtDLEVBQWxDLCtDQUFrQztJQUNsQyxrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLHFCQUFxQixFQUFyQixrQ0FBcUI7SUFDckIsZ0NBQWdDLEVBQWhDLDZDQUFnQztJQUNoQyxrQ0FBa0MsRUFBbEMsK0NBQWtDO0lBQ2xDLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5Qiw0QkFBNEIsRUFBNUIseUNBQTRCO0lBQzVCLHVDQUF1QyxFQUF2QyxvREFBdUM7SUFDdkMsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2QixpQ0FBaUMsRUFBakMsOENBQWlDO0lBQ2pDLGdDQUFnQyxFQUFoQyw2Q0FBZ0M7SUFDaEMseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6Qix5Q0FBeUMsRUFBekMsc0RBQXlDO0lBQ3pDLDZCQUE2QixFQUE3QiwwQ0FBNkI7SUFDN0IsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQiwrQkFBK0IsRUFBL0IsNENBQStCO0lBQy9CLGlDQUFpQyxFQUFqQyw4Q0FBaUM7SUFDakMsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QiwrQkFBK0IsRUFBL0IsNENBQStCO0lBQy9CLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsaUJBQWlCLEVBQWpCLDhCQUFpQjtJQUNqQix1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLGNBQWMsRUFBZCwyQkFBYztJQUNkLG1CQUFtQixFQUFuQixnQ0FBbUI7SUFDbkIsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5Qix1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLDRCQUE0QixFQUE1Qix5Q0FBNEI7SUFDNUIsdUNBQXVDLEVBQXZDLG9EQUF1QztJQUN2Qyx1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLGdDQUFnQyxFQUFoQyw2Q0FBZ0M7SUFDaEMseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6QixnQkFBZ0IsRUFBaEIsNkJBQWdCO0lBQ2hCLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQixvQkFBb0IsRUFBcEIsaUNBQW9CO0lBQ3BCLGtDQUFrQyxFQUFsQywrQ0FBa0M7Q0FDbkMsQ0FBQztBQXFzQlcsUUFBQSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDekQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUFvQixDQUFDLENBQUM7SUFFOUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7UUFDdEQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBUyxFQUFFLE9BQVksRUFBRSxFQUFFLENBQzdDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDaEIsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksRUFBRSxDQUFDO1lBQzVELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxZQUFZLGdDQUFtQixFQUFFO29CQUNwQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBRWxDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFVixPQUFPLGdCQUFnQixDQUFDO3dCQUN0QixHQUFHLENBQUM7d0JBQ0osT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO3dCQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtvQkFDdEIsT0FBTyxJQUFBLGlCQUFRLEVBQUM7d0JBQ2QsR0FBRyxDQUFDO3dCQUNKLElBQUksRUFBRSxVQUFVO3dCQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87d0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztxQkFDZixDQUFDLENBQUM7aUJBQ0o7Z0JBQ0QsTUFBTSxDQUFDLENBQUM7WUFDVixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0wsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDdEUsVUFBVSxFQUNWLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBZSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRVUsUUFBQSxnQkFBZ0IsR0FBRyw0QkFBb0IsQ0FBQyxJQUFJLENBQ3ZELE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0NBQXNCLENBQUMsQ0FDdkMsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQUcsNEJBQW9CLENBQUMsSUFBSSxDQUM5RCxNQUFNLENBQUMsT0FBTyxDQUFDLHVDQUE2QixDQUFDLENBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZGRQZXJtaXNzaW9uQ29tbWFuZCxcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIENoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXRDb21tYW5kLFxuICBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZElucHV0LFxuICBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZE91dHB1dCxcbiAgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVBsYXRmb3JtRW5kcG9pbnRDb21tYW5kLFxuICBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZElucHV0LFxuICBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVUb3BpY0NvbW1hbmQsXG4gIENyZWF0ZVRvcGljQ29tbWFuZElucHV0LFxuICBDcmVhdGVUb3BpY0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUVuZHBvaW50Q29tbWFuZCxcbiAgRGVsZXRlRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIERlbGV0ZUVuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIERlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kLFxuICBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gIERlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVRvcGljQ29tbWFuZCxcbiAgRGVsZXRlVG9waWNDb21tYW5kSW5wdXQsXG4gIERlbGV0ZVRvcGljQ29tbWFuZE91dHB1dCxcbiAgR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kLFxuICBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIEdldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIEdldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0U01TQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFNNU0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIEdldFNNU0F0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBHZXRTTVNTYW5kYm94QWNjb3VudFN0YXR1c0NvbW1hbmQsXG4gIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZElucHV0LFxuICBHZXRTTVNTYW5kYm94QWNjb3VudFN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gIEdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIExpc3RPcmlnaW5hdGlvbk51bWJlcnNDb21tYW5kLFxuICBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZElucHV0LFxuICBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZCxcbiAgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZElucHV0LFxuICBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kT3V0cHV0LFxuICBMaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnNDb21tYW5kLFxuICBMaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnNDb21tYW5kSW5wdXQsXG4gIExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RTTVNTYW5kYm94UGhvbmVOdW1iZXJzQ29tbWFuZCxcbiAgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kSW5wdXQsXG4gIExpc3RTTVNTYW5kYm94UGhvbmVOdW1iZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZElucHV0LFxuICBMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNDb21tYW5kT3V0cHV0LFxuICBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmQsXG4gIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZElucHV0LFxuICBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kLFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRvcGljc0NvbW1hbmQsXG4gIExpc3RUb3BpY3NDb21tYW5kSW5wdXQsXG4gIExpc3RUb3BpY3NDb21tYW5kT3V0cHV0LFxuICBPcHRJblBob25lTnVtYmVyQ29tbWFuZCxcbiAgT3B0SW5QaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgT3B0SW5QaG9uZU51bWJlckNvbW1hbmRPdXRwdXQsXG4gIFB1Ymxpc2hCYXRjaENvbW1hbmQsXG4gIFB1Ymxpc2hCYXRjaENvbW1hbmRJbnB1dCxcbiAgUHVibGlzaEJhdGNoQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaENvbW1hbmQsXG4gIFB1Ymxpc2hDb21tYW5kSW5wdXQsXG4gIFB1Ymxpc2hDb21tYW5kT3V0cHV0LFxuICBQdXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmQsXG4gIFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZElucHV0LFxuICBQdXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kLFxuICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgU05TU2VydmljZUV4Y2VwdGlvbixcbiAgU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBTZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIFNldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIFNldFRvcGljQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIFN1YnNjcmliZUNvbW1hbmQsXG4gIFN1YnNjcmliZUNvbW1hbmRJbnB1dCxcbiAgU3Vic2NyaWJlQ29tbWFuZE91dHB1dCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnN1YnNjcmliZUNvbW1hbmQsXG4gIFVuc3Vic2NyaWJlQ29tbWFuZElucHV0LFxuICBVbnN1YnNjcmliZUNvbW1hbmRPdXRwdXQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICBWZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNuc1wiO1xuaW1wb3J0IHsgSHR0cEhhbmRsZXJPcHRpb25zIGFzIF9fSHR0cEhhbmRsZXJPcHRpb25zIH0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgKiBhcyBEYXRhIGZyb20gXCJlZmZlY3QvRGF0YVwiO1xuaW1wb3J0ICogYXMgRWZmZWN0IGZyb20gXCJlZmZlY3QvRWZmZWN0XCI7XG5pbXBvcnQgKiBhcyBSUiBmcm9tIFwiZWZmZWN0L1JlYWRvbmx5UmVjb3JkXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U05TQ2xpZW50SW5zdGFuY2VMYXllcixcbiAgU05TQ2xpZW50SW5zdGFuY2VMYXllcixcbiAgU05TQ2xpZW50SW5zdGFuY2VUYWcsXG59IGZyb20gXCIuL0NvbnRleHRcIjtcbmltcG9ydCB7XG4gIEF1dGhvcml6YXRpb25FcnJvcixcbiAgQmF0Y2hFbnRyeUlkc05vdERpc3RpbmN0RXJyb3IsXG4gIEJhdGNoUmVxdWVzdFRvb0xvbmdFcnJvcixcbiAgQ29uY3VycmVudEFjY2Vzc0Vycm9yLFxuICBFbXB0eUJhdGNoUmVxdWVzdEVycm9yLFxuICBFbmRwb2ludERpc2FibGVkRXJyb3IsXG4gIEZpbHRlclBvbGljeUxpbWl0RXhjZWVkZWRFcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgSW52YWxpZEJhdGNoRW50cnlJZEVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyRXJyb3IsXG4gIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yLFxuICBJbnZhbGlkU2VjdXJpdHlFcnJvcixcbiAgS01TQWNjZXNzRGVuaWVkRXJyb3IsXG4gIEtNU0Rpc2FibGVkRXJyb3IsXG4gIEtNU0ludmFsaWRTdGF0ZUVycm9yLFxuICBLTVNOb3RGb3VuZEVycm9yLFxuICBLTVNPcHRJblJlcXVpcmVkRXJyb3IsXG4gIEtNU1Rocm90dGxpbmdFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgT3B0ZWRPdXRFcnJvcixcbiAgUGxhdGZvcm1BcHBsaWNhdGlvbkRpc2FibGVkRXJyb3IsXG4gIFJlc291cmNlTm90Rm91bmRFcnJvcixcbiAgU2RrRXJyb3IsXG4gIFN0YWxlVGFnRXJyb3IsXG4gIFN1YnNjcmlwdGlvbkxpbWl0RXhjZWVkZWRFcnJvcixcbiAgVGFnTGltaXRFeGNlZWRlZEVycm9yLFxuICBUYWdQb2xpY3lFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxuICBUaHJvdHRsZWRFcnJvcixcbiAgVG9vTWFueUVudHJpZXNJbkJhdGNoUmVxdWVzdEVycm9yLFxuICBUb3BpY0xpbWl0RXhjZWVkZWRFcnJvcixcbiAgVXNlckVycm9yLFxuICBWYWxpZGF0aW9uRXJyb3IsXG4gIFZlcmlmaWNhdGlvbkVycm9yLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcblxuY29uc3QgY29tbWFuZHMgPSB7XG4gIEFkZFBlcm1pc3Npb25Db21tYW5kLFxuICBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZCxcbiAgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIENyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kLFxuICBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZCxcbiAgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgQ3JlYXRlVG9waWNDb21tYW5kLFxuICBEZWxldGVFbmRwb2ludENvbW1hbmQsXG4gIERlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kLFxuICBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kLFxuICBEZWxldGVUb3BpY0NvbW1hbmQsXG4gIEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZCxcbiAgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kLFxuICBHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIExpc3RPcmlnaW5hdGlvbk51bWJlcnNDb21tYW5kLFxuICBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kLFxuICBMaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnNDb21tYW5kLFxuICBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmQsXG4gIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQsXG4gIExpc3RUb3BpY3NDb21tYW5kLFxuICBPcHRJblBob25lTnVtYmVyQ29tbWFuZCxcbiAgUHVibGlzaENvbW1hbmQsXG4gIFB1Ymxpc2hCYXRjaENvbW1hbmQsXG4gIFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmQsXG4gIFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0U01TQXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kLFxuICBTdWJzY3JpYmVDb21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVuc3Vic2NyaWJlQ29tbWFuZCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmQsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNOU1NlcnZpY2Uge1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICBhZGRQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yLFxuICAgIEFkZFBlcm1pc3Npb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXRDb21tYW5kfVxuICAgKi9cbiAgY2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dChcbiAgICBhcmdzOiBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3IsXG4gICAgQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjb25maXJtU3Vic2NyaXB0aW9uKFxuICAgIGFyZ3M6IENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgRmlsdGVyUG9saWN5TGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFN1YnNjcmlwdGlvbkxpbWl0RXhjZWVkZWRFcnJvcixcbiAgICBDb25maXJtU3Vic2NyaXB0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb24oXG4gICAgYXJnczogQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICAgIENyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVBsYXRmb3JtRW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlUGxhdGZvcm1FbmRwb2ludChcbiAgICBhcmdzOiBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyKFxuICAgIGFyZ3M6IENyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE9wdGVkT3V0RXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gICAgfCBVc2VyRXJyb3IsXG4gICAgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVUb3BpY0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVUb3BpYyhcbiAgICBhcmdzOiBDcmVhdGVUb3BpY0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBDb25jdXJyZW50QWNjZXNzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IFN0YWxlVGFnRXJyb3JcbiAgICB8IFRhZ0xpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgVGFnUG9saWN5RXJyb3JcbiAgICB8IFRvcGljTGltaXRFeGNlZWRlZEVycm9yLFxuICAgIENyZWF0ZVRvcGljQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVFbmRwb2ludChcbiAgICBhcmdzOiBEZWxldGVFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICAgIERlbGV0ZUVuZHBvaW50Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb24oXG4gICAgYXJnczogRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICAgIERlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXIoXG4gICAgYXJnczogRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICAgIHwgVXNlckVycm9yLFxuICAgIERlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVG9waWNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVG9waWMoXG4gICAgYXJnczogRGVsZXRlVG9waWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQ29uY3VycmVudEFjY2Vzc0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFN0YWxlVGFnRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yLFxuICAgIERlbGV0ZVRvcGljQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXREYXRhUHJvdGVjdGlvblBvbGljeShcbiAgICBhcmdzOiBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yLFxuICAgIEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0RW5kcG9pbnRBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBnZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFNNU0F0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0U01TQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3IsXG4gICAgR2V0U01TQXR0cmlidXRlc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0U01TU2FuZGJveEFjY291bnRTdGF0dXMoXG4gICAgYXJnczogR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgQXV0aG9yaXphdGlvbkVycm9yIHwgSW50ZXJuYWxFcnJvciB8IFRocm90dGxlZEVycm9yLFxuICAgIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXMoXG4gICAgYXJnczogR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3IsXG4gICAgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldFRvcGljQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgbGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbihcbiAgICBhcmdzOiBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RPcmlnaW5hdGlvbk51bWJlcnMoXG4gICAgYXJnczogTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3IsXG4gICAgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZH1cbiAgICovXG4gIGxpc3RQaG9uZU51bWJlcnNPcHRlZE91dChcbiAgICBhcmdzOiBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvcixcbiAgICBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnMoXG4gICAgYXJnczogTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3IsXG4gICAgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U01TU2FuZGJveFBob25lTnVtYmVycyhcbiAgICBhcmdzOiBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3IsXG4gICAgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RTdWJzY3JpcHRpb25zKFxuICAgIGFyZ3M6IExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3IsXG4gICAgTGlzdFN1YnNjcmlwdGlvbnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U3Vic2NyaXB0aW9uc0J5VG9waWMoXG4gICAgYXJnczogTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRhZ3NGb3JSZXNvdXJjZShcbiAgICBhcmdzOiBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IENvbmN1cnJlbnRBY2Nlc3NFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yLFxuICAgIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUb3BpY3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRvcGljcyhcbiAgICBhcmdzOiBMaXN0VG9waWNzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3IsXG4gICAgTGlzdFRvcGljc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgT3B0SW5QaG9uZU51bWJlckNvbW1hbmR9XG4gICAqL1xuICBvcHRJblBob25lTnVtYmVyKFxuICAgIGFyZ3M6IE9wdEluUGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvcixcbiAgICBPcHRJblBob25lTnVtYmVyQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdWJsaXNoQ29tbWFuZH1cbiAgICovXG4gIHB1Ymxpc2goXG4gICAgYXJnczogUHVibGlzaENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBFbmRwb2ludERpc2FibGVkRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgS01TT3B0SW5SZXF1aXJlZEVycm9yXG4gICAgfCBLTVNUaHJvdHRsaW5nRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQbGF0Zm9ybUFwcGxpY2F0aW9uRGlzYWJsZWRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yLFxuICAgIFB1Ymxpc2hDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1Ymxpc2hCYXRjaENvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoQmF0Y2goXG4gICAgYXJnczogUHVibGlzaEJhdGNoQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEJhdGNoRW50cnlJZHNOb3REaXN0aW5jdEVycm9yXG4gICAgfCBCYXRjaFJlcXVlc3RUb29Mb25nRXJyb3JcbiAgICB8IEVtcHR5QmF0Y2hSZXF1ZXN0RXJyb3JcbiAgICB8IEVuZHBvaW50RGlzYWJsZWRFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEJhdGNoRW50cnlJZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBLTVNBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgS01TRGlzYWJsZWRFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEtNU05vdEZvdW5kRXJyb3JcbiAgICB8IEtNU09wdEluUmVxdWlyZWRFcnJvclxuICAgIHwgS01TVGhyb3R0bGluZ0Vycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUGxhdGZvcm1BcHBsaWNhdGlvbkRpc2FibGVkRXJyb3JcbiAgICB8IFRvb01hbnlFbnRyaWVzSW5CYXRjaFJlcXVlc3RFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yLFxuICAgIFB1Ymxpc2hCYXRjaENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcHV0RGF0YVByb3RlY3Rpb25Qb2xpY3koXG4gICAgYXJnczogUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBQdXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICByZW1vdmVQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IFJlbW92ZVBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yLFxuICAgIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBzZXRFbmRwb2ludEF0dHJpYnV0ZXMoXG4gICAgYXJnczogU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0U01TQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBzZXRTTVNBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvcixcbiAgICBTZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHNldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXMoXG4gICAgYXJnczogU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBGaWx0ZXJQb2xpY3lMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvcixcbiAgICBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgc2V0VG9waWNBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldFRvcGljQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yLFxuICAgIFNldFRvcGljQXR0cmlidXRlc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3Vic2NyaWJlQ29tbWFuZH1cbiAgICovXG4gIHN1YnNjcmliZShcbiAgICBhcmdzOiBTdWJzY3JpYmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgRmlsdGVyUG9saWN5TGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBTdWJzY3JpcHRpb25MaW1pdEV4Y2VlZGVkRXJyb3IsXG4gICAgU3Vic2NyaWJlQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBDb25jdXJyZW50QWNjZXNzRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yLFxuICAgIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnN1YnNjcmliZUNvbW1hbmR9XG4gICAqL1xuICB1bnN1YnNjcmliZShcbiAgICBhcmdzOiBVbnN1YnNjcmliZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yLFxuICAgIFVuc3Vic2NyaWJlQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVudGFnUmVzb3VyY2UoXG4gICAgYXJnczogVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBDb25jdXJyZW50QWNjZXNzRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yLFxuICAgIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXIoXG4gICAgYXJnczogVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICAgIHwgVmVyaWZpY2F0aW9uRXJyb3IsXG4gICAgVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dFxuICA+O1xufVxuXG5leHBvcnQgY29uc3QgQmFzZVNOU1NlcnZpY2VFZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhTTlNDbGllbnRJbnN0YW5jZVRhZyk7XG5cbiAgcmV0dXJuIFJSLnRvRW50cmllcyhjb21tYW5kcykucmVkdWNlKChhY2MsIFtjb21tYW5kXSkgPT4ge1xuICAgIGNvbnN0IENvbW1hbmRDdG9yID0gY29tbWFuZHNbY29tbWFuZF0gYXMgYW55O1xuICAgIGNvbnN0IG1ldGhvZEltcGwgPSAoYXJnczogYW55LCBvcHRpb25zOiBhbnkpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKCkgPT4gY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCBvcHRpb25zID8/IHt9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTTlNTZXJ2aWNlRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBTZXJ2aWNlRXhjZXB0aW9uID0gRGF0YS50YWdnZWQ8XG4gICAgICAgICAgICAgIFRhZ2dlZEV4Y2VwdGlvbjxTTlNTZXJ2aWNlRXhjZXB0aW9uPlxuICAgICAgICAgICAgPihlLm5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gU2VydmljZUV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFNka0Vycm9yKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbmFtZTogXCJTZGtFcnJvclwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBTTlNTZXJ2aWNlO1xufSk7XG5cbmV4cG9ydCBjb25zdCBTTlNTZXJ2aWNlRWZmZWN0ID0gQmFzZVNOU1NlcnZpY2VFZmZlY3QucGlwZShcbiAgRWZmZWN0LnByb3ZpZGUoU05TQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdFNOU1NlcnZpY2VFZmZlY3QgPSBCYXNlU05TU2VydmljZUVmZmVjdC5waXBlKFxuICBFZmZlY3QucHJvdmlkZShEZWZhdWx0U05TQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuIl19
|