@tscircuit/fake-snippets 0.0.36 → 0.0.37
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/bun-tests/fake-snippets-api/routes/package_files/create_or_update.test.ts +575 -0
- package/bun-tests/fake-snippets-api/routes/package_files/delete.test.ts +233 -0
- package/dist/bundle.js +493 -243
- package/dist/index.d.ts +21 -2
- package/dist/index.js +29 -1
- package/fake-snippets-api/lib/db/db-client.ts +28 -0
- package/fake-snippets-api/lib/db/schema.ts +3 -0
- package/fake-snippets-api/routes/api/package_files/create_or_update.ts +179 -0
- package/fake-snippets-api/routes/api/package_files/delete.ts +106 -0
- package/package.json +1 -1
- package/src/components/EditorNav.tsx +4 -4
- package/src/components/Footer.tsx +7 -1
- package/src/components/ViewPackagePage/components/package-header.tsx +0 -4
- package/src/components/dialogs/confirm-delete-package-dialog.tsx +48 -0
- package/src/hooks/use-delete-package.ts +40 -0
- package/src/hooks/use-fork-package-mutation.ts +14 -61
- package/src/pages/user-profile.tsx +15 -14
- package/src/components/dialogs/confirm-delete-snippet-dialog.tsx +0 -80
package/dist/bundle.js
CHANGED
|
@@ -125,7 +125,10 @@ var packageFileSchema = z.object({
|
|
|
125
125
|
package_release_id: z.string(),
|
|
126
126
|
file_path: z.string(),
|
|
127
127
|
content_text: z.string().nullable().optional(),
|
|
128
|
-
created_at: z.string().datetime()
|
|
128
|
+
created_at: z.string().datetime(),
|
|
129
|
+
content_mimetype: z.string().nullable().optional(),
|
|
130
|
+
is_release_tarball: z.boolean().optional(),
|
|
131
|
+
npm_pack_output: z.any().nullable().optional()
|
|
129
132
|
});
|
|
130
133
|
var packageSchema = z.object({
|
|
131
134
|
package_id: z.string(),
|
|
@@ -2845,6 +2848,20 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
|
|
|
2845
2848
|
)
|
|
2846
2849
|
}));
|
|
2847
2850
|
},
|
|
2851
|
+
deletePackageFile: (packageFileId) => {
|
|
2852
|
+
let deleted = false;
|
|
2853
|
+
set((state) => {
|
|
2854
|
+
const index = state.packageFiles.findIndex(
|
|
2855
|
+
(file) => file.package_file_id === packageFileId
|
|
2856
|
+
);
|
|
2857
|
+
if (index !== -1) {
|
|
2858
|
+
state.packageFiles.splice(index, 1);
|
|
2859
|
+
deleted = true;
|
|
2860
|
+
}
|
|
2861
|
+
return state;
|
|
2862
|
+
});
|
|
2863
|
+
return deleted;
|
|
2864
|
+
},
|
|
2848
2865
|
addPackageFile: (packageFile) => {
|
|
2849
2866
|
const newPackageFile = {
|
|
2850
2867
|
package_file_id: `package_file_${Date.now()}`,
|
|
@@ -2855,6 +2872,17 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
|
|
|
2855
2872
|
}));
|
|
2856
2873
|
return newPackageFile;
|
|
2857
2874
|
},
|
|
2875
|
+
updatePackageFile: (packageFileId, updates) => {
|
|
2876
|
+
set((state2) => ({
|
|
2877
|
+
packageFiles: state2.packageFiles.map(
|
|
2878
|
+
(file) => file.package_file_id === packageFileId ? { ...file, ...updates } : file
|
|
2879
|
+
)
|
|
2880
|
+
}));
|
|
2881
|
+
const state = get();
|
|
2882
|
+
return state.packageFiles.find(
|
|
2883
|
+
(file) => file.package_file_id === packageFileId
|
|
2884
|
+
);
|
|
2885
|
+
},
|
|
2858
2886
|
getStarCount: (packageId) => {
|
|
2859
2887
|
const state = get();
|
|
2860
2888
|
return state.accountPackages.filter(
|
|
@@ -3703,11 +3731,11 @@ var findPackageReleaseIdFromPackageNameWithVersion = (packageNameWithVersion, db
|
|
|
3703
3731
|
return packageRelease.package_release_id;
|
|
3704
3732
|
};
|
|
3705
3733
|
|
|
3706
|
-
// fake-snippets-api/routes/api/package_files/
|
|
3734
|
+
// fake-snippets-api/routes/api/package_files/create_or_update.ts
|
|
3707
3735
|
import { z as z15 } from "zod";
|
|
3708
3736
|
var routeSpec = {
|
|
3709
3737
|
methods: ["POST"],
|
|
3710
|
-
auth: "
|
|
3738
|
+
auth: "session",
|
|
3711
3739
|
jsonBody: z15.object({
|
|
3712
3740
|
file_path: z15.string(),
|
|
3713
3741
|
is_release_tarball: z15.boolean().optional().default(false),
|
|
@@ -3739,7 +3767,141 @@ var routeSpec = {
|
|
|
3739
3767
|
package_file: packageFileSchema
|
|
3740
3768
|
})
|
|
3741
3769
|
};
|
|
3742
|
-
var
|
|
3770
|
+
var create_or_update_default = withRouteSpec(routeSpec)(async (req, ctx) => {
|
|
3771
|
+
const {
|
|
3772
|
+
file_path,
|
|
3773
|
+
content_mimetype: providedContentMimetype,
|
|
3774
|
+
content_base64,
|
|
3775
|
+
content_text,
|
|
3776
|
+
is_release_tarball,
|
|
3777
|
+
npm_pack_output
|
|
3778
|
+
} = req.jsonBody;
|
|
3779
|
+
if (is_release_tarball && !npm_pack_output) {
|
|
3780
|
+
return ctx.error(400, {
|
|
3781
|
+
error_code: "missing_options",
|
|
3782
|
+
message: "npm_pack_output is required for release tarballs"
|
|
3783
|
+
});
|
|
3784
|
+
}
|
|
3785
|
+
if (!is_release_tarball && npm_pack_output) {
|
|
3786
|
+
return ctx.error(404, {
|
|
3787
|
+
error_code: "invalid_options",
|
|
3788
|
+
message: "npm_pack_output is only valid for release tarballs"
|
|
3789
|
+
});
|
|
3790
|
+
}
|
|
3791
|
+
let packageReleaseId = req.jsonBody.package_release_id;
|
|
3792
|
+
if (!packageReleaseId && req.jsonBody.package_name_with_version) {
|
|
3793
|
+
const foundPackageReleaseId = await findPackageReleaseId(
|
|
3794
|
+
{ package_name_with_version: req.jsonBody.package_name_with_version },
|
|
3795
|
+
ctx
|
|
3796
|
+
);
|
|
3797
|
+
if (foundPackageReleaseId) {
|
|
3798
|
+
packageReleaseId = foundPackageReleaseId;
|
|
3799
|
+
}
|
|
3800
|
+
}
|
|
3801
|
+
if (!packageReleaseId) {
|
|
3802
|
+
return ctx.error(404, {
|
|
3803
|
+
error_code: "package_release_not_found",
|
|
3804
|
+
message: "Package release not found"
|
|
3805
|
+
});
|
|
3806
|
+
}
|
|
3807
|
+
const packageRelease = ctx.db.packageReleases.find(
|
|
3808
|
+
(pr) => pr.package_release_id === packageReleaseId
|
|
3809
|
+
);
|
|
3810
|
+
if (!packageRelease) {
|
|
3811
|
+
return ctx.error(404, {
|
|
3812
|
+
error_code: "package_release_not_found",
|
|
3813
|
+
message: "Package release not found"
|
|
3814
|
+
});
|
|
3815
|
+
}
|
|
3816
|
+
const existingPackage = ctx.db.packages.find(
|
|
3817
|
+
(p) => p.package_id === packageRelease.package_id
|
|
3818
|
+
);
|
|
3819
|
+
if (!existingPackage) {
|
|
3820
|
+
return ctx.error(404, {
|
|
3821
|
+
error_code: "package_not_found",
|
|
3822
|
+
message: "Package not found"
|
|
3823
|
+
});
|
|
3824
|
+
}
|
|
3825
|
+
if (existingPackage.creator_account_id !== ctx.auth.account_id) {
|
|
3826
|
+
return ctx.error(403, {
|
|
3827
|
+
error_code: "forbidden",
|
|
3828
|
+
message: "You don't have permission to modify files in this package"
|
|
3829
|
+
});
|
|
3830
|
+
}
|
|
3831
|
+
const exisitingFile = ctx.db.packageFiles.find(
|
|
3832
|
+
(pf) => pf.package_release_id === packageReleaseId && pf.file_path === file_path
|
|
3833
|
+
);
|
|
3834
|
+
const contentMimetype = providedContentMimetype || (file_path.endsWith(".ts") || file_path.endsWith(".tsx") ? "text/typescript" : null) || (file_path.endsWith(".js") ? "application/javascript" : null) || (file_path.endsWith(".json") ? "application/json" : null) || (file_path.endsWith(".md") ? "text/markdown" : null) || (file_path.endsWith(".html") ? "text/html" : null) || (file_path.endsWith(".css") ? "text/css" : null) || "application/octet-stream";
|
|
3835
|
+
if (exisitingFile) {
|
|
3836
|
+
const package_file = ctx.db.updatePackageFile(
|
|
3837
|
+
exisitingFile.package_file_id,
|
|
3838
|
+
{
|
|
3839
|
+
content_text: content_text || (content_base64 ? Buffer.from(content_base64, "base64").toString() : null),
|
|
3840
|
+
content_mimetype: contentMimetype,
|
|
3841
|
+
is_release_tarball: is_release_tarball || false,
|
|
3842
|
+
npm_pack_output: npm_pack_output || null
|
|
3843
|
+
}
|
|
3844
|
+
);
|
|
3845
|
+
return ctx.json({
|
|
3846
|
+
ok: true,
|
|
3847
|
+
package_file
|
|
3848
|
+
});
|
|
3849
|
+
}
|
|
3850
|
+
const newPackageFile = {
|
|
3851
|
+
package_file_id: crypto.randomUUID(),
|
|
3852
|
+
package_release_id: packageReleaseId,
|
|
3853
|
+
file_path,
|
|
3854
|
+
content_text: content_text || (content_base64 ? Buffer.from(content_base64, "base64").toString() : null),
|
|
3855
|
+
content_mimetype: contentMimetype,
|
|
3856
|
+
is_directory: false,
|
|
3857
|
+
is_release_tarball: is_release_tarball || false,
|
|
3858
|
+
npm_pack_output: npm_pack_output || null,
|
|
3859
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
3860
|
+
};
|
|
3861
|
+
ctx.db.addPackageFile(newPackageFile);
|
|
3862
|
+
return ctx.json({
|
|
3863
|
+
ok: true,
|
|
3864
|
+
package_file: newPackageFile
|
|
3865
|
+
});
|
|
3866
|
+
});
|
|
3867
|
+
|
|
3868
|
+
// fake-snippets-api/routes/api/package_files/create.ts
|
|
3869
|
+
import { z as z16 } from "zod";
|
|
3870
|
+
var routeSpec2 = {
|
|
3871
|
+
methods: ["POST"],
|
|
3872
|
+
auth: "none",
|
|
3873
|
+
jsonBody: z16.object({
|
|
3874
|
+
file_path: z16.string(),
|
|
3875
|
+
is_release_tarball: z16.boolean().optional().default(false),
|
|
3876
|
+
content_mimetype: z16.string().optional(),
|
|
3877
|
+
content_text: z16.string().optional(),
|
|
3878
|
+
content_base64: z16.string().optional(),
|
|
3879
|
+
package_release_id: z16.string().optional(),
|
|
3880
|
+
package_name_with_version: z16.string().optional(),
|
|
3881
|
+
npm_pack_output: z16.any().optional()
|
|
3882
|
+
}).refine((v) => {
|
|
3883
|
+
if (v.package_release_id)
|
|
3884
|
+
return true;
|
|
3885
|
+
if (v.package_name_with_version)
|
|
3886
|
+
return true;
|
|
3887
|
+
return false;
|
|
3888
|
+
}, "Must specify either package_release_id or package_name_with_version").refine((v) => {
|
|
3889
|
+
if (v.package_release_id && v.package_name_with_version)
|
|
3890
|
+
return false;
|
|
3891
|
+
return true;
|
|
3892
|
+
}, "Cannot specify both package_release_id and package_name_with_version").refine((v) => {
|
|
3893
|
+
if (v.content_base64 && v.content_text)
|
|
3894
|
+
return false;
|
|
3895
|
+
if (!v.content_base64 && !v.content_text)
|
|
3896
|
+
return false;
|
|
3897
|
+
return true;
|
|
3898
|
+
}, "Either content_base64 or content_text is required"),
|
|
3899
|
+
jsonResponse: z16.object({
|
|
3900
|
+
ok: z16.boolean(),
|
|
3901
|
+
package_file: packageFileSchema
|
|
3902
|
+
})
|
|
3903
|
+
};
|
|
3904
|
+
var create_default2 = withRouteSpec(routeSpec2)(async (req, ctx) => {
|
|
3743
3905
|
const {
|
|
3744
3906
|
file_path,
|
|
3745
3907
|
content_mimetype: providedContentMimetype,
|
|
@@ -3804,6 +3966,92 @@ var create_default2 = withRouteSpec(routeSpec)(async (req, ctx) => {
|
|
|
3804
3966
|
});
|
|
3805
3967
|
});
|
|
3806
3968
|
|
|
3969
|
+
// fake-snippets-api/routes/api/package_files/delete.ts
|
|
3970
|
+
import { z as z17 } from "zod";
|
|
3971
|
+
var delete_default = withRouteSpec({
|
|
3972
|
+
methods: ["POST"],
|
|
3973
|
+
auth: "session",
|
|
3974
|
+
jsonBody: z17.object({
|
|
3975
|
+
package_release_id: z17.string().optional(),
|
|
3976
|
+
package_name_with_version: z17.string().optional(),
|
|
3977
|
+
file_path: z17.string()
|
|
3978
|
+
}).refine((v) => {
|
|
3979
|
+
if (v.package_release_id)
|
|
3980
|
+
return true;
|
|
3981
|
+
if (v.package_name_with_version)
|
|
3982
|
+
return true;
|
|
3983
|
+
return false;
|
|
3984
|
+
}, "Must specify either package_release_id or package_name_with_version").refine((v) => {
|
|
3985
|
+
if (v.package_release_id && v.package_name_with_version)
|
|
3986
|
+
return false;
|
|
3987
|
+
return true;
|
|
3988
|
+
}, "Cannot specify both package_release_id and package_name_with_version"),
|
|
3989
|
+
jsonResponse: z17.object({
|
|
3990
|
+
ok: z17.boolean()
|
|
3991
|
+
})
|
|
3992
|
+
})(async (req, ctx) => {
|
|
3993
|
+
const { file_path } = req.jsonBody;
|
|
3994
|
+
let packageReleaseId = req.jsonBody.package_release_id;
|
|
3995
|
+
if (!packageReleaseId && req.jsonBody.package_name_with_version) {
|
|
3996
|
+
const foundPackageReleaseId = await findPackageReleaseId(
|
|
3997
|
+
req.jsonBody.package_name_with_version,
|
|
3998
|
+
ctx
|
|
3999
|
+
);
|
|
4000
|
+
if (foundPackageReleaseId) {
|
|
4001
|
+
packageReleaseId = foundPackageReleaseId;
|
|
4002
|
+
}
|
|
4003
|
+
}
|
|
4004
|
+
if (!packageReleaseId) {
|
|
4005
|
+
return ctx.error(404, {
|
|
4006
|
+
error_code: "package_release_not_found",
|
|
4007
|
+
message: "Package release not found"
|
|
4008
|
+
});
|
|
4009
|
+
}
|
|
4010
|
+
const packageRelease = ctx.db.packageReleases.find(
|
|
4011
|
+
(pr) => pr.package_release_id === packageReleaseId
|
|
4012
|
+
);
|
|
4013
|
+
if (!packageRelease) {
|
|
4014
|
+
return ctx.error(404, {
|
|
4015
|
+
error_code: "package_release_not_found",
|
|
4016
|
+
message: "Package release not found"
|
|
4017
|
+
});
|
|
4018
|
+
}
|
|
4019
|
+
const existingpackage = ctx.db.packages.find(
|
|
4020
|
+
(p) => p.package_id === packageRelease.package_id
|
|
4021
|
+
);
|
|
4022
|
+
if (!existingpackage) {
|
|
4023
|
+
return ctx.error(404, {
|
|
4024
|
+
error_code: "package_not_found",
|
|
4025
|
+
message: "Package not found"
|
|
4026
|
+
});
|
|
4027
|
+
}
|
|
4028
|
+
if (existingpackage.creator_account_id !== ctx.auth.account_id) {
|
|
4029
|
+
return ctx.error(403, {
|
|
4030
|
+
error_code: "forbidden",
|
|
4031
|
+
message: "You don't have permission to delete files in this package"
|
|
4032
|
+
});
|
|
4033
|
+
}
|
|
4034
|
+
const packageFile = ctx.db.packageFiles.find(
|
|
4035
|
+
(f) => f.file_path === file_path && f.package_release_id === packageReleaseId
|
|
4036
|
+
);
|
|
4037
|
+
if (!packageFile) {
|
|
4038
|
+
return ctx.error(404, {
|
|
4039
|
+
error_code: "file_not_found",
|
|
4040
|
+
message: "Package file not found"
|
|
4041
|
+
});
|
|
4042
|
+
}
|
|
4043
|
+
const deleted = ctx.db.deletePackageFile(packageFile.package_file_id);
|
|
4044
|
+
if (!deleted) {
|
|
4045
|
+
return ctx.error(500, {
|
|
4046
|
+
error_code: "file_deletion_failed",
|
|
4047
|
+
message: "Failed to delete package file"
|
|
4048
|
+
});
|
|
4049
|
+
}
|
|
4050
|
+
return ctx.json({
|
|
4051
|
+
ok: true
|
|
4052
|
+
});
|
|
4053
|
+
});
|
|
4054
|
+
|
|
3807
4055
|
// fake-snippets-api/lib/package_file/get-package-file-id-from-file-descriptor.ts
|
|
3808
4056
|
import { NotFoundError } from "winterspec/middleware";
|
|
3809
4057
|
|
|
@@ -3930,22 +4178,22 @@ var getPackageFileIdFromFileDescriptor = async (descriptor, ctx) => {
|
|
|
3930
4178
|
};
|
|
3931
4179
|
|
|
3932
4180
|
// fake-snippets-api/routes/api/package_files/download.ts
|
|
3933
|
-
import { z as
|
|
3934
|
-
var
|
|
4181
|
+
import { z as z18 } from "zod";
|
|
4182
|
+
var routeSpec3 = {
|
|
3935
4183
|
methods: ["GET", "POST"],
|
|
3936
4184
|
auth: "none",
|
|
3937
|
-
queryParams:
|
|
3938
|
-
package_file_id:
|
|
4185
|
+
queryParams: z18.object({
|
|
4186
|
+
package_file_id: z18.string()
|
|
3939
4187
|
}).or(
|
|
3940
|
-
|
|
3941
|
-
package_name_with_version:
|
|
3942
|
-
file_path:
|
|
4188
|
+
z18.object({
|
|
4189
|
+
package_name_with_version: z18.string(),
|
|
4190
|
+
file_path: z18.string()
|
|
3943
4191
|
})
|
|
3944
4192
|
),
|
|
3945
|
-
jsonResponse:
|
|
4193
|
+
jsonResponse: z18.any()
|
|
3946
4194
|
// Using any because we're returning binary data
|
|
3947
4195
|
};
|
|
3948
|
-
var download_default = withRouteSpec(
|
|
4196
|
+
var download_default = withRouteSpec(routeSpec3)(async (req, ctx) => {
|
|
3949
4197
|
let packageFileId;
|
|
3950
4198
|
const params = req.query;
|
|
3951
4199
|
if ("package_file_id" in params) {
|
|
@@ -4003,41 +4251,41 @@ var download_default = withRouteSpec(routeSpec2)(async (req, ctx) => {
|
|
|
4003
4251
|
});
|
|
4004
4252
|
|
|
4005
4253
|
// fake-snippets-api/routes/api/package_files/get.ts
|
|
4006
|
-
import { z as
|
|
4007
|
-
var
|
|
4254
|
+
import { z as z19 } from "zod";
|
|
4255
|
+
var routeSpec4 = {
|
|
4008
4256
|
methods: ["POST"],
|
|
4009
4257
|
auth: "none",
|
|
4010
|
-
jsonBody:
|
|
4011
|
-
package_file_id:
|
|
4258
|
+
jsonBody: z19.object({
|
|
4259
|
+
package_file_id: z19.string()
|
|
4012
4260
|
}).or(
|
|
4013
|
-
|
|
4014
|
-
package_release_id:
|
|
4015
|
-
file_path:
|
|
4261
|
+
z19.object({
|
|
4262
|
+
package_release_id: z19.string(),
|
|
4263
|
+
file_path: z19.string()
|
|
4016
4264
|
})
|
|
4017
4265
|
).or(
|
|
4018
|
-
|
|
4019
|
-
package_id:
|
|
4020
|
-
version:
|
|
4021
|
-
file_path:
|
|
4266
|
+
z19.object({
|
|
4267
|
+
package_id: z19.string(),
|
|
4268
|
+
version: z19.string().optional(),
|
|
4269
|
+
file_path: z19.string()
|
|
4022
4270
|
})
|
|
4023
4271
|
).or(
|
|
4024
|
-
|
|
4025
|
-
package_name:
|
|
4026
|
-
version:
|
|
4027
|
-
file_path:
|
|
4272
|
+
z19.object({
|
|
4273
|
+
package_name: z19.string(),
|
|
4274
|
+
version: z19.string().optional(),
|
|
4275
|
+
file_path: z19.string()
|
|
4028
4276
|
})
|
|
4029
4277
|
).or(
|
|
4030
|
-
|
|
4031
|
-
package_name_with_version:
|
|
4032
|
-
file_path:
|
|
4278
|
+
z19.object({
|
|
4279
|
+
package_name_with_version: z19.string(),
|
|
4280
|
+
file_path: z19.string()
|
|
4033
4281
|
})
|
|
4034
4282
|
),
|
|
4035
|
-
jsonResponse:
|
|
4036
|
-
ok:
|
|
4283
|
+
jsonResponse: z19.object({
|
|
4284
|
+
ok: z19.boolean(),
|
|
4037
4285
|
package_file: packageFileSchema.optional()
|
|
4038
4286
|
}).or(errorResponseSchema)
|
|
4039
4287
|
};
|
|
4040
|
-
var get_default4 = withRouteSpec(
|
|
4288
|
+
var get_default4 = withRouteSpec(routeSpec4)(async (req, ctx) => {
|
|
4041
4289
|
const packageFileId = await getPackageFileIdFromFileDescriptor(
|
|
4042
4290
|
req.jsonBody,
|
|
4043
4291
|
ctx
|
|
@@ -4061,28 +4309,28 @@ var get_default4 = withRouteSpec(routeSpec3)(async (req, ctx) => {
|
|
|
4061
4309
|
});
|
|
4062
4310
|
|
|
4063
4311
|
// fake-snippets-api/routes/api/package_files/list.ts
|
|
4064
|
-
import { z as
|
|
4065
|
-
var
|
|
4312
|
+
import { z as z20 } from "zod";
|
|
4313
|
+
var routeSpec5 = {
|
|
4066
4314
|
methods: ["POST"],
|
|
4067
4315
|
auth: "none",
|
|
4068
|
-
jsonBody:
|
|
4069
|
-
package_release_id:
|
|
4316
|
+
jsonBody: z20.object({
|
|
4317
|
+
package_release_id: z20.string()
|
|
4070
4318
|
}).or(
|
|
4071
|
-
|
|
4072
|
-
package_name:
|
|
4073
|
-
use_latest_version:
|
|
4319
|
+
z20.object({
|
|
4320
|
+
package_name: z20.string(),
|
|
4321
|
+
use_latest_version: z20.literal(true)
|
|
4074
4322
|
})
|
|
4075
4323
|
).or(
|
|
4076
|
-
|
|
4077
|
-
package_name_with_version:
|
|
4324
|
+
z20.object({
|
|
4325
|
+
package_name_with_version: z20.string()
|
|
4078
4326
|
})
|
|
4079
4327
|
),
|
|
4080
|
-
jsonResponse:
|
|
4081
|
-
ok:
|
|
4082
|
-
package_files:
|
|
4328
|
+
jsonResponse: z20.object({
|
|
4329
|
+
ok: z20.boolean(),
|
|
4330
|
+
package_files: z20.array(packageFileSchema)
|
|
4083
4331
|
})
|
|
4084
4332
|
};
|
|
4085
|
-
var list_default2 = withRouteSpec(
|
|
4333
|
+
var list_default2 = withRouteSpec(routeSpec5)(async (req, ctx) => {
|
|
4086
4334
|
const packageReleaseId = await findPackageReleaseId(req.jsonBody, ctx);
|
|
4087
4335
|
if (!packageReleaseId) {
|
|
4088
4336
|
return ctx.error(404, {
|
|
@@ -4108,19 +4356,19 @@ var publicMapPackageRelease = (internal_package_release) => {
|
|
|
4108
4356
|
};
|
|
4109
4357
|
|
|
4110
4358
|
// fake-snippets-api/routes/api/package_releases/create.ts
|
|
4111
|
-
import { z as
|
|
4359
|
+
import { z as z21 } from "zod";
|
|
4112
4360
|
var create_default3 = withRouteSpec({
|
|
4113
4361
|
methods: ["POST"],
|
|
4114
4362
|
auth: "none",
|
|
4115
|
-
jsonBody:
|
|
4116
|
-
package_id:
|
|
4117
|
-
version:
|
|
4118
|
-
is_latest:
|
|
4119
|
-
commit_sha:
|
|
4120
|
-
package_name_with_version:
|
|
4363
|
+
jsonBody: z21.object({
|
|
4364
|
+
package_id: z21.string().optional(),
|
|
4365
|
+
version: z21.string().optional(),
|
|
4366
|
+
is_latest: z21.boolean().optional(),
|
|
4367
|
+
commit_sha: z21.string().optional(),
|
|
4368
|
+
package_name_with_version: z21.string().optional()
|
|
4121
4369
|
}),
|
|
4122
|
-
jsonResponse:
|
|
4123
|
-
ok:
|
|
4370
|
+
jsonResponse: z21.object({
|
|
4371
|
+
ok: z21.boolean(),
|
|
4124
4372
|
package_release: packageReleaseSchema
|
|
4125
4373
|
})
|
|
4126
4374
|
})(async (req, ctx) => {
|
|
@@ -4182,19 +4430,19 @@ var create_default3 = withRouteSpec({
|
|
|
4182
4430
|
});
|
|
4183
4431
|
|
|
4184
4432
|
// fake-snippets-api/routes/api/package_releases/get.ts
|
|
4185
|
-
import { z as
|
|
4433
|
+
import { z as z22 } from "zod";
|
|
4186
4434
|
var get_default5 = withRouteSpec({
|
|
4187
4435
|
methods: ["POST"],
|
|
4188
4436
|
auth: "none",
|
|
4189
|
-
jsonBody:
|
|
4190
|
-
package_release_id:
|
|
4191
|
-
package_name_with_version:
|
|
4192
|
-
package_name:
|
|
4193
|
-
package_id:
|
|
4194
|
-
is_latest:
|
|
4437
|
+
jsonBody: z22.object({
|
|
4438
|
+
package_release_id: z22.string().optional(),
|
|
4439
|
+
package_name_with_version: z22.string().optional(),
|
|
4440
|
+
package_name: z22.string().optional(),
|
|
4441
|
+
package_id: z22.string().optional(),
|
|
4442
|
+
is_latest: z22.boolean().optional()
|
|
4195
4443
|
}),
|
|
4196
|
-
jsonResponse:
|
|
4197
|
-
ok:
|
|
4444
|
+
jsonResponse: z22.object({
|
|
4445
|
+
ok: z22.boolean(),
|
|
4198
4446
|
package_release: packageReleaseSchema
|
|
4199
4447
|
})
|
|
4200
4448
|
})(async (req, ctx) => {
|
|
@@ -4273,16 +4521,16 @@ var get_default5 = withRouteSpec({
|
|
|
4273
4521
|
});
|
|
4274
4522
|
|
|
4275
4523
|
// fake-snippets-api/routes/api/package_releases/list.ts
|
|
4276
|
-
import { z as
|
|
4524
|
+
import { z as z23 } from "zod";
|
|
4277
4525
|
var list_default3 = withRouteSpec({
|
|
4278
4526
|
methods: ["POST"],
|
|
4279
4527
|
auth: "none",
|
|
4280
|
-
jsonBody:
|
|
4281
|
-
package_id:
|
|
4282
|
-
package_name:
|
|
4283
|
-
is_latest:
|
|
4284
|
-
version:
|
|
4285
|
-
commit_sha:
|
|
4528
|
+
jsonBody: z23.object({
|
|
4529
|
+
package_id: z23.string().optional(),
|
|
4530
|
+
package_name: z23.string().optional(),
|
|
4531
|
+
is_latest: z23.boolean().optional(),
|
|
4532
|
+
version: z23.string().optional(),
|
|
4533
|
+
commit_sha: z23.string().optional()
|
|
4286
4534
|
}).refine(({ package_id, package_name }) => {
|
|
4287
4535
|
if (package_id && package_name) {
|
|
4288
4536
|
return false;
|
|
@@ -4294,9 +4542,9 @@ var list_default3 = withRouteSpec({
|
|
|
4294
4542
|
}
|
|
4295
4543
|
return true;
|
|
4296
4544
|
}, "package_id or package_name is required"),
|
|
4297
|
-
jsonResponse:
|
|
4298
|
-
ok:
|
|
4299
|
-
package_releases:
|
|
4545
|
+
jsonResponse: z23.object({
|
|
4546
|
+
ok: z23.boolean(),
|
|
4547
|
+
package_releases: z23.array(packageReleaseSchema)
|
|
4300
4548
|
})
|
|
4301
4549
|
})(async (req, ctx) => {
|
|
4302
4550
|
const { package_id, package_name, is_latest, version, commit_sha } = req.jsonBody;
|
|
@@ -4334,19 +4582,19 @@ var list_default3 = withRouteSpec({
|
|
|
4334
4582
|
});
|
|
4335
4583
|
|
|
4336
4584
|
// fake-snippets-api/routes/api/package_releases/update.ts
|
|
4337
|
-
import { z as
|
|
4585
|
+
import { z as z24 } from "zod";
|
|
4338
4586
|
var update_default2 = withRouteSpec({
|
|
4339
4587
|
methods: ["POST"],
|
|
4340
4588
|
auth: "none",
|
|
4341
|
-
jsonBody:
|
|
4342
|
-
package_release_id:
|
|
4343
|
-
package_name_with_version:
|
|
4344
|
-
is_locked:
|
|
4345
|
-
is_latest:
|
|
4346
|
-
license:
|
|
4589
|
+
jsonBody: z24.object({
|
|
4590
|
+
package_release_id: z24.string().optional(),
|
|
4591
|
+
package_name_with_version: z24.string().optional(),
|
|
4592
|
+
is_locked: z24.boolean().optional(),
|
|
4593
|
+
is_latest: z24.boolean().optional(),
|
|
4594
|
+
license: z24.string().optional()
|
|
4347
4595
|
}),
|
|
4348
|
-
jsonResponse:
|
|
4349
|
-
ok:
|
|
4596
|
+
jsonResponse: z24.object({
|
|
4597
|
+
ok: z24.boolean()
|
|
4350
4598
|
})
|
|
4351
4599
|
})(async (req, ctx) => {
|
|
4352
4600
|
const {
|
|
@@ -4412,15 +4660,15 @@ var update_default2 = withRouteSpec({
|
|
|
4412
4660
|
});
|
|
4413
4661
|
|
|
4414
4662
|
// fake-snippets-api/routes/api/packages/add_star.ts
|
|
4415
|
-
import { z as
|
|
4663
|
+
import { z as z25 } from "zod";
|
|
4416
4664
|
var add_star_default = withRouteSpec({
|
|
4417
4665
|
methods: ["POST"],
|
|
4418
4666
|
auth: "session",
|
|
4419
|
-
jsonBody:
|
|
4420
|
-
package_id:
|
|
4421
|
-
}).or(
|
|
4422
|
-
jsonResponse:
|
|
4423
|
-
ok:
|
|
4667
|
+
jsonBody: z25.object({
|
|
4668
|
+
package_id: z25.string()
|
|
4669
|
+
}).or(z25.object({ name: z25.string() })),
|
|
4670
|
+
jsonResponse: z25.object({
|
|
4671
|
+
ok: z25.boolean()
|
|
4424
4672
|
})
|
|
4425
4673
|
})(async (req, ctx) => {
|
|
4426
4674
|
let packageId;
|
|
@@ -4491,20 +4739,20 @@ var publicMapPackage = (internalPackage) => {
|
|
|
4491
4739
|
};
|
|
4492
4740
|
|
|
4493
4741
|
// fake-snippets-api/routes/api/packages/create.ts
|
|
4494
|
-
import { z as
|
|
4742
|
+
import { z as z26 } from "zod";
|
|
4495
4743
|
var create_default4 = withRouteSpec({
|
|
4496
4744
|
methods: ["POST"],
|
|
4497
4745
|
auth: "session",
|
|
4498
|
-
jsonBody:
|
|
4499
|
-
name:
|
|
4746
|
+
jsonBody: z26.object({
|
|
4747
|
+
name: z26.string().regex(
|
|
4500
4748
|
/^[@a-zA-Z0-9-_\/]+$/,
|
|
4501
4749
|
"Package name can only contain letters, numbers, hyphens, underscores, and forward slashes"
|
|
4502
4750
|
).transform((name) => name.replace(/^@/, "")),
|
|
4503
|
-
description:
|
|
4504
|
-
is_private:
|
|
4505
|
-
is_unlisted:
|
|
4751
|
+
description: z26.string().optional(),
|
|
4752
|
+
is_private: z26.boolean().optional().default(false),
|
|
4753
|
+
is_unlisted: z26.boolean().optional().default(false)
|
|
4506
4754
|
}),
|
|
4507
|
-
jsonResponse:
|
|
4755
|
+
jsonResponse: z26.object({
|
|
4508
4756
|
package: packageSchema.optional()
|
|
4509
4757
|
})
|
|
4510
4758
|
})(async (req, ctx) => {
|
|
@@ -4547,15 +4795,15 @@ var create_default4 = withRouteSpec({
|
|
|
4547
4795
|
});
|
|
4548
4796
|
|
|
4549
4797
|
// fake-snippets-api/routes/api/packages/delete.ts
|
|
4550
|
-
import { z as
|
|
4551
|
-
var
|
|
4798
|
+
import { z as z27 } from "zod";
|
|
4799
|
+
var delete_default2 = withRouteSpec({
|
|
4552
4800
|
methods: ["POST"],
|
|
4553
4801
|
auth: "session",
|
|
4554
|
-
jsonBody:
|
|
4555
|
-
package_id:
|
|
4802
|
+
jsonBody: z27.object({
|
|
4803
|
+
package_id: z27.string()
|
|
4556
4804
|
}),
|
|
4557
|
-
jsonResponse:
|
|
4558
|
-
ok:
|
|
4805
|
+
jsonResponse: z27.object({
|
|
4806
|
+
ok: z27.boolean()
|
|
4559
4807
|
})
|
|
4560
4808
|
})(async (req, ctx) => {
|
|
4561
4809
|
const { package_id } = req.jsonBody;
|
|
@@ -4583,17 +4831,17 @@ var delete_default = withRouteSpec({
|
|
|
4583
4831
|
});
|
|
4584
4832
|
|
|
4585
4833
|
// fake-snippets-api/routes/api/packages/fork.ts
|
|
4586
|
-
import { z as
|
|
4834
|
+
import { z as z28 } from "zod";
|
|
4587
4835
|
var fork_default = withRouteSpec({
|
|
4588
4836
|
methods: ["POST"],
|
|
4589
4837
|
auth: "session",
|
|
4590
|
-
jsonBody:
|
|
4838
|
+
jsonBody: z28.object({
|
|
4591
4839
|
// Accept either package_id or package_name to find the package to fork
|
|
4592
|
-
package_id:
|
|
4593
|
-
package_name:
|
|
4840
|
+
package_id: z28.string().optional(),
|
|
4841
|
+
package_name: z28.string().optional(),
|
|
4594
4842
|
// Optional parameters to customize the forked package
|
|
4595
|
-
is_private:
|
|
4596
|
-
is_unlisted:
|
|
4843
|
+
is_private: z28.boolean().optional().default(false),
|
|
4844
|
+
is_unlisted: z28.boolean().optional().default(false)
|
|
4597
4845
|
}).refine(
|
|
4598
4846
|
(data) => data.package_id !== void 0 || data.package_name !== void 0,
|
|
4599
4847
|
{
|
|
@@ -4604,7 +4852,7 @@ var fork_default = withRouteSpec({
|
|
|
4604
4852
|
// If the package is private, it should be unlisted
|
|
4605
4853
|
is_unlisted: data.is_private ? true : data.is_unlisted
|
|
4606
4854
|
})),
|
|
4607
|
-
jsonResponse:
|
|
4855
|
+
jsonResponse: z28.object({
|
|
4608
4856
|
package: packageSchema
|
|
4609
4857
|
})
|
|
4610
4858
|
})(async (req, ctx) => {
|
|
@@ -4711,19 +4959,19 @@ var fork_default = withRouteSpec({
|
|
|
4711
4959
|
});
|
|
4712
4960
|
|
|
4713
4961
|
// fake-snippets-api/routes/api/packages/get.ts
|
|
4714
|
-
import { z as
|
|
4962
|
+
import { z as z29 } from "zod";
|
|
4715
4963
|
var get_default6 = withRouteSpec({
|
|
4716
4964
|
methods: ["GET", "POST"],
|
|
4717
4965
|
auth: "optional_session",
|
|
4718
|
-
commonParams:
|
|
4719
|
-
package_id:
|
|
4720
|
-
name:
|
|
4966
|
+
commonParams: z29.object({
|
|
4967
|
+
package_id: z29.string().optional(),
|
|
4968
|
+
name: z29.string().optional()
|
|
4721
4969
|
}),
|
|
4722
|
-
jsonBody:
|
|
4723
|
-
jsonResponse:
|
|
4724
|
-
ok:
|
|
4970
|
+
jsonBody: z29.any().optional(),
|
|
4971
|
+
jsonResponse: z29.object({
|
|
4972
|
+
ok: z29.boolean(),
|
|
4725
4973
|
package: packageSchema.extend({
|
|
4726
|
-
is_starred:
|
|
4974
|
+
is_starred: z29.boolean()
|
|
4727
4975
|
}).optional()
|
|
4728
4976
|
})
|
|
4729
4977
|
})(async (req, ctx) => {
|
|
@@ -4746,19 +4994,19 @@ var get_default6 = withRouteSpec({
|
|
|
4746
4994
|
});
|
|
4747
4995
|
|
|
4748
4996
|
// fake-snippets-api/routes/api/packages/list.ts
|
|
4749
|
-
import { z as
|
|
4997
|
+
import { z as z30 } from "zod";
|
|
4750
4998
|
var list_default4 = withRouteSpec({
|
|
4751
4999
|
methods: ["GET", "POST"],
|
|
4752
5000
|
auth: "optional_session",
|
|
4753
|
-
commonParams:
|
|
4754
|
-
creator_account_id:
|
|
4755
|
-
owner_github_username:
|
|
4756
|
-
is_writable:
|
|
4757
|
-
name:
|
|
5001
|
+
commonParams: z30.object({
|
|
5002
|
+
creator_account_id: z30.string().optional(),
|
|
5003
|
+
owner_github_username: z30.string().optional(),
|
|
5004
|
+
is_writable: z30.boolean().optional(),
|
|
5005
|
+
name: z30.string().optional()
|
|
4758
5006
|
}),
|
|
4759
|
-
jsonResponse:
|
|
4760
|
-
ok:
|
|
4761
|
-
packages:
|
|
5007
|
+
jsonResponse: z30.object({
|
|
5008
|
+
ok: z30.boolean(),
|
|
5009
|
+
packages: z30.array(packageSchema)
|
|
4762
5010
|
})
|
|
4763
5011
|
})(async (req, ctx) => {
|
|
4764
5012
|
const { creator_account_id, owner_github_username, name, is_writable } = req.commonParams;
|
|
@@ -4796,15 +5044,15 @@ var list_default4 = withRouteSpec({
|
|
|
4796
5044
|
});
|
|
4797
5045
|
|
|
4798
5046
|
// fake-snippets-api/routes/api/packages/remove_star.ts
|
|
4799
|
-
import { z as
|
|
5047
|
+
import { z as z31 } from "zod";
|
|
4800
5048
|
var remove_star_default = withRouteSpec({
|
|
4801
5049
|
methods: ["POST"],
|
|
4802
5050
|
auth: "session",
|
|
4803
|
-
jsonBody:
|
|
4804
|
-
package_id:
|
|
4805
|
-
}).or(
|
|
4806
|
-
jsonResponse:
|
|
4807
|
-
ok:
|
|
5051
|
+
jsonBody: z31.object({
|
|
5052
|
+
package_id: z31.string()
|
|
5053
|
+
}).or(z31.object({ name: z31.string() })),
|
|
5054
|
+
jsonResponse: z31.object({
|
|
5055
|
+
ok: z31.boolean()
|
|
4808
5056
|
})
|
|
4809
5057
|
})(async (req, ctx) => {
|
|
4810
5058
|
let packageId;
|
|
@@ -4847,26 +5095,26 @@ var remove_star_default = withRouteSpec({
|
|
|
4847
5095
|
});
|
|
4848
5096
|
|
|
4849
5097
|
// fake-snippets-api/routes/api/packages/update.ts
|
|
4850
|
-
import { z as
|
|
5098
|
+
import { z as z32 } from "zod";
|
|
4851
5099
|
var update_default3 = withRouteSpec({
|
|
4852
5100
|
methods: ["POST"],
|
|
4853
5101
|
auth: "session",
|
|
4854
|
-
jsonBody:
|
|
4855
|
-
package_id:
|
|
4856
|
-
name:
|
|
5102
|
+
jsonBody: z32.object({
|
|
5103
|
+
package_id: z32.string(),
|
|
5104
|
+
name: z32.string().regex(
|
|
4857
5105
|
/^[@a-zA-Z0-9-_\/]+$/,
|
|
4858
5106
|
"Package name can only contain letters, numbers, hyphens, underscores, and forward slashes"
|
|
4859
5107
|
).transform((name) => name.replace(/^@/, "")).optional(),
|
|
4860
|
-
description:
|
|
4861
|
-
website:
|
|
4862
|
-
is_private:
|
|
4863
|
-
is_unlisted:
|
|
5108
|
+
description: z32.string().optional(),
|
|
5109
|
+
website: z32.string().optional(),
|
|
5110
|
+
is_private: z32.boolean().optional(),
|
|
5111
|
+
is_unlisted: z32.boolean().optional()
|
|
4864
5112
|
}).transform((data) => ({
|
|
4865
5113
|
...data,
|
|
4866
5114
|
is_unlisted: data.is_private ? true : data.is_unlisted
|
|
4867
5115
|
})),
|
|
4868
|
-
jsonResponse:
|
|
4869
|
-
ok:
|
|
5116
|
+
jsonResponse: z32.object({
|
|
5117
|
+
ok: z32.boolean(),
|
|
4870
5118
|
package: packageSchema
|
|
4871
5119
|
})
|
|
4872
5120
|
})(async (req, ctx) => {
|
|
@@ -4921,15 +5169,15 @@ var update_default3 = withRouteSpec({
|
|
|
4921
5169
|
});
|
|
4922
5170
|
|
|
4923
5171
|
// fake-snippets-api/routes/api/snippets/add_star.ts
|
|
4924
|
-
import { z as
|
|
5172
|
+
import { z as z33 } from "zod";
|
|
4925
5173
|
var add_star_default2 = withRouteSpec({
|
|
4926
5174
|
methods: ["POST"],
|
|
4927
5175
|
auth: "session",
|
|
4928
|
-
jsonBody:
|
|
4929
|
-
snippet_id:
|
|
5176
|
+
jsonBody: z33.object({
|
|
5177
|
+
snippet_id: z33.string()
|
|
4930
5178
|
}),
|
|
4931
|
-
jsonResponse:
|
|
4932
|
-
ok:
|
|
5179
|
+
jsonResponse: z33.object({
|
|
5180
|
+
ok: z33.boolean()
|
|
4933
5181
|
})
|
|
4934
5182
|
})(async (req, ctx) => {
|
|
4935
5183
|
const { snippet_id } = req.jsonBody;
|
|
@@ -4970,24 +5218,24 @@ var add_star_default2 = withRouteSpec({
|
|
|
4970
5218
|
});
|
|
4971
5219
|
|
|
4972
5220
|
// fake-snippets-api/routes/api/snippets/create.ts
|
|
4973
|
-
import { z as
|
|
5221
|
+
import { z as z34 } from "zod";
|
|
4974
5222
|
var create_default5 = withRouteSpec({
|
|
4975
5223
|
methods: ["POST"],
|
|
4976
5224
|
auth: "session",
|
|
4977
|
-
jsonBody:
|
|
4978
|
-
unscoped_name:
|
|
4979
|
-
code:
|
|
4980
|
-
snippet_type:
|
|
4981
|
-
description:
|
|
4982
|
-
compiled_js:
|
|
4983
|
-
circuit_json:
|
|
4984
|
-
dts:
|
|
4985
|
-
is_private:
|
|
4986
|
-
is_public:
|
|
4987
|
-
is_unlisted:
|
|
5225
|
+
jsonBody: z34.object({
|
|
5226
|
+
unscoped_name: z34.string().optional(),
|
|
5227
|
+
code: z34.string().optional(),
|
|
5228
|
+
snippet_type: z34.enum(["board", "package", "model", "footprint"]),
|
|
5229
|
+
description: z34.string().optional(),
|
|
5230
|
+
compiled_js: z34.string().optional(),
|
|
5231
|
+
circuit_json: z34.array(z34.record(z34.any())).optional().nullable(),
|
|
5232
|
+
dts: z34.string().optional(),
|
|
5233
|
+
is_private: z34.boolean().optional(),
|
|
5234
|
+
is_public: z34.boolean().optional(),
|
|
5235
|
+
is_unlisted: z34.boolean().optional()
|
|
4988
5236
|
}),
|
|
4989
|
-
jsonResponse:
|
|
4990
|
-
ok:
|
|
5237
|
+
jsonResponse: z34.object({
|
|
5238
|
+
ok: z34.boolean(),
|
|
4991
5239
|
snippet: snippetSchema.optional()
|
|
4992
5240
|
})
|
|
4993
5241
|
})(async (req, ctx) => {
|
|
@@ -5121,15 +5369,15 @@ var create_default5 = withRouteSpec({
|
|
|
5121
5369
|
});
|
|
5122
5370
|
|
|
5123
5371
|
// fake-snippets-api/routes/api/snippets/delete.ts
|
|
5124
|
-
import { z as
|
|
5125
|
-
var
|
|
5372
|
+
import { z as z35 } from "zod";
|
|
5373
|
+
var delete_default3 = withRouteSpec({
|
|
5126
5374
|
methods: ["POST"],
|
|
5127
5375
|
auth: "session",
|
|
5128
|
-
jsonBody:
|
|
5129
|
-
snippet_id:
|
|
5376
|
+
jsonBody: z35.object({
|
|
5377
|
+
snippet_id: z35.string()
|
|
5130
5378
|
}),
|
|
5131
|
-
jsonResponse:
|
|
5132
|
-
ok:
|
|
5379
|
+
jsonResponse: z35.object({
|
|
5380
|
+
ok: z35.boolean()
|
|
5133
5381
|
})
|
|
5134
5382
|
})(async (req, ctx) => {
|
|
5135
5383
|
const { snippet_id } = req.jsonBody;
|
|
@@ -5156,15 +5404,15 @@ var delete_default2 = withRouteSpec({
|
|
|
5156
5404
|
});
|
|
5157
5405
|
|
|
5158
5406
|
// fake-snippets-api/routes/api/snippets/download.ts
|
|
5159
|
-
import { z as
|
|
5407
|
+
import { z as z36 } from "zod";
|
|
5160
5408
|
var download_default2 = withRouteSpec({
|
|
5161
5409
|
methods: ["GET"],
|
|
5162
5410
|
auth: "none",
|
|
5163
|
-
queryParams:
|
|
5164
|
-
jsdelivr_resolve:
|
|
5165
|
-
jsdelivr_path:
|
|
5411
|
+
queryParams: z36.object({
|
|
5412
|
+
jsdelivr_resolve: z36.enum(["true", "false"]).optional().transform((v) => v === "true"),
|
|
5413
|
+
jsdelivr_path: z36.string()
|
|
5166
5414
|
}),
|
|
5167
|
-
jsonResponse:
|
|
5415
|
+
jsonResponse: z36.any()
|
|
5168
5416
|
})(async (req, ctx) => {
|
|
5169
5417
|
const { jsdelivr_path, jsdelivr_resolve } = req.query;
|
|
5170
5418
|
const [owner, packageWithVersion, ...rest] = jsdelivr_path.split("/");
|
|
@@ -5291,15 +5539,15 @@ var download_default2 = withRouteSpec({
|
|
|
5291
5539
|
});
|
|
5292
5540
|
|
|
5293
5541
|
// fake-snippets-api/routes/api/snippets/generate_from_jlcpcb.ts
|
|
5294
|
-
import { z as
|
|
5542
|
+
import { z as z37 } from "zod";
|
|
5295
5543
|
import { fetchEasyEDAComponent, convertRawEasyEdaToTs } from "easyeda";
|
|
5296
5544
|
var generate_from_jlcpcb_default = withRouteSpec({
|
|
5297
5545
|
methods: ["POST"],
|
|
5298
5546
|
auth: "session",
|
|
5299
|
-
jsonBody:
|
|
5300
|
-
jlcpcb_part_number:
|
|
5547
|
+
jsonBody: z37.object({
|
|
5548
|
+
jlcpcb_part_number: z37.string()
|
|
5301
5549
|
}),
|
|
5302
|
-
jsonResponse:
|
|
5550
|
+
jsonResponse: z37.object({
|
|
5303
5551
|
snippet: snippetSchema
|
|
5304
5552
|
})
|
|
5305
5553
|
})(async (req, ctx) => {
|
|
@@ -5339,7 +5587,7 @@ ${error.stack}`
|
|
|
5339
5587
|
});
|
|
5340
5588
|
|
|
5341
5589
|
// fake-snippets-api/routes/api/snippets/get_image.ts
|
|
5342
|
-
import { z as
|
|
5590
|
+
import { z as z38 } from "zod";
|
|
5343
5591
|
import {
|
|
5344
5592
|
convertCircuitJsonToSchematicSvg,
|
|
5345
5593
|
convertCircuitJsonToPcbSvg
|
|
@@ -5347,14 +5595,14 @@ import {
|
|
|
5347
5595
|
var get_image_default = withRouteSpec({
|
|
5348
5596
|
methods: ["GET"],
|
|
5349
5597
|
auth: "none",
|
|
5350
|
-
queryParams:
|
|
5351
|
-
snippetId:
|
|
5352
|
-
image_of:
|
|
5353
|
-
format:
|
|
5598
|
+
queryParams: z38.object({
|
|
5599
|
+
snippetId: z38.string(),
|
|
5600
|
+
image_of: z38.enum(["schematic", "pcb"]),
|
|
5601
|
+
format: z38.enum(["svg"])
|
|
5354
5602
|
}),
|
|
5355
|
-
jsonResponse:
|
|
5356
|
-
ok:
|
|
5357
|
-
svg:
|
|
5603
|
+
jsonResponse: z38.object({
|
|
5604
|
+
ok: z38.boolean(),
|
|
5605
|
+
svg: z38.string()
|
|
5358
5606
|
})
|
|
5359
5607
|
})(async (req, ctx) => {
|
|
5360
5608
|
const { snippetId, image_of, format } = req.query;
|
|
@@ -5395,19 +5643,19 @@ var get_image_default = withRouteSpec({
|
|
|
5395
5643
|
});
|
|
5396
5644
|
|
|
5397
5645
|
// fake-snippets-api/routes/api/snippets/get.ts
|
|
5398
|
-
import { z as
|
|
5646
|
+
import { z as z39 } from "zod";
|
|
5399
5647
|
var get_default7 = withRouteSpec({
|
|
5400
5648
|
methods: ["GET", "POST"],
|
|
5401
5649
|
auth: "optional_session",
|
|
5402
|
-
commonParams:
|
|
5403
|
-
snippet_id:
|
|
5404
|
-
name:
|
|
5405
|
-
owner_name:
|
|
5406
|
-
unscoped_name:
|
|
5650
|
+
commonParams: z39.object({
|
|
5651
|
+
snippet_id: z39.string().optional(),
|
|
5652
|
+
name: z39.string().optional(),
|
|
5653
|
+
owner_name: z39.string().optional(),
|
|
5654
|
+
unscoped_name: z39.string().optional()
|
|
5407
5655
|
}),
|
|
5408
|
-
jsonBody:
|
|
5409
|
-
jsonResponse:
|
|
5410
|
-
ok:
|
|
5656
|
+
jsonBody: z39.any().optional(),
|
|
5657
|
+
jsonResponse: z39.object({
|
|
5658
|
+
ok: z39.boolean(),
|
|
5411
5659
|
snippet: snippetSchema
|
|
5412
5660
|
})
|
|
5413
5661
|
})(async (req, ctx) => {
|
|
@@ -5469,14 +5717,14 @@ import {
|
|
|
5469
5717
|
convertCircuitJsonToPcbSvg as convertCircuitJsonToPcbSvg2,
|
|
5470
5718
|
convertCircuitJsonToSchematicSvg as convertCircuitJsonToSchematicSvg2
|
|
5471
5719
|
} from "circuit-to-svg";
|
|
5472
|
-
import { z as
|
|
5720
|
+
import { z as z40 } from "zod";
|
|
5473
5721
|
var typeFormat_default = withRouteSpec({
|
|
5474
5722
|
methods: ["GET"],
|
|
5475
5723
|
auth: "none",
|
|
5476
|
-
routeParams:
|
|
5477
|
-
author:
|
|
5478
|
-
snippet_name:
|
|
5479
|
-
typeFormat:
|
|
5724
|
+
routeParams: z40.object({
|
|
5725
|
+
author: z40.string(),
|
|
5726
|
+
snippet_name: z40.string(),
|
|
5727
|
+
typeFormat: z40.string()
|
|
5480
5728
|
}),
|
|
5481
5729
|
rawResponse: true
|
|
5482
5730
|
})(async (req, ctx) => {
|
|
@@ -5532,11 +5780,11 @@ var typeFormat_default = withRouteSpec({
|
|
|
5532
5780
|
});
|
|
5533
5781
|
|
|
5534
5782
|
// fake-snippets-api/routes/api/snippets/list_newest.ts
|
|
5535
|
-
import { z as
|
|
5783
|
+
import { z as z41 } from "zod";
|
|
5536
5784
|
var list_newest_default = withRouteSpec({
|
|
5537
5785
|
methods: ["GET"],
|
|
5538
|
-
jsonResponse:
|
|
5539
|
-
snippets:
|
|
5786
|
+
jsonResponse: z41.object({
|
|
5787
|
+
snippets: z41.array(snippetSchema)
|
|
5540
5788
|
})
|
|
5541
5789
|
})(async (req, ctx) => {
|
|
5542
5790
|
const newestSnippets = ctx.db.getNewestSnippets(20);
|
|
@@ -5544,12 +5792,12 @@ var list_newest_default = withRouteSpec({
|
|
|
5544
5792
|
});
|
|
5545
5793
|
|
|
5546
5794
|
// fake-snippets-api/routes/api/snippets/list_trending.ts
|
|
5547
|
-
import { z as
|
|
5795
|
+
import { z as z42 } from "zod";
|
|
5548
5796
|
var list_trending_default = withRouteSpec({
|
|
5549
5797
|
methods: ["GET"],
|
|
5550
5798
|
auth: "none",
|
|
5551
|
-
jsonResponse:
|
|
5552
|
-
snippets:
|
|
5799
|
+
jsonResponse: z42.object({
|
|
5800
|
+
snippets: z42.array(snippetSchema)
|
|
5553
5801
|
})
|
|
5554
5802
|
})(async (req, ctx) => {
|
|
5555
5803
|
const sevenDaysAgo = /* @__PURE__ */ new Date();
|
|
@@ -5562,19 +5810,19 @@ var list_trending_default = withRouteSpec({
|
|
|
5562
5810
|
});
|
|
5563
5811
|
|
|
5564
5812
|
// fake-snippets-api/routes/api/snippets/list.ts
|
|
5565
|
-
import { z as
|
|
5813
|
+
import { z as z43 } from "zod";
|
|
5566
5814
|
var list_default5 = withRouteSpec({
|
|
5567
5815
|
methods: ["GET", "POST"],
|
|
5568
5816
|
auth: "optional_session",
|
|
5569
|
-
commonParams:
|
|
5570
|
-
owner_name:
|
|
5571
|
-
unscoped_name:
|
|
5572
|
-
starred_by:
|
|
5817
|
+
commonParams: z43.object({
|
|
5818
|
+
owner_name: z43.string().optional(),
|
|
5819
|
+
unscoped_name: z43.string().optional(),
|
|
5820
|
+
starred_by: z43.string().optional()
|
|
5573
5821
|
}),
|
|
5574
|
-
jsonBody:
|
|
5575
|
-
jsonResponse:
|
|
5576
|
-
ok:
|
|
5577
|
-
snippets:
|
|
5822
|
+
jsonBody: z43.any().optional(),
|
|
5823
|
+
jsonResponse: z43.object({
|
|
5824
|
+
ok: z43.boolean(),
|
|
5825
|
+
snippets: z43.array(snippetSchema)
|
|
5578
5826
|
})
|
|
5579
5827
|
})(async (req, ctx) => {
|
|
5580
5828
|
const { owner_name, unscoped_name, starred_by } = req.commonParams;
|
|
@@ -5667,16 +5915,16 @@ var list_default5 = withRouteSpec({
|
|
|
5667
5915
|
});
|
|
5668
5916
|
|
|
5669
5917
|
// fake-snippets-api/routes/api/snippets/remove_star.ts
|
|
5670
|
-
import { z as
|
|
5918
|
+
import { z as z44 } from "zod";
|
|
5671
5919
|
var remove_star_default2 = withRouteSpec({
|
|
5672
5920
|
methods: ["POST"],
|
|
5673
5921
|
auth: "session",
|
|
5674
|
-
jsonBody:
|
|
5675
|
-
snippet_id:
|
|
5922
|
+
jsonBody: z44.object({
|
|
5923
|
+
snippet_id: z44.string()
|
|
5676
5924
|
}),
|
|
5677
|
-
jsonResponse:
|
|
5678
|
-
ok:
|
|
5679
|
-
is_starred:
|
|
5925
|
+
jsonResponse: z44.object({
|
|
5926
|
+
ok: z44.boolean(),
|
|
5927
|
+
is_starred: z44.boolean()
|
|
5680
5928
|
})
|
|
5681
5929
|
})(async (req, ctx) => {
|
|
5682
5930
|
const { snippet_id } = req.jsonBody;
|
|
@@ -5701,15 +5949,15 @@ var remove_star_default2 = withRouteSpec({
|
|
|
5701
5949
|
});
|
|
5702
5950
|
|
|
5703
5951
|
// fake-snippets-api/routes/api/snippets/search.ts
|
|
5704
|
-
import { z as
|
|
5952
|
+
import { z as z45 } from "zod";
|
|
5705
5953
|
var search_default = withRouteSpec({
|
|
5706
5954
|
methods: ["GET"],
|
|
5707
5955
|
auth: "none",
|
|
5708
|
-
queryParams:
|
|
5709
|
-
q:
|
|
5956
|
+
queryParams: z45.object({
|
|
5957
|
+
q: z45.string()
|
|
5710
5958
|
}),
|
|
5711
|
-
jsonResponse:
|
|
5712
|
-
snippets:
|
|
5959
|
+
jsonResponse: z45.object({
|
|
5960
|
+
snippets: z45.array(snippetSchema)
|
|
5713
5961
|
})
|
|
5714
5962
|
})(async (req, ctx) => {
|
|
5715
5963
|
const { q } = req.query;
|
|
@@ -5718,25 +5966,25 @@ var search_default = withRouteSpec({
|
|
|
5718
5966
|
});
|
|
5719
5967
|
|
|
5720
5968
|
// fake-snippets-api/routes/api/snippets/update.ts
|
|
5721
|
-
import { z as
|
|
5969
|
+
import { z as z46 } from "zod";
|
|
5722
5970
|
var update_default4 = withRouteSpec({
|
|
5723
5971
|
methods: ["POST"],
|
|
5724
5972
|
auth: "session",
|
|
5725
|
-
jsonBody:
|
|
5726
|
-
snippet_id:
|
|
5727
|
-
code:
|
|
5728
|
-
description:
|
|
5729
|
-
unscoped_name:
|
|
5730
|
-
dts:
|
|
5731
|
-
compiled_js:
|
|
5732
|
-
circuit_json:
|
|
5733
|
-
manual_edits_json_content:
|
|
5734
|
-
snippet_type:
|
|
5735
|
-
is_private:
|
|
5736
|
-
is_unlisted:
|
|
5973
|
+
jsonBody: z46.object({
|
|
5974
|
+
snippet_id: z46.string(),
|
|
5975
|
+
code: z46.string().optional(),
|
|
5976
|
+
description: z46.string().optional(),
|
|
5977
|
+
unscoped_name: z46.string().optional(),
|
|
5978
|
+
dts: z46.string().optional(),
|
|
5979
|
+
compiled_js: z46.string().optional().nullable(),
|
|
5980
|
+
circuit_json: z46.array(z46.record(z46.any())).optional().nullable(),
|
|
5981
|
+
manual_edits_json_content: z46.string().optional().nullable(),
|
|
5982
|
+
snippet_type: z46.enum(["board", "package", "model", "footprint"]).optional(),
|
|
5983
|
+
is_private: z46.boolean().optional(),
|
|
5984
|
+
is_unlisted: z46.boolean().optional()
|
|
5737
5985
|
}),
|
|
5738
|
-
jsonResponse:
|
|
5739
|
-
ok:
|
|
5986
|
+
jsonResponse: z46.object({
|
|
5987
|
+
ok: z46.boolean(),
|
|
5740
5988
|
snippet: snippetSchema
|
|
5741
5989
|
})
|
|
5742
5990
|
})(async (req, ctx) => {
|
|
@@ -5832,7 +6080,9 @@ var routeMapWithHandlers = {
|
|
|
5832
6080
|
"/api/orders/create": create_default,
|
|
5833
6081
|
"/api/orders/get": get_default3,
|
|
5834
6082
|
"/api/orders/list": list_default,
|
|
6083
|
+
"/api/package_files/create_or_update": create_or_update_default,
|
|
5835
6084
|
"/api/package_files/create": create_default2,
|
|
6085
|
+
"/api/package_files/delete": delete_default,
|
|
5836
6086
|
"/api/package_files/download": download_default,
|
|
5837
6087
|
"/api/package_files/get": get_default4,
|
|
5838
6088
|
"/api/package_files/list": list_default2,
|
|
@@ -5842,7 +6092,7 @@ var routeMapWithHandlers = {
|
|
|
5842
6092
|
"/api/package_releases/update": update_default2,
|
|
5843
6093
|
"/api/packages/add_star": add_star_default,
|
|
5844
6094
|
"/api/packages/create": create_default4,
|
|
5845
|
-
"/api/packages/delete":
|
|
6095
|
+
"/api/packages/delete": delete_default2,
|
|
5846
6096
|
"/api/packages/fork": fork_default,
|
|
5847
6097
|
"/api/packages/get": get_default6,
|
|
5848
6098
|
"/api/packages/list": list_default4,
|
|
@@ -5850,7 +6100,7 @@ var routeMapWithHandlers = {
|
|
|
5850
6100
|
"/api/packages/update": update_default3,
|
|
5851
6101
|
"/api/snippets/add_star": add_star_default2,
|
|
5852
6102
|
"/api/snippets/create": create_default5,
|
|
5853
|
-
"/api/snippets/delete":
|
|
6103
|
+
"/api/snippets/delete": delete_default3,
|
|
5854
6104
|
"/api/snippets/download": download_default2,
|
|
5855
6105
|
"/api/snippets/generate_from_jlcpcb": generate_from_jlcpcb_default,
|
|
5856
6106
|
"/api/snippets/get_image": get_image_default,
|
|
@@ -5872,4 +6122,4 @@ var stdin_default = winterSpec;
|
|
|
5872
6122
|
export {
|
|
5873
6123
|
stdin_default as default
|
|
5874
6124
|
};
|
|
5875
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvYXV0b2xvYWQtZGV2LXBhY2thZ2VzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtZGIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1jdHgtZXJyb3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1lcnJvci1oYW5kbGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXJlcXVlc3QtbG9nZ2luZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2RiLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9vcmRlci1zdGVwcy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3NlZWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXRfYWNjb3VudF9iYWxhbmNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkvWy4uLmFueXJvdXRlXS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9kb3dubG9hZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtcmVsZWFzZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2FkZF9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9kZWxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9mb3JrLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3JlbW92ZV9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kZWxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kb3dubG9hZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2dlbmVyYXRlX2Zyb21famxjcGNiLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0X2ltYWdlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvaW1hZ2VzL1thdXRob3JdL1tzbmlwcGV0X25hbWVdL1t0eXBlRm9ybWF0XS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfbmV3ZXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3Rhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3VwZGF0ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtnZXRSb3V0ZU1hdGNoZXJ9IGZyb20gXCJuZXh0LXJvdXRlLW1hdGNoZXJcIlxuaW1wb3J0IHsgbWFrZVJlcXVlc3RBZ2FpbnN0V2ludGVyU3BlYyB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcblxuaW1wb3J0ICogYXMga3hjZGJxcm5kbHd2ZHRtcSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvZGIudHNcIlxuaW1wb3J0ICogYXMgcmx0eG9ra2RwZmt2eHNnZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZC50c1wiXG5pbXBvcnQgKiBhcyBiYXp6bWNwZmx3eXl4dWVmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9zZWVkLnRzXCJcbmltcG9ydCAqIGFzIGtveHNtd3NkaGxpZmt4c20gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldF9hY2NvdW50X2JhbGFuY2UudHNcIlxuaW1wb3J0ICogYXMgd2lzbmNkZXhtaXBpcGJ5eSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHdiYWVlYm50YWljZ3VpcGkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyBibGR6cGxmbXV3Y3RsdHBiIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS50c1wiXG5pbXBvcnQgKiBhcyBkdHF4b2NseWxtanR3aG5sIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzXCJcbmltcG9ydCAqIGFzIGh5ZGx3enFpcm5vdndoa3ggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2Fpc3RyZWFtL1suLi5hbnlyb3V0ZV0udHNcIlxuaW1wb3J0ICogYXMgaXBrcnVtYW5qZHJkdnVpbSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvaGVhbHRoLnRzXCJcbmltcG9ydCAqIGFzIGd5d2h2aHJxeXZ5cmJweHQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHNcIlxuaW1wb3J0ICogYXMgaHRnaWJkY3N0b3hzZ3RxayBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfZmlsZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIG5pZG55amttYW1tdnhmeGsgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX2ZpbGVzL3VwbG9hZC50c1wiXG5pbXBvcnQgKiBhcyBmZ3V1d2Nsamd6Y3ZwbnhiIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHN4dnpzcm1memF5dHBieWkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9nZXQudHNcIlxuaW1wb3J0ICogYXMgY21tYXZrc3NtdGZqd3RxZSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgdmRlc2duYWF4dWJiZ3pqbyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgYWl4d2dkYXRxb2xlZWJkaCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9kb3dubG9hZC50c1wiXG5pbXBvcnQgKiBhcyBrd2luaG5kb3BoaG1saHRvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBqeHZ3ZGRmbnB2bGZweGthIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgdnpqdnJjZmhudnF5ZHJpcSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMga3lmaGlpaGhoenFmbHd1aiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgZGZsYXN4cW1peWJkeXp4ZyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIHd3ZWFla3Vhb2pqd3pnYncgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGludHprdXl0ZWJ6ZXljcXQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2FkZF9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIG9kY2JqY3JvZXpweHNhaXggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyB3c3Nwcm1rbmphYXVzeXFzIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgb3JpYXBpeXpzbHBnaHFtYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZm9yay50c1wiXG5pbXBvcnQgKiBhcyB5bHd5cmJuYnJxaHZ2ZHJkIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgdGpoYmpwZGd2cWprdXFpcSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBzZnl4dHl0cmZscWJseGZ1IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9yZW1vdmVfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyB0bWZhYmFxeXRsZGpqZ3ZwIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgbGF2Znphd2ltcXpsZG10dyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvYWRkX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgbHpvYnJ5ZnJob292cmNncSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGVsZmJqcml1bXJheG1tZGwgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2RlbGV0ZS50c1wiXG5pbXBvcnQgKiBhcyBjdGp0eXRuc3NscmV5aGhpIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kb3dubG9hZC50c1wiXG5pbXBvcnQgKiBhcyBncG56anNrdGdhcXpxZmlrIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZW5lcmF0ZV9mcm9tX2psY3BjYi50c1wiXG5pbXBvcnQgKiBhcyBtc3VlanVwYmJkZnhpa3dwIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHNcIlxuaW1wb3J0ICogYXMgeHBpcXloeHhkc2Zrb21iYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHJqbnZqZ3RlZmF1bmxzdWcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2ltYWdlcy9bYXV0aG9yXS9bc25pcHBldF9uYW1lXS9bdHlwZUZvcm1hdF0udHNcIlxuaW1wb3J0ICogYXMgbnF3aWt3aXp5cmVhdnVhdyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9uZXdlc3QudHNcIlxuaW1wb3J0ICogYXMgZG5za2FyanBnbnhubHNwaCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZy50c1wiXG5pbXBvcnQgKiBhcyBtZ3pkbmJ2cGxwbGl3d3RiIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIGZyd2duZGd5eGpnYWxwdW8gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGNvbXNtanhobnZ3YWdsZXggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3NlYXJjaC50c1wiXG5pbXBvcnQgKiBhcyBmdGJ4ZXVnaG9meGtiZ3hqIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy91cGRhdGUudHNcIlxuXG5jb25zdCByb3V0ZU1hcFdpdGhIYW5kbGVycyA9IHtcbiAgXCIvYXBpL19mYWtlL2RiXCI6IGt4Y2RicXJuZGx3dmR0bXEuZGVmYXVsdCxcIi9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZFwiOiBybHR4b2trZHBma3Z4c2dmLmRlZmF1bHQsXCIvYXBpL19mYWtlL3NlZWRcIjogYmF6em1jcGZsd3l5eHVlZi5kZWZhdWx0LFwiL2FwaS9hY2NvdW50cy9nZXRfYWNjb3VudF9iYWxhbmNlXCI6IGtveHNtd3NkaGxpZmt4c20uZGVmYXVsdCxcIi9hcGkvYWNjb3VudHMvZ2V0XCI6IHdpc25jZGV4bWlwaXBieXkuZGVmYXVsdCxcIi9hcGkvYWNjb3VudHMvdXBkYXRlXCI6IHdiYWVlYm50YWljZ3VpcGkuZGVmYXVsdCxcIi9hcGkvYWlcIjogYmxkenBsZm11d2N0bHRwYi5kZWZhdWx0LFwiL2FwaS9haS9bLi4uYW55cm91dGVdXCI6IGR0cXhvY2x5bG1qdHdobmwuZGVmYXVsdCxcIi9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXVwiOiBoeWRsd3pxaXJub3Z3aGt4LmRlZmF1bHQsXCIvYXBpL2hlYWx0aFwiOiBpcGtydW1hbmpkcmR2dWltLmRlZmF1bHQsXCIvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGhcIjogZ3l3aHZocnF5dnlyYnB4dC5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy9nZXRcIjogaHRnaWJkY3N0b3hzZ3Rxay5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy91cGxvYWRcIjogbmlkbnlqa21hbW12eGZ4ay5kZWZhdWx0LFwiL2FwaS9vcmRlcnMvY3JlYXRlXCI6IGZndXV3Y2xqZ3pjdnBueGIuZGVmYXVsdCxcIi9hcGkvb3JkZXJzL2dldFwiOiBzeHZ6c3JtZnpheXRwYnlpLmRlZmF1bHQsXCIvYXBpL29yZGVycy9saXN0XCI6IGNtbWF2a3NzbXRmand0cWUuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVcIjogdmRlc2duYWF4dWJiZ3pqby5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkXCI6IGFpeHdnZGF0cW9sZWViZGguZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9nZXRcIjoga3dpbmhuZG9waGhtbGh0by5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3RcIjoganh2d2RkZm5wdmxmcHhrYS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2NyZWF0ZVwiOiB2emp2cmNmaG52cXlkcmlxLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCI6IGt5ZmhpaWhoaHpxZmx3dWouZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0XCI6IGRmbGFzeHFtaXliZHl6eGcuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGVcIjogd3dlYWVrdWFvamp3emdidy5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9hZGRfc3RhclwiOiBpbnR6a3V5dGViemV5Y3F0LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2NyZWF0ZVwiOiBvZGNiamNyb2V6cHhzYWl4LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2RlbGV0ZVwiOiB3c3Nwcm1rbmphYXVzeXFzLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ZvcmtcIjogb3JpYXBpeXpzbHBnaHFtYi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9nZXRcIjogeWx3eXJibmJycWh2dmRyZC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9saXN0XCI6IHRqaGJqcGRndnFqa3VxaXEuZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXJcIjogc2Z5eHR5dHJmbHFibHhmdS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy91cGRhdGVcIjogdG1mYWJhcXl0bGRqamd2cC5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9hZGRfc3RhclwiOiBsYXZmemF3aW1xemxkbXR3LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2NyZWF0ZVwiOiBsem9icnlmcmhvb3ZyY2dxLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2RlbGV0ZVwiOiBlbGZianJpdW1yYXhtbWRsLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2Rvd25sb2FkXCI6IGN0anR5dG5zc2xyZXloaGkuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZ2VuZXJhdGVfZnJvbV9qbGNwY2JcIjogZ3Buempza3RnYXF6cWZpay5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2VcIjogbXN1ZWp1cGJiZGZ4aWt3cC5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRcIjogeHBpcXloeHhkc2Zrb21iYi5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdXCI6IHJqbnZqZ3RlZmF1bmxzdWcuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdF9uZXdlc3RcIjogbnF3aWt3aXp5cmVhdnVhdy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nXCI6IGRuc2thcmpwZ254bmxzcGguZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdFwiOiBtZ3pkbmJ2cGxwbGl3d3RiLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyXCI6IGZyd2duZGd5eGpnYWxwdW8uZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvc2VhcmNoXCI6IGNvbXNtanhobnZ3YWdsZXguZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvdXBkYXRlXCI6IGZ0YnhldWdob2Z4a2JneGouZGVmYXVsdFxufVxuXG5jb25zdCB3aW50ZXJTcGVjID0ge1xuICByb3V0ZU1hdGNoZXI6IGdldFJvdXRlTWF0Y2hlcihPYmplY3Qua2V5cyhyb3V0ZU1hcFdpdGhIYW5kbGVycykpLFxuICByb3V0ZU1hcFdpdGhIYW5kbGVycyxcbiAgbWFrZVJlcXVlc3Q6IGFzeW5jIChyZXEsIG9wdGlvbnMpID0+IG1ha2VSZXF1ZXN0QWdhaW5zdFdpbnRlclNwZWMod2ludGVyU3BlYywgb3B0aW9ucykocmVxKVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aW50ZXJTcGVjIiwgImltcG9ydCB7IGNyZWF0ZVdpdGhXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuaW1wb3J0IHsgd2l0aERiIH0gZnJvbSBcIi4vd2l0aC1kYlwiXG5pbXBvcnQgeyBjcmVhdGVXaXRoRGVmYXVsdEV4Y2VwdGlvbkhhbmRsaW5nIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgeyB3aXRoQ3R4RXJyb3IgfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5pbXBvcnQgeyB3aXRoU2Vzc2lvbkF1dGggfSBmcm9tIFwiLi93aXRoLXNlc3Npb24tYXV0aFwiXG5pbXBvcnQgeyB3aXRoT3B0aW9uYWxTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3dpdGgtb3B0aW9uYWwtc2Vzc2lvbi1hdXRoXCJcbmltcG9ydCB7IHdpdGhFcnJvckhhbmRsaW5nIH0gZnJvbSBcIi4vd2l0aC1lcnJvci1oYW5kbGluZ1wiXG5pbXBvcnQgeyB3aXRoUmVxdWVzdExvZ2dpbmcgfSBmcm9tIFwiLi93aXRoLXJlcXVlc3QtbG9nZ2luZ1wiXG5cbmV4cG9ydCBjb25zdCB3aXRoUm91dGVTcGVjID0gY3JlYXRlV2l0aFdpbnRlclNwZWMoe1xuICBhcGlOYW1lOiBcInRzY2lyY3VpdCBTbmlwcGV0cyBBUElcIixcbiAgcHJvZHVjdGlvblNlcnZlclVybDogXCJodHRwczovL3NuaXBwZXRzLnRzY2lyY3VpdC5jb20vYXBpXCIsXG4gIGJlZm9yZUF1dGhNaWRkbGV3YXJlOiBbd2l0aFJlcXVlc3RMb2dnaW5nLCB3aXRoRXJyb3JIYW5kbGluZywgd2l0aEN0eEVycm9yXSxcbiAgYXV0aE1pZGRsZXdhcmU6IHtcbiAgICBzZXNzaW9uOiB3aXRoU2Vzc2lvbkF1dGgsXG4gICAgb3B0aW9uYWxfc2Vzc2lvbjogd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGgsXG4gIH0sXG4gIGFmdGVyQXV0aE1pZGRsZXdhcmU6IFtcbiAgICB3aXRoRGIsXG4gICAgY3JlYXRlV2l0aERlZmF1bHRFeGNlcHRpb25IYW5kbGluZyh7XG4gICAgICBpbmNsdWRlU3RhY2tUcmFjZUluUmVzcG9uc2U6IHRydWUsXG4gICAgfSksXG4gIF0sXG59KVxuIiwgImltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgaG9pc3QgfSBmcm9tIFwienVzdGFuZC1ob2lzdFwiXG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIlxuXG5pbXBvcnQgeyBjb21iaW5lIH0gZnJvbSBcInp1c3RhbmQvbWlkZGxld2FyZVwiXG5pbXBvcnQge1xuICB0eXBlIEFjY291bnQsXG4gIHR5cGUgQWNjb3VudFBhY2thZ2UsXG4gIEpsY3BjYk9yZGVyU3RhdGUsXG4gIEpsY3BjYk9yZGVyU3RlcFJ1bixcbiAgdHlwZSBMb2dpblBhZ2UsXG4gIHR5cGUgT3JkZXIsXG4gIHR5cGUgT3JkZXJGaWxlLFxuICB0eXBlIFBhY2thZ2UsXG4gIHR5cGUgUGFja2FnZUZpbGUsXG4gIHR5cGUgUGFja2FnZVJlbGVhc2UsXG4gIHR5cGUgU2Vzc2lvbixcbiAgdHlwZSBTbmlwcGV0LFxuICBkYXRhYmFzZVNjaGVtYSxcbiAgdHlwZSBwYWNrYWdlU2NoZW1hLFxuICB0eXBlIHNuaXBwZXRTY2hlbWEsXG59IGZyb20gXCIuL3NjaGVtYS50c1wiXG5pbXBvcnQgeyBzZWVkIGFzIHNlZWRGbiB9IGZyb20gXCIuL3NlZWRcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSAoeyBzZWVkIH06IHsgc2VlZD86IGJvb2xlYW4gfSA9IHt9KSA9PiB7XG4gIGNvbnN0IGRiID0gaG9pc3QoY3JlYXRlU3RvcmUoaW5pdGlhbGl6ZXIpKVxuICBpZiAoc2VlZCkge1xuICAgIHNlZWRGbihkYilcbiAgfVxuICByZXR1cm4gZGJcbn1cblxuZXhwb3J0IHR5cGUgRGJDbGllbnQgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVEYXRhYmFzZT5cblxuY29uc3QgaW5pdGlhbGl6ZXIgPSBjb21iaW5lKGRhdGFiYXNlU2NoZW1hLnBhcnNlKHt9KSwgKHNldCwgZ2V0KSA9PiAoe1xuICBhZGRPcmRlcjogKG9yZGVyOiBPbWl0PE9yZGVyLCBcIm9yZGVyX2lkXCI+KTogT3JkZXIgPT4ge1xuICAgIGNvbnN0IG5ld09yZGVyID0geyBvcmRlcl9pZDogYG9yZGVyXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLCAuLi5vcmRlciB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JkZXJzOiBbLi4uc3RhdGUub3JkZXJzLCBuZXdPcmRlcl0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclxuICB9LFxuICBnZXRPcmRlckJ5SWQ6IChvcmRlcklkOiBzdHJpbmcpOiBPcmRlciB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlcnMuZmluZCgob3JkZXIpID0+IG9yZGVyLm9yZGVyX2lkID09PSBvcmRlcklkKVxuICB9LFxuICBnZXRPcmRlckZpbGVzQnlPcmRlcklkOiAob3JkZXJJZDogc3RyaW5nKTogT3JkZXJGaWxlW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JkZXJGaWxlcy5maWx0ZXIoKGZpbGUpID0+IGZpbGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkOiAoXG4gICAgb3JkZXJJZDogc3RyaW5nLFxuICApOiBKbGNwY2JPcmRlclN0YXRlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmpsY3BjYk9yZGVyU3RhdGUuZmluZCgoc3RhdGUpID0+IHN0YXRlLm9yZGVyX2lkID09PSBvcmRlcklkKVxuICB9LFxuICBnZXRKbGNwY2JPcmRlclN0ZXBSdW5zQnlKbGNwY2JPcmRlclN0YXRlSWQ6IChcbiAgICBqbGNwY2JPcmRlclN0YXRlSWQ6IHN0cmluZyxcbiAgKTogSmxjcGNiT3JkZXJTdGVwUnVuW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuamxjcGNiT3JkZXJTdGVwUnVuc1xuICAgICAgLmZpbHRlcigoc3RlcFJ1bikgPT4ge1xuICAgICAgICBjb25zdCBvcmRlclN0YXRlID0gc3RhdGUuamxjcGNiT3JkZXJTdGF0ZS5maW5kKFxuICAgICAgICAgIChzdGF0ZSkgPT5cbiAgICAgICAgICAgIHN0YXRlLmpsY3BjYl9vcmRlcl9zdGF0ZV9pZCA9PT0gc3RlcFJ1bi5qbGNwY2Jfb3JkZXJfc3RhdGVfaWQsXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIG9yZGVyU3RhdGU/Lm9yZGVyX2lkID09PSBqbGNwY2JPcmRlclN0YXRlSWRcbiAgICAgIH0pXG4gICAgICAuc29ydChcbiAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSxcbiAgICAgIClcbiAgfSxcbiAgdXBkYXRlT3JkZXI6IChvcmRlcklkOiBzdHJpbmcsIHVwZGF0ZXM6IFBhcnRpYWw8T3JkZXI+KSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIG9yZGVyczogc3RhdGUub3JkZXJzLm1hcCgob3JkZXIpID0+XG4gICAgICAgIG9yZGVyLm9yZGVyX2lkID09PSBvcmRlcklkID8geyAuLi5vcmRlciwgLi4udXBkYXRlcyB9IDogb3JkZXIsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBhZGRKbGNwY2JPcmRlclN0YXRlOiAoXG4gICAgb3JkZXJTdGF0ZTogT21pdDxKbGNwY2JPcmRlclN0YXRlLCBcImpsY3BjYl9vcmRlcl9zdGF0ZV9pZFwiPixcbiAgKTogSmxjcGNiT3JkZXJTdGF0ZSA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXJTdGF0ZSA9IHtcbiAgICAgIGpsY3BjYl9vcmRlcl9zdGF0ZV9pZDogYG9yZGVyX3N0YXRlXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLFxuICAgICAgLi4ub3JkZXJTdGF0ZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgamxjcGNiT3JkZXJTdGF0ZTogWy4uLnN0YXRlLmpsY3BjYk9yZGVyU3RhdGUsIG5ld09yZGVyU3RhdGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJTdGF0ZVxuICB9LFxuICB1cGRhdGVKbGNwY2JPcmRlclN0YXRlOiAoXG4gICAgb3JkZXJJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8SmxjcGNiT3JkZXJTdGF0ZT4sXG4gICkgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBqbGNwY2JPcmRlclN0YXRlOiBzdGF0ZS5qbGNwY2JPcmRlclN0YXRlLm1hcCgob3JkZXJTdGF0ZSkgPT5cbiAgICAgICAgb3JkZXJTdGF0ZS5vcmRlcl9pZCA9PT0gb3JkZXJJZFxuICAgICAgICAgID8geyAuLi5vcmRlclN0YXRlLCAuLi51cGRhdGVzIH1cbiAgICAgICAgICA6IG9yZGVyU3RhdGUsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBhZGRPcmRlckZpbGU6IChvcmRlckZpbGU6IE9taXQ8T3JkZXJGaWxlLCBcIm9yZGVyX2ZpbGVfaWRcIj4pOiBPcmRlckZpbGUgPT4ge1xuICAgIGNvbnN0IG5ld09yZGVyRmlsZSA9IHtcbiAgICAgIG9yZGVyX2ZpbGVfaWQ6IGBvcmRlcl9maWxlXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLFxuICAgICAgLi4ub3JkZXJGaWxlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvcmRlckZpbGVzOiBbLi4uc3RhdGUub3JkZXJGaWxlcywgbmV3T3JkZXJGaWxlXSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG5ld09yZGVyRmlsZVxuICB9LFxuICBnZXRPcmRlckZpbGVCeUlkOiAob3JkZXJGaWxlSWQ6IHN0cmluZyk6IE9yZGVyRmlsZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlckZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUub3JkZXJfZmlsZV9pZCA9PT0gb3JkZXJGaWxlSWQpXG4gIH0sXG4gIGFkZEFjY291bnQ6IChcbiAgICBhY2NvdW50OiBPbWl0PEFjY291bnQsIFwiYWNjb3VudF9pZFwiPiAmIFBhcnRpYWw8UGljazxBY2NvdW50LCBcImFjY291bnRfaWRcIj4+LFxuICApID0+IHtcbiAgICBjb25zdCBuZXdBY2NvdW50ID0ge1xuICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkIHx8IGBhY2NvdW50XyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLFxuICAgICAgLi4uYWNjb3VudCxcbiAgICB9XG5cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50czogWy4uLnN0YXRlLmFjY291bnRzLCBuZXdBY2NvdW50XSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gbmV3QWNjb3VudFxuICB9LFxuICBhZGRBY2NvdW50UGFja2FnZTogKFxuICAgIGFjY291bnRQYWNrYWdlOiBPbWl0PEFjY291bnRQYWNrYWdlLCBcImFjY291bnRfcGFja2FnZV9pZFwiPixcbiAgKTogQWNjb3VudFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0FjY291bnRQYWNrYWdlID0ge1xuICAgICAgYWNjb3VudF9wYWNrYWdlX2lkOiBgYXBfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5hY2NvdW50UGFja2FnZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudFBhY2thZ2VzOiBbLi4uc3RhdGUuYWNjb3VudFBhY2thZ2VzLCBuZXdBY2NvdW50UGFja2FnZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdBY2NvdW50UGFja2FnZVxuICB9LFxuICBnZXRBY2NvdW50UGFja2FnZUJ5SWQ6IChcbiAgICBhY2NvdW50UGFja2FnZUlkOiBzdHJpbmcsXG4gICk6IEFjY291bnRQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgICAgKGFwKSA9PiBhcC5hY2NvdW50X3BhY2thZ2VfaWQgPT09IGFjY291bnRQYWNrYWdlSWQsXG4gICAgKVxuICB9LFxuICB1cGRhdGVBY2NvdW50UGFja2FnZTogKFxuICAgIGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnRQYWNrYWdlPixcbiAgKTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGFjY291bnRQYWNrYWdlczogc3RhdGUuYWNjb3VudFBhY2thZ2VzLm1hcCgoYXApID0+XG4gICAgICAgIGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCA/IHsgLi4uYXAsIC4uLnVwZGF0ZXMgfSA6IGFwLFxuICAgICAgKSxcbiAgICB9KSlcbiAgfSxcbiAgZGVsZXRlQWNjb3VudFBhY2thZ2U6IChhY2NvdW50UGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAoYXApID0+IGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgZGVsZXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH0pXG4gICAgcmV0dXJuIGRlbGV0ZWRcbiAgfSxcbiAgYWRkU25pcHBldDogKFxuICAgIHNuaXBwZXQ6IE9taXQ8XG4gICAgICB6LmlucHV0PHR5cGVvZiBzbmlwcGV0U2NoZW1hPixcbiAgICAgIFwic25pcHBldF9pZFwiIHwgXCJwYWNrYWdlX3JlbGVhc2VfaWRcIlxuICAgID4sXG4gICk6IFNuaXBwZXQgPT4ge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuXG4gICAgY29uc3QgbmV3U3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IG5leHRJZCA9IG5ld1N0YXRlLmlkQ291bnRlciArIDFcblxuICAgIC8vIENyZWF0ZSB0aGUgcGFja2FnZSB0aGF0IHdpbGwgc2VydmUgYXMgb3VyIHNuaXBwZXRcbiAgICBjb25zdCBuZXdQYWNrYWdlID0ge1xuICAgICAgcGFja2FnZV9pZDogYHBrZ18ke25leHRJZH1gLFxuICAgICAgY3JlYXRvcl9hY2NvdW50X2lkOiBzbmlwcGV0Lm93bmVyX25hbWUsIC8vIFVzaW5nIG93bmVyX25hbWUgYXMgYWNjb3VudF9pZCBzaW5jZSB3ZSBkb24ndCBoYXZlIGNvbnRleHRcbiAgICAgIG93bmVyX29yZ19pZDogXCJcIiwgLy8gRW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgbnVsbCB0byBtYXRjaCB0eXBlXG4gICAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHNuaXBwZXQub3duZXJfbmFtZSxcbiAgICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjogc25pcHBldC5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgbmFtZTogYCR7c25pcHBldC5vd25lcl9uYW1lfS8ke3NuaXBwZXQudW5zY29wZWRfbmFtZX1gLFxuICAgICAgdW5zY29wZWRfbmFtZTogc25pcHBldC51bnNjb3BlZF9uYW1lLFxuICAgICAgbGF0ZXN0X3ZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgICB3ZWJzaXRlOiBudWxsLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBhaV9kZXNjcmlwdGlvbjogXCJwbGFjZWhvbGRlciBhaSBkZXNjcmlwdGlvblwiLFxuICAgICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcInBsYWNlaG9sZGVyIGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICAgICAgaXNfc25pcHBldDogdHJ1ZSxcbiAgICAgIGlzX2JvYXJkOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJib2FyZFwiLFxuICAgICAgaXNfcGFja2FnZTogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwicGFja2FnZVwiLFxuICAgICAgaXNfbW9kZWw6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcIm1vZGVsXCIsXG4gICAgICBpc19mb290cHJpbnQ6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcImZvb3RwcmludFwiLFxuICAgICAgc25pcHBldF90eXBlOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSxcbiAgICAgIGlzX3ByaXZhdGU6IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IGZhbHNlLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogYHBhY2thZ2VfcmVsZWFzZV8ke25leHRJZH1gLFxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBuZXdQYWNrYWdlUmVsZWFzZSA9IHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogYHBhY2thZ2VfcmVsZWFzZV8ke25leHRJZH1gLFxuICAgICAgcGFja2FnZV9pZDogbmV3UGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfVxuXG4gICAgLy8gQWRkIGFsbCB0aGUgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXM6IFBhY2thZ2VGaWxlW10gPSBbXVxuICAgIGxldCBmaWxlSWRDb3VudGVyID0gbmV4dElkXG5cbiAgICAvLyBBZGQgbWFpbiBjb2RlIGZpbGVcbiAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgY29udGVudF90ZXh0OiBzbmlwcGV0LmNvZGUgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgIH0pXG5cbiAgICAvLyBBZGQgRFRTIGZpbGUgaWYgcHJvdmlkZWRcbiAgICBpZiAoc25pcHBldC5kdHMpIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuZHRzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbXBpbGVkIEpTIGlmIHByb3ZpZGVkXG4gICAgaWYgKHNuaXBwZXQuY29tcGlsZWRfanMpIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBzbmlwcGV0LmNvbXBpbGVkX2pzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNpcmN1aXQgSlNPTiBpZiBwcm92aWRlZFxuICAgIGlmIChzbmlwcGV0LmNpcmN1aXRfanNvbiAmJiBzbmlwcGV0LmNpcmN1aXRfanNvbi5sZW5ndGggPiAwKSB7XG4gICAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgICAgICBjb250ZW50X3RleHQ6IEpTT04uc3RyaW5naWZ5KHNuaXBwZXQuY2lyY3VpdF9qc29uKSxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZGF0YWJhc2Ugc3RhdGUgYXRvbWljYWxseVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHBhY2thZ2VzOiBbLi4uc3RhdGUucGFja2FnZXMsIG5ld1BhY2thZ2VdLFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBbLi4uc3RhdGUucGFja2FnZVJlbGVhc2VzLCBuZXdQYWNrYWdlUmVsZWFzZV0sXG4gICAgICBwYWNrYWdlRmlsZXM6IFsuLi5zdGF0ZS5wYWNrYWdlRmlsZXMsIC4uLnBhY2thZ2VGaWxlc10sXG4gICAgICBpZENvdW50ZXI6IGZpbGVJZENvdW50ZXIsXG4gICAgfSkpXG5cbiAgICAvLyBSZXR1cm4gaW4gdGhlIHNhbWUgZm9ybWF0IGFzIGNyZWF0ZSBlbmRwb2ludFxuICAgIHJldHVybiB7XG4gICAgICBzbmlwcGV0X2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIG5hbWU6IG5ld1BhY2thZ2UubmFtZSxcbiAgICAgIHVuc2NvcGVkX25hbWU6IG5ld1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG93bmVyX25hbWU6IHNuaXBwZXQub3duZXJfbmFtZSxcbiAgICAgIGNvZGU6IHNuaXBwZXQuY29kZSB8fCBcIlwiLFxuICAgICAgZHRzOiBzbmlwcGV0LmR0cyxcbiAgICAgIGNvbXBpbGVkX2pzOiBzbmlwcGV0LmNvbXBpbGVkX2pzLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgY2lyY3VpdF9qc29uOiBzbmlwcGV0LmNpcmN1aXRfanNvbiB8fCBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX3ByaXZhdGU6IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IGZhbHNlLFxuICAgIH1cbiAgfSxcbiAgZ2V0TmV3ZXN0U25pcHBldHM6IChsaW1pdDogbnVtYmVyKTogU25pcHBldFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG5cbiAgICAvLyBHZXQgYWxsIHBhY2thZ2VzIHRoYXQgYXJlIHNuaXBwZXRzXG4gICAgY29uc3Qgc25pcHBldFBhY2thZ2VzID0gc3RhdGUucGFja2FnZXNcbiAgICAgIC5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3NuaXBwZXQgPT09IHRydWUpXG4gICAgICAubWFwKChwa2cpID0+IHtcbiAgICAgICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICAgICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgICAocHIpID0+XG4gICAgICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgICAgICBwci5pc19sYXRlc3QgPT09IHRydWUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIG51bGxcblxuICAgICAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICAvLyBHZXQgdGhlIGNvZGUgZmlsZVxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHN0YXJyZWRcbiAgICAgICAgY29uc3QgaXNTdGFycmVkID0gc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNvbWUoXG4gICAgICAgICAgKGFwKSA9PiBhcC5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQ29udmVydCB0byBzbmlwcGV0IGZvcm1hdFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGR0czpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzdGFyX2NvdW50OiBwa2cuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIGNpcmN1aXRfanNvbjpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlc1xuICAgICAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgLmZsYXRNYXAoKGZpbGUpID0+IEpTT04ucGFyc2UoZmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKSkgfHwgW10sXG4gICAgICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICAgICAgaXNfdW5saXN0ZWQ6IHBrZy5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChzbmlwcGV0KTogc25pcHBldCBpcyBOb25OdWxsYWJsZTx0eXBlb2Ygc25pcHBldD4gPT4gc25pcHBldCAhPT0gbnVsbCxcbiAgICAgIClcbiAgICAgIC5tYXAoKHNuaXBwZXQpID0+ICh7XG4gICAgICAgIC4uLnNuaXBwZXQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICB9KSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuXG4gICAgcmV0dXJuIHNuaXBwZXRQYWNrYWdlc1xuICB9LFxuICBnZXRUcmVuZGluZ1NuaXBwZXRzOiAobGltaXQ6IG51bWJlciwgc2luY2U6IHN0cmluZyk6IFNuaXBwZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHNpbmNlRGF0ZSA9IG5ldyBEYXRlKHNpbmNlKS5nZXRUaW1lKClcblxuICAgIC8vIEdldCBzdGFyIGNvdW50cyB3aXRoaW4gdGltZSBwZXJpb2RcbiAgICBjb25zdCByZWNlbnRTdGFycyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KClcbiAgICBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZm9yRWFjaCgoYXApID0+IHtcbiAgICAgIGlmIChhcC5pc19zdGFycmVkICYmIG5ldyBEYXRlKGFwLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSA+PSBzaW5jZURhdGUpIHtcbiAgICAgICAgcmVjZW50U3RhcnMuc2V0KFxuICAgICAgICAgIGFwLnBhY2thZ2VfaWQsXG4gICAgICAgICAgKHJlY2VudFN0YXJzLmdldChhcC5wYWNrYWdlX2lkKSB8fCAwKSArIDEsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgcGFja2FnZXNXaXRoU3RhckNvdW50ID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgLm1hcCgocGtnKSA9PiAoe1xuICAgICAgICAuLi5wa2csXG4gICAgICAgIHN0YXJfY291bnQ6IHJlY2VudFN0YXJzLmdldChwa2cucGFja2FnZV9pZCkgfHwgMCxcbiAgICAgIH0pKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIuc3Rhcl9jb3VudCAtIGEuc3Rhcl9jb3VudClcbiAgICAgIC5zbGljZSgwLCBsaW1pdClcblxuICAgIGNvbnN0IHRyZW5kaW5nU25pcHBldHMgPSBwYWNrYWdlc1dpdGhTdGFyQ291bnRcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGUgPyBjb2RlRmlsZS5jb250ZW50X3RleHQgfHwgXCJcIiA6IFwiXCIsXG4gICAgICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICAgICAgdXBkYXRlZF9hdDogcGtnLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuaXNfc25pcHBldCA/IFwiYm9hcmRcIiA6IFwicGFja2FnZVwiLFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50LFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc25pcHBldCkgPT4gc25pcHBldCAhPT0gbnVsbClcblxuICAgIHJldHVybiB0cmVuZGluZ1NuaXBwZXRzIGFzIFNuaXBwZXRbXVxuICB9LFxuICBnZXRQYWNrYWdlc0J5QXV0aG9yOiAoYXV0aG9yTmFtZT86IHN0cmluZyk6IFBhY2thZ2VbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHBhY2thZ2VzID0gYXV0aG9yTmFtZVxuICAgICAgPyBzdGF0ZS5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gYXV0aG9yTmFtZSlcbiAgICAgIDogc3RhdGUucGFja2FnZXNcbiAgICByZXR1cm4gcGFja2FnZXMubWFwKChwa2cpID0+ICh7XG4gICAgICAuLi5wa2csXG4gICAgICBzdGFyX2NvdW50OiBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmlsdGVyKFxuICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICApLmxlbmd0aCxcbiAgICB9KSlcbiAgfSxcbiAgZ2V0U25pcHBldEJ5QXV0aG9yQW5kTmFtZTogKFxuICAgIGF1dGhvck5hbWU6IHN0cmluZyxcbiAgICBzbmlwcGV0TmFtZTogc3RyaW5nLFxuICApOiBTbmlwcGV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgLy8gTG9vayBmb3IgdGhlIHBhY2thZ2UgdGhhdCByZXByZXNlbnRzIHRoaXMgc25pcHBldCB3aXRoIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmdcbiAgICBjb25zdCBfcGFja2FnZSA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBhdXRob3JOYW1lLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgcGtnLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gc25pcHBldE5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFfcGFja2FnZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBjb2RlIGZpbGUgKGluZGV4LnRzIG9yIGluZGV4LnRzeClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgLy8gTWFwIHRoZSBwYWNrYWdlIGRhdGEgdG8gbWF0Y2ggdGhlIFNuaXBwZXQgc3RydWN0dXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IF9wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBfcGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogX3BhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogX3BhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBfcGFja2FnZS5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogX3BhY2thZ2UudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IF9wYWNrYWdlLnN0YXJfY291bnQgfHwgMCxcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogX3BhY2thZ2UubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgY2lyY3VpdF9qc29uOiBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgICAgKT8uY29udGVudF90ZXh0XG4gICAgICAgID8gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJbXVwiLFxuICAgICAgICAgIClcbiAgICAgICAgOiBbXSxcbiAgICAgIGlzX3ByaXZhdGU6IF9wYWNrYWdlLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IF9wYWNrYWdlLmlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IF9wYWNrYWdlLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgIH1cbiAgfSxcbiAgdXBkYXRlU25pcHBldDogKFxuICAgIHNuaXBwZXRJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8U25pcHBldD4sXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VJbmRleCA9IHN0YXRlLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICAgIClcbiAgICAgIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpXG4gICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuXG4gICAgICAvLyBVcGRhdGUgdGhlIHBhY2thZ2VcbiAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgIGNvbnN0IGN1cnJlbnRQYWNrYWdlID0gdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF1cbiAgICAgIHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdID0ge1xuICAgICAgICAuLi5jdXJyZW50UGFja2FnZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHVwZGF0ZXMuZGVzY3JpcHRpb24gPz8gY3VycmVudFBhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgICAgIGlzX3ByaXZhdGU6IHVwZGF0ZXMuaXNfcHJpdmF0ZSA/PyBjdXJyZW50UGFja2FnZS5pc19wcml2YXRlLFxuICAgICAgICBpc19wdWJsaWM6XG4gICAgICAgICAgdXBkYXRlcy5pc19wcml2YXRlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gIXVwZGF0ZXMuaXNfcHJpdmF0ZVxuICAgICAgICAgICAgOiBjdXJyZW50UGFja2FnZS5pc19wdWJsaWMsXG4gICAgICAgIGlzX3VubGlzdGVkOiB1cGRhdGVzLmlzX3ByaXZhdGVcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6ICh1cGRhdGVzLmlzX3VubGlzdGVkID8/IGN1cnJlbnRQYWNrYWdlLmlzX3VubGlzdGVkKSxcbiAgICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9XG5cbiAgICAgIC8vIEdldCB0aGUgY3VycmVudCBwYWNrYWdlIHJlbGVhc2VcbiAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcikgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IGN1cnJlbnRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICApXG4gICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gc3RhdGVcblxuICAgICAgLy8gVXBkYXRlIHBhY2thZ2UgZmlsZXMgaWYgY29kZS9kdHMvanMgY2hhbmdlZFxuICAgICAgY29uc3QgdXBkYXRlZEZpbGVzID0gWy4uLnN0YXRlLnBhY2thZ2VGaWxlc11cbiAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHVwZGF0ZWRGaWxlcy5maWx0ZXIoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgKVxuXG4gICAgICBpZiAodXBkYXRlcy5jb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29kZUZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChjb2RlRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbY29kZUZpbGVJbmRleF0gPSB7XG4gICAgICAgICAgICAuLi5wYWNrYWdlRmlsZXNbY29kZUZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29kZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmNvZGUsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1cGRhdGVzLmR0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGR0c0ZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgKVxuICAgICAgICBpZiAoZHRzRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbZHRzRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tkdHNGaWxlSW5kZXhdLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmR0cyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5kdHMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1cGRhdGVzLmNvbXBpbGVkX2pzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QganNGaWxlSW5kZXggPSBwYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChqc0ZpbGVJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzW2pzRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tqc0ZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29tcGlsZWRfanMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzLnB1c2goe1xuICAgICAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7dGltZXN0YW1wfWAsXG4gICAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmNvbXBpbGVkX2pzLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgICBpZiAodXBkYXRlcy5jaXJjdWl0X2pzb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjaXJjdWl0RmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGNpcmN1aXRGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tjaXJjdWl0RmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tjaXJjdWl0RmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkodXBkYXRlcy5jaXJjdWl0X2pzb24pLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZXR1cm4gdXBkYXRlZCBzdGF0ZVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBhY2thZ2VzOiB1cGRhdGVkUGFja2FnZXMsXG4gICAgICAgIHBhY2thZ2VGaWxlczogdXBkYXRlZEZpbGVzLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBHZXQgdGhlIHVwZGF0ZWQgc25pcHBldCB0byByZXR1cm5cbiAgICBjb25zdCB1cGRhdGVkUGFja2FnZSA9IGdldCgpLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkLFxuICAgIClcbiAgICBpZiAoIXVwZGF0ZWRQYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGdldCgpLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGdldCgpLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG5cbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuICAgIGNvbnN0IGR0c0ZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgKVxuICAgIGNvbnN0IGpzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgKVxuICAgIGNvbnN0IGNpcmN1aXRGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgKVxuXG4gICAgLy8gUmV0dXJuIGluIHNuaXBwZXQgZm9ybWF0XG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IHVwZGF0ZWRQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IHVwZGF0ZWRQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiB1cGRhdGVkUGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogdXBkYXRlZFBhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogdXBkYXRlZFBhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogdXBkYXRlZFBhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czogZHRzRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczoganNGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IHVwZGF0ZWRQYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiB1cGRhdGVkUGFja2FnZS51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogdXBkYXRlZFBhY2thZ2Uuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiB1cGRhdGVkUGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IGNpcmN1aXRGaWxlXG4gICAgICAgID8gSlNPTi5wYXJzZShjaXJjdWl0RmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogdXBkYXRlZFBhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogdXBkYXRlZFBhY2thZ2UuaXNfcHVibGljID8/IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogdXBkYXRlZFBhY2thZ2UuaXNfdW5saXN0ZWQgPz8gZmFsc2UsXG4gICAgfVxuICB9LFxuICBnZXRTbmlwcGV0QnlJZDogKFxuICAgIHNuaXBwZXRJZDogc3RyaW5nLFxuICAgIGF1dGg/OiB7IGdpdGh1Yl91c2VybmFtZTogc3RyaW5nIH0sXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICAvLyBMb29rIGZvciB0aGUgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzbmlwcGV0XG4gICAgY29uc3QgX3BhY2thZ2UgPSBzdGF0ZS5wYWNrYWdlcy5maW5kKFxuICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFfcGFja2FnZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gSGFuZGxlIHZpc2liaWxpdHkgYmFzZWQgb24gYXV0aGVudGljYXRpb25cbiAgICBpZiAoIWF1dGgpIHtcbiAgICAgIC8vIFVuYXV0aGVudGljYXRlZCB1c2VycyBjYW4gb25seSBzZWUgcHVibGljIGFuZCBub24tdW5saXN0ZWQgcGFja2FnZXNcbiAgICAgIGlmICghX3BhY2thZ2UuaXNfcHVibGljIHx8IF9wYWNrYWdlLmlzX3VubGlzdGVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXV0aGVudGljYXRlZCB1c2VycyBjYW4gc2VlOlxuICAgICAgLy8gMS4gUHVibGljIGFuZCBub24tdW5saXN0ZWQgcGFja2FnZXNcbiAgICAgIC8vIDIuIFRoZWlyIG93biB1bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgLy8gMy4gVGhlaXIgb3duIHByaXZhdGUgcGFja2FnZXNcbiAgICAgIGNvbnN0IGlzT3duUGFja2FnZSA9XG4gICAgICAgIF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gYXV0aD8uZ2l0aHViX3VzZXJuYW1lXG4gICAgICBjb25zdCBpc1B1YmxpY0FuZE5vdFVubGlzdGVkID0gX3BhY2thZ2UuaXNfcHVibGljICYmICFfcGFja2FnZS5pc191bmxpc3RlZFxuICAgICAgY29uc3QgaXNPd25Vbmxpc3RlZCA9IF9wYWNrYWdlLmlzX3VubGlzdGVkICYmIGlzT3duUGFja2FnZVxuICAgICAgY29uc3QgaXNPd25Qcml2YXRlID0gX3BhY2thZ2UuaXNfcHJpdmF0ZSAmJiBpc093blBhY2thZ2VcblxuICAgICAgaWYgKCFpc1B1YmxpY0FuZE5vdFVubGlzdGVkICYmICFpc093blVubGlzdGVkICYmICFpc093blByaXZhdGUpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBfcGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIGZpbGVzXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcblxuICAgIC8vIEdldCB0aGUgY29kZSBmaWxlIChpbmRleC50cyBvciBpbmRleC50c3gpXG4gICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgIClcblxuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHN0YXJyZWQgdGhpcyBzbmlwcGV0XG4gICAgY29uc3QgaXNTdGFycmVkID0gc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNvbWUoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBhcC5pc19zdGFycmVkLFxuICAgIClcblxuICAgIC8vIE1hcCB0aGUgcGFja2FnZSBkYXRhIHRvIG1hdGNoIHRoZSBTbmlwcGV0IHN0cnVjdHVyZVxuICAgIHJldHVybiB7XG4gICAgICBzbmlwcGV0X2lkOiBfcGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBfcGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBfcGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgbmFtZTogX3BhY2thZ2UubmFtZSxcbiAgICAgIG93bmVyX25hbWU6IF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgZGVzY3JpcHRpb246IF9wYWNrYWdlLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IF9wYWNrYWdlLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBkdHM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogX3BhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IF9wYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiBfcGFja2FnZS5zdGFyX2NvdW50IHx8IDAsXG4gICAgICBpc19zdGFycmVkOiBpc1N0YXJyZWQsXG4gICAgICB2ZXJzaW9uOiBfcGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICApPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIltdXCIsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogX3BhY2thZ2UuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogX3BhY2thZ2UuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogX3BhY2thZ2UuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9LFxuICBzZWFyY2hTbmlwcGV0czogKHF1ZXJ5OiBzdHJpbmcpOiBTbmlwcGV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBsb3dlcmNhc2VRdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgICBjb25zdCBwYWNrYWdlcyA9IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBuYW1lIG9yIGRlc2NyaXB0aW9uXG4gICAgY29uc3QgbWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSB8fFxuICAgICAgICBwa2cuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpLFxuICAgIClcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBjb2RlIGNvbnRlbnQgaW4gYW55IGZpbGVcbiAgICBjb25zdCBtYXRjaGluZ0ZpbGVzQnlDb250ZW50ID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PlxuICAgICAgICBmaWxlLmNvbnRlbnRfdGV4dD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSkgPz8gZmFsc2UsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlcyBmb3IgbWF0Y2hpbmcgZmlsZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlDb250ZW50ID0gbWF0Y2hpbmdGaWxlc0J5Q29udGVudFxuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoaXMgZmlsZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgZm9yIHRoaXMgcmVsZWFzZVxuICAgICAgICByZXR1cm4gcGFja2FnZXMuZmluZChcbiAgICAgICAgICAocGtnKSA9PlxuICAgICAgICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHBrZyk6IHBrZyBpcyBOb25OdWxsYWJsZTx0eXBlb2YgcGtnPiA9PiBwa2cgIT09IG51bGwpXG5cbiAgICAvLyBDb21iaW5lIGJvdGggc2V0cyBvZiBtYXRjaGluZyBwYWNrYWdlcyBhbmQgcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzID0gW1xuICAgICAgLi4ubmV3IFNldChbLi4ubWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEsIC4uLm1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnRdKSxcbiAgICBdXG5cbiAgICAvLyBDb252ZXJ0IG1hdGNoaW5nIHBhY2thZ2VzIHRvIHNuaXBwZXQgZm9ybWF0XG4gICAgcmV0dXJuIG1hdGNoaW5nUGFja2FnZXNcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGR0czpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzdGFyX2NvdW50OiBwa2cuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIGNpcmN1aXRfanNvbjpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlc1xuICAgICAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgLmZsYXRNYXAoKGZpbGUpID0+IEpTT04ucGFyc2UoZmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKSkgfHwgW10sXG4gICAgICAgIH0gYXMgU25pcHBldFxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHNuaXBwZXQpOiBzbmlwcGV0IGlzIFNuaXBwZXQgPT4gc25pcHBldCAhPT0gbnVsbClcbiAgfSxcbiAgZGVsZXRlU25pcHBldDogKHNuaXBwZXRJZDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gc3RhdGUuc25pcHBldHMuZmluZEluZGV4KChzKSA9PiBzLnNuaXBwZXRfaWQgPT09IHNuaXBwZXRJZClcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc3RhdGUuc25pcHBldHMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICBkZWxldGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBhZGRTZXNzaW9uOiAoc2Vzc2lvbjogT21pdDxTZXNzaW9uLCBcInNlc3Npb25faWRcIj4pOiBTZXNzaW9uID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0geyBzZXNzaW9uX2lkOiBgc2Vzc2lvbl8ke0RhdGUubm93KCl9YCwgLi4uc2Vzc2lvbiB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHNlc3Npb25zOiBbLi4uc3RhdGUuc2Vzc2lvbnMsIG5ld1Nlc3Npb25dLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdTZXNzaW9uXG4gIH0sXG4gIGdldFNlc3Npb25zOiAoe1xuICAgIGFjY291bnRfaWQsXG4gICAgaXNfY2xpX3Nlc3Npb24sXG4gIH06IHsgYWNjb3VudF9pZDogc3RyaW5nOyBpc19jbGlfc2Vzc2lvbj86IGJvb2xlYW4gfSk6IFNlc3Npb25bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5zZXNzaW9ucy5maWx0ZXIoXG4gICAgICAoc2Vzc2lvbikgPT5cbiAgICAgICAgc2Vzc2lvbi5hY2NvdW50X2lkID09PSBhY2NvdW50X2lkICYmXG4gICAgICAgIChpc19jbGlfc2Vzc2lvbiA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgc2Vzc2lvbi5pc19jbGlfc2Vzc2lvbiA9PT0gaXNfY2xpX3Nlc3Npb24pLFxuICAgIClcbiAgfSxcbiAgY3JlYXRlTG9naW5QYWdlOiAoKTogTG9naW5QYWdlID0+IHtcbiAgICBjb25zdCBuZXdMb2dpblBhZ2U6IExvZ2luUGFnZSA9IHtcbiAgICAgIGxvZ2luX3BhZ2VfaWQ6IGBsb2dpbl9wYWdlXyR7RGF0ZS5ub3coKX1gLFxuICAgICAgbG9naW5fcGFnZV9hdXRoX3Rva2VuOiBgdG9rZW5fJHtEYXRlLm5vdygpfWAsXG4gICAgICB3YXNfbG9naW5fc3VjY2Vzc2Z1bDogZmFsc2UsXG4gICAgICBoYXNfYmVlbl91c2VkX3RvX2NyZWF0ZV9zZXNzaW9uOiBmYWxzZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGV4cGlyZXNfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzMCAqIDYwICogMTAwMCkudG9JU09TdHJpbmcoKSwgLy8gMzAgbWludXRlcyBleHBpcmF0aW9uXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBsb2dpblBhZ2VzOiBbLi4uc3RhdGUubG9naW5QYWdlcywgbmV3TG9naW5QYWdlXSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3TG9naW5QYWdlXG4gIH0sXG4gIGdldExvZ2luUGFnZTogKGxvZ2luUGFnZUlkOiBzdHJpbmcpOiBMb2dpblBhZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUubG9naW5QYWdlcy5maW5kKChscCkgPT4gbHAubG9naW5fcGFnZV9pZCA9PT0gbG9naW5QYWdlSWQpXG4gIH0sXG4gIHVwZGF0ZUxvZ2luUGFnZTogKGxvZ2luUGFnZUlkOiBzdHJpbmcsIHVwZGF0ZXM6IFBhcnRpYWw8TG9naW5QYWdlPik6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBsb2dpblBhZ2VzOiBzdGF0ZS5sb2dpblBhZ2VzLm1hcCgobHApID0+XG4gICAgICAgIGxwLmxvZ2luX3BhZ2VfaWQgPT09IGxvZ2luUGFnZUlkID8geyAuLi5scCwgLi4udXBkYXRlcyB9IDogbHAsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBnZXRBY2NvdW50OiAoYWNjb3VudElkOiBzdHJpbmcpOiBBY2NvdW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRzLmZpbmQoKGFjY291bnQpID0+IGFjY291bnQuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkKVxuICB9LFxuICB1cGRhdGVBY2NvdW50OiAoXG4gICAgYWNjb3VudElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxBY2NvdW50PixcbiAgKTogQWNjb3VudCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWRBY2NvdW50OiBBY2NvdW50IHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgYWNjb3VudEluZGV4ID0gc3RhdGUuYWNjb3VudHMuZmluZEluZGV4KFxuICAgICAgICAoYWNjb3VudCkgPT4gYWNjb3VudC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQsXG4gICAgICApXG4gICAgICBpZiAoYWNjb3VudEluZGV4ICE9PSAtMSkge1xuICAgICAgICB1cGRhdGVkQWNjb3VudCA9IHsgLi4uc3RhdGUuYWNjb3VudHNbYWNjb3VudEluZGV4XSB9XG4gICAgICAgIGlmICh1cGRhdGVzLnNoaXBwaW5nSW5mbykge1xuICAgICAgICAgIHVwZGF0ZWRBY2NvdW50LnNoaXBwaW5nSW5mbyA9IHtcbiAgICAgICAgICAgIC4uLnVwZGF0ZWRBY2NvdW50LnNoaXBwaW5nSW5mbyxcbiAgICAgICAgICAgIC4uLnVwZGF0ZXMuc2hpcHBpbmdJbmZvLFxuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgdXBkYXRlcy5zaGlwcGluZ0luZm9cbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVkQWNjb3VudCA9IHsgLi4udXBkYXRlZEFjY291bnQsIC4uLnVwZGF0ZXMgfVxuICAgICAgICBjb25zdCB1cGRhdGVkQWNjb3VudHMgPSBbLi4uc3RhdGUuYWNjb3VudHNdXG4gICAgICAgIHVwZGF0ZWRBY2NvdW50c1thY2NvdW50SW5kZXhdID0gdXBkYXRlZEFjY291bnRcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFjY291bnRzOiB1cGRhdGVkQWNjb3VudHMgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZEFjY291bnRcbiAgfSxcbiAgY3JlYXRlU2Vzc2lvbjogKHNlc3Npb246IE9taXQ8U2Vzc2lvbiwgXCJzZXNzaW9uX2lkXCI+KTogU2Vzc2lvbiA9PiB7XG4gICAgY29uc3QgbmV3U2Vzc2lvbiA9IHsgc2Vzc2lvbl9pZDogYHNlc3Npb25fJHtEYXRlLm5vdygpfWAsIC4uLnNlc3Npb24gfVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBzZXNzaW9uczogWy4uLnN0YXRlLnNlc3Npb25zLCBuZXdTZXNzaW9uXSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3U2Vzc2lvblxuICB9LFxuICBhZGRTdGFyOiAoYWNjb3VudElkOiBzdHJpbmcsIHBhY2thZ2VJZDogc3RyaW5nKTogQWNjb3VudFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgIGNvbnN0IGFjY291bnRQYWNrYWdlID0ge1xuICAgICAgYWNjb3VudF9wYWNrYWdlX2lkOiBgYXBfJHtEYXRlLm5vdygpfWAsXG4gICAgICBhY2NvdW50X2lkOiBhY2NvdW50SWQsXG4gICAgICBwYWNrYWdlX2lkOiBwYWNrYWdlSWQsXG4gICAgICBpc19zdGFycmVkOiB0cnVlLFxuICAgICAgY3JlYXRlZF9hdDogbm93LFxuICAgICAgdXBkYXRlZF9hdDogbm93LFxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSdzIHN0YXIgY291bnRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIGFuZCBpbmNyZW1lbnQgaXRzIHN0YXIgY291bnRcbiAgICAgIGNvbnN0IHBhY2thZ2VJbmRleCA9IHN0YXRlLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCxcbiAgICAgIClcbiAgICAgIGlmIChwYWNrYWdlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCB1cGRhdGVkUGFja2FnZXMgPSBbLi4uc3RhdGUucGFja2FnZXNdXG4gICAgICAgIHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdID0ge1xuICAgICAgICAgIC4uLnVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLFxuICAgICAgICAgIHN0YXJfY291bnQ6ICh1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XS5zdGFyX2NvdW50IHx8IDApICsgMSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgICBhY2NvdW50UGFja2FnZXM6IFsuLi5zdGF0ZS5hY2NvdW50UGFja2FnZXMsIGFjY291bnRQYWNrYWdlXSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IFsuLi5zdGF0ZS5hY2NvdW50UGFja2FnZXMsIGFjY291bnRQYWNrYWdlXSxcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGFjY291bnRQYWNrYWdlXG4gIH0sXG4gIHJlbW92ZVN0YXI6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIGFuZCBkZWNyZW1lbnQgaXRzIHN0YXIgY291bnRcbiAgICAgIGNvbnN0IHBhY2thZ2VJbmRleCA9IHN0YXRlLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCxcbiAgICAgIClcblxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgICAgc3Rhcl9jb3VudDogTWF0aC5tYXgoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgKHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLnN0YXJfY291bnQgfHwgMCkgLSAxLFxuICAgICAgICAgICksXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBhY2thZ2VzOiB1cGRhdGVkUGFja2FnZXMsXG4gICAgICAgICAgYWNjb3VudFBhY2thZ2VzOiBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmlsdGVyKFxuICAgICAgICAgICAgKGFwKSA9PlxuICAgICAgICAgICAgICAhKGFwLmFjY291bnRfaWQgPT09IGFjY291bnRJZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpLFxuICAgICAgICAgICksXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudFBhY2thZ2VzOiBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmlsdGVyKFxuICAgICAgICAgIChhcCkgPT4gIShhcC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKSxcbiAgICAgICAgKSxcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICBoYXNTdGFycmVkOiAoYWNjb3VudElkOiBzdHJpbmcsIHBhY2thZ2VJZDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgIChhcCkgPT5cbiAgICAgICAgYXAuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkICYmXG4gICAgICAgIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCAmJlxuICAgICAgICBhcC5pc19zdGFycmVkLFxuICAgIClcbiAgfSxcbiAgYWRkUGFja2FnZTogKFxuICAgIF9wYWNrYWdlOiBPbWl0PHouaW5wdXQ8dHlwZW9mIHBhY2thZ2VTY2hlbWE+LCBcInBhY2thZ2VfaWRcIj4sXG4gICk6IFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICBjb25zdCBuZXdQYWNrYWdlID0ge1xuICAgICAgcGFja2FnZV9pZDogYHBhY2thZ2VfJHt0aW1lc3RhbXB9YCxcbiAgICAgIC4uLl9wYWNrYWdlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgcGFja2FnZXM6IFsuLi5zdGF0ZS5wYWNrYWdlcywgbmV3UGFja2FnZSBhcyBQYWNrYWdlXSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UGFja2FnZSBhcyBQYWNrYWdlXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2U6IChcbiAgICBwYWNrYWdlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPFBhY2thZ2U+LFxuICApOiBQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZFBhY2thZ2U6IFBhY2thZ2UgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBwYWNrYWdlSW5kZXggPSBzdGF0ZS5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQsXG4gICAgICApXG4gICAgICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgIHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdID0ge1xuICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgIH1cbiAgICAgIHVwZGF0ZWRQYWNrYWdlID0gdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF1cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzIH1cbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkUGFja2FnZVxuICB9LFxuICBnZXRQYWNrYWdlQnlJZDogKHBhY2thZ2VJZDogc3RyaW5nKTogUGFja2FnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHBrZyA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZClcbiAgICBpZiAoIXBrZykgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB7XG4gICAgICAuLi5wa2csXG4gICAgfVxuICB9LFxuICBnZXRQYWNrYWdlUmVsZWFzZUJ5SWQ6IChcbiAgICBwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcsXG4gICk6IFBhY2thZ2VSZWxlYXNlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlUmVsZWFzZTogKFxuICAgIHBhY2thZ2VSZWxlYXNlOiBPbWl0PFBhY2thZ2VSZWxlYXNlLCBcInBhY2thZ2VfcmVsZWFzZV9pZFwiPixcbiAgKTogUGFja2FnZVJlbGVhc2UgPT4ge1xuICAgIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0ge1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7RGF0ZS5ub3coKX1gLFxuICAgICAgLi4ucGFja2FnZVJlbGVhc2UsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IFsuLi5zdGF0ZS5wYWNrYWdlUmVsZWFzZXMsIG5ld1BhY2thZ2VSZWxlYXNlXSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UGFja2FnZVJlbGVhc2VcbiAgfSxcbiAgdXBkYXRlUGFja2FnZVJlbGVhc2U6IChwYWNrYWdlUmVsZWFzZTogUGFja2FnZVJlbGVhc2UpOiB2b2lkID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgcGFja2FnZVJlbGVhc2VzOiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgICAgICAgICA/IHBhY2thZ2VSZWxlYXNlXG4gICAgICAgICAgOiBwcixcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZFBhY2thZ2VGaWxlOiAoXG4gICAgcGFja2FnZUZpbGU6IE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+LFxuICApOiBQYWNrYWdlRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgbmV3UGFja2FnZUZpbGVdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlRmlsZVxuICB9LFxuICBnZXRTdGFyQ291bnQ6IChwYWNrYWdlSWQ6IHN0cmluZyk6IG51bWJlciA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmlsdGVyKFxuICAgICAgKGFwKSA9PiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICApLmxlbmd0aFxuICB9LFxuICBnZXRQYWNrYWdlRmlsZXNCeVJlbGVhc2VJZDogKHBhY2thZ2VSZWxlYXNlSWQ6IHN0cmluZyk6IFBhY2thZ2VGaWxlW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChwZikgPT4gcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIClcbiAgfSxcbn0pKVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGNvbnN0IGVycm9yU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBlcnJvcl9jb2RlOiB6LnN0cmluZygpLFxuICAgIG1lc3NhZ2U6IHouc3RyaW5nKCksXG4gIH0pXG4gIC5wYXNzdGhyb3VnaCgpXG5cbmV4cG9ydCBjb25zdCBlcnJvclJlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBlcnJvcjogZXJyb3JTY2hlbWEsXG59KVxuXG5leHBvcnQgY29uc3Qgc25pcHBldFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICBvd25lcl9uYW1lOiB6LnN0cmluZygpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY29kZTogei5zdHJpbmcoKSxcbiAgZHRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGNvbXBpbGVkX2pzOiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHZlcnNpb246IHouc3RyaW5nKCkuZGVmYXVsdChcIjAuMC4xXCIpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wdWJsaWM6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbn0pXG5leHBvcnQgdHlwZSBTbmlwcGV0ID0gei5pbmZlcjx0eXBlb2Ygc25pcHBldFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHNlc3Npb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gIGlzX2NsaV9zZXNzaW9uOiB6LmJvb2xlYW4oKSxcbn0pXG5leHBvcnQgdHlwZSBTZXNzaW9uID0gei5pbmZlcjx0eXBlb2Ygc2Vzc2lvblNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGxvZ2luUGFnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbG9naW5fcGFnZV9pZDogei5zdHJpbmcoKSxcbiAgbG9naW5fcGFnZV9hdXRoX3Rva2VuOiB6LnN0cmluZygpLFxuICB3YXNfbG9naW5fc3VjY2Vzc2Z1bDogei5ib29sZWFuKCksXG4gIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBleHBpcmVzX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIExvZ2luUGFnZSA9IHouaW5mZXI8dHlwZW9mIGxvZ2luUGFnZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHNoaXBwaW5nSW5mb1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZmlyc3ROYW1lOiB6LnN0cmluZygpLFxuICBsYXN0TmFtZTogei5zdHJpbmcoKSxcbiAgY29tcGFueU5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYWRkcmVzczogei5zdHJpbmcoKSxcbiAgYXBhcnRtZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGNpdHk6IHouc3RyaW5nKCksXG4gIHN0YXRlOiB6LnN0cmluZygpLFxuICB6aXBDb2RlOiB6LnN0cmluZygpLFxuICBjb3VudHJ5OiB6LnN0cmluZygpLFxuICBwaG9uZTogei5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBhY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gIHNoaXBwaW5nSW5mbzogc2hpcHBpbmdJbmZvU2NoZW1hLm9wdGlvbmFsKCksXG59KVxuZXhwb3J0IHR5cGUgQWNjb3VudCA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmRlclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgaXNfcnVubmluZzogei5ib29sZWFuKCksXG4gIGlzX3N0YXJ0ZWQ6IHouYm9vbGVhbigpLFxuICBpc19maW5pc2hlZDogei5ib29sZWFuKCksXG4gIGVycm9yOiBlcnJvclNjaGVtYS5udWxsYWJsZSgpLFxuICBoYXNfZXJyb3I6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBzdGFydGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjaXJjdWl0X2pzb246IHouYW55KCksXG59KVxuZXhwb3J0IHR5cGUgT3JkZXIgPSB6LmluZmVyPHR5cGVvZiBvcmRlclNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyRmlsZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JkZXJfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gIGlzX2dlcmJlcnNfemlwOiB6LmJvb2xlYW4oKSxcbiAgY29udGVudF90eXBlOiB6LnN0cmluZygpLFxuICBmb3JfcHJvdmlkZXI6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdXBsb2FkZWRfYXQ6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjb250ZW50X2J5dGVzOiB6Lmluc3RhbmNlb2YoVWludDhBcnJheSkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlckZpbGUgPSB6LmluZmVyPHR5cGVvZiBvcmRlckZpbGVTY2hlbWE+XG5cbi8vIFRPRE86IFJlbW92ZSB0aGlzIHNjaGVtYSBhZnRlciBtaWdyYXRpb24gdG8gYWNjb3VudFBhY2thZ2VzIGlzIGNvbXBsZXRlXG5leHBvcnQgY29uc3QgYWNjb3VudFNuaXBwZXRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIGhhc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50U25pcHBldCA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRTbmlwcGV0U2NoZW1hPlxuXG5leHBvcnQgY29uc3QgYWNjb3VudFBhY2thZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGFjY291bnRfcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgaXNfc3RhcnJlZDogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgQWNjb3VudFBhY2thZ2UgPSB6LmluZmVyPHR5cGVvZiBhY2NvdW50UGFja2FnZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VSZWxlYXNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIHZlcnNpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgaXNfbG9ja2VkOiB6LmJvb2xlYW4oKSxcbiAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBjb21taXRfc2hhOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgbGljZW5zZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG59KVxuZXhwb3J0IHR5cGUgUGFja2FnZVJlbGVhc2UgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlUmVsZWFzZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VGaWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICBwYWNrYWdlX2ZpbGVfaWQ6IHouc3RyaW5nKCksXG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICBjb250ZW50X3RleHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG59KVxuZXhwb3J0IHR5cGUgUGFja2FnZUZpbGUgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlRmlsZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIGNyZWF0b3JfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgb3duZXJfb3JnX2lkOiB6LnN0cmluZygpLFxuICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGlzX3NuaXBwZXQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib2FyZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3BhY2thZ2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19tb2RlbDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2Zvb3RwcmludDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm51bGxhYmxlKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3B1YmxpYzogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KHRydWUpLFxuICBpc191bmxpc3RlZDogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLm9wdGlvbmFsKCksXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbGF0ZXN0X3ZlcnNpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbGljZW5zZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB3ZWJzaXRlOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgc3Rhcl9jb3VudDogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBhaV9kZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlID0gei5pbmZlcjx0eXBlb2YgcGFja2FnZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGpsY3BjYl9vcmRlcl9zdGF0ZV9pZDogei5zdHJpbmcoKSxcbiAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZ2VyYmVyX2FuYWx5emVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3BjYl9hZGRlZF90b19jYXJ0OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYm9tX3VwbG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcG5wX3VwbG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19hZGRlZF90b19jYXJ0OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgdXBsb2FkZWRfZ2VyYmVyX21ldGFkYXRhOiB6LmFueSgpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZ2VyYmVyX2FuYWx5c2lzOiB6LmFueSgpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY3VycmVudF9zdGVwOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbn0pXG5leHBvcnQgdHlwZSBKbGNwY2JPcmRlclN0YXRlID0gei5pbmZlcjx0eXBlb2YgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGpsY3BjYk9yZGVyU3RlcFJ1blNjaGVtYSA9IHoub2JqZWN0KHtcbiAgamxjcGNiX29yZGVyX3N0ZXBfcnVuX2lkOiB6LnN0cmluZygpLFxuICBpc19ydW5uaW5nOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIHN0ZXBfZnVuY3Rpb25fbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGpsY3BjYl9vcmRlcl9zdGF0ZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGVycm9yX21lc3NhZ2U6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEpsY3BjYk9yZGVyU3RlcFJ1biA9IHouaW5mZXI8dHlwZW9mIGpsY3BjYk9yZGVyU3RlcFJ1blNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGRhdGFiYXNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZENvdW50ZXI6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VSZWxlYXNlczogei5hcnJheShwYWNrYWdlUmVsZWFzZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VGaWxlczogei5hcnJheShwYWNrYWdlRmlsZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHNlc3Npb25zOiB6LmFycmF5KHNlc3Npb25TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBsb2dpblBhZ2VzOiB6LmFycmF5KGxvZ2luUGFnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFjY291bnRzOiB6LmFycmF5KGFjY291bnRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JkZXJzOiB6LmFycmF5KG9yZGVyU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JkZXJGaWxlczogei5hcnJheShvcmRlckZpbGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50U25pcHBldHM6IHouYXJyYXkoYWNjb3VudFNuaXBwZXRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50UGFja2FnZXM6IHouYXJyYXkoYWNjb3VudFBhY2thZ2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBqbGNwY2JPcmRlclN0YXRlOiB6LmFycmF5KGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBqbGNwY2JPcmRlclN0ZXBSdW5zOiB6LmFycmF5KGpsY3BjYk9yZGVyU3RlcFJ1blNjaGVtYSkuZGVmYXVsdChbXSksXG59KVxuZXhwb3J0IHR5cGUgRGF0YWJhc2VTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBkYXRhYmFzZVNjaGVtYT5cbiIsICJpbXBvcnQgZnMgZnJvbSBcImZzXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCBheGlvcyBmcm9tIFwicmVkYXhpb3NcIlxuaW1wb3J0IHR5cGUgeyBEYkNsaWVudCB9IGZyb20gXCIuL2RiLWNsaWVudFwiXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UsIFBhY2thZ2VGaWxlLCBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCIuL3NjaGVtYVwiXG5cbmNvbnN0IGV4dHJhY3RUc2NpRGVwZW5kZW5jaWVzID0gKFxuICBjb2RlOiBzdHJpbmcsXG4pOiBBcnJheTx7IG93bmVyOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9PiA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gL0B0c2NpXFwvKFteLl0rKVxcLihbXlwiJ1xcc10rKS9nXG4gIGNvbnN0IG1hdGNoZXMgPSBBcnJheS5mcm9tKGNvZGUubWF0Y2hBbGwocmVnZXgpKVxuICByZXR1cm4gbWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiAoe1xuICAgIG93bmVyOiBtYXRjaFsxXSxcbiAgICBuYW1lOiBtYXRjaFsyXSxcbiAgfSkpXG59XG5cbmNvbnN0IHJlZ2lzdHJ5QXBpID0gYXhpb3MuY3JlYXRlKHtcbiAgYmFzZVVSTDogXCJodHRwczovL3JlZ2lzdHJ5LWFwaS50c2NpcmN1aXQuY29tXCIsXG4gIGhlYWRlcnM6IHtcbiAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICB9LFxufSlcblxuY29uc3QgZmV0Y2hQYWNrYWdlRnJvbVJlZ2lzdHJ5ID0gYXN5bmMgKG93bmVyOiBzdHJpbmcsIG5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke293bmVyfS8ke25hbWV9YFxuICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgcGFja2FnZSAke2Z1bGxOYW1lfS4uLmApXG5cbiAgbGV0IHBhY2thZ2VEYXRhXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VzL2dldFwiLCB7XG4gICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICB9KVxuICAgIHBhY2thZ2VEYXRhID0gcmVzcG9uc2UuZGF0YVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIHBhY2thZ2UgZGF0YSBmb3IgJHtmdWxsTmFtZX06YCwgZSlcbiAgICB0aHJvdyBlXG4gIH1cblxuICBsZXQgcmVsZWFzZURhdGFcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlZ2lzdHJ5QXBpLnBvc3QoXCIvcGFja2FnZV9yZWxlYXNlcy9nZXRcIiwge1xuICAgICAgcGFja2FnZV9pZDogcGFja2FnZURhdGEucGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgIH0pXG4gICAgcmVsZWFzZURhdGEgPSByZXNwb25zZS5kYXRhXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggcmVsZWFzZSBkYXRhIGZvciAke2Z1bGxOYW1lfTpgLCBlKVxuICAgIHRocm93IGVcbiAgfVxuXG4gIGxldCBmaWxlc0RhdGFcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlZ2lzdHJ5QXBpLnBvc3QoXCIvcGFja2FnZV9maWxlcy9saXN0XCIsIHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcmVsZWFzZURhdGEucGFja2FnZV9yZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICB9KVxuICAgIGZpbGVzRGF0YSA9IHJlc3BvbnNlLmRhdGFcblxuICAgIC8vIEZldGNoIGNvbnRlbnRfdGV4dCBmb3IgZWFjaCBmaWxlIGluZGl2aWR1YWxseVxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlc0RhdGEucGFja2FnZV9maWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmlsZVJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlX2ZpbGVzL2dldFwiLCB7XG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiByZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgIGZpbGVfcGF0aDogZmlsZS5maWxlX3BhdGgsXG4gICAgICAgIH0pXG4gICAgICAgIGZpbGUuY29udGVudF90ZXh0ID0gZmlsZVJlc3BvbnNlLmRhdGEucGFja2FnZV9maWxlLmNvbnRlbnRfdGV4dFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggY29udGVudCBmb3IgZmlsZSAke2ZpbGUuZmlsZV9wYXRofSBpbiBwYWNrYWdlICR7ZnVsbE5hbWV9OmAsXG4gICAgICAgICAgZSxcbiAgICAgICAgKVxuICAgICAgICB0aHJvdyBlXG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIGZpbGVzIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsIGUpXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYWNrYWdlOiBwYWNrYWdlRGF0YS5wYWNrYWdlIGFzIFBhY2thZ2UsXG4gICAgcmVsZWFzZTogcmVsZWFzZURhdGEucGFja2FnZV9yZWxlYXNlIGFzIFBhY2thZ2VSZWxlYXNlLFxuICAgIGZpbGVzOiBmaWxlc0RhdGEucGFja2FnZV9maWxlcyBhcyBQYWNrYWdlRmlsZVtdLFxuICB9XG59XG5cbmNvbnN0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyA9IGFzeW5jIChcbiAgZGI6IERiQ2xpZW50LFxuICBvd25lcjogc3RyaW5nLFxuICBuYW1lOiBzdHJpbmcsXG4gIGxvYWRlZFBhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KCksXG4pID0+IHtcbiAgY29uc3QgcGFja2FnZUtleSA9IGAke293bmVyfS8ke25hbWV9YFxuICBpZiAobG9hZGVkUGFja2FnZXMuaGFzKHBhY2thZ2VLZXkpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGxldCByZXN1bHRcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBhd2FpdCBmZXRjaFBhY2thZ2VGcm9tUmVnaXN0cnkob3duZXIsIG5hbWUpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBcdTI3MTcgRmFpbGVkIHRvIGxvYWQgJHtwYWNrYWdlS2V5fWApXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCB7IHBhY2thZ2U6IHBrZywgcmVsZWFzZSwgZmlsZXMgfSA9IHJlc3VsdFxuXG4gIC8vIENoZWNrIGlmIHBhY2thZ2UgYWxyZWFkeSBleGlzdHNcbiAgaWYgKGRiLmdldFBhY2thZ2VCeUlkKHBrZy5wYWNrYWdlX2lkKSkge1xuICAgIGNvbnNvbGUubG9nKGBcdTI3MTMgUGFja2FnZSAke3BhY2thZ2VLZXl9IGFscmVhZHkgZXhpc3RzYClcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gQWRkIHBhY2thZ2UsIHJlbGVhc2UsIGFuZCBmaWxlcyB0byBkYlxuICBkYi5hZGRQYWNrYWdlKHtcbiAgICAuLi5wa2csXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgfSlcblxuICBkYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgLi4ucmVsZWFzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH0pXG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgLi4uZmlsZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9KVxuICB9XG5cbiAgbG9hZGVkUGFja2FnZXMuYWRkKHBhY2thZ2VLZXkpXG4gIGNvbnNvbGUubG9nKGBcdTI3MTMgTG9hZGVkICR7cGFja2FnZUtleX1gKVxuXG4gIC8vIExvYWQgZGVwZW5kZW5jaWVzXG4gIGNvbnN0IG1haW5GaWxlID0gZmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIgfHwgZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIixcbiAgKVxuICBpZiAoIW1haW5GaWxlPy5jb250ZW50X3RleHQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gZXh0cmFjdFRzY2lEZXBlbmRlbmNpZXMobWFpbkZpbGUuY29udGVudF90ZXh0KVxuICBsZXQgYWxsRGVwc0xvYWRlZCA9IHRydWVcblxuICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBlbmRlbmNpZXMpIHtcbiAgICBjb25zdCBkZXBMb2FkZWQgPSBhd2FpdCBsb2FkUGFja2FnZVdpdGhEZXBlbmRlbmNpZXMoXG4gICAgICBkYixcbiAgICAgIGRlcC5vd25lcixcbiAgICAgIGRlcC5uYW1lLFxuICAgICAgbG9hZGVkUGFja2FnZXMsXG4gICAgKVxuICAgIGlmICghZGVwTG9hZGVkKSB7XG4gICAgICBhbGxEZXBzTG9hZGVkID0gZmFsc2VcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFx1MjZBMFx1RkUwRiBGYWlsZWQgdG8gbG9hZCBkZXBlbmRlbmN5ICR7ZGVwLm93bmVyfS8ke2RlcC5uYW1lfSBmb3IgJHtwYWNrYWdlS2V5fWAsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbERlcHNMb2FkZWRcbn1cblxuZXhwb3J0IGNvbnN0IGxvYWRBdXRvbG9hZFBhY2thZ2VzID0gYXN5bmMgKGRiOiBEYkNsaWVudCkgPT4ge1xuICBjb25zdCBhdXRvbG9hZFBhdGggPSBwYXRoLmpvaW4oXG4gICAgcGF0aC5kaXJuYW1lKF9fZGlybmFtZSksXG4gICAgXCJkYlwiLFxuICAgIFwiYXV0b2xvYWQtcGFja2FnZXMuanNvblwiLFxuICApXG4gIGlmICghZnMuZXhpc3RzU3luYyhhdXRvbG9hZFBhdGgpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIk5vIGF1dG9sb2FkLXBhY2thZ2VzLmpzb24gZm91bmRcIilcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGF1dG9sb2FkQ29udGVudCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGF1dG9sb2FkUGF0aCwgXCJ1dGY4XCIpKVxuICBjb25zdCBsb2FkZWRQYWNrYWdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBzdWNjZXNzQ291bnQgPSAwXG4gIGxldCBmYWlsdXJlQ291bnQgPSAwXG5cbiAgZm9yIChjb25zdCBwYWNrYWdlUmVmIG9mIGF1dG9sb2FkQ29udGVudC5wYWNrYWdlcykge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBsb2FkUGFja2FnZVdpdGhEZXBlbmRlbmNpZXMoXG4gICAgICBkYixcbiAgICAgIHBhY2thZ2VSZWYub3duZXIsXG4gICAgICBwYWNrYWdlUmVmLm5hbWUsXG4gICAgICBsb2FkZWRQYWNrYWdlcyxcbiAgICApXG4gICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgIHN1Y2Nlc3NDb3VudCsrXG4gICAgfSBlbHNlIHtcbiAgICAgIGZhaWx1cmVDb3VudCsrXG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coYFxcblBhY2thZ2UgbG9hZGluZyBjb21wbGV0ZTpgKVxuICBjb25zb2xlLmxvZyhgXHUyNzEzIFN1Y2Nlc3NmdWxseSBsb2FkZWQ6ICR7c3VjY2Vzc0NvdW50fSBwYWNrYWdlc2ApXG4gIGlmIChmYWlsdXJlQ291bnQgPiAwKSB7XG4gICAgY29uc29sZS5sb2coYFx1MjcxNyBGYWlsZWQgdG8gbG9hZDogJHtmYWlsdXJlQ291bnR9IHBhY2thZ2VzYClcbiAgfVxufVxuIiwgImltcG9ydCB7IERiQ2xpZW50IH0gZnJvbSBcIi4vZGItY2xpZW50XCJcbmltcG9ydCB7IGxvYWRBdXRvbG9hZFBhY2thZ2VzIH0gZnJvbSBcIi4vYXV0b2xvYWQtZGV2LXBhY2thZ2VzXCJcblxuZXhwb3J0IGNvbnN0IHNlZWQgPSAoZGI6IERiQ2xpZW50KSA9PiB7XG4gIGNvbnN0IHsgYWNjb3VudF9pZCB9ID0gZGIuYWRkQWNjb3VudCh7XG4gICAgYWNjb3VudF9pZDogXCJhY2NvdW50LTEyMzRcIixcbiAgICBnaXRodWJfdXNlcm5hbWU6IFwidGVzdHVzZXJcIixcbiAgICBzaGlwcGluZ0luZm86IHtcbiAgICAgIGZpcnN0TmFtZTogXCJUZXN0XCIsXG4gICAgICBsYXN0TmFtZTogXCJVc2VyXCIsXG4gICAgICBjb21wYW55TmFtZTogXCJUZXN0IENvbXBhbnlcIixcbiAgICAgIGFkZHJlc3M6IFwiMTIzIFRlc3QgU3RcIixcbiAgICAgIGFwYXJ0bWVudDogXCJBcHQgNEJcIixcbiAgICAgIGNpdHk6IFwiVGVzdHZpbGxlXCIsXG4gICAgICBzdGF0ZTogXCJOWVwiLFxuICAgICAgemlwQ29kZTogXCIxMDAwMVwiLFxuICAgICAgY291bnRyeTogXCJVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2FcIixcbiAgICAgIHBob25lOiBcIjU1NS0xMjMtNDU2N1wiLFxuICAgIH0sXG4gIH0pXG4gIGRiLmFkZEFjY291bnQoe1xuICAgIGdpdGh1Yl91c2VybmFtZTogXCJzZXZlaWJhclwiLFxuICB9KVxuXG4gIGlmIChwcm9jZXNzLmVudi5BVVRPTE9BRF9QQUNLQUdFUyA9PT0gXCJ0cnVlXCIpIHtcbiAgICBsb2FkQXV0b2xvYWRQYWNrYWdlcyhkYilcbiAgfVxuXG4gIGRiLmFkZFNuaXBwZXQoe1xuICAgIG5hbWU6IFwidGVzdHVzZXIvbXktdGVzdC1ib2FyZFwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwibXktdGVzdC1ib2FyZFwiLFxuICAgIG93bmVyX25hbWU6IFwidGVzdHVzZXJcIixcbiAgICBjb2RlOiBgXG5pbXBvcnQgeyBBNTU1VGltZXIgfSBmcm9tIFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCJcblxuZXhwb3J0IGRlZmF1bHQgKCkgPT4gKFxuICA8Ym9hcmQgd2lkdGg9XCIxMG1tXCIgaGVpZ2h0PVwiMTBtbVwiPlxuICAgIDxBNTU1VGltZXIgbmFtZT1cIlUxXCIgLz5cbiAgPC9ib2FyZD5cbilgLnRyaW0oKSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHNuaXBwZXRfdHlwZTogXCJib2FyZFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgc2ltcGxlIGJvYXJkIHdpdGggYW4gQTU1NSBUaW1lciBjb21wb25lbnRcIixcbiAgICBjaXJjdWl0X2pzb246IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIG5hbWU6IFwicGluMVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4xXCIsIFwiMVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBuYW1lOiBcInBpbjJcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMlwiLCBcIjJcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgbmFtZTogXCJwaW4zXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjNcIiwgXCIzXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIG5hbWU6IFwicGluNFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW40XCIsIFwiNFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBuYW1lOiBcInBpbjVcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNVwiLCBcIjVcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgbmFtZTogXCJwaW42XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjZcIiwgXCI2XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIG5hbWU6IFwicGluN1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW43XCIsIFwiN1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBuYW1lOiBcInBpbjhcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluOFwiLCBcIjhcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX2NoaXBcIixcbiAgICAgICAgbmFtZTogXCJVMVwiLFxuICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcnM6IHt9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfY29tcG9uZW50XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogMS4xLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgfSxcbiAgICAgICAgcGluX3NwYWNpbmc6IDAuMixcbiAgICAgICAgcG9ydF9sYWJlbHM6IHt9LFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8wXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8xXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8yXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfM1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF82XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfN1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9jb21wb25lbnRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogOC44MixcbiAgICAgICAgaGVpZ2h0OiA4LjgyLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9ib2FyZFwiLFxuICAgICAgICBwY2JfYm9hcmRfaWQ6IFwicGNiX2JvYXJkXzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB0aGlja25lc3M6IDEuNCxcbiAgICAgICAgbnVtX2xheWVyczogNCxcbiAgICAgICAgd2lkdGg6IDEwLFxuICAgICAgICBoZWlnaHQ6IDEwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjFcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIyXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiM1wiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI0XCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjVcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI2XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiN1wiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiOFwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhcIixcbiAgICAgICAgcGNiX3NpbGtzY3JlZW5fcGF0aF9pZDogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0xLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuNzA5NDYzODAzNzkwNTAyNixcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjM4Mzk1OTA0MzgwNjMwNjcsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiA2LjE0MzY0NDc3NTcyMjU1NmUtMTcsXG4gICAgICAgICAgICB5OiAzLjYwNjY2NjY2NjY2NjY2NzQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjM4Mzk1OTA0MzgwNjMwNjc0LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC43MDk0NjM4MDM3OTA1MDI3LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAxLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN0cm9rZV93aWR0aDogMC4xLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYWRfY29tcG9uZW50XCIsXG4gICAgICAgIGNhZF9jb21wb25lbnRfaWQ6IFwiY2FkX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAuNyxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZm9vdHByaW50ZXJfc3RyaW5nOiBcImRpcDhcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcblxuICAvLyBEZWZpbmUgdGhlIEB0c2NpL3NldmVpYmFyLmE1NTV0aW1lciBwYWNrYWdlXG4gIGRiLmFkZFNuaXBwZXQoe1xuICAgIG5hbWU6IFwic2V2ZWliYXIvYTU1NXRpbWVyXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJhNTU1dGltZXJcIixcbiAgICBvd25lcl9uYW1lOiBcInNldmVpYmFyXCIsXG4gICAgY29kZTogYFxuZXhwb3J0IGNvbnN0IEE1NTVUaW1lciA9ICh7IG5hbWUgfTogeyBuYW1lOiBzdHJpbmcgfSkgPT4gKFxuICA8Y2hpcCBuYW1lPXtuYW1lfSBmb290cHJpbnQ9XCJkaXA4XCIgLz5cbilcbmAudHJpbSgpLFxuICAgIGR0czogYFxuZGVjbGFyZSBtb2R1bGUgXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIiB7XG4gIGV4cG9ydCBjb25zdCBBNTU1VGltZXI6ICh7IG5hbWUgfToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgfSkgPT4gYW55O1xufVxuYC50cmltKCksXG4gICAgY29tcGlsZWRfanM6IGBcblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5BNTU1VGltZXIgPSB2b2lkIDA7XG5jb25zdCBBNTU1VGltZXIgPSAoe1xuICBuYW1lXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNoaXBcIiwge1xuICBuYW1lOiBuYW1lLFxuICBmb290cHJpbnQ6IFwiZGlwOFwiXG59KTtcbmV4cG9ydHMuQTU1NVRpbWVyID0gQTU1NVRpbWVyO1xuICAgIGAudHJpbSgpLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIHNpbXBsZSBwYWNrYWdlIHdpdGggYW4gQTU1NSBUaW1lciBjb21wb25lbnRcIixcbiAgICBjaXJjdWl0X2pzb246IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIG5hbWU6IFwicGluMVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4xXCIsIFwiMVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBuYW1lOiBcInBpbjJcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMlwiLCBcIjJcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgbmFtZTogXCJwaW4zXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjNcIiwgXCIzXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIG5hbWU6IFwicGluNFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW40XCIsIFwiNFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBuYW1lOiBcInBpbjVcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNVwiLCBcIjVcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgbmFtZTogXCJwaW42XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjZcIiwgXCI2XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIG5hbWU6IFwicGluN1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW43XCIsIFwiN1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBuYW1lOiBcInBpbjhcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluOFwiLCBcIjhcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX2NoaXBcIixcbiAgICAgICAgbmFtZTogXCJVMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfY29tcG9uZW50XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogMS4xLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgfSxcbiAgICAgICAgcGluX3NwYWNpbmc6IDAuMixcbiAgICAgICAgcG9ydF9sYWJlbHM6IHt9LFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8wXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8xXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8yXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfM1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF82XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfN1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9jb21wb25lbnRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogOC44MixcbiAgICAgICAgaGVpZ2h0OiA4LjgyLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9ib2FyZFwiLFxuICAgICAgICBwY2JfYm9hcmRfaWQ6IFwicGNiX2JvYXJkXzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB0aGlja25lc3M6IDEuNCxcbiAgICAgICAgbnVtX2xheWVyczogNCxcbiAgICAgICAgd2lkdGg6IDUwLFxuICAgICAgICBoZWlnaHQ6IDUwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjFcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIyXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiM1wiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI0XCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjVcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI2XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiN1wiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiOFwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhcIixcbiAgICAgICAgcGNiX3NpbGtzY3JlZW5fcGF0aF9pZDogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0xLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuNzA5NDYzODAzNzkwNTAyNixcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjM4Mzk1OTA0MzgwNjMwNjcsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiA2LjE0MzY0NDc3NTcyMjU1NmUtMTcsXG4gICAgICAgICAgICB5OiAzLjYwNjY2NjY2NjY2NjY2NzQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjM4Mzk1OTA0MzgwNjMwNjc0LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC43MDk0NjM4MDM3OTA1MDI3LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAxLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN0cm9rZV93aWR0aDogMC4xLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYWRfY29tcG9uZW50XCIsXG4gICAgICAgIGNhZF9jb21wb25lbnRfaWQ6IFwiY2FkX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAuNyxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZm9vdHByaW50ZXJfc3RyaW5nOiBcImRpcDhcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcblxuICAvLyBBZGQgYSBzbmlwcGV0IHRoYXQgb3V0cHV0cyBhIHNxdWFyZSB3YXZlZm9ybSB1c2luZyB0aGUgYTU1NXRpbWVyXG5cbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJ0ZXN0dXNlci9hNTU1dGltZXItc3F1YXJlLXdhdmVcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcImE1NTV0aW1lci1zcXVhcmUtd2F2ZVwiLFxuICAgIG93bmVyX25hbWU6IFwidGVzdHVzZXJcIixcbiAgICBjb2RlOiBgXG5pbXBvcnQgeyBBNTU1VGltZXIgfSBmcm9tIFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCJcblxuZXhwb3J0IGNvbnN0IFNxdWFyZVdhdmVNb2R1bGUgPSAoKSA9PiAoXG4gIDxBNTU1VGltZXIgbmFtZT1cIlUxXCIgLz5cbilcbmAudHJpbSgpLFxuICAgIGR0czogJ2V4cG9ydCBkZWNsYXJlIGNvbnN0IFNxdWFyZVdhdmVNb2R1bGU6ICgpID0+IGltcG9ydChcInJlYWN0L2pzeC1ydW50aW1lXCIpLkpTWC5FbGVtZW50O1xcbicsXG4gICAgY29tcGlsZWRfanM6XG4gICAgICAnXCJ1c2Ugc3RyaWN0XCI7XFxuXFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XFxuICB2YWx1ZTogdHJ1ZVxcbn0pO1xcbmV4cG9ydHMuU3F1YXJlV2F2ZU1vZHVsZSA9IHZvaWQgMDtcXG52YXIgX3NldmVpYmFyID0gcmVxdWlyZShcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiKTtcXG5jb25zdCBTcXVhcmVXYXZlTW9kdWxlID0gKCkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3NldmVpYmFyLkE1NTVUaW1lciwge1xcbiAgbmFtZTogXCJVMVwiXFxufSk7XFxuZXhwb3J0cy5TcXVhcmVXYXZlTW9kdWxlID0gU3F1YXJlV2F2ZU1vZHVsZTsnLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiQSBzaW1wbGUgcGFja2FnZSB0aGF0IG91dHB1dHMgYSBzcXVhcmUgd2F2ZWZvcm0gdXNpbmcgdGhlIGE1NTV0aW1lclwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogNTAsXG4gICAgICAgIGhlaWdodDogNTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIGRiLmFkZE9yZGVyKHtcbiAgICBhY2NvdW50X2lkLFxuICAgIGlzX3J1bm5pbmc6IGZhbHNlLFxuICAgIGlzX3N0YXJ0ZWQ6IGZhbHNlLFxuICAgIGlzX2ZpbmlzaGVkOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX3Jlc2lzdG9yXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8xXCIsXG4gICAgICAgIG5hbWU6IFwiUjFcIixcbiAgICAgICAgcmVzaXN0YW5lOiBcIjFrXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHN0YXJ0ZWRfYXQ6IG51bGwsXG4gICAgY29tcGxldGVkX2F0OiBudWxsLFxuICB9KVxufVxuIiwgImltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL2RiLWNsaWVudFwiXG5pbXBvcnQgeyBjcmVhdGVEYXRhYmFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvZGItY2xpZW50XCJcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhEYjogTWlkZGxld2FyZTxcbiAge30sXG4gIHtcbiAgICBkYjogRGJDbGllbnRcbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAoIWN0eC5kYikge1xuICAgIGN0eC5kYiA9IGNyZWF0ZURhdGFiYXNlKClcbiAgfVxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5cbmV4cG9ydCB0eXBlIEN0eEVycm9yRm4gPSAoXG4gIHN0YXR1czogbnVtYmVyLFxuICBlcnJvcl9wYXlsb2FkOiB7XG4gICAgZXJyb3JfY29kZTogc3RyaW5nXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gIH0sXG4pID0+IFJlc3BvbnNlXG5cbmV4cG9ydCBjb25zdCB3aXRoQ3R4RXJyb3I6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBjdHguZXJyb3IgPSAoc3RhdHVzLCBlcnJvcl9wYXlsb2FkKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBlcnJvcl9wYXlsb2FkIH0pLCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHR5cGUgeyBDdHhFcnJvckZuIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuXG5leHBvcnQgY29uc3Qgd2l0aFNlc3Npb25BdXRoOiBNaWRkbGV3YXJlPFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgICBkYjogYW55XG4gIH0sXG4gIHtcbiAgICBhdXRoOiB7XG4gICAgICB0eXBlOiBcInNlc3Npb25cIlxuICAgICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgICBwZXJzb25hbF9vcmdfaWQ6IHN0cmluZ1xuICAgICAgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmdcbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAge31cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKHJlcS5tZXRob2QgPT09IFwiT1BUSU9OU1wiKSByZXR1cm4gbmV4dChyZXEsIGN0eClcblxuICBjb25zdCB0b2tlbiA9IHJlcS5oZWFkZXJzLmdldChcImF1dGhvcml6YXRpb25cIik/LnNwbGl0KFwiQmVhcmVyIFwiKT8uWzFdXG5cbiAgLy8gT25seSBjaGVjayBkYXRhYmFzZSBhY2NvdW50cyB3aGVuIHdlJ3JlIGluIGEgQnVuIHRlc3QgZW52aXJvbm1lbnRcbiAgaWYgKHByb2Nlc3MuZW52LkJVTl9URVNUID09PSBcInRydWVcIiAmJiBjdHguZGI/LmFjY291bnRzKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IHRva2VuKVxuXG4gICAgaWYgKGFjY291bnQpIHtcbiAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICBwZXJzb25hbF9vcmdfaWQ6IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgc2Vzc2lvbl9pZDogYHNlc3Npb24tJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBhbGwgb3RoZXIgZW52aXJvbm1lbnRzIG9yIGlmIGFjY291bnQgbm90IGZvdW5kIGluIHRlc3QsIHVzZSBoYXJkY29kZWQgYXV0aFxuICBjdHguYXV0aCA9IHtcbiAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIHBlcnNvbmFsX29yZ19pZDogXCJvcmctMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNlc3Npb25faWQ6IFwic2Vzc2lvbi0xMjM0XCIsXG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCB0eXBlIHsgQ3R4RXJyb3JGbiB9IGZyb20gXCIuL3dpdGgtY3R4LWVycm9yXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhPcHRpb25hbFNlc3Npb25BdXRoOiBNaWRkbGV3YXJlPFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgICBkYjogYW55XG4gIH0sXG4gIHtcbiAgICBhdXRoPzoge1xuICAgICAgdHlwZTogXCJzZXNzaW9uXCJcbiAgICAgIGFjY291bnRfaWQ6IHN0cmluZ1xuICAgICAgcGVyc29uYWxfb3JnX2lkOiBzdHJpbmdcbiAgICAgIGdpdGh1Yl91c2VybmFtZTogc3RyaW5nXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmdcbiAgICB9XG4gIH0sXG4gIHt9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmIChyZXEubWV0aG9kID09PSBcIk9QVElPTlNcIikgcmV0dXJuIG5leHQocmVxLCBjdHgpXG5cbiAgY29uc3QgdG9rZW4gPSByZXEuaGVhZGVycy5nZXQoXCJhdXRob3JpemF0aW9uXCIpPy5zcGxpdChcIkJlYXJlciBcIik/LlsxXVxuXG4gIGlmICghdG9rZW4pIHtcbiAgICByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5CVU5fVEVTVCA9PT0gXCJ0cnVlXCIgJiYgY3R4LmRiPy5hY2NvdW50cykge1xuICAgIGNvbnN0IGFjY291bnQgPSBjdHguZGIuYWNjb3VudHMuZmluZCgoYWNjOiBhbnkpID0+IGFjYy5hY2NvdW50X2lkID09PSB0b2tlbilcblxuICAgIGlmIChhY2NvdW50KSB7XG4gICAgICBjdHguYXV0aCA9IHtcbiAgICAgICAgdHlwZTogXCJzZXNzaW9uXCIsXG4gICAgICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICAgICAgcGVyc29uYWxfb3JnX2lkOiBgb3JnLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICAgIHNlc3Npb25faWQ6IGBzZXNzaW9uLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gIH1cblxuICBjdHguYXV0aCA9IHtcbiAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIHBlcnNvbmFsX29yZ19pZDogXCJvcmctMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNlc3Npb25faWQ6IFwic2Vzc2lvbi0xMjM0XCIsXG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQga2xldXIgZnJvbSBcImtsZXVyXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhFcnJvckhhbmRsaW5nOiBNaWRkbGV3YXJlPHt9LCB7fT4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgbmV4dChyZXEsIGN0eClcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3Ioa2xldXIucmVkKFwiSW50ZXJjZXB0ZWQgZXJyb3I6XCIpLCBlcnJvcilcbiAgICAvLyBJZiBlcnJvciBpcyBhIFJlc3BvbnNlLCByZXR1cm4gaXRcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgICAgcmV0dXJuIGVycm9yXG4gICAgfVxuICAgIHJldHVybiAoY3R4IGFzIGFueSkuanNvbihcbiAgICAgIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIG1lc3NhZ2U6IGVycm9yPy5tZXNzYWdlLFxuICAgICAgICAgIGVycm9yX2NvZGU6IGVycm9yPy5lcnJvcl9jb2RlID8/IFwiaW50ZXJuYWxfc2VydmVyX2Vycm9yXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeyBzdGF0dXM6IGVycm9yPy5zdGF0dXMgfHwgNTAwIH0sXG4gICAgKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IGtsZXVyIGZyb20gXCJrbGV1clwiXG5cbi8vIEVOQUJMRSBDT0xPUlMgQUxXQVlTXG5rbGV1ci5lbmFibGVkID0gdHJ1ZVxuXG5jb25zdCBjb2xvclN0YXR1cyA9IChzdGF0dXM6IG51bWJlcikgPT4ge1xuICBpZiAoc3RhdHVzID49IDUwMCkge1xuICAgIHJldHVybiBrbGV1ci5yZWQoc3RhdHVzLnRvU3RyaW5nKCkpXG4gIH1cbiAgaWYgKHN0YXR1cyA+PSA0MDApIHtcbiAgICByZXR1cm4ga2xldXIueWVsbG93KHN0YXR1cy50b1N0cmluZygpKVxuICB9XG4gIHJldHVybiBrbGV1ci5ncmVlbihzdGF0dXMudG9TdHJpbmcoKSlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXIge1xuICBlcnJvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIGluZm86ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbiAgZGVidWc6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3Qgd2l0aFJlcXVlc3RMb2dnaW5nOiBNaWRkbGV3YXJlPFxuICB7fSxcbiAge1xuICAgIGxvZ2dlcjogTG9nZ2VyXG4gIH1cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKCFjdHgubG9nZ2VyKSB7XG4gICAgY3R4LmxvZ2dlciA9IHtcbiAgICAgIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUuZXJyb3IoLi4uYXJncyksXG4gICAgICBpbmZvOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKC4uLmFyZ3MpLFxuICAgICAgd2FybjogKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLndhcm4oLi4uYXJncyksXG4gICAgICBkZWJ1ZzogKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmxvZyguLi5hcmdzKSxcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICBjdHgubG9nZ2VyLmluZm8oa2xldXIuYmx1ZShgPiAke3JlcS5tZXRob2R9ICR7cmVxLnVybH1gKSlcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG5leHQocmVxLCBjdHgpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlQm9keSA9IGF3YWl0IHJlc3BvbnNlLmNsb25lKCkudGV4dCgpXG4gICAgICBjdHgubG9nZ2VyLmluZm8oXG4gICAgICAgIGA8ICR7Y29sb3JTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKX0gJHtrbGV1ci5ncmF5KHJlc3BvbnNlQm9keS5zbGljZSgwLCA0MCkucmVwbGFjZSgvKFxcclxcbnxcXG58XFxyKS9nbSwgXCJcIikpfWAsXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKGA8ICR7Y29sb3JTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKX1gKVxuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgY3R4LmxvZ2dlci5pbmZvKGtsZXVyLnJlZChgPCBFUlJPUiAke2UudG9TdHJpbmcoKS5zbGljZSgwLCA1MCl9Li4uYCkpXG4gICAgdGhyb3cgZVxuICB9XG59XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNlZWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NlZWRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHJldHVybiBjdHguanNvbihjdHguZGIuZ2V0U3RhdGUoKSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU3RlcHMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHNcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc3VjY2Vzczogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEdldCBhbGwgb3JkZXJzIHRoYXQgYXJlbid0IGZpbmlzaGVkXG4gIGNvbnN0IG9yZGVycyA9IGN0eC5kYi5vcmRlcnMuZmlsdGVyKChvcmRlcikgPT4gIW9yZGVyLmlzX2ZpbmlzaGVkKVxuICBjb25zdCB1cGRhdGVkT3JkZXJzID0gW11cblxuICBmb3IgKGNvbnN0IG9yZGVyIG9mIG9yZGVycykge1xuICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBjdHguZGIuZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQob3JkZXIub3JkZXJfaWQpXG4gICAgaWYgKCFvcmRlclN0YXRlKSBjb250aW51ZVxuXG4gICAgLy8gRmluZCB0aGUgbmV4dCBzdGVwIHRvIGNvbXBsZXRlXG4gICAgbGV0IG5leHRTdGVwSW5kZXggPSAtMVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3JkZXJTdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc3RlcCA9IG9yZGVyU3RlcHNbaV1cbiAgICAgIGlmICghb3JkZXJTdGF0ZVtzdGVwXSkge1xuICAgICAgICBuZXh0U3RlcEluZGV4ID0gaVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGFsbCBzdGVwcyBhcmUgY29tcGxldGVkIG9yIG5vIG5leHQgc3RlcCBmb3VuZFxuICAgIGlmIChuZXh0U3RlcEluZGV4ID09PSAtMSkge1xuICAgICAgdXBkYXRlZE9yZGVycy5wdXNoKHtcbiAgICAgICAgb3JkZXJfaWQ6IG9yZGVyLm9yZGVyX2lkLFxuICAgICAgICBjdXJyZW50X3N0ZXA6IG51bGwsXG4gICAgICB9KVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIG5leHQgc3RlcCB0byB0cnVlXG4gICAgY29uc3QgbmV4dFN0ZXAgPSBvcmRlclN0ZXBzW25leHRTdGVwSW5kZXhdXG4gICAgY29uc3QgdXBkYXRlcyA9IHtcbiAgICAgIFtuZXh0U3RlcF06IHRydWUsXG4gICAgICBjdXJyZW50X3N0ZXA6IG5leHRTdGVwLFxuICAgIH1cblxuICAgIC8vIElmIHRoaXMgaXMgdGhlIGxhc3Qgc3RlcCwgYWxzbyB1cGRhdGUgdGhlIG9yZGVyIHN0YXR1c1xuICAgIGlmIChuZXh0U3RlcEluZGV4ID09PSBvcmRlclN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGN0eC5kYi51cGRhdGVPcmRlcihvcmRlci5vcmRlcl9pZCwge1xuICAgICAgICBpc19maW5pc2hlZDogdHJ1ZSxcbiAgICAgICAgY29tcGxldGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9KVxuICAgIH1cblxuICAgIGN0eC5kYi51cGRhdGVKbGNwY2JPcmRlclN0YXRlKG9yZGVyLm9yZGVyX2lkLCB1cGRhdGVzKVxuXG4gICAgdXBkYXRlZE9yZGVycy5wdXNoKHtcbiAgICAgIG9yZGVyX2lkOiBvcmRlci5vcmRlcl9pZCxcbiAgICAgIGN1cnJlbnRfc3RlcDogbmV4dFN0ZXAsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiZXhwb3J0IGNvbnN0IG9yZGVyU3RlcHMgPSBbXG4gIFwiYXJlX2dlcmJlcnNfZ2VuZXJhdGVkXCIsXG4gIFwiYXJlX2dlcmJlcnNfdXBsb2FkZWRcIixcbiAgXCJpc19nZXJiZXJfYW5hbHl6ZWRcIixcbiAgXCJhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkXCIsXG4gIFwiaXNfcGNiX2FkZGVkX3RvX2NhcnRcIixcbiAgXCJpc19ib21fdXBsb2FkZWRcIixcbiAgXCJpc19wbnBfdXBsb2FkZWRcIixcbiAgXCJpc19ib21fcG5wX2FuYWx5emVkXCIsXG4gIFwiaXNfYm9tX3BhcnNpbmdfY29tcGxldGVcIixcbiAgXCJhcmVfY29tcG9uZW50c19hdmFpbGFibGVcIixcbiAgXCJpc19wYXRjaF9tYXBfZ2VuZXJhdGVkXCIsXG4gIFwiaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWRcIixcbiAgXCJpc19kZm1fcmVzdWx0X2dlbmVyYXRlZFwiLFxuICBcImFyZV9maWxlc19kb3dubG9hZGVkXCIsXG4gIFwiYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkXCIsXG4gIFwiYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWRcIixcbiAgXCJpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZFwiLFxuICBcImlzX2FkZGVkX3RvX2NhcnRcIixcbl0gYXMgY29uc3RcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc2VlZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2VlZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7IG9rOiB6LmJvb2xlYW4oKSB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBzZWVkKGN0eC5kYilcblxuICByZXR1cm4gY3R4Lmpzb24oeyBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudF9iYWxhbmNlOiB6Lm9iamVjdCh7XG4gICAgICBtb250aGx5X2FpX2J1ZGdldF91c2VkX3VzZDogei5udW1iZXIoKSxcbiAgICB9KSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgLy8gRm9yIHRoaXMgZXhhbXBsZSwgd2UnbGwgcmV0dXJuIGEgbW9jayBiYWxhbmNlXG4gIC8vIEluIGEgcmVhbCBpbXBsZW1lbnRhdGlvbiwgeW91IHdvdWxkIGZldGNoIHRoaXMgZnJvbSBhIGRhdGFiYXNlIG9yIGV4dGVybmFsIHNlcnZpY2VcbiAgY29uc3QgbW9ja0JhbGFuY2UgPSB7XG4gICAgbW9udGhseV9haV9idWRnZXRfdXNlZF91c2Q6IDIuNSxcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgYWNjb3VudF9iYWxhbmNlOiBtb2NrQmFsYW5jZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGFjY291bnRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhY2NvdW50OiBhY2NvdW50U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQoY3R4LmF1dGguYWNjb3VudF9pZClcbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgYWNjb3VudCB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgYWNjb3VudFNjaGVtYSxcbiAgc2hpcHBpbmdJbmZvU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzaGlwcGluZ0luZm86IHNoaXBwaW5nSW5mb1NjaGVtYSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnQ6IGFjY291bnRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc2hpcHBpbmdJbmZvIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCB1cGRhdGVkQWNjb3VudCA9IGN0eC5kYi51cGRhdGVBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQsIHtcbiAgICBzaGlwcGluZ0luZm8sXG4gIH0pXG5cbiAgaWYgKCF1cGRhdGVkQWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7IGFjY291bnQ6IHVwZGF0ZWRBY2NvdW50IH0pXG59KVxuIiwgIi8qKlxuICogRm9yd2FyZCByZXF1ZXN0IHRvIGFudGhyb3BpY1xuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgY29uc3QgYW50aHJvcGljQXBpS2V5ID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0FQSV9LRVlcblxuICBpZiAoIWFudGhyb3BpY0FwaUtleSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJBbnRocm9waWMgQVBJIGtleSBpcyBub3Qgc2V0XCIsIHsgc3RhdHVzOiA1MDAgfSlcbiAgfVxuXG4gIGNvbnN0IGFudGhyb3BpY1VybCA9XG4gICAgXCJodHRwczovL2FwaS5hbnRocm9waWMuY29tXCIgKyB1cmwucGF0aG5hbWUucmVwbGFjZSgvXlxcL2FwaVxcL2FpLywgXCJcIilcblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxLmhlYWRlcnMpXG4gIGhlYWRlcnMuc2V0KFwieC1hcGkta2V5XCIsIGAke2FudGhyb3BpY0FwaUtleX1gKVxuXG4gIGNvbnNvbGUubG9nKFwic2VuZGluZyByZXF1ZXN0IHRvIGFudGhyb3BpY1wiKVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFudGhyb3BpY1VybCwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgIGJvZHk6IHJlcS5ib2R5LFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICB9KS50aGVuKChyKSA9PiByLmpzb24oKSlcblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlKSwge1xuICAgIHN0YXR1czogMjAwLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgfSlcbn1cbiIsICJpbXBvcnQgYWkgZnJvbSBcIi4vYWkvWy4uLmFueXJvdXRlXVwiXG5leHBvcnQgZGVmYXVsdCBhaVxuIiwgImltcG9ydCB7IFJlYWRhYmxlU3RyZWFtIH0gZnJvbSBcInN0cmVhbS93ZWJcIlxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgY29uc3QgYW50aHJvcGljQXBpS2V5ID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0FQSV9LRVlcblxuICBpZiAoIWFudGhyb3BpY0FwaUtleSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJBbnRocm9waWMgQVBJIGtleSBpcyBub3Qgc2V0XCIsIHsgc3RhdHVzOiA1MDAgfSlcbiAgfVxuXG4gIGNvbnN0IGFudGhyb3BpY1VybCA9XG4gICAgXCJodHRwczovL2FwaS5hbnRocm9waWMuY29tXCIgKyB1cmwucGF0aG5hbWUucmVwbGFjZSgvXlxcL2FwaVxcL2FpLywgXCJcIilcblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxLmhlYWRlcnMpXG4gIGhlYWRlcnMuc2V0KFwieC1hcGkta2V5XCIsIGAke2FudGhyb3BpY0FwaUtleX1gKVxuICBoZWFkZXJzLnNldChcIkFjY2VwdFwiLCBcInRleHQvZXZlbnQtc3RyZWFtXCIpXG4gIGhlYWRlcnMuc2V0KFwiQ2FjaGUtQ29udHJvbFwiLCBcIm5vLWNhY2hlXCIpXG4gIGhlYWRlcnMuc2V0KFwiQ29ubmVjdGlvblwiLCBcImtlZXAtYWxpdmVcIilcblxuICBjb25zb2xlLmxvZyhcInNlbmRpbmcgcmVxdWVzdCB0byBhbnRocm9waWNcIilcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhbnRocm9waWNVcmwsIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgaGVhZGVyczogaGVhZGVycyxcbiAgICBib2R5OiByZXEuYm9keSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZHVwbGV4OiBcImhhbGZcIixcbiAgfSlcblxuICAvLyBDaGVjayBpZiB0aGUgcmVzcG9uc2UgaXMgc3VjY2Vzc2Z1bFxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgIGBBbnRocm9waWMgQVBJIHJldHVybmVkIGFuIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICAvLyBDcmVhdGUgYSBSZWFkYWJsZVN0cmVhbSB0byBwcm9jZXNzIHRoZSByZXNwb25zZVxuICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgIGFzeW5jIHN0YXJ0KGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHkhLmdldFJlYWRlcigpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSBicmVha1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKClcbiAgICAgICAgY29udHJvbGxlci5jbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgfSlcblxuICAvLyBSZXR1cm4gYSBzdHJlYW1pbmcgcmVzcG9uc2VcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShzdHJlYW0gYXMgYW55LCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiLFxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcbiAgICAgIENvbm5lY3Rpb246IFwia2VlcC1hbGl2ZVwiLFxuICAgIH0sXG4gIH0pXG59XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7IG9rOiB6LmJvb2xlYW4oKSB9KSxcbn0pKGFzeW5jIChyZXE6IGFueSwgY3R4OiBhbnkpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKHsgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCBtcyBmcm9tIFwibXNcIlxuaW1wb3J0IHsgU2lnbkpXVCB9IGZyb20gXCJqb3NlXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc2Vzc2lvbjogei5vYmplY3Qoe1xuICAgICAgc2Vzc2lvbl9pZDogei5zdHJpbmcoKSxcbiAgICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gICAgICBleHBpcmVzX2F0OiB6LnN0cmluZygpLFxuICAgICAgaXNfY2xpX3Nlc3Npb246IHouYm9vbGVhbigpLFxuICAgICAgdG9rZW46IHouc3RyaW5nKCksXG4gICAgfSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCBhY2NvdW50XG4gIGlmIChcImFjY291bnRfaWRcIiBpbiByZXEuanNvbkJvZHkpIHtcbiAgICBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQocmVxLmpzb25Cb2R5LmFjY291bnRfaWQpXG4gIH0gZWxzZSB7XG4gICAgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KHJlcS5qc29uQm9keS5naXRodWJfdXNlcm5hbWUpXG4gIH1cblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBuZXdfc2Vzc2lvbiA9IGN0eC5kYi5jcmVhdGVTZXNzaW9uKHtcbiAgICBleHBpcmVzX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpICsgbXMoXCI2MCBkYXlcIikpLnRvSVNPU3RyaW5nKCksXG4gICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgIGlzX2NsaV9zZXNzaW9uOiBmYWxzZSxcbiAgfSlcblxuICBjb25zdCB0b2tlbiA9IGF3YWl0IG5ldyBTaWduSldUKHtcbiAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgc2Vzc2lvbl9pZDogbmV3X3Nlc3Npb24uc2Vzc2lvbl9pZCxcbiAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICB9KVxuICAgIC5zZXRQcm90ZWN0ZWRIZWFkZXIoeyBhbGc6IFwiSFMyNTZcIiB9KVxuICAgIC5zZXRFeHBpcmF0aW9uVGltZShuZXcgRGF0ZShEYXRlLm5vdygpICsgbXMoXCI2MCBkYXlcIikpLnRvSVNPU3RyaW5nKCkpXG4gICAgLnNpZ24obmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHByb2Nlc3MuZW52LkpXVF9TRUNSRVQgfHwgXCJcIikpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBzZXNzaW9uOiB7XG4gICAgICAuLi5uZXdfc2Vzc2lvbixcbiAgICAgIHRva2VuLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlckZpbGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIG9yZGVyX2ZpbGVfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfZmlsZV9pZCB9ID0gcmVxLnF1ZXJ5XG5cbiAgY29uc3Qgb3JkZXJGaWxlID0gY3R4LmRiLmdldE9yZGVyRmlsZUJ5SWQob3JkZXJfZmlsZV9pZClcbiAgaWYgKCFvcmRlckZpbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmRlcl9maWxlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyRmlsZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIG9yZGVyX2lkOiB6LnN0cmluZygpLFxuICAgIGNvbnRlbnRfYmFzZTY0OiB6LnN0cmluZygpLFxuICAgIGlzX2dlcmJlcnNfemlwOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGZvcl9wcm92aWRlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX2lkLCBjb250ZW50X2Jhc2U2NCwgaXNfZ2VyYmVyc196aXAsIGZvcl9wcm92aWRlciB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICBjb25zdCBvcmRlciA9IGN0eC5kYi5nZXRPcmRlckJ5SWQob3JkZXJfaWQpXG4gIGlmICghb3JkZXIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmRlcl9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JkZXIgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG5ld09yZGVyRmlsZSA9IHtcbiAgICBvcmRlcl9pZCxcbiAgICBpc19nZXJiZXJzX3ppcDogaXNfZ2VyYmVyc196aXAgfHwgZmFsc2UsXG4gICAgY29udGVudF90eXBlOiBcImJhc2U2NFwiLFxuICAgIGZvcl9wcm92aWRlcjogZm9yX3Byb3ZpZGVyIHx8IG51bGwsXG4gICAgdXBsb2FkZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBjb250ZW50X3RleHQ6IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZyhcInV0Zi04XCIpLFxuICAgIGNvbnRlbnRfYnl0ZXM6IFVpbnQ4QXJyYXkuZnJvbShhdG9iKGNvbnRlbnRfYmFzZTY0KSwgKGMpID0+XG4gICAgICBjLmNoYXJDb2RlQXQoMCksXG4gICAgKSxcbiAgfVxuXG4gIGNvbnN0IG9yZGVyRmlsZSA9IGN0eC5kYi5hZGRPcmRlckZpbGUobmV3T3JkZXJGaWxlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQge1xuICBKbGNwY2JPcmRlclN0YXRlLFxuICB0eXBlIE9yZGVyLFxuICBvcmRlclNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLnV1aWQoKS5vcHRpb25hbCgpLFxuICAgICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKGRhdGEpID0+IGRhdGEucGFja2FnZV9yZWxlYXNlX2lkIHx8IGRhdGEuY2lyY3VpdF9qc29uLCB7XG4gICAgICBtZXNzYWdlOiBcIkVpdGhlciBwYWNrYWdlX3JlbGVhc2VfaWQgb3IgY2lyY3VpdF9qc29uIG11c3QgYmUgcHJvdmlkZWRcIixcbiAgICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXI6IG9yZGVyU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNpcmN1aXRfanNvbiB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgbmV3T3JkZXIgPSB7XG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBpc19ydW5uaW5nOiBmYWxzZSxcbiAgICBpc19zdGFydGVkOiBmYWxzZSxcbiAgICBpc19maW5pc2hlZDogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uLFxuICB9XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuYWRkT3JkZXIobmV3T3JkZXIpXG5cbiAgY29uc3QgbmV3SmxjcGNiT3JkZXJTdGF0ZSA9IHtcbiAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiBmYWxzZSxcbiAgICBpc19nZXJiZXJfYW5hbHl6ZWQ6IGZhbHNlLFxuICAgIGFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IGZhbHNlLFxuICAgIGlzX3BjYl9hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgICBpc19ib21fdXBsb2FkZWQ6IGZhbHNlLFxuICAgIGlzX3BucF91cGxvYWRlZDogZmFsc2UsXG4gICAgaXNfYm9tX3BucF9hbmFseXplZDogZmFsc2UsXG4gICAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IGZhbHNlLFxuICAgIGFyZV9jb21wb25lbnRzX2F2YWlsYWJsZTogZmFsc2UsXG4gICAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogZmFsc2UsXG4gICAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IGZhbHNlLFxuICAgIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBhcmVfZmlsZXNfZG93bmxvYWRlZDogZmFsc2UsXG4gICAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiBmYWxzZSxcbiAgICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gICAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IGZhbHNlLFxuICAgIGlzX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICAgIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogZmFsc2UsXG4gICAgY3VycmVudF9zdGVwOiBudWxsLFxuICB9XG5cbiAgY3R4LmRiLmFkZEpsY3BjYk9yZGVyU3RhdGUobmV3SmxjcGNiT3JkZXJTdGF0ZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyLFxuICB9KVxufSlcbiIsICJpbXBvcnQge1xuICBlcnJvclNjaGVtYSxcbiAgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSxcbiAgb3JkZXJTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclN0ZXBzIGFzIHNpbXVsYXRlU2NlbmFyaW9zIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL29yZGVyLXN0ZXBzXCJcblxuY29uc3QgZGVmYXVsdE9yZGVyU3RhdGUgPSB7XG4gIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfZ2VyYmVyX2FuYWx5emVkOiBmYWxzZSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gIGlzX3BjYl9hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgaXNfYm9tX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfcG5wX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDogZmFsc2UsXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiBmYWxzZSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogZmFsc2UsXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiBmYWxzZSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IGZhbHNlLFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDogZmFsc2UsXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDogZmFsc2UsXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IGZhbHNlLFxuICBpc19hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgdXBsb2FkZWRfZ2VyYmVyX21ldGFkYXRhOiBudWxsLFxuICBnZXJiZXJfYW5hbHlzaXM6IG51bGwsXG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogZmFsc2UsXG4gIGN1cnJlbnRfc3RlcDogbnVsbCBhcyBudWxsIHwgKHR5cGVvZiBzaW11bGF0ZVNjZW5hcmlvcylbbnVtYmVyXSxcbn1cblxuY29uc3QgZXJyb3JNYXAgPSB7XG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiR0VSQkVSX0dFTkVSQVRJT05fRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZXJiZXIgZ2VuZXJhdGlvbiBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFUkJFUl9VUExPQURfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZXJiZXIgdXBsb2FkIGZhaWxlZFwiLFxuICB9LFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFOQUxZWkVfR0VSQkVSX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQW5hbHl6ZSBnZXJiZXIgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV91cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQk9NX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkJvbSB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX3BucF91cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiUE5QX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIlBucCB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV9wbnBfYW5hbHl6ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFOQUxZWkVfQk9NX0FORF9QTlBfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBbmFseXplIGJvbSBhbmQgcG5wIGZhaWxlZFwiLFxuICB9LFxuICBpc19ib21fcGFyc2luZ19jb21wbGV0ZToge1xuICAgIGVycm9yX2NvZGU6IFwiQk9NX1BBUlNJTkdfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJCb20gcGFyc2luZyBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiB7XG4gICAgZXJyb3JfY29kZTogXCJDT01QT05FTlRTX0FWQUlMQUJJTElUWV9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkNvbXBvbmVudHMgYXZhaWxhYmlsaXR5IGZhaWxlZFwiLFxuICB9LFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRU5FUkFURV9QQVRDSF9NQVBfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZW5lcmF0ZSBwYXRjaCBtYXAgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJDUkVBVElPTl9KU09OX01FUkdFX0ZJTEVfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJDcmVhdGlvbiBqc29uIG1lcmdlIGZpbGUgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRU5FUkFURV9ERk1fUkVTVUxUX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiR2VuZXJhdGUgZGZtIHJlc3VsdCBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2ZpbGVzX2Rvd25sb2FkZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkRPV05MT0FEX0ZJTEVTX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRG93bmxvYWQgZmlsZXMgZmFpbGVkXCIsXG4gIH0sXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRkVUQ0hfUFJPRFVDVF9DQVRFR09SSUVTX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRmV0Y2ggcHJvZHVjdCBjYXRlZ29yaWVzIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRklOQUxfQ09TVF9DQUxDVUxBVElPTl9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkZpbmFsIGNvc3QgY2FsY3VsYXRpb24gZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJVUERBVEVfSlNPTl9NRVJHRV9GSUxFX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiVXBkYXRlIGpzb24gbWVyZ2UgZmlsZSBmYWlsZWRcIixcbiAgfSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFERF9QQ0JfVE9fQ0FSVF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFkZCBwY2IgdG8gY2FydCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYWRkZWRfdG9fY2FydDoge1xuICAgIGVycm9yX2NvZGU6IFwiQUREX1RPX0NBUlRfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBZGQgdG8gY2FydCBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiSU5JVElBTF9DT1NUX0NBTENVTEFUSU9OX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiSW5pdGlhbCBjb3N0IGNhbGN1bGF0aW9uIGZhaWxlZFwiLFxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgICBfc2ltdWxhdGVfc2NlbmFyaW86IHouZW51bShzaW11bGF0ZVNjZW5hcmlvcykub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyOiBvcmRlclNjaGVtYSxcbiAgICBvcmRlclN0YXRlOiBqbGNwY2JPcmRlclN0YXRlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX2lkLCBfc2ltdWxhdGVfc2NlbmFyaW8gfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IG9yZGVyID0gY3R4LmRiLmdldE9yZGVyQnlJZChvcmRlcl9pZClcbiAgaWYgKCFvcmRlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZE9yZGVyU3RhdGUgPSB7XG4gICAgLi4uZGVmYXVsdE9yZGVyU3RhdGUsXG4gICAgb3JkZXJfaWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgaWYgKF9zaW11bGF0ZV9zY2VuYXJpbykge1xuICAgIGNvbnN0IGVycm9yID0gZXJyb3JNYXBbX3NpbXVsYXRlX3NjZW5hcmlvXVxuICAgIGlmIChlcnJvcikge1xuICAgICAgb3JkZXIuZXJyb3IgPSBlcnJvclNjaGVtYS5wYXJzZShlcnJvcilcbiAgICAgIG9yZGVyLmhhc19lcnJvciA9IHRydWVcbiAgICAgIGN0eC5kYi51cGRhdGVPcmRlcihvcmRlcl9pZCwgeyBlcnJvcjogb3JkZXIuZXJyb3IsIGhhc19lcnJvcjogdHJ1ZSB9KVxuXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzaW11bGF0ZVNjZW5hcmlvcy5pbmRleE9mKF9zaW11bGF0ZV9zY2VuYXJpbylcbiAgICAgIHNpbXVsYXRlU2NlbmFyaW9zLnNsaWNlKDAsIGN1cnJlbnRJbmRleCkuZm9yRWFjaCgoc2NlbmFyaW8pID0+IHtcbiAgICAgICAgdXBkYXRlZE9yZGVyU3RhdGVbc2NlbmFyaW9dID0gdHJ1ZVxuICAgICAgfSlcbiAgICAgIHVwZGF0ZWRPcmRlclN0YXRlLmN1cnJlbnRfc3RlcCA9IHNpbXVsYXRlU2NlbmFyaW9zW2N1cnJlbnRJbmRleF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZXhpc3RpbmdTdGF0ZSA9IGN0eC5kYi5nZXRKbGNwY2JPcmRlclN0YXRlc0J5T3JkZXJJZChvcmRlcl9pZClcbiAgICBpZiAoZXhpc3RpbmdTdGF0ZSkge1xuICAgICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgICAgb3JkZXIsXG4gICAgICAgIG9yZGVyU3RhdGU6IGV4aXN0aW5nU3RhdGUsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGN0eC5kYi51cGRhdGVKbGNwY2JPcmRlclN0YXRlKG9yZGVyX2lkLCB1cGRhdGVkT3JkZXJTdGF0ZSlcblxuICBjb25zdCBvcmRlclN0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyX2lkKSFcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyLFxuICAgIG9yZGVyU3RhdGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyczogei5hcnJheShvcmRlclNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJzOiBjdHguZGIub3JkZXJzLmZpbHRlcigobykgPT4gby5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgUGFja2FnZSwgUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBmaW5kUGFja2FnZVJlbGVhc2VJZCA9IGFzeW5jIChcbiAgcGFyYW1zOlxuICAgIHwgc3RyaW5nXG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogc3RyaW5nXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogc3RyaW5nXG4gICAgICAgIHVzZV9sYXRlc3RfdmVyc2lvbjogdHJ1ZVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgIH0sXG4gIGN0eDogeyBkYjogYW55IH0sXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbihwYXJhbXMsIGN0eC5kYilcbiAgfVxuXG4gIGlmIChcbiAgICBcInBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiBpbiBwYXJhbXMgJiZcbiAgICBwYXJhbXMucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblxuICApIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gfSA9IHBhcmFtc1xuXG4gICAgaWYgKHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uZW5kc1dpdGgoXCJAbGF0ZXN0XCIpKSB7XG4gICAgICBjb25zdCBbcGFja2FnZU5hbWVdID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgICAge1xuICAgICAgICAgIHBhY2thZ2VfbmFtZTogcGFja2FnZU5hbWUhLFxuICAgICAgICAgIHVzZV9sYXRlc3RfdmVyc2lvbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY3R4LFxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbihcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24hLFxuICAgICAgY3R4LmRiLFxuICAgIClcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfcmVsZWFzZV9pZFwiIGluIHBhcmFtcyAmJiBwYXJhbXMucGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHI6IFBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBwYXJhbXMucGFja2FnZV9yZWxlYXNlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVcIiBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZSwgdXNlX2xhdGVzdF92ZXJzaW9uIH0gPSBwYXJhbXNcblxuICAgIGlmICghdXNlX2xhdGVzdF92ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VfbGF0ZXN0X3ZlcnNpb24gbXVzdCBiZSB0cnVlXCIpXG4gICAgfVxuXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocDogUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUucmVwbGFjZSgvXkAvLCBcIlwiKSxcbiAgICApXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHI6IFBhY2thZ2VSZWxlYXNlKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbiA9IChcbiAgcGFja2FnZU5hbWVXaXRoVmVyc2lvbjogc3RyaW5nLFxuICBkYjogYW55LFxuKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGlmICghcGFja2FnZU5hbWVXaXRoVmVyc2lvbikgcmV0dXJuIG51bGxcblxuICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZU5hbWVXaXRoVmVyc2lvblxuICAgIC5yZXBsYWNlKC9eQC8sIFwiXCIpXG4gICAgLnNwbGl0KFwiQFwiKVxuXG4gIGNvbnN0IHBrZyA9IGRiLnBhY2thZ2VzLmZpbmQoKHA6IFBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZVxuXG4gIGlmICghdmVyc2lvbiB8fCB2ZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgcGFja2FnZVJlbGVhc2UgPSBkYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcGFja2FnZVJlbGVhc2UgPSBkYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgKVxuICB9XG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG59XG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5jb250ZW50X2Jhc2U2NCAmJiB2LmNvbnRlbnRfdGV4dCkgcmV0dXJuIGZhbHNlXG4gICAgICBpZiAoIXYuY29udGVudF9iYXNlNjQgJiYgIXYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJFaXRoZXIgY29udGVudF9iYXNlNjQgb3IgY29udGVudF90ZXh0IGlzIHJlcXVpcmVkXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlOiB6dC5wYWNrYWdlRmlsZVNjaGVtYSxcbiAgfSksXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X21pbWV0eXBlOiBwcm92aWRlZENvbnRlbnRNaW1ldHlwZSxcbiAgICBjb250ZW50X2Jhc2U2NCxcbiAgICBjb250ZW50X3RleHQsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsLFxuICAgIG5wbV9wYWNrX291dHB1dCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGlmIChpc19yZWxlYXNlX3RhcmJhbGwgJiYgIW5wbV9wYWNrX291dHB1dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJucG1fcGFja19vdXRwdXQgaXMgcmVxdWlyZWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFpc19yZWxlYXNlX3RhcmJhbGwgJiYgbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyBvbmx5IHZhbGlkIGZvciByZWxlYXNlIHRhcmJhbGxzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBEZXRlcm1pbmUgY29udGVudCBtaW1ldHlwZVxuICBjb25zdCBjb250ZW50TWltZXR5cGUgPVxuICAgIHByb3ZpZGVkQ29udGVudE1pbWV0eXBlIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c1wiKSB8fCBmaWxlX3BhdGguZW5kc1dpdGgoXCIudHN4XCIpXG4gICAgICA/IFwidGV4dC90eXBlc2NyaXB0XCJcbiAgICAgIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmpzXCIpID8gXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNvblwiKSA/IFwiYXBwbGljYXRpb24vanNvblwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLm1kXCIpID8gXCJ0ZXh0L21hcmtkb3duXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuaHRtbFwiKSA/IFwidGV4dC9odG1sXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuY3NzXCIpID8gXCJ0ZXh0L2Nzc1wiIDogbnVsbCkgfHxcbiAgICBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG5cbiAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGZpbGVcbiAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgcGFja2FnZV9maWxlX2lkOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF90ZXh0OlxuICAgICAgY29udGVudF90ZXh0IHx8XG4gICAgICAoY29udGVudF9iYXNlNjRcbiAgICAgICAgPyBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoKVxuICAgICAgICA6IG51bGwpLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IGNvbnRlbnRNaW1ldHlwZSxcbiAgICBpc19kaXJlY3Rvcnk6IGZhbHNlLFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgIG5wbV9wYWNrX291dHB1dDogbnBtX3BhY2tfb3V0cHV0IHx8IG51bGwsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgLy8gQWRkIHRvIHRoZSB0ZXN0IGRhdGFiYXNlXG4gIGN0eC5kYi5hZGRQYWNrYWdlRmlsZShuZXdQYWNrYWdlRmlsZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZTogbmV3UGFja2FnZUZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCIuLi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL25vcm1hbGl6ZVByb2plY3RGaWxlUGF0aFwiXG5leHBvcnQgY29uc3QgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciA9IGFzeW5jIChcbiAgZGVzY3JpcHRvcjpcbiAgICB8IHsgcGFja2FnZV9maWxlX2lkOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX2lkOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9uYW1lOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9LFxuICBjdHg6IHsgZGI6IGFueSB9LFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgaWYgKFwicGFja2FnZV9maWxlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBkZXNjcmlwdG9yLnBhY2thZ2VfZmlsZV9pZCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvci5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfcmVsZWFzZV9pZFwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZCwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9pZCwgdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG5cbiAgICAvLyBWZXJpZnkgcGFja2FnZSBleGlzdHNcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwOiBaVC5QYWNrYWdlKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gICAgKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2Ugbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGZpbGVcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZVwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZSwgdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIGZpcnN0XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHA6IFpULlBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZV9uYW1lfWApXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVsxXVxuICAgIGNvbnN0IHZlcnNpb24gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVsyXVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwOiBaVC5QYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZU5hbWV9YClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBsZXQgcGFja2FnZVJlbGVhc2VcbiAgICBpZiAoIXZlcnNpb24gfHwgdmVyc2lvbiA9PT0gXCJsYXRlc3RcIikge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZCBmb3IgdmVyc2lvbjogJHt2ZXJzaW9uIHx8IFwibGF0ZXN0XCJ9YCxcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBmaWxlIG5vdCBmb3VuZDogJHtmaWxlX3BhdGh9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIkludmFsaWQgcGFja2FnZSBmaWxlIGRlc2NyaXB0b3JcIilcbn1cbiIsICJjb25zdCBSRVNUUklDVEVEX0RJUlMgPSBbXCIvbm9kZV9tb2R1bGVzL1wiLCBcIi9kaXN0L1wiLCBcIi8uZ2l0L1wiXVxuXG4vKipcbiAqIEEgbm9ybWFsaXplZCBwcm9qZWN0IHBhdGggYWx3YXlzIHN0YXJ0cyB3aXRoIFwiLi9cIiBhbmQgbmV2ZXIgZW5kcyB3aXRoIGEgc2xhc2guXG4gKiBJdCBoYXMgbm8gYmFja3dhcmRzIHNsYXNoZXMgYW5kIG5vIGRvdWJsZSBzbGFzaGVzLiBJdCBkb2VzIG5vdCBnbyB0byBwYXJlbnRcbiAqIGRpcmVjdG9yaWVzLiBJdCBpcyBub3QgYSBkaXJlY3RvcnkgKG11c3QgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uKVxuICpcbiAqIEdPT0Q6XG4gKiAgLSBzcmMvaW5kZXgudHNcbiAqICAtIFJFQURNRS5tZFxuICpcbiAqIEJBRDpcbiAqIC0gLi9SRUFETUUubWRcbiAqIC0gLi9zcmMvaW5kZXgudHNcbiAqIC0gc3JjXFxpbmRleC50c1xuICogLSAuLi9SRUFETUUubWRcbiAqIC0gLi9zcmMvXG4gKiAtIC4vc3JjXG4gKlxuICogQWRkaXRpb25hbGx5LCB0aHJvdyBvbiBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBuZXZlciBiZSBpbmNsdWRlZCwgZS5nLlxuICogLSBub2RlX21vZHVsZXNcbiAqIC0gZGlzdFxuICogLSAuZ2l0XG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGhBbmRWYWxpZGF0ZSA9IChyYXdQYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocmF3UGF0aClcblxuICBpZiAobm9ybWFsaXplZFBhdGguaW5jbHVkZXMoXCIuLi9cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIFBhcmVudCBkaXJlY3RvcmllcyBhcmUgbm90IGFsbG93ZWQuXCIsXG4gICAgKVxuICB9XG5cbiAgaWYgKFJFU1RSSUNURURfRElSUy5zb21lKChkaXIpID0+IG5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKGRpcikpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIFJlc3RyaWN0ZWQgZGlyZWN0b3JpZXMgKCR7UkVTVFJJQ1RFRF9ESVJTLm1hcChcbiAgICAgICAgKHJkKSA9PiByZC5zbGljZSgxLCAtMSksXG4gICAgICApLmpvaW4oXCIsIFwiKX0pIGFyZSBub3QgYWxsb3dlZC5gLFxuICAgIClcbiAgfVxuXG4gIGlmICghbm9ybWFsaXplZFBhdGguaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIE11c3QgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uLiBHaXZlbiBcIiR7cmF3UGF0aH1cImAsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoXG59XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGggPSAocmF3UGF0aDogc3RyaW5nKSA9PiB7XG4gIGxldCBub3JtYWxpemVkUGF0aCA9IHJhd1BhdGgudHJpbSgpIC8vIFJlbW92ZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2VcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXC8rL2csIFwiL1wiKSAvLyBSZXBsYWNlIG11bHRpcGxlIGNvbnNlY3V0aXZlIHNsYXNoZXMgd2l0aCBhIHNpbmdsZSBzbGFzaFxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL15cXC5cXC8vLCBcIlwiKSAvLyBSZW1vdmUgbGVhZGluZyBcIi4vXCJcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXC8kLywgXCJcIikgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXFxcXC9nLCBcIi9cIikgLy8gUmVwbGFjZSBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlc1xuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKSAvLyBSZW1vdmUgbGVhZGluZyBcIi9cIlxuXG4gIHJldHVybiBub3JtYWxpemVkUGF0aFxufVxuIiwgImltcG9ydCB7IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfZmlsZS9nZXQtcGFja2FnZS1maWxlLWlkLWZyb20tZmlsZS1kZXNjcmlwdG9yXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmNvbnN0IHJvdXRlU3BlYyA9IHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSwgLy8gVXNpbmcgYW55IGJlY2F1c2Ugd2UncmUgcmV0dXJuaW5nIGJpbmFyeSBkYXRhXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VGaWxlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBjb25zdCBwYXJhbXMgPSByZXEucXVlcnlcblxuICBpZiAoXCJwYWNrYWdlX2ZpbGVfaWRcIiBpbiBwYXJhbXMpIHtcbiAgICBwYWNrYWdlRmlsZUlkID0gcGFyYW1zLnBhY2thZ2VfZmlsZV9pZFxuICB9IGVsc2UgaWYgKFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBwYXJhbXNcblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcIm5vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHBhY2thZ2VGaWxlSWQgPSBhd2FpdCBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yKFxuICAgICAgICB7XG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgICAgICAgIGZpbGVfcGF0aDogZmlsZV9wYXRoLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwibm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VGaWxlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJiYWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJDb3VsZCBub3QgZGV0ZXJtaW5lIHBhY2thZ2VfZmlsZV9pZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAocGYpID0+IHBmLnBhY2thZ2VfZmlsZV9pZCA9PT0gcGFja2FnZUZpbGVJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb250ZW50VHlwZSA9IFwidGV4dC9wbGFpblwiXG5cbiAgY29uc3QgaGVhZGVycyA9IHtcbiAgICBcIkNvbnRlbnQtVHlwZVwiOiBjb250ZW50VHlwZSxcbiAgICBcIkNvbnRlbnQtRGlzcG9zaXRpb25cIjogYGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJHtwYWNrYWdlRmlsZS5maWxlX3BhdGguc3BsaXQoXCIvXCIpLnBvcCgpfVwiYCxcbiAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJwdWJsaWMsIG1heC1hZ2U9ODY0MDAsIHN0YWxlLXdoaWxlLXJldmFsaWRhdGU9NjA0ODAwXCIsXG4gICAgRXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIDg2NDAwMDAwKS50b1VUQ1N0cmluZygpLFxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShwYWNrYWdlRmlsZS5jb250ZW50X3RleHQsIHsgaGVhZGVycyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfZmlsZS9nZXQtcGFja2FnZS1maWxlLWlkLWZyb20tZmlsZS1kZXNjcmlwdG9yXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICAgIHBhY2thZ2VfZmlsZTogWlQucGFja2FnZUZpbGVTY2hlbWEub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcihaVC5lcnJvclJlc3BvbnNlU2NoZW1hKSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBwYWNrYWdlRmlsZUlkID0gYXdhaXQgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvcihcbiAgICByZXEuanNvbkJvZHksXG4gICAgY3R4LFxuICApXG5cbiAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZToge1xuICAgICAgLi4ucGFja2FnZUZpbGUsXG4gICAgICBjcmVhdGVkX2F0OiBwYWNrYWdlRmlsZS5jcmVhdGVkX2F0LnRvU3RyaW5nKCksXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICB1c2VfbGF0ZXN0X3ZlcnNpb246IHoubGl0ZXJhbCh0cnVlKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlczogei5hcnJheShaVC5wYWNrYWdlRmlsZVNjaGVtYSksXG4gIH0pLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChyZXEuanNvbkJvZHksIGN0eClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gT21pdCB0aGUgY29udGVudF90ZXh0IGZpZWxkXG4gIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXNcbiAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZClcbiAgICAubWFwKCh7IGNvbnRlbnRfdGV4dCwgLi4uZmlsZSB9KSA9PiAoe1xuICAgICAgLi4uZmlsZSxcbiAgICB9KSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZXM6IHBhY2thZ2VGaWxlcyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgPSAoXG4gIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZTogWlQuUGFja2FnZVJlbGVhc2UsXG4pOiBaVC5QYWNrYWdlUmVsZWFzZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jcmVhdGVkX2F0LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcGFja2FnZVJlbGVhc2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlOiBwYWNrYWdlUmVsZWFzZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHtcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCA9IHRydWUsXG4gICAgdmVyc2lvbixcbiAgICBjb21taXRfc2hhLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhdmVyc2lvbiAmJiAhcGFja2FnZV9pZCkge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgcGFyc2VkVmVyc2lvbl0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VOYW1lfWAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VfaWQgPSBwa2cucGFja2FnZV9pZFxuICAgIHZlcnNpb24gPSBwYXJzZWRWZXJzaW9uXG4gIH1cblxuICBpZiAoIXBhY2thZ2VfaWQgfHwgIXZlcnNpb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwicGFja2FnZV9pZCBhbmQgdmVyc2lvbiBhcmUgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdmVyc2lvbiBhbHJlYWR5IGV4aXN0c1xuICBjb25zdCBleGlzdGluZ1JlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gIClcblxuICBpZiAoZXhpc3RpbmdSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidmVyc2lvbl9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgbWVzc2FnZTogYFZlcnNpb24gJHt2ZXJzaW9ufSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBwYWNrYWdlYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHByZXZpb3VzIGxhdGVzdCBpZiBuZWVkZWRcbiAgaWYgKGlzX2xhdGVzdCkge1xuICAgIGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdClcbiAgICAgIC5mb3JFYWNoKChwcikgPT4gKHByLmlzX2xhdGVzdCA9IGZhbHNlKSlcbiAgfVxuXG4gIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCxcbiAgICB2ZXJzaW9uLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbW1pdF9zaGE6IGNvbW1pdF9zaGEgPz8gbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIGlmIHRoaXMgaXMgdGhlIGxhdGVzdCByZWxlYXNlXG4gIGlmIChpc19sYXRlc3QpIHtcbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShwYWNrYWdlX2lkLCB7XG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogdmVyc2lvbixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKG5ld1BhY2thZ2VSZWxlYXNlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlOiB6dC5wYWNrYWdlUmVsZWFzZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgIHBhY2thZ2VfbmFtZSxcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIEhhbmRsZSBwYWNrYWdlX25hbWUgd2l0aCBpc19sYXRlc3RcbiAgaWYgKHBhY2thZ2VfbmFtZSAmJiBpc19sYXRlc3QgPT09IHRydWUpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG5cbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFNvcnQgcmVsZWFzZXMgYnkgdmVyc2lvbiB0byBmaW5kIHRoZSBsYXRlc3Qgb25lXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuICAgICAgLmZpbHRlcigoeCkgPT4geC5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIk5vIHJlbGVhc2VzIGZvdW5kIGZvciB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwYWNrYWdlUmVsZWFzZXNbMF0pLFxuICAgIH0pXG4gIH1cblxuICAvLyBIYW5kbGUgcGFja2FnZV9pZCB3aXRoIGlzX2xhdGVzdFxuICBpZiAocGFja2FnZV9pZCAmJiBpc19sYXRlc3QgPT09IHRydWUpIHtcbiAgICAvLyBTb3J0IHJlbGVhc2VzIGJ5IHZlcnNpb24gdG8gZmluZCB0aGUgbGF0ZXN0IG9uZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIk5vIHJlbGVhc2VzIGZvdW5kIGZvciB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwYWNrYWdlUmVsZWFzZXNbMF0pLFxuICAgIH0pXG4gIH1cblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhcGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBwYXJzZWRWZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHgpID0+IHgubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gICAgY29uc3QgcGtnUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgudmVyc2lvbiA9PSBwYXJzZWRWZXJzaW9uICYmIHgucGFja2FnZV9pZCA9PSBwa2c/LnBhY2thZ2VfaWRcbiAgICB9KVxuXG4gICAgaWYgKCFwa2dSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGtnUmVsZWFzZSksXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGZvdW5kUmVsZWFzZSA9XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkICYmIGN0eC5kYi5nZXRQYWNrYWdlUmVsZWFzZUJ5SWQocGFja2FnZV9yZWxlYXNlX2lkKVxuXG4gIGlmICghZm91bmRSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShmb3VuZFJlbGVhc2UpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlUmVsZWFzZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lIH0pID0+IHtcbiAgICAgIGlmIChwYWNrYWdlX2lkICYmIHBhY2thZ2VfbmFtZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJwYWNrYWdlX2lkIGFuZCBwYWNrYWdlX25hbWUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVwiKVxuICAgIC5yZWZpbmUoKHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lIH0pID0+IHtcbiAgICAgIGlmICghcGFja2FnZV9pZCAmJiAhcGFja2FnZV9uYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcInBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIGlzIHJlcXVpcmVkXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlczogei5hcnJheShwYWNrYWdlUmVsZWFzZVNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lLCBpc19sYXRlc3QsIHZlcnNpb24sIGNvbW1pdF9zaGEgfSA9XG4gICAgcmVxLmpzb25Cb2R5XG5cbiAgaWYgKCFwYWNrYWdlX2lkICYmICFwYWNrYWdlX25hbWUgJiYgIWlzX2xhdGVzdCAmJiAhdmVyc2lvbiAmJiAhY29tbWl0X3NoYSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcXVlcnlcIixcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIFwiQXQgbGVhc3Qgb25lIG9mIHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSwgaXNfbGF0ZXN0LCB2ZXJzaW9uIG9yIGNvbW1pdF9zaGEgaXMgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuXG4gIC8vIEFwcGx5IGZpbHRlcnNcbiAgaWYgKHBhY2thZ2VfaWQpIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gIH1cblxuICBpZiAocGFja2FnZV9uYW1lKSB7XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmIChwa2cpIHtcbiAgICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbGVhc2VzID0gW11cbiAgICB9XG4gIH1cblxuICBpZiAoaXNfbGF0ZXN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLmlzX2xhdGVzdCA9PT0gaXNfbGF0ZXN0KVxuICB9XG5cbiAgaWYgKHZlcnNpb24pIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLnZlcnNpb24gPT09IHZlcnNpb24pXG4gIH1cblxuICBpZiAoY29tbWl0X3NoYSkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIuY29tbWl0X3NoYSA9PT0gY29tbWl0X3NoYSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9yZWxlYXNlczogcmVsZWFzZXMubWFwKChwcikgPT4gcHVibGljTWFwUGFja2FnZVJlbGVhc2UocHIpKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGxpY2Vuc2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgIGlzX2xvY2tlZCxcbiAgICBpc19sYXRlc3QsXG4gICAgbGljZW5zZSxcbiAgfSA9IHJlcS5qc29uQm9keVxuICBsZXQgcmVsZWFzZUlkID0gcGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gbG9va3VwXG4gIGlmICghcmVsZWFzZUlkICYmIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHtcbiAgICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBpZiAocGtnKSB7XG4gICAgICBjb25zdCByZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgICBpZiAocmVsZWFzZSkge1xuICAgICAgICByZWxlYXNlSWQgPSByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghcmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGRlbHRhID0geyBpc19sb2NrZWQsIGlzX2xhdGVzdCwgbGljZW5zZSB9XG4gIGlmIChcbiAgICBPYmplY3Qua2V5cyhkZWx0YSkuZmlsdGVyKFxuICAgICAgKGspID0+IGRlbHRhW2sgYXMga2V5b2YgdHlwZW9mIGRlbHRhXSAhPT0gdW5kZWZpbmVkLFxuICAgICkubGVuZ3RoID09PSAwXG4gICkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vX2ZpZWxkc19wcm92aWRlZFwiLFxuICAgICAgbWVzc2FnZTogXCJObyBmaWVsZHMgcHJvdmlkZWQgdG8gdXBkYXRlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHJlbGVhc2VJZCxcbiAgKVxuICBpZiAoIXJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gSGFuZGxlIGlzX2xhdGVzdCB1cGRhdGVzXG4gIGlmIChpc19sYXRlc3QgIT09IHVuZGVmaW5lZCAmJiBpc19sYXRlc3QpIHtcbiAgICBjdHguZGIucGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocHIpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcmVsZWFzZS5wYWNrYWdlX2lkICYmXG4gICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkICE9PSByZWxlYXNlSWQgJiZcbiAgICAgICAgICBwci5pc19sYXRlc3QsXG4gICAgICApXG4gICAgICAuZm9yRWFjaCgocHIpID0+IHtcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID0gZmFsc2VcbiAgICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHJlbGVhc2VcbiAgT2JqZWN0LmFzc2lnbihyZWxlYXNlLCB7XG4gICAgLi4uKGlzX2xvY2tlZCAhPT0gdW5kZWZpbmVkICYmIHsgaXNfbG9ja2VkIH0pLFxuICAgIC4uLihpc19sYXRlc3QgIT09IHVuZGVmaW5lZCAmJiB7IGlzX2xhdGVzdCB9KSxcbiAgICAuLi4obGljZW5zZSAhPT0gdW5kZWZpbmVkICYmIHsgbGljZW5zZSB9KSxcbiAgfSlcblxuICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2UocmVsZWFzZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWxyZWFkeV9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgc3RhcnJlZCB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICBwa2cuc3Rhcl9jb3VudCA9IChwa2cuc3Rhcl9jb3VudCB8fCAwKSArIDFcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICAvLyBJZiByZWNvcmQgZXhpc3RzIGJ1dCBpc19zdGFycmVkIGlzIGZhbHNlLCB1cGRhdGUgdG8gaXNfc3RhcnJlZD10cnVlXG4gICAgZXhpc3RpbmcuaXNfc3RhcnJlZCA9IHRydWVcbiAgICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIHN0YXIgYnkgY3JlYXRpbmcgYSBuZXcgYWNjb3VudF9wYWNrYWdlIHJlY29yZFxuICAgIGNvbnN0IG5ld0FjY291bnRQYWNrYWdlID0ge1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfVxuICAgIGN0eC5kYi5hZGRBY2NvdW50UGFja2FnZShuZXdBY2NvdW50UGFja2FnZSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB0eXBlICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZSA9IChpbnRlcm5hbFBhY2thZ2U6IHtcbiAgcGFja2FnZV9pZDogc3RyaW5nXG4gIGNyZWF0b3JfYWNjb3VudF9pZDogc3RyaW5nXG4gIG93bmVyX29yZ19pZDogc3RyaW5nXG4gIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc3RyaW5nIHwgbnVsbFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGJvb2xlYW5cbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGxcbiAgbGF0ZXN0X3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF9saWNlbnNlPzogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkPzogc3RyaW5nIHwgbnVsbFxuICBzdGFyX2NvdW50PzogbnVtYmVyIHwgbnVsbFxuICBuYW1lOiBzdHJpbmdcbiAgd2Vic2l0ZTogc3RyaW5nIHwgbnVsbFxuICB1bnNjb3BlZF9uYW1lOiBzdHJpbmdcbiAgdXBkYXRlZF9hdDogc3RyaW5nXG4gIGNyZWF0ZWRfYXQ6IHN0cmluZ1xuICBhaV9kZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbFxuICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IHN0cmluZyB8IG51bGxcbiAgaXNfc25pcHBldDogYm9vbGVhblxuICBpc19ib2FyZDogYm9vbGVhblxuICBpc19wYWNrYWdlOiBib29sZWFuXG4gIGlzX21vZGVsOiBib29sZWFuXG4gIGlzX2Zvb3RwcmludDogYm9vbGVhblxuICBpc19wcml2YXRlOiBib29sZWFuIHwgbnVsbFxuICBpc191bmxpc3RlZDogYm9vbGVhbiB8IG51bGxcbn0pOiB6dC5QYWNrYWdlID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5pbnRlcm5hbFBhY2thZ2UsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDpcbiAgICAgIGludGVybmFsUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID8/IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IGludGVybmFsUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA/PyBudWxsLFxuICAgIGxpY2Vuc2U6IGludGVybmFsUGFja2FnZS5sYXRlc3RfbGljZW5zZSA/PyBudWxsLFxuICAgIHdlYnNpdGU6IGludGVybmFsUGFja2FnZS53ZWJzaXRlID8/IG51bGwsXG4gICAgc3Rhcl9jb3VudDogaW50ZXJuYWxQYWNrYWdlLnN0YXJfY291bnQgPz8gMCxcbiAgICBjcmVhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICB1cGRhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2UudXBkYXRlZF9hdCxcbiAgICBpc19wcml2YXRlOiBpbnRlcm5hbFBhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICBpc19wdWJsaWM6IGludGVybmFsUGFja2FnZS5pc19wcml2YXRlID09PSB0cnVlID8gZmFsc2UgOiB0cnVlLFxuICAgIGlzX3VubGlzdGVkOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmlzX3ByaXZhdGUgPT09IHRydWVcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogKGludGVybmFsUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSksXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBuYW1lOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5yZWdleChcbiAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgXCJQYWNrYWdlIG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCB1bmRlcnNjb3JlcywgYW5kIGZvcndhcmQgc2xhc2hlc1wiLFxuICAgICAgKVxuICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgZGVzY3JpcHRpb24sIGlzX3ByaXZhdGUsIGlzX3VubGlzdGVkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gbmFtZSlcblxuICBpZiAoZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgdGhyb3cgY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBcIkEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1bnNjb3BlZF9uYW1lID0gbmFtZS5zcGxpdChcIi9cIilbMV1cblxuICBjb25zdCBuZXdQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWUsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IG51bGwsXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IG51bGwsXG4gICAgbGljZW5zZTogbnVsbCxcbiAgICB3ZWJzaXRlOiBudWxsLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIHN0YXJfY291bnQ6IDAsXG4gICAgYWlfZGVzY3JpcHRpb246IFwicGxhY2Vob2xkZXIgYWkgZGVzY3JpcHRpb25cIixcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3B1YmxpYzogaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICBpc191bmxpc3RlZDogaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IHRydWUgOiAoaXNfdW5saXN0ZWQgPz8gZmFsc2UpLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJwbGFjZWhvbGRlciBhaSB1c2FnZSBpbnN0cnVjdGlvbnNcIixcbiAgfSlcblxuICBpZiAoIW5ld1BhY2thZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIHBhY2thZ2VcIilcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShuZXdQYWNrYWdlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuXG4gIGNvbnNvbGUubG9nKFwicGtnXCIsIHBrZy5vd25lcl9vcmdfaWQsIGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZClcblxuICBpZiAocGtnLm93bmVyX29yZ19pZCAhPT0gY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICBjdHguZGIucGFja2FnZXMuc3BsaWNlKHBhY2thZ2VJbmRleCwgMSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIC8vIEFjY2VwdCBlaXRoZXIgcGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgdG8gZmluZCB0aGUgcGFja2FnZSB0byBmb3JrXG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIC8vIE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gY3VzdG9taXplIHRoZSBmb3JrZWQgcGFja2FnZVxuICAgICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgIH0pXG4gICAgLnJlZmluZShcbiAgICAgIChkYXRhKSA9PlxuICAgICAgICBkYXRhLnBhY2thZ2VfaWQgIT09IHVuZGVmaW5lZCB8fCBkYXRhLnBhY2thZ2VfbmFtZSAhPT0gdW5kZWZpbmVkLFxuICAgICAge1xuICAgICAgICBtZXNzYWdlOiBcIkVpdGhlciBwYWNrYWdlX2lkIG9yIHBhY2thZ2VfbmFtZSBtdXN0IGJlIHByb3ZpZGVkXCIsXG4gICAgICB9LFxuICAgIClcbiAgICAudHJhbnNmb3JtKChkYXRhKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIC8vIElmIHRoZSBwYWNrYWdlIGlzIHByaXZhdGUsIGl0IHNob3VsZCBiZSB1bmxpc3RlZFxuICAgICAgaXNfdW5saXN0ZWQ6IGRhdGEuaXNfcHJpdmF0ZSA/IHRydWUgOiBkYXRhLmlzX3VubGlzdGVkLFxuICAgIH0pKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUsIGlzX3ByaXZhdGUsIGlzX3VubGlzdGVkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBGaW5kIHRoZSBwYWNrYWdlIHRvIGZvcmtcbiAgbGV0IHNvdXJjZVBhY2thZ2UgPSBudWxsXG4gIGlmIChwYWNrYWdlX2lkKSB7XG4gICAgc291cmNlUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkKVxuICB9IGVsc2UgaWYgKHBhY2thZ2VfbmFtZSkge1xuICAgIHNvdXJjZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICB9XG5cbiAgaWYgKCFzb3VyY2VQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHBhY2thZ2UgdG8gZm9yayB3YXMgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChzb3VyY2VQYWNrYWdlLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImNhbm5vdF9mb3JrX293bl9wYWNrYWdlXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBjYW5ub3QgZm9yayB5b3VyIG93biBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGZvcmsgYWxyZWFkeSBleGlzdHMgKHVzZXIgYWxyZWFkeSBoYXMgYSBwYWNrYWdlIHdpdGggdGhlIHNhbWUgbmFtZSlcbiAgY29uc3QgZm9ya05hbWUgPSBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7c291cmNlUGFja2FnZS51bnNjb3BlZF9uYW1lfWBcbiAgY29uc3QgZXhpc3RpbmdGb3JrID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHBrZykgPT5cbiAgICAgIHBrZy5jcmVhdG9yX2FjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgcGtnLm5hbWUgPT09IGZvcmtOYW1lLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nRm9yaykge1xuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBwYWNrYWdlOiBwdWJsaWNNYXBQYWNrYWdlKGV4aXN0aW5nRm9yayksXG4gICAgfSlcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGxhdGVzdCByZWxlYXNlIG9mIHRoZSBzb3VyY2UgcGFja2FnZVxuICBjb25zdCBzb3VyY2VQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocmVsZWFzZSkgPT5cbiAgICAgIHJlbGVhc2UucGFja2FnZV9pZCA9PT0gc291cmNlUGFja2FnZS5wYWNrYWdlX2lkICYmXG4gICAgICByZWxlYXNlLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgKVxuXG4gIGlmICghc291cmNlUGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzb3VyY2VfcGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGUgc291cmNlIHBhY2thZ2UgZG9lcyBub3QgaGF2ZSBhbnkgcmVsZWFzZXMgdG8gZm9ya1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2VcbiAgY29uc3Qgc291cmNlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAoZmlsZSkgPT5cbiAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBzb3VyY2VQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcblxuICBpZiAoc291cmNlRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic291cmNlX3BhY2thZ2VfZmlsZXNfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlRoZSBzb3VyY2UgcGFja2FnZSByZWxlYXNlIGRvZXMgbm90IGhhdmUgYW55IGZpbGVzIHRvIGZvcmtcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIHRoZSBmb3JrZWQgcGFja2FnZVxuICBjb25zdCBmb3JrZWRQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWU6IGZvcmtOYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBzb3VyY2VQYWNrYWdlLmRlc2NyaXB0aW9uLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBvd25lcl9vcmdfaWQ6IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZCxcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgIGxhdGVzdF92ZXJzaW9uOiBudWxsLFxuICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgd2Vic2l0ZTogbnVsbCxcbiAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdW5zY29wZWRfbmFtZTogc291cmNlUGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgIHN0YXJfY291bnQ6IDAsXG4gICAgYWlfZGVzY3JpcHRpb246IHNvdXJjZVBhY2thZ2UuYWlfZGVzY3JpcHRpb24gfHwgXCJmb3JrZWQgcGFja2FnZVwiLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljOiAhaXNfcHJpdmF0ZSxcbiAgICBpc191bmxpc3RlZCxcbiAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwiZm9ya2VkIHBhY2thZ2UgdXNhZ2VcIixcbiAgICBpc19ib2FyZDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX2JvYXJkKSxcbiAgICBpc19wYWNrYWdlOiB0cnVlLFxuICAgIGlzX21vZGVsOiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfbW9kZWwpLFxuICAgIGlzX2Zvb3RwcmludDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX2Zvb3RwcmludCksXG4gICAgaXNfc25pcHBldDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX3NuaXBwZXQpLFxuICB9KVxuXG4gIGlmICghZm9ya2VkUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZhaWxlZF90b19jcmVhdGVfZm9ya2VkX3BhY2thZ2VcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGNyZWF0ZSBmb3JrZWQgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgYSBuZXcgcGFja2FnZSByZWxlYXNlIGZvciB0aGUgZm9ya2VkIHBhY2thZ2VcbiAgY29uc3QgZm9ya2VkUGFja2FnZVJlbGVhc2UgPSBjdHguZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIHBhY2thZ2VfaWQ6IGZvcmtlZFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICB2ZXJzaW9uOiBzb3VyY2VQYWNrYWdlUmVsZWFzZS52ZXJzaW9uLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBjb21taXRfc2hhOiBudWxsLFxuICAgIGxpY2Vuc2U6IHNvdXJjZVBhY2thZ2VSZWxlYXNlLmxpY2Vuc2UgfHwgbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIGZvcmtlZCBwYWNrYWdlIHdpdGggcmVsZWFzZSBpbmZvXG4gIGZvcmtlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9XG4gICAgZm9ya2VkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gIGZvcmtlZFBhY2thZ2UubGF0ZXN0X3ZlcnNpb24gPSBmb3JrZWRQYWNrYWdlUmVsZWFzZS52ZXJzaW9uIHx8IG51bGxcblxuICAvLyBDb3B5IGFsbCBmaWxlcyBmcm9tIHRoZSBzb3VyY2UgcGFja2FnZSByZWxlYXNlIHRvIHRoZSBmb3JrZWQgcGFja2FnZSByZWxlYXNlXG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBzb3VyY2VGaWxlcykge1xuICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGZvcmtlZFBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGZpbGVfcGF0aDogc291cmNlRmlsZS5maWxlX3BhdGgsXG4gICAgICBjb250ZW50X3RleHQ6IHNvdXJjZUZpbGUuY29udGVudF90ZXh0LFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHBhY2thZ2U6IHB1YmxpY01hcFBhY2thZ2UoZm9ya2VkUGFja2FnZSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2U6IHBhY2thZ2VTY2hlbWFcbiAgICAgIC5leHRlbmQoe1xuICAgICAgICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBuYW1lIH0gPSByZXEuY29tbW9uUGFyYW1zXG4gIGNvbnN0IGF1dGggPSBcImF1dGhcIiBpbiBjdHggJiYgY3R4LmF1dGggPyBjdHguYXV0aCA6IG51bGxcblxuICBjb25zdCBmb3VuZFBhY2thZ2UgPVxuICAgIChwYWNrYWdlX2lkICYmIGN0eC5kYi5nZXRQYWNrYWdlQnlJZChwYWNrYWdlX2lkKSkgfHxcbiAgICBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBuYW1lKVxuXG4gIGlmICghZm91bmRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBQYWNrYWdlIG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShyZXEuY29tbW9uUGFyYW1zKX0pYCxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlOiB7XG4gICAgICAuLi5wdWJsaWNNYXBQYWNrYWdlKGZvdW5kUGFja2FnZSksXG4gICAgICBpc19zdGFycmVkOiBhdXRoXG4gICAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoYXV0aC5hY2NvdW50X2lkLCBmb3VuZFBhY2thZ2UucGFja2FnZV9pZClcbiAgICAgICAgOiBmYWxzZSxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc193cml0YWJsZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZXM6IHouYXJyYXkocGFja2FnZVNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgY3JlYXRvcl9hY2NvdW50X2lkLCBvd25lcl9naXRodWJfdXNlcm5hbWUsIG5hbWUsIGlzX3dyaXRhYmxlIH0gPVxuICAgIHJlcS5jb21tb25QYXJhbXNcblxuICBjb25zdCBhdXRoID0gXCJhdXRoXCIgaW4gY3R4ICYmIGN0eC5hdXRoID8gY3R4LmF1dGggOiBudWxsXG5cbiAgaWYgKCFhdXRoICYmICFpc193cml0YWJsZSAmJiAhY3JlYXRvcl9hY2NvdW50X2lkICYmICFvd25lcl9naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3JlcXVlc3RcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IG11c3QgcHJvdmlkZSBzb21lIGZpbHRlcmluZyBwYXJhbWV0ZXJzIG9yIGJlIGxvZ2dlZCBpblwiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgcGFja2FnZXMgPSBjdHguZGIucGFja2FnZXNcblxuICAvLyBBcHBseSBmaWx0ZXJzXG4gIGlmIChjcmVhdG9yX2FjY291bnRfaWQpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PiBwLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3JlYXRvcl9hY2NvdW50X2lkLFxuICAgIClcbiAgfVxuICBpZiAob3duZXJfZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocCkgPT4gcC5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IG93bmVyX2dpdGh1Yl91c2VybmFtZSxcbiAgICApXG4gIH1cbiAgaWYgKG5hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcigocCkgPT4gcC5uYW1lID09PSBuYW1lKVxuICB9XG5cbiAgaWYgKGlzX3dyaXRhYmxlICYmIGF1dGgpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcigocCkgPT4gcC5vd25lcl9vcmdfaWQgPT09IGF1dGgucGVyc29uYWxfb3JnX2lkKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlczogcGFja2FnZXMubWFwKChwKSA9PiAoe1xuICAgICAgLi4ucCxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHAubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBudWxsLFxuICAgIH0pKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcih6Lm9iamVjdCh7IG5hbWU6IHouc3RyaW5nKCkgfSkpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCBwYWNrYWdlSWQ6IHN0cmluZ1xuXG4gIC8vIEdldCBwYWNrYWdlIElEIGVpdGhlciBkaXJlY3RseSBvciBieSBuYW1lXG4gIGlmIChcInBhY2thZ2VfaWRcIiBpbiByZXEuanNvbkJvZHkpIHtcbiAgICBjb25zdCBib2R5ID0gcmVxLmpzb25Cb2R5XG4gICAgcGFja2FnZUlkID0gYm9keS5wYWNrYWdlX2lkXG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgbmFtZSBpcyBwcm92aWRlZCwgbG9vayB1cCB0aGUgcGFja2FnZV9pZFxuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBjb25zdCBwYWNrYWdlRGF0YSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5uYW1lID09PSBib2R5Lm5hbWUpXG5cbiAgICBpZiAoIXBhY2thZ2VEYXRhKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcGFja2FnZUlkID0gcGFja2FnZURhdGEucGFja2FnZV9pZFxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgcGFja2FnZSBleGlzdHMgKGV4dHJhIGNoZWNrIGZvciBJRC1iYXNlZCBsb29rdXApXG4gIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZClcblxuICBpZiAoIXBrZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGFscmVhZHkgc3RhcnJlZFxuICBjb25zdCBleGlzdGluZyA9IGN0eC5kYi5hY2NvdW50UGFja2FnZXMuZmluZChcbiAgICAoYXApID0+XG4gICAgICBhcC5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCxcbiAgKVxuXG4gIGlmICghZXhpc3Rpbmc/LmlzX3N0YXJyZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJub3Rfc3RhcnJlZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgaGF2ZSBub3Qgc3RhcnJlZCB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICBwa2cuc3Rhcl9jb3VudCA9IE1hdGgubWF4KDAsIChwa2cuc3Rhcl9jb3VudCB8fCAwKSAtIDEpXG5cbiAgLy8gUmVtb3ZlIHN0YXIgYnkgdXBkYXRpbmcgaXNfc3RhcnJlZCB0byBmYWxzZVxuICBleGlzdGluZy5pc19zdGFycmVkID0gZmFsc2VcbiAgZXhpc3RpbmcudXBkYXRlZF9hdCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgICAgbmFtZTogelxuICAgICAgICAuc3RyaW5nKClcbiAgICAgICAgLnJlZ2V4KFxuICAgICAgICAgIC9eW0BhLXpBLVowLTktX1xcL10rJC8sXG4gICAgICAgICAgXCJQYWNrYWdlIG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCB1bmRlcnNjb3JlcywgYW5kIGZvcndhcmQgc2xhc2hlc1wiLFxuICAgICAgICApXG4gICAgICAgIC50cmFuc2Zvcm0oKG5hbWUpID0+IG5hbWUucmVwbGFjZSgvXkAvLCBcIlwiKSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgd2Vic2l0ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnRyYW5zZm9ybSgoZGF0YSkgPT4gKHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBpc191bmxpc3RlZDogZGF0YS5pc19wcml2YXRlID8gdHJ1ZSA6IGRhdGEuaXNfdW5saXN0ZWQsXG4gICAgfSkpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBuYW1lLCBkZXNjcmlwdGlvbiwgd2Vic2l0ZSwgaXNfcHJpdmF0ZSwgaXNfdW5saXN0ZWQgfSA9XG4gICAgcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuXG4gIC8vIENoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoZSBwYWNrYWdlXG4gIGlmIChleGlzdGluZ1BhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHBhY2thZ2UgbmFtZSBpZiBuYW1lIGlzIGJlaW5nIHVwZGF0ZWRcbiAgaWYgKG5hbWUpIHtcbiAgICBjb25zdCBuZXdGdWxsTmFtZSA9IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtuYW1lfWBcbiAgICBjb25zdCBkdXBsaWNhdGVQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocCkgPT4gcC5uYW1lID09PSBuZXdGdWxsTmFtZSAmJiBwLnBhY2thZ2VfaWQgIT09IHBhY2thZ2VfaWQsXG4gICAgKVxuICAgIGlmIChkdXBsaWNhdGVQYWNrYWdlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgICAgbWVzc2FnZTogXCJBIHBhY2thZ2Ugd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZFBhY2thZ2UgPSBjdHguZGIudXBkYXRlUGFja2FnZShwYWNrYWdlX2lkLCB7XG4gICAgbmFtZTogbmFtZSA/IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtuYW1lfWAgOiBleGlzdGluZ1BhY2thZ2UubmFtZSxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gZXhpc3RpbmdQYWNrYWdlLmRlc2NyaXB0aW9uLFxuICAgIHdlYnNpdGU6IHdlYnNpdGUgPz8gZXhpc3RpbmdQYWNrYWdlLndlYnNpdGUsXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSA/PyBleGlzdGluZ1BhY2thZ2UuaXNfcHJpdmF0ZSxcbiAgICBpc19wdWJsaWM6XG4gICAgICBpc19wcml2YXRlICE9PSB1bmRlZmluZWQgPyAhaXNfcHJpdmF0ZSA6IGV4aXN0aW5nUGFja2FnZS5pc19wdWJsaWMsXG4gICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkID8/IGV4aXN0aW5nUGFja2FnZS5pc191bmxpc3RlZCxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH0pXG5cbiAgaWYgKCF1cGRhdGVkUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVwZGF0ZV9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIHVwZGF0ZSBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZTogdXBkYXRlZFBhY2thZ2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIENoZWNrIGlmIHNuaXBwZXQgZXhpc3RzIChhcyBhIHBhY2thZ2UpXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgKVxuXG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGFscmVhZHkgc3RhcnJlZFxuICBjb25zdCBleGlzdGluZyA9IGN0eC5kYi5hY2NvdW50UGFja2FnZXMuZmluZChcbiAgICAoYXApID0+XG4gICAgICBhcC5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmIGFwLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQsXG4gIClcblxuICBpZiAoZXhpc3Rpbmc/LmlzX3N0YXJyZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhbHJlYWR5X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBzdGFycmVkIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHNuaXBwZXQuc3Rhcl9jb3VudCA9IChzbmlwcGV0LnN0YXJfY291bnQgfHwgMCkgKyAxXG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgLy8gSWYgcmVjb3JkIGV4aXN0cyBidXQgaXNfc3RhcnJlZCBpcyBmYWxzZSwgdXBkYXRlIHRvIGlzX3N0YXJyZWQ9dHJ1ZVxuICAgIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSB0cnVlXG4gICAgZXhpc3RpbmcudXBkYXRlZF9hdCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICB9IGVsc2Uge1xuICAgIC8vIEFkZCBzdGFyIGJ5IGNyZWF0aW5nIGEgbmV3IGFjY291bnRfcGFja2FnZSByZWNvcmRcbiAgICBjdHguZGIuYWRkQWNjb3VudFBhY2thZ2Uoe1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHNuaXBwZXRfaWQsXG4gICAgICBpc19zdGFycmVkOiB0cnVlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb2RlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGlzX3B1YmxpYzogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCB7XG4gICAgdW5zY29wZWRfbmFtZSxcbiAgICBjb2RlID0gXCJcIixcbiAgICBzbmlwcGV0X3R5cGUsXG4gICAgZGVzY3JpcHRpb24gPSBcIlwiLFxuICAgIGNvbXBpbGVkX2pzLFxuICAgIGNpcmN1aXRfanNvbixcbiAgICBkdHMsXG4gICAgaXNfcHJpdmF0ZSxcbiAgICBpc19wdWJsaWMsXG4gICAgaXNfdW5saXN0ZWQsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpXG4gIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgaWYgKCF1bnNjb3BlZF9uYW1lKSB7XG4gICAgLy8gQ291bnQgc25pcHBldHMgb2YgdGhpcyB0eXBlIGZvciB0aGlzIHVzZXJcbiAgICBjb25zdCB1c2VyU25pcHBldHMgPSBjdHguZGIucGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+XG4gICAgICAgIHAub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUgJiZcbiAgICAgICAgcC5pc19zbmlwcGV0ID09PSB0cnVlICYmXG4gICAgICAgICgocC5pc19ib2FyZCAmJiBzbmlwcGV0X3R5cGUgPT09IFwiYm9hcmRcIikgfHxcbiAgICAgICAgICAocC5pc19wYWNrYWdlICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIpIHx8XG4gICAgICAgICAgKHAuaXNfbW9kZWwgJiYgc25pcHBldF90eXBlID09PSBcIm1vZGVsXCIpIHx8XG4gICAgICAgICAgKHAuaXNfZm9vdHByaW50ICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJmb290cHJpbnRcIikpLFxuICAgIClcbiAgICB1bnNjb3BlZF9uYW1lID0gYHVudGl0bGVkLSR7c25pcHBldF90eXBlfS0ke3VzZXJTbmlwcGV0cy5sZW5ndGggKyAxfWBcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwa2cpID0+XG4gICAgICBwa2cudW5zY29wZWRfbmFtZSA9PT0gdW5zY29wZWRfbmFtZSAmJlxuICAgICAgcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBmb3JrZWQgdGhpcyBzbmlwcGV0IGluIHlvdXIgYWNjb3VudC5cIixcbiAgICB9KVxuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZGlyZWN0bHkgKHdoaWNoIHdpbGwgc2VydmUgYXMgb3VyIHNuaXBwZXQpXG4gICAgY29uc3QgbmV3UGFja2FnZSA9IGN0eC5kYi5hZGRQYWNrYWdlKHtcbiAgICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgbmFtZTogYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke3Vuc2NvcGVkX25hbWV9YCxcbiAgICAgIHVuc2NvcGVkX25hbWU6IHVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHN0YXJfY291bnQ6IDAsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgYWlfZGVzY3JpcHRpb246IG51bGwsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXRfdHlwZSA9PT0gXCJib2FyZFwiLFxuICAgICAgaXNfcGFja2FnZTogc25pcHBldF90eXBlID09PSBcInBhY2thZ2VcIixcbiAgICAgIGlzX21vZGVsOiBzbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldF90eXBlID09PSBcImZvb3RwcmludFwiLFxuICAgICAgc25pcHBldF90eXBlOiBzbmlwcGV0X3R5cGUsXG4gICAgICBpc19wcml2YXRlOiBpc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBpc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgfSlcblxuICAgIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAgIHBhY2thZ2VfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9KVxuXG4gICAgY3R4LmRiLnVwZGF0ZVBhY2thZ2UobmV3UGFja2FnZS5wYWNrYWdlX2lkLCB7XG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgfSlcblxuICAgIC8vIEFkZCBwYWNrYWdlIGZpbGVzXG4gICAgLy8gQWRkIGluZGV4LnRzeCBmaWxlIHdpdGggdGhlIGNvZGUgY29udGVudFxuICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGZpbGVfcGF0aDogXCJpbmRleC50c3hcIixcbiAgICAgIGNvbnRlbnRfdGV4dDogY29kZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgIH0pXG5cbiAgICAvLyBBZGQgRFRTIGZpbGUgaWYgcHJvdmlkZWRcbiAgICBpZiAoZHRzKSB7XG4gICAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBkdHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY29tcGlsZWQgSlMgaWYgcHJvdmlkZWRcbiAgICBpZiAoY29tcGlsZWRfanMpIHtcbiAgICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBjb21waWxlZF9qcyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICBpZiAoY2lyY3VpdF9qc29uKSB7XG4gICAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgICAgICBjb250ZW50X3RleHQ6IEpTT04uc3RyaW5naWZ5KGNpcmN1aXRfanNvbiksXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIHNuaXBwZXQgcmVzcG9uc2Ugb2JqZWN0XG4gICAgY29uc3Qgc25pcHBldFJlc3BvbnNlID0ge1xuICAgICAgc25pcHBldF9pZDogbmV3UGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBuYW1lOiBuZXdQYWNrYWdlLm5hbWUsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBuZXdQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBvd25lcl9uYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBjb2RlLFxuICAgICAgZHRzLFxuICAgICAgY29tcGlsZWRfanMsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldF90eXBlLFxuICAgICAgY2lyY3VpdF9qc29uOiBjaXJjdWl0X2pzb24gfHwgW10sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IGlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHNuaXBwZXQ6IHNuaXBwZXRSZXNwb25zZSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfY3JlYXRpb25fZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBgRmFpbGVkIHRvIGNyZWF0ZSBzbmlwcGV0OiAke2Vycm9yfWAsXG4gICAgfSlcbiAgfVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBzbmlwcGV0SW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChzKSA9PiBzLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQsXG4gIClcblxuICBpZiAoc25pcHBldEluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIucGFja2FnZXNbc25pcHBldEluZGV4XVxuXG4gIGlmIChzbmlwcGV0LmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICBjdHguZGIucGFja2FnZXMuc3BsaWNlKHNuaXBwZXRJbmRleCwgMSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBqc2RlbGl2cl9yZXNvbHZlOiB6XG4gICAgICAuZW51bShbXCJ0cnVlXCIsIFwiZmFsc2VcIl0pXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLnRyYW5zZm9ybSgodikgPT4gdiA9PT0gXCJ0cnVlXCIpLFxuICAgIGpzZGVsaXZyX3BhdGg6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBqc2RlbGl2cl9wYXRoLCBqc2RlbGl2cl9yZXNvbHZlIH0gPSByZXEucXVlcnlcblxuICAvLyBQYXJzZSB0aGUgZmlsZSBwYXRoXG4gIGNvbnN0IFtvd25lciwgcGFja2FnZVdpdGhWZXJzaW9uLCAuLi5yZXN0XSA9IGpzZGVsaXZyX3BhdGguc3BsaXQoXCIvXCIpXG4gIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlV2l0aFZlcnNpb24uc3BsaXQoXCJAXCIpXG4gIGNvbnN0IGZpbGVOYW1lID0gcmVzdC5qb2luKFwiL1wiKVxuXG4gIC8vIEZpbmQgdGhlIHNuaXBwZXRcbiAgY29uc3QgX3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocykgPT4gcy5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IG93bmVyICYmIHMudW5zY29wZWRfbmFtZSA9PT0gcGFja2FnZU5hbWUsXG4gIClcblxuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBfcGFja2FnZT8ucGFja2FnZV9pZCxcbiAgKVxuXG4gIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2U/LnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuXG4gIGlmICghX3BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWZpbGVOYW1lICYmICFqc2RlbGl2cl9yZXNvbHZlKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGxhdGVzdDogXCIwLjAuMVwiLFxuICAgICAgICB9LFxuICAgICAgICB2ZXJzaW9uczogW1wiMC4wLjFcIl0sXG4gICAgICB9KSxcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIH0sXG4gICAgKVxuICB9IGVsc2UgaWYgKCFmaWxlTmFtZSAmJiBqc2RlbGl2cl9yZXNvbHZlKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgfSksXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIElmIG5vIGZpbGVOYW1lIGlzIHByb3ZpZGVkLCByZXR1cm4gdGhlIGRpcmVjdG9yeSBsaXN0aW5nXG4gIGlmICghZmlsZU5hbWUgfHwgZmlsZU5hbWUgPT09IFwiZmxhdFwiKSB7XG4gICAgY29uc3QgZmlsZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICBuYW1lOiBcImluZGV4LnRzXCIsXG4gICAgICAgIGhhc2g6IFwicGxhY2Vob2xkZXJfaGFzaFwiLFxuICAgICAgICB0aW1lOiBwYWNrYWdlUmVsZWFzZT8uY3JlYXRlZF9hdCxcbiAgICAgICAgc2l6ZTogcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIpPy5jb250ZW50X3RleHRcbiAgICAgICAgICA/Lmxlbmd0aCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICBuYW1lOiBcImluZGV4LmQudHNcIixcbiAgICAgICAgaGFzaDogXCJwbGFjZWhvbGRlcl9oYXNoXCIsXG4gICAgICAgIHRpbWU6IHBhY2thZ2VSZWxlYXNlPy5jcmVhdGVkX2F0LFxuICAgICAgICBzaXplOiBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0Py5sZW5ndGgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgbmFtZTogXCJwYWNrYWdlLmpzb25cIixcbiAgICAgICAgaGFzaDogXCJwbGFjZWhvbGRlcl9oYXNoXCIsXG4gICAgICAgIHRpbWU6IHBhY2thZ2VSZWxlYXNlPy5jcmVhdGVkX2F0LFxuICAgICAgICBzaXplOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgbmFtZTogYEB0c2NpLyR7b3duZXJ9LiR7cGFja2FnZU5hbWV9YCxcbiAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgICAgICBtYWluOiBcImluZGV4LnRzXCIsXG4gICAgICAgICAgdHlwZXM6IFwiaW5kZXguZC50c1wiLFxuICAgICAgICB9KS5sZW5ndGgsXG4gICAgICB9LFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgZGVmYXVsdDogXCIvaW5kZXgudHNcIixcbiAgICAgIGZpbGVzOlxuICAgICAgICBmaWxlTmFtZSA9PT0gXCJmbGF0XCJcbiAgICAgICAgICA/IGZpbGVzLm1hcCgoZikgPT4gKHtcbiAgICAgICAgICAgICAgbmFtZTogYC8ke2YubmFtZX1gLFxuICAgICAgICAgICAgICBoYXNoOiBmLmhhc2gsXG4gICAgICAgICAgICAgIHRpbWU6IGYudGltZSxcbiAgICAgICAgICAgICAgc2l6ZTogZi5zaXplLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImRpcmVjdG9yeVwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiLlwiLFxuICAgICAgICAgICAgICAgIGZpbGVzOiBmaWxlcyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShyZXNwb25zZSwgbnVsbCwgMiksIHtcbiAgICAgIHN0YXR1czogMjAwLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgIH0pXG4gIH1cblxuICAvLyBIYW5kbGUgZmlsZSBkb3dubG9hZHNcbiAgbGV0IGNvbnRlbnQ6IHN0cmluZ1xuICBzd2l0Y2ggKGZpbGVOYW1lKSB7XG4gICAgY2FzZSBcImluZGV4LnRzXCI6XG4gICAgICBjb250ZW50ID1cbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiKT8uY29udGVudF90ZXh0IHx8XG4gICAgICAgIFwiXCJcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBcImluZGV4LmQudHNcIjpcbiAgICAgIGNvbnRlbnQgPVxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCJcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBcInBhY2thZ2UuanNvblwiOlxuICAgICAgY29udGVudCA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogYEB0c2NpLyR7b3duZXJ9LiR7cGFja2FnZU5hbWV9YCxcbiAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgICAgICBtYWluOiBcImluZGV4LnRzXCIsXG4gICAgICAgICAgdHlwZXM6IFwiaW5kZXguZC50c1wiLFxuICAgICAgICB9LFxuICAgICAgICBudWxsLFxuICAgICAgICAyLFxuICAgICAgKVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJmaWxlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlJlcXVlc3RlZCBmaWxlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UoY29udGVudCwge1xuICAgIHN0YXR1czogMjAwLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L3BsYWluXCIgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmZXRjaEVhc3lFREFDb21wb25lbnQsIGNvbnZlcnRSYXdFYXN5RWRhVG9UcyB9IGZyb20gXCJlYXN5ZWRhXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIGpsY3BjYl9wYXJ0X251bWJlcjogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgamxjcGNiX3BhcnRfbnVtYmVyIH0gPSByZXEuanNvbkJvZHlcblxuICB0cnkge1xuICAgIC8vIEZldGNoIHRoZSBFYXN5RURBIGNvbXBvbmVudCBkYXRhXG4gICAgY29uc3QgcmF3RWFzeUpzb24gPSBhd2FpdCBmZXRjaEVhc3lFREFDb21wb25lbnQoamxjcGNiX3BhcnRfbnVtYmVyKS5jYXRjaChcbiAgICAgIChlKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgaW4gZmV0Y2hFYXN5RURBQ29tcG9uZW50OiAke2UudG9TdHJpbmcoKX1gKVxuICAgICAgfSxcbiAgICApXG5cbiAgICAvLyBDb252ZXJ0IHRvIFR5cGVTY3JpcHQgUmVhY3QgY29tcG9uZW50XG4gICAgY29uc3QgdHN4Q29tcG9uZW50ID0gYXdhaXQgY29udmVydFJhd0Vhc3lFZGFUb1RzKHJhd0Vhc3lKc29uKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBpbiBjb252ZXJ0UmF3RWFzeUVkYVRvVHMgJHtlLnRvU3RyaW5nKCl9YClcbiAgICB9KVxuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHNuaXBwZXRcbiAgICBjb25zdCBuZXdTbmlwcGV0ID0ge1xuICAgICAgc25pcHBldF9pZDogYHNuaXBwZXRfJHtjdHguZGIuaWRDb3VudGVyICsgMX1gLFxuICAgICAgbmFtZTogYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke2psY3BjYl9wYXJ0X251bWJlcn1gLFxuICAgICAgdW5zY29wZWRfbmFtZTogamxjcGNiX3BhcnRfbnVtYmVyLFxuICAgICAgb3duZXJfbmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgY29kZTogdHN4Q29tcG9uZW50LFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBgR2VuZXJhdGVkIGZyb20gSkxDUENCIHBhcnQgbnVtYmVyICR7amxjcGNiX3BhcnRfbnVtYmVyfWAsXG4gICAgfVxuXG4gICAgY3R4LmRiLmFkZFNuaXBwZXQobmV3U25pcHBldCBhcyBhbnkpXG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgc25pcHBldDogbmV3U25pcHBldCBhcyBhbnksXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImpsY3BjYl9nZW5lcmF0aW9uX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogYEZhaWxlZCB0byBnZW5lcmF0ZSBzbmlwcGV0IGZyb20gSkxDUENCIHBhcnQ6ICR7ZXJyb3IubWVzc2FnZX1cXG5cXG4ke2Vycm9yLnN0YWNrfWAsXG4gICAgfSlcbiAgfVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxufSBmcm9tIFwiY2lyY3VpdC10by1zdmdcIlxuaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldElkOiB6LnN0cmluZygpLFxuICAgIGltYWdlX29mOiB6LmVudW0oW1wic2NoZW1hdGljXCIsIFwicGNiXCJdKSxcbiAgICBmb3JtYXQ6IHouZW51bShbXCJzdmdcIl0pLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHN2Zzogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0SWQsIGltYWdlX29mLCBmb3JtYXQgfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldElkKVxuXG4gIC8vIGNoZWNrIGlmIHRoZSBzbmlwcGV0IGV4aXN0c1xuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlzIHZhbGlkXG4gIGlmIChmb3JtYXQgIT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgbWVzc2FnZTogXCJGb3JtYXQgbXVzdCBiZSAnc3ZnJ1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoaW1hZ2Vfb2YgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBjb25zdCBjaXJjdWl0SnNvbiA9IHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W11cbiAgICBjb25zdCBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhjaXJjdWl0SnNvbilcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBzdmcsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChpbWFnZV9vZiA9PT0gXCJwY2JcIikge1xuICAgIGNvbnN0IHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc3ZnLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgIGVycm9yX2NvZGU6IFwiSU5WQUxJRF9SRVFVRVNUX1RZUEVcIixcbiAgICBtZXNzYWdlOiBcIlJlcXVlc3QgdHlwZSBtdXN0IGJlIGVpdGhlciAnc2NoZW1hdGljJyBvciAncGNiJ1wiLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG93bmVyX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkLCBuYW1lLCBvd25lcl9uYW1lLCB1bnNjb3BlZF9uYW1lIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgYnkgc25pcHBldF9pZFxuICBpZiAoc25pcHBldF9pZCkge1xuICAgIGNvbnN0IGZvdW5kU25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChzbmlwcGV0X2lkLCBjdHguYXV0aClcbiAgICBpZiAoZm91bmRTbmlwcGV0KSB7XG4gICAgICBpZiAoY3R4LmF1dGgpIHtcbiAgICAgICAgZm91bmRTbmlwcGV0LmlzX3N0YXJyZWQgPSBjdHguZGIuaGFzU3RhcnJlZChcbiAgICAgICAgICBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgICAgIGZvdW5kU25pcHBldC5zbmlwcGV0X2lkLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgc25pcHBldDogZm91bmRTbmlwcGV0LFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBJZiBub3QgZm91bmQgYnkgSUQsIHRyeSB0byBmaW5kIGJ5IG90aGVyIHBhcmFtZXRlcnNcbiAgY29uc3QgZm91bmRQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4ge1xuICAgIGlmICghcGtnLmlzX3NuaXBwZXQpIHJldHVybiBmYWxzZVxuICAgIGlmIChuYW1lICYmIHBrZy5uYW1lLnRvTG93ZXJDYXNlKCkgIT09IG5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKFxuICAgICAgb3duZXJfbmFtZSAmJlxuICAgICAgcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZT8udG9Mb3dlckNhc2UoKSAhPT0gb3duZXJfbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgaWYgKFxuICAgICAgdW5zY29wZWRfbmFtZSAmJlxuICAgICAgcGtnLnVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSAhPT0gdW5zY29wZWRfbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcblxuICBpZiAoIWZvdW5kUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBgU25pcHBldCBub3QgZm91bmQgKHNlYXJjaGVkIHVzaW5nICR7SlNPTi5zdHJpbmdpZnkocmVxLmNvbW1vblBhcmFtcyl9KWAsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENvbnZlcnQgcGFja2FnZSB0byBzbmlwcGV0IGZvcm1hdFxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKGZvdW5kUGFja2FnZS5wYWNrYWdlX2lkKVxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFNuaXBwZXQgbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICBpZiAoY3R4LmF1dGgpIHtcbiAgICBzbmlwcGV0LmlzX3N0YXJyZWQgPSBjdHguZGIuaGFzU3RhcnJlZChcbiAgICAgIGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBzbmlwcGV0LnNuaXBwZXRfaWQsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBBbnlDaXJjdWl0RWxlbWVudCB9IGZyb20gXCJjaXJjdWl0LWpzb25cIlxuaW1wb3J0IHtcbiAgY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyxcbiAgY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxufSBmcm9tIFwiY2lyY3VpdC10by1zdmdcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHJvdXRlUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgYXV0aG9yOiB6LnN0cmluZygpLFxuICAgIHNuaXBwZXRfbmFtZTogei5zdHJpbmcoKSxcbiAgICB0eXBlRm9ybWF0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgcmF3UmVzcG9uc2U6IHRydWUsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBhdXRob3IsIHNuaXBwZXRfbmFtZSwgdHlwZUZvcm1hdCB9ID0gcmVxLnJvdXRlUGFyYW1zXG5cbiAgLy8gR2V0IHRoZSBzbmlwcGV0XG4gIGNvbnN0IG5hbWUgPSBhdXRob3IgKyBcIi9cIiArIHNuaXBwZXRfbmFtZVxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUF1dGhvckFuZE5hbWUoYXV0aG9yLCBuYW1lKVxuXG4gIC8vIElmIHNuaXBwZXQgaXMgbm90IGZvdW5kLCByZXR1cm4gNDA0XG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBmb3JtYXQgaXMgdmFsaWRcbiAgY29uc3QgZm9ybWF0ID0gdHlwZUZvcm1hdC5zcGxpdChcIi5cIilbMV1cbiAgaWYgKGZvcm1hdCAhPT0gXCJzdmdcIikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICBtZXNzYWdlOiBcIkZvcm1hdCBtdXN0IGJlICdzdmcnXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0eXBlIGlzIHZhbGlkXG4gIGNvbnN0IHR5cGUgPSB0eXBlRm9ybWF0LnNwbGl0KFwiLlwiKVswXVxuICBjb25zdCB0eXBlc1ZhbGlkID0gW1wic2NoZW1hdGljXCIsIFwicGNiXCIsIFwiYXNzZW1ibHlcIl1cbiAgaWYgKCF0eXBlc1ZhbGlkLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICBtZXNzYWdlOiBgVHlwZSBtdXN0IGJlICcke3R5cGVzVmFsaWQuam9pbihcIicgb3IgJ1wiKX0nYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gQ29udmVydCBjaXJjdWl0IGpzb24gdG8gc3ZnXG4gIGxldCBzdmc6IHN0cmluZ1xuICBpZiAodHlwZSA9PT0gXCJzY2hlbWF0aWNcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJwY2JcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJhc3NlbWJseVwiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVua25vd25fZXJyb3JcIixcbiAgICAgIG1lc3NhZ2U6IFwiVW5rbm93biBlcnJvclwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHN2Zywge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiaW1hZ2Uvc3ZnK3htbFwiLFxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwXCIsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBuZXdlc3RTbmlwcGV0cyA9IGN0eC5kYi5nZXROZXdlc3RTbmlwcGV0cygyMClcbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHM6IG5ld2VzdFNuaXBwZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEdldCB0cmVuZGluZyBzbmlwcGV0cyBmcm9tIGxhc3QgNyBkYXlzXG4gIGNvbnN0IHNldmVuRGF5c0FnbyA9IG5ldyBEYXRlKClcbiAgc2V2ZW5EYXlzQWdvLnNldERhdGUoc2V2ZW5EYXlzQWdvLmdldERhdGUoKSAtIDcpXG5cbiAgY29uc3QgdHJlbmRpbmdTbmlwcGV0cyA9IGN0eC5kYi5nZXRUcmVuZGluZ1NuaXBwZXRzKFxuICAgIDIwLFxuICAgIHNldmVuRGF5c0Fnby50b0lTT1N0cmluZygpLFxuICApXG4gIHJldHVybiBjdHguanNvbih7IHNuaXBwZXRzOiB0cmVuZGluZ1NuaXBwZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIG93bmVyX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhcnJlZF9ieTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG93bmVyX25hbWUsIHVuc2NvcGVkX25hbWUsIHN0YXJyZWRfYnkgfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICAvLyBHZXQgYWxsIHBhY2thZ2VzIHRoYXQgYXJlIHNuaXBwZXRzXG4gIGxldCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3NuaXBwZXQgPT09IHRydWUpXG5cbiAgLy8gRmlsdGVyIGJ5IG93bmVyX25hbWUgaWYgcHJvdmlkZWRcbiAgaWYgKG93bmVyX25hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IG93bmVyX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH1cblxuICAvLyBGaWx0ZXIgYnkgdW5zY29wZWRfbmFtZSBpZiBwcm92aWRlZFxuICBpZiAodW5zY29wZWRfbmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHBrZykgPT4gcGtnLnVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSA9PT0gdW5zY29wZWRfbmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgIClcbiAgfVxuXG4gIC8vIEZpbHRlciBieSBzdGFycmVkX2J5IGlmIHByb3ZpZGVkXG4gIGlmIChzdGFycmVkX2J5KSB7XG4gICAgLy8gR2V0IHRoZSBhY2NvdW50IElEIGZvciB0aGUgc3RhcnJlZF9ieSB1c2VybmFtZVxuICAgIGNvbnN0IHN0YXJyZWRCeUFjY291bnQgPSBjdHguZGIuYWNjb3VudHMuZmluZChcbiAgICAgIChhY2MpID0+IGFjYy5naXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gc3RhcnJlZF9ieS50b0xvd2VyQ2FzZSgpLFxuICAgIClcbiAgICBpZiAoc3RhcnJlZEJ5QWNjb3VudCkge1xuICAgICAgLy8gRmlsdGVyIHBhY2thZ2VzIHRvIG9ubHkgaW5jbHVkZSB0aG9zZSB0aGF0IGFyZSBzdGFycmVkIGJ5IHRoaXMgYWNjb3VudFxuICAgICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoKHBrZykgPT5cbiAgICAgICAgY3R4LmRiLmhhc1N0YXJyZWQoc3RhcnJlZEJ5QWNjb3VudC5hY2NvdW50X2lkLCBwa2cucGFja2FnZV9pZCksXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHdlIGNhbid0IGZpbmQgdGhlIGFjY291bnQsIHJldHVybiBubyBzbmlwcGV0c1xuICAgICAgcGFja2FnZXMgPSBbXVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNuaXBwZXRzID0gcGFja2FnZXMubWFwKChwa2cpID0+IHtcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5nZXRQYWNrYWdlUmVsZWFzZUJ5SWQoXG4gICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzbmlwcGV0X2lkOiBwa2cucGFja2FnZV9pZCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgbmFtZTogcGtnLm5hbWUsXG4gICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICBzbmlwcGV0X3R5cGU6IHBrZy5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgICBjb2RlOiBcIlwiLFxuICAgICAgICBkdHM6IFwiXCIsXG4gICAgICAgIGNvbXBpbGVkX2pzOiBcIlwiLFxuICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgdXBkYXRlZF9hdDogcGtnLnVwZGF0ZWRfYXQsXG4gICAgICAgIHN0YXJfY291bnQ6IGN0eC5kYi5nZXRTdGFyQ291bnQocGtnLnBhY2thZ2VfaWQpLFxuICAgICAgICBpc19zdGFycmVkOiBjdHguYXV0aFxuICAgICAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoY3R4LmF1dGguYWNjb3VudF9pZCwgcGtnLnBhY2thZ2VfaWQpXG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgdmVyc2lvbjogcGtnLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICAgIGlzX3B1YmxpYzogcGtnLmlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIuZ2V0UGFja2FnZUZpbGVzQnlSZWxlYXNlSWQoXG4gICAgICBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZTogeyBmaWxlX3BhdGg6IHN0cmluZyB9KSA9PlxuICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgIClcbiAgICBjb25zdCBzdGFyQ291bnQgPSBjdHguZGIuZ2V0U3RhckNvdW50KHBrZy5wYWNrYWdlX2lkKVxuICAgIGNvbnN0IGlzU3RhcnJlZCA9IGN0eC5hdXRoXG4gICAgICA/IGN0eC5kYi5oYXNTdGFycmVkKGN0eC5hdXRoLmFjY291bnRfaWQsIHBrZy5wYWNrYWdlX2lkKVxuICAgICAgOiBmYWxzZVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogcGtnLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBkdHM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgICk/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgICk/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IHN0YXJDb3VudCxcbiAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogcGtnLmlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IHBrZy5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0cyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgYWNjb3VudFNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBDaGVjayBpZiBzbmlwcGV0IGV4aXN0c1xuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKHNuaXBwZXRfaWQpXG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIGNoZWNrIGlmIG5vdCBhbHJlYWR5IHN0YXJyZWRcbiAgaWYgKCFjdHguZGIuaGFzU3RhcnJlZChjdHguYXV0aC5hY2NvdW50X2lkLCBzbmlwcGV0X2lkKSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIG5vdCBzdGFycmVkIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBSZW1vdmUgc3RhclxuICBjdHguZGIucmVtb3ZlU3RhcihjdHguYXV0aC5hY2NvdW50X2lkLCBzbmlwcGV0X2lkKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBxOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcSB9ID0gcmVxLnF1ZXJ5XG4gIGNvbnN0IHNuaXBwZXRzID0gY3R4LmRiLnNlYXJjaFNuaXBwZXRzKHEpXG4gIHJldHVybiBjdHguanNvbih7IHNuaXBwZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgICBjb2RlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZHRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIGNpcmN1aXRfanNvbjogei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKS5vcHRpb25hbCgpLFxuICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHNuaXBwZXRfaWQsXG4gICAgY29kZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIGR0cyxcbiAgICBjb21waWxlZF9qcyxcbiAgICBjaXJjdWl0X2pzb24sXG4gICAgc25pcHBldF90eXBlLFxuICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQsXG4gICAgaXNfcHJpdmF0ZSxcbiAgICBpc191bmxpc3RlZCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHBhY2thZ2VJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHMpID0+IHMucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCxcbiAgKVxuXG4gIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgX3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocikgPT4gci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcbiAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgKGYpID0+IGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZT8ucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG4gIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gIClcbiAgY29uc3QgZHRzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gIGNvbnN0IGNvbXBpbGVkSnNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gIClcbiAgY29uc3QgbWFudWFsRWRpdHNKc29uRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJtYW51YWwtZWRpdHMuanNvblwiLFxuICApXG4gIGNvbnN0IGNpcmN1aXRKc29uRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgKVxuXG4gIGlmIChfcGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgIT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZFNuaXBwZXQgPSBjdHguZGIudXBkYXRlU25pcHBldChzbmlwcGV0X2lkLCB7XG4gICAgY29kZTogY29kZSA/PyBjb2RlRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IF9wYWNrYWdlLmRlc2NyaXB0aW9uID8/IFwiXCIsXG4gICAgdW5zY29wZWRfbmFtZTogdW5zY29wZWRfbmFtZSA/PyBfcGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgIG5hbWU6IHVuc2NvcGVkX25hbWVcbiAgICAgID8gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke3Vuc2NvcGVkX25hbWV9YFxuICAgICAgOiBfcGFja2FnZS5uYW1lLFxuICAgIGR0czogZHRzID8/IGR0c0ZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiLFxuICAgIGNvbXBpbGVkX2pzOiBjb21waWxlZF9qcyA/PyBjb21waWxlZEpzRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDpcbiAgICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnRcbiAgICAgICAgOiAobWFudWFsRWRpdHNKc29uRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIpLFxuICAgIGNpcmN1aXRfanNvbjpcbiAgICAgIGNpcmN1aXRfanNvbiA/P1xuICAgICAgKGNpcmN1aXRKc29uRmlsZT8uY29udGVudF90ZXh0XG4gICAgICAgID8gSlNPTi5wYXJzZShjaXJjdWl0SnNvbkZpbGUuY29udGVudF90ZXh0KVxuICAgICAgICA6IFtdKSxcbiAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXRfdHlwZSA/PyBfcGFja2FnZS5zbmlwcGV0X3R5cGUsXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSA/PyBfcGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCA/PyBfcGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH0pXG5cbiAgaWYgKCF1cGRhdGVkU25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVwZGF0ZV9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIHVwZGF0ZSBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldDogdXBkYXRlZFNuaXBwZXQsXG4gIH0pXG59KVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLFNBQVEsdUJBQXNCO0FBQzlCLFNBQVMsb0NBQW9DOzs7QUNEN0MsU0FBUyw0QkFBNEI7OztBQ0NyQyxTQUFTLGFBQWE7QUFDdEIsU0FBUyxtQkFBbUI7QUFFNUIsU0FBUyxlQUFlOzs7QUNKeEIsU0FBUyxTQUFTO0FBRVgsSUFBTSxjQUFjLEVBQ3hCLE9BQU87QUFBQSxFQUNOLFlBQVksRUFBRSxPQUFPO0FBQUEsRUFDckIsU0FBUyxFQUFFLE9BQU87QUFDcEIsQ0FBQyxFQUNBLFlBQVk7QUFFUixJQUFNLHNCQUFzQixFQUFFLE9BQU87QUFBQSxFQUMxQyxPQUFPO0FBQ1QsQ0FBQztBQUVNLElBQU0sZ0JBQWdCLEVBQUUsT0FB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LFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixrQkFBa0I7QUFBQSxRQUNsQixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsT0FBTztBQUFBLFFBQ1AsUUFBUTtBQUFBLFFBQ1IsT0FBTztBQUFBLFFBQ1AsVUFBVTtB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QUFBLElBQ25DLGNBQWM7QUFBQSxJQUNkLGFBQ0U7QUFBQSxJQUNGLGNBQWM7QUFBQSxNQUNaO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEs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QSxFQUFRLG1CQUFvQ0E7QUFBQSxFQUFRLG9CQUFxQztBQUFBLEVBQVEsNkJBQThDQztBQUFBLEVBQVEsK0JBQWdEO0FBQUEsRUFBUSwwQkFBMkNEO0FBQUEsRUFBUSwyQkFBNENFO0FBQUEsRUFBUSxnQ0FBaUREO0FBQUEsRUFBUSw2QkFBOENEO0FBQUEsRUFBUSw4QkFBK0NFO0FBQUEsRUFBUSxnQ0FBaURDO0FBQUEsRUFBUSwwQkFBMkM7QUFBQSxFQUFRLHdCQUF5Q0Y7QUFBQSxFQUFRLHdCQUF5QztBQUFBLEVBQVEsc0JBQXVDO0FBQUEsRUFBUSxxQkFBc0NEO0FBQUEsRUFBUSxzQkFBdUNFO0FBQUEsRUFBUSw2QkFBOEM7QUFBQSxFQUFRLHdCQUF5Q0M7QUFBQSxFQUFRLDBCQUEyQ0M7QUFBQSxFQUFRLHdCQUF5Q0g7QUFBQSxFQUFRLHdCQUF5Q0k7QUFBQSxFQUFRLDBCQUEyQ0M7QUFBQSxFQUFRLHNDQUF1RDtBQUFBLEVBQVEsMkJBQTRDO0FBQUEsRUFBUSxxQkFBc0NOO0FBQUEsRUFBUSw2REFBOEU7QUFBQSxFQUFRLDZCQUE4QztBQUFBLEVBQVEsK0JBQWdEO0FBQUEsRUFBUSxzQkFBdUNFO0FBQUEsRUFBUSw2QkFBOENLO0FBQUEsRUFBUSx3QkFBeUM7QUFBQSxFQUFRLHdCQUF5Q0o7QUFDbDBFO0FBRUEsSUFBTSxhQUFhO0FBQUEsRUFDakIsY0FBYyxnQkFBZ0IsT0FBTyxLQUFLLG9CQUFvQixDQUFDO0FBQUEsRUFDL0Q7QUFBQSxFQUNBLGFBQWEsT0FBTyxLQUFLLFlBQVksNkJBQTZCLFlBQVksT0FBTyxFQUFFLEdBQUc7QUFDNUY7QUFFQSxJQUFPLGdCQUFROyIsCiAgIm5hbWVzIjogWyJzZWVkIiwgInN0YXRlIiwgInBhY2thZ2VSZWxlYXNlIiwgInBhY2thZ2VGaWxlcyIsICJwa2ciLCAia2xldXIiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJyb3V0ZVNwZWMiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAicmVsZWFzZSIsICJ6IiwgInBrZyIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAicGtnIiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgImFkZF9zdGFyX2RlZmF1bHQiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAiZG93bmxvYWRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgImNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnIiwgImNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnIiwgInoiLCAiY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9QY2JTdmciLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAicmVtb3ZlX3N0YXJfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ1cGRhdGVfZGVmYXVsdCIsICJ6IiwgImFueXJvdXRlX2RlZmF1bHQiLCAiZ2V0X2RlZmF1bHQiLCAiY3JlYXRlX2RlZmF1bHQiLCAibGlzdF9kZWZhdWx0IiwgInVwZGF0ZV9kZWZhdWx0IiwgImFkZF9zdGFyX2RlZmF1bHQiLCAiZGVsZXRlX2RlZmF1bHQiLCAiZG93bmxvYWRfZGVmYXVsdCIsICJyZW1vdmVfc3Rhcl9kZWZhdWx0Il0KfQo=
|
|
6125
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvYXV0b2xvYWQtZGV2LXBhY2thZ2VzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtZGIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1jdHgtZXJyb3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1lcnJvci1oYW5kbGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXJlcXVlc3QtbG9nZ2luZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2RiLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9vcmRlci1zdGVwcy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3NlZWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXRfYWNjb3VudF9iYWxhbmNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkvWy4uLmFueXJvdXRlXS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZV9vcl91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2V0LXBhY2thZ2UtZmlsZS1pZC1mcm9tLWZpbGUtZGVzY3JpcHRvci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9hZGRfc3Rhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2VuZXJhdGVfZnJvbV9qbGNwY2IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9uZXdlc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvc2VhcmNoLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2dldFJvdXRlTWF0Y2hlcn0gZnJvbSBcIm5leHQtcm91dGUtbWF0Y2hlclwiXG5pbXBvcnQgeyBtYWtlUmVxdWVzdEFnYWluc3RXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuXG5pbXBvcnQgKiBhcyBub3ltc3VzbG5xenN3cmpnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50c1wiXG5pbXBvcnQgKiBhcyBic3F4ZXhzZXh3eGJmbXRqIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9tb3ZlX29yZGVyc19mb3J3YXJkLnRzXCJcbmltcG9ydCAqIGFzIHd3Z2VqcHRjaGh3Y2NxeHAgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3NlZWQudHNcIlxuaW1wb3J0ICogYXMgeG9vcGlyb2d4enRtZ2dtYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZS50c1wiXG5pbXBvcnQgKiBhcyBzY2ViYndjZ2ZsdnZkdG5tIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXQudHNcIlxuaW1wb3J0ICogYXMgbHJqY3BvZnRqcGFsdXhwaSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGF3eXJyd3NtdHFjcWZncGQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpLnRzXCJcbmltcG9ydCAqIGFzIHp2eXplY2x3ZG55cXh2emIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpL1suLi5hbnlyb3V0ZV0udHNcIlxuaW1wb3J0ICogYXMgdGx6amdic2Zyd3Jub2ljciBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXS50c1wiXG5pbXBvcnQgKiBhcyB0bnZhcXptc21yYmxxaGZqIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9oZWFsdGgudHNcIlxuaW1wb3J0ICogYXMgb3loaXdpYmJra25pcWN3ZCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvaW50ZXJuYWwvc2Vzc2lvbnMvY3JlYXRlX3dpdGhvdXRfYXV0aC50c1wiXG5pbXBvcnQgKiBhcyBiamJ5am12bHZtaHpodXRkIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgcHFibWR1cnhkdWpwaHNyYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfZmlsZXMvdXBsb2FkLnRzXCJcbmltcG9ydCAqIGFzIG9vZ2ttb2N3d2JmamZvZ3MgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgcHBoZnZyYmJpa3NmaHZ4cSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBodGV6cnBmY3FpdmNwanFjIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyB2bWZocWlzb3dna2Jtbm1pIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZV9vcl91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgY3ZpdndmY3hpemttZGJpYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgd2hwZHlremNvb3VhcXFiZSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgdHNhZ3F3Zmlia3pwc3pzbyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9kb3dubG9hZC50c1wiXG5pbXBvcnQgKiBhcyBzanZ2anFvdnltcmhjanpwIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBzaWtsYnlhZXlhamhwaWp3IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgZGJ0eWJzbGNkdmtvZWpqcCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgdXFmeHl4amppY292bXV5byBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgb2t0aHNmenBpbXZkcXR1YiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIGRpZXZ3eXZhZWxqdHdqbGggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIHF3a2l4aGJtc3dlYXZkZGIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2FkZF9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIHdvZW12ZXR0ZXljZmZmdXggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyBlcHpkZnhkcXllbGJ2emh0IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgZXp2d3VnaGRqY2lpaGhxZCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZm9yay50c1wiXG5pbXBvcnQgKiBhcyB3aHF4b2NlaWRibmZrcXNmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgdHFvb3J3dWRyenB1dWRtdSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBsYmhpcmlwdmZha3R1aWxrIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9yZW1vdmVfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyBxYWJ4aHd0bXBoaGxyb3BqIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgcmJlY2RwcWttcXdsbmRoYyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvYWRkX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgaWJpcWR3cnZwdHV5YWtleCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGlwaW10b3VuZHNscm95d3IgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2RlbGV0ZS50c1wiXG5pbXBvcnQgKiBhcyBzZmpmZXh3bnZxYXF4c3BnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kb3dubG9hZC50c1wiXG5pbXBvcnQgKiBhcyBjaXJmY3NjdnBobXF5d3piIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZW5lcmF0ZV9mcm9tX2psY3BjYi50c1wiXG5pbXBvcnQgKiBhcyBvbWh0b3NoenRnbHJ0eHN2IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHNcIlxuaW1wb3J0ICogYXMga3p1b3N5bmpycW11cXdsZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGZkYXpnaW16a3dscWJxZnIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2ltYWdlcy9bYXV0aG9yXS9bc25pcHBldF9uYW1lXS9bdHlwZUZvcm1hdF0udHNcIlxuaW1wb3J0ICogYXMgaWFqem5ycHlnZ3NwbWhyaSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9uZXdlc3QudHNcIlxuaW1wb3J0ICogYXMgZWhidnhma2FqbmF3a2doaSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZy50c1wiXG5pbXBvcnQgKiBhcyB5aGN0Z3d6ZmRocW5iaGp4IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIGl5am5idWp1bWl6c2poeGcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGZyZHBmd2Vjb3Zwc2R3aXcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3NlYXJjaC50c1wiXG5pbXBvcnQgKiBhcyByd3lkdHZua2hsdHp1dGh2IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy91cGRhdGUudHNcIlxuXG5jb25zdCByb3V0ZU1hcFdpdGhIYW5kbGVycyA9IHtcbiAgXCIvYXBpL19mYWtlL2RiXCI6IG5veW1zdXNsbnF6c3dyamcuZGVmYXVsdCxcIi9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZFwiOiBic3F4ZXhzZXh3eGJmbXRqLmRlZmF1bHQsXCIvYXBpL19mYWtlL3NlZWRcIjogd3dnZWpwdGNoaHdjY3F4cC5kZWZhdWx0LFwiL2FwaS9hY2NvdW50cy9nZXRfYWNjb3VudF9iYWxhbmNlXCI6IHhvb3Bpcm9neHp0bWdnbWIuZGVmYXVsdCxcIi9hcGkvYWNjb3VudHMvZ2V0XCI6IHNjZWJid2NnZmx2dmR0bm0uZGVmYXVsdCxcIi9hcGkvYWNjb3VudHMvdXBkYXRlXCI6IGxyamNwb2Z0anBhbHV4cGkuZGVmYXVsdCxcIi9hcGkvYWlcIjogYXd5cnJ3c210cWNxZmdwZC5kZWZhdWx0LFwiL2FwaS9haS9bLi4uYW55cm91dGVdXCI6IHp2eXplY2x3ZG55cXh2emIuZGVmYXVsdCxcIi9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXVwiOiB0bHpqZ2JzZnJ3cm5vaWNyLmRlZmF1bHQsXCIvYXBpL2hlYWx0aFwiOiB0bnZhcXptc21yYmxxaGZqLmRlZmF1bHQsXCIvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGhcIjogb3loaXdpYmJra25pcWN3ZC5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy9nZXRcIjogYmpieWptdmx2bWh6aHV0ZC5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy91cGxvYWRcIjogcHFibWR1cnhkdWpwaHNyYi5kZWZhdWx0LFwiL2FwaS9vcmRlcnMvY3JlYXRlXCI6IG9vZ2ttb2N3d2JmamZvZ3MuZGVmYXVsdCxcIi9hcGkvb3JkZXJzL2dldFwiOiBwcGhmdnJiYmlrc2ZodnhxLmRlZmF1bHQsXCIvYXBpL29yZGVycy9saXN0XCI6IGh0ZXpycGZjcWl2Y3BqcWMuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVfb3JfdXBkYXRlXCI6IHZtZmhxaXNvd2drYm1ubWkuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVcIjogY3ZpdndmY3hpemttZGJpYi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2RlbGV0ZVwiOiB3aHBkeWt6Y29vdWFxcWJlLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvZG93bmxvYWRcIjogdHNhZ3F3Zmlia3pwc3pzby5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2dldFwiOiBzanZ2anFvdnltcmhjanpwLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvbGlzdFwiOiBzaWtsYnlhZXlhamhwaWp3LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfcmVsZWFzZXMvY3JlYXRlXCI6IGRidHlic2xjZHZrb2VqanAuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9nZXRcIjogdXFmeHl4amppY292bXV5by5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2xpc3RcIjogb2t0aHNmenBpbXZkcXR1Yi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL3VwZGF0ZVwiOiBkaWV2d3l2YWVsanR3amxoLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2FkZF9zdGFyXCI6IHF3a2l4aGJtc3dlYXZkZGIuZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvY3JlYXRlXCI6IHdvZW12ZXR0ZXljZmZmdXguZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvZGVsZXRlXCI6IGVwemRmeGRxeWVsYnZ6aHQuZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvZm9ya1wiOiBlenZ3dWdoZGpjaWloaHFkLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2dldFwiOiB3aHF4b2NlaWRibmZrcXNmLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2xpc3RcIjogdHFvb3J3dWRyenB1dWRtdS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9yZW1vdmVfc3RhclwiOiBsYmhpcmlwdmZha3R1aWxrLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL3VwZGF0ZVwiOiBxYWJ4aHd0bXBoaGxyb3BqLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2FkZF9zdGFyXCI6IHJiZWNkcHFrbXF3bG5kaGMuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvY3JlYXRlXCI6IGliaXFkd3J2cHR1eWFrZXguZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZGVsZXRlXCI6IGlwaW10b3VuZHNscm95d3IuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZG93bmxvYWRcIjogc2ZqZmV4d252cWFxeHNwZy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZW5lcmF0ZV9mcm9tX2psY3BjYlwiOiBjaXJmY3NjdnBobXF5d3piLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2dldF9pbWFnZVwiOiBvbWh0b3NoenRnbHJ0eHN2LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2dldFwiOiBrenVvc3luanJxbXVxd2xmLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2ltYWdlcy9bYXV0aG9yXS9bc25pcHBldF9uYW1lXS9bdHlwZUZvcm1hdF1cIjogZmRhemdpbXprd2xxYnFmci5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9saXN0X25ld2VzdFwiOiBpYWp6bnJweWdnc3BtaHJpLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2xpc3RfdHJlbmRpbmdcIjogZWhidnhma2FqbmF3a2doaS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9saXN0XCI6IHloY3Rnd3pmZGhxbmJoanguZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvcmVtb3ZlX3N0YXJcIjogaXlqbmJ1anVtaXpzamh4Zy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9zZWFyY2hcIjogZnJkcGZ3ZWNvdnBzZHdpdy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy91cGRhdGVcIjogcnd5ZHR2bmtobHR6dXRodi5kZWZhdWx0XG59XG5cbmNvbnN0IHdpbnRlclNwZWMgPSB7XG4gIHJvdXRlTWF0Y2hlcjogZ2V0Um91dGVNYXRjaGVyKE9iamVjdC5rZXlzKHJvdXRlTWFwV2l0aEhhbmRsZXJzKSksXG4gIHJvdXRlTWFwV2l0aEhhbmRsZXJzLFxuICBtYWtlUmVxdWVzdDogYXN5bmMgKHJlcSwgb3B0aW9ucykgPT4gbWFrZVJlcXVlc3RBZ2FpbnN0V2ludGVyU3BlYyh3aW50ZXJTcGVjLCBvcHRpb25zKShyZXEpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpbnRlclNwZWMiLCAiaW1wb3J0IHsgY3JlYXRlV2l0aFdpbnRlclNwZWMgfSBmcm9tIFwid2ludGVyc3BlY1wiXG5pbXBvcnQgeyB3aXRoRGIgfSBmcm9tIFwiLi93aXRoLWRiXCJcbmltcG9ydCB7IGNyZWF0ZVdpdGhEZWZhdWx0RXhjZXB0aW9uSGFuZGxpbmcgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCB7IHdpdGhDdHhFcnJvciB9IGZyb20gXCIuL3dpdGgtY3R4LWVycm9yXCJcbmltcG9ydCB7IHdpdGhTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3dpdGgtc2Vzc2lvbi1hdXRoXCJcbmltcG9ydCB7IHdpdGhPcHRpb25hbFNlc3Npb25BdXRoIH0gZnJvbSBcIi4vd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGhcIlxuaW1wb3J0IHsgd2l0aEVycm9ySGFuZGxpbmcgfSBmcm9tIFwiLi93aXRoLWVycm9yLWhhbmRsaW5nXCJcbmltcG9ydCB7IHdpdGhSZXF1ZXN0TG9nZ2luZyB9IGZyb20gXCIuL3dpdGgtcmVxdWVzdC1sb2dnaW5nXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhSb3V0ZVNwZWMgPSBjcmVhdGVXaXRoV2ludGVyU3BlYyh7XG4gIGFwaU5hbWU6IFwidHNjaXJjdWl0IFNuaXBwZXRzIEFQSVwiLFxuICBwcm9kdWN0aW9uU2VydmVyVXJsOiBcImh0dHBzOi8vc25pcHBldHMudHNjaXJjdWl0LmNvbS9hcGlcIixcbiAgYmVmb3JlQXV0aE1pZGRsZXdhcmU6IFt3aXRoUmVxdWVzdExvZ2dpbmcsIHdpdGhFcnJvckhhbmRsaW5nLCB3aXRoQ3R4RXJyb3JdLFxuICBhdXRoTWlkZGxld2FyZToge1xuICAgIHNlc3Npb246IHdpdGhTZXNzaW9uQXV0aCxcbiAgICBvcHRpb25hbF9zZXNzaW9uOiB3aXRoT3B0aW9uYWxTZXNzaW9uQXV0aCxcbiAgfSxcbiAgYWZ0ZXJBdXRoTWlkZGxld2FyZTogW1xuICAgIHdpdGhEYixcbiAgICBjcmVhdGVXaXRoRGVmYXVsdEV4Y2VwdGlvbkhhbmRsaW5nKHtcbiAgICAgIGluY2x1ZGVTdGFja1RyYWNlSW5SZXNwb25zZTogdHJ1ZSxcbiAgICB9KSxcbiAgXSxcbn0pXG4iLCAiaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBob2lzdCB9IGZyb20gXCJ6dXN0YW5kLWhvaXN0XCJcbmltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSBcInp1c3RhbmQvdmFuaWxsYVwiXG5cbmltcG9ydCB7IGNvbWJpbmUgfSBmcm9tIFwienVzdGFuZC9taWRkbGV3YXJlXCJcbmltcG9ydCB7XG4gIHR5cGUgQWNjb3VudCxcbiAgdHlwZSBBY2NvdW50UGFja2FnZSxcbiAgSmxjcGNiT3JkZXJTdGF0ZSxcbiAgSmxjcGNiT3JkZXJTdGVwUnVuLFxuICB0eXBlIExvZ2luUGFnZSxcbiAgdHlwZSBPcmRlcixcbiAgdHlwZSBPcmRlckZpbGUsXG4gIHR5cGUgUGFja2FnZSxcbiAgdHlwZSBQYWNrYWdlRmlsZSxcbiAgdHlwZSBQYWNrYWdlUmVsZWFzZSxcbiAgdHlwZSBTZXNzaW9uLFxuICB0eXBlIFNuaXBwZXQsXG4gIGRhdGFiYXNlU2NoZW1hLFxuICB0eXBlIHBhY2thZ2VTY2hlbWEsXG4gIHR5cGUgc25pcHBldFNjaGVtYSxcbn0gZnJvbSBcIi4vc2NoZW1hLnRzXCJcbmltcG9ydCB7IHNlZWQgYXMgc2VlZEZuIH0gZnJvbSBcIi4vc2VlZFwiXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEYXRhYmFzZSA9ICh7IHNlZWQgfTogeyBzZWVkPzogYm9vbGVhbiB9ID0ge30pID0+IHtcbiAgY29uc3QgZGIgPSBob2lzdChjcmVhdGVTdG9yZShpbml0aWFsaXplcikpXG4gIGlmIChzZWVkKSB7XG4gICAgc2VlZEZuKGRiKVxuICB9XG4gIHJldHVybiBkYlxufVxuXG5leHBvcnQgdHlwZSBEYkNsaWVudCA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZURhdGFiYXNlPlxuXG5jb25zdCBpbml0aWFsaXplciA9IGNvbWJpbmUoZGF0YWJhc2VTY2hlbWEucGFyc2Uoe30pLCAoc2V0LCBnZXQpID0+ICh7XG4gIGFkZE9yZGVyOiAob3JkZXI6IE9taXQ8T3JkZXIsIFwib3JkZXJfaWRcIj4pOiBPcmRlciA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXIgPSB7IG9yZGVyX2lkOiBgb3JkZXJfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsIC4uLm9yZGVyIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvcmRlcnM6IFsuLi5zdGF0ZS5vcmRlcnMsIG5ld09yZGVyXSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG5ld09yZGVyXG4gIH0sXG4gIGdldE9yZGVyQnlJZDogKG9yZGVySWQ6IHN0cmluZyk6IE9yZGVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVycy5maW5kKChvcmRlcikgPT4gb3JkZXIub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldE9yZGVyRmlsZXNCeU9yZGVySWQ6IChvcmRlcklkOiBzdHJpbmcpOiBPcmRlckZpbGVbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlckZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5vcmRlcl9pZCA9PT0gb3JkZXJJZClcbiAgfSxcbiAgZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQ6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICk6IEpsY3BjYk9yZGVyU3RhdGUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuamxjcGNiT3JkZXJTdGF0ZS5maW5kKChzdGF0ZSkgPT4gc3RhdGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldEpsY3BjYk9yZGVyU3RlcFJ1bnNCeUpsY3BjYk9yZGVyU3RhdGVJZDogKFxuICAgIGpsY3BjYk9yZGVyU3RhdGVJZDogc3RyaW5nLFxuICApOiBKbGNwY2JPcmRlclN0ZXBSdW5bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5qbGNwY2JPcmRlclN0ZXBSdW5zXG4gICAgICAuZmlsdGVyKChzdGVwUnVuKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBzdGF0ZS5qbGNwY2JPcmRlclN0YXRlLmZpbmQoXG4gICAgICAgICAgKHN0YXRlKSA9PlxuICAgICAgICAgICAgc3RhdGUuamxjcGNiX29yZGVyX3N0YXRlX2lkID09PSBzdGVwUnVuLmpsY3BjYl9vcmRlcl9zdGF0ZV9pZCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gb3JkZXJTdGF0ZT8ub3JkZXJfaWQgPT09IGpsY3BjYk9yZGVyU3RhdGVJZFxuICAgICAgfSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICB9LFxuICB1cGRhdGVPcmRlcjogKG9yZGVySWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxPcmRlcj4pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgb3JkZXJzOiBzdGF0ZS5vcmRlcnMubWFwKChvcmRlcikgPT5cbiAgICAgICAgb3JkZXIub3JkZXJfaWQgPT09IG9yZGVySWQgPyB7IC4uLm9yZGVyLCAuLi51cGRhdGVzIH0gOiBvcmRlcixcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZEpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlclN0YXRlOiBPbWl0PEpsY3BjYk9yZGVyU3RhdGUsIFwiamxjcGNiX29yZGVyX3N0YXRlX2lkXCI+LFxuICApOiBKbGNwY2JPcmRlclN0YXRlID0+IHtcbiAgICBjb25zdCBuZXdPcmRlclN0YXRlID0ge1xuICAgICAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiBgb3JkZXJfc3RhdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlclN0YXRlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBqbGNwY2JPcmRlclN0YXRlOiBbLi4uc3RhdGUuamxjcGNiT3JkZXJTdGF0ZSwgbmV3T3JkZXJTdGF0ZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclN0YXRlXG4gIH0sXG4gIHVwZGF0ZUpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxKbGNwY2JPcmRlclN0YXRlPixcbiAgKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGpsY3BjYk9yZGVyU3RhdGU6IHN0YXRlLmpsY3BjYk9yZGVyU3RhdGUubWFwKChvcmRlclN0YXRlKSA9PlxuICAgICAgICBvcmRlclN0YXRlLm9yZGVyX2lkID09PSBvcmRlcklkXG4gICAgICAgICAgPyB7IC4uLm9yZGVyU3RhdGUsIC4uLnVwZGF0ZXMgfVxuICAgICAgICAgIDogb3JkZXJTdGF0ZSxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZE9yZGVyRmlsZTogKG9yZGVyRmlsZTogT21pdDxPcmRlckZpbGUsIFwib3JkZXJfZmlsZV9pZFwiPik6IE9yZGVyRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgICAgb3JkZXJfZmlsZV9pZDogYG9yZGVyX2ZpbGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlckZpbGUsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyRmlsZXM6IFsuLi5zdGF0ZS5vcmRlckZpbGVzLCBuZXdPcmRlckZpbGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJGaWxlXG4gIH0sXG4gIGdldE9yZGVyRmlsZUJ5SWQ6IChvcmRlckZpbGVJZDogc3RyaW5nKTogT3JkZXJGaWxlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5vcmRlcl9maWxlX2lkID09PSBvcmRlckZpbGVJZClcbiAgfSxcbiAgYWRkQWNjb3VudDogKFxuICAgIGFjY291bnQ6IE9taXQ8QWNjb3VudCwgXCJhY2NvdW50X2lkXCI+ICYgUGFydGlhbDxQaWNrPEFjY291bnQsIFwiYWNjb3VudF9pZFwiPj4sXG4gICkgPT4ge1xuICAgIGNvbnN0IG5ld0FjY291bnQgPSB7XG4gICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQgfHwgYGFjY291bnRfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5hY2NvdW50LFxuICAgIH1cblxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRzOiBbLi4uc3RhdGUuYWNjb3VudHMsIG5ld0FjY291bnRdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBuZXdBY2NvdW50XG4gIH0sXG4gIGFkZEFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2U6IE9taXQ8QWNjb3VudFBhY2thZ2UsIFwiYWNjb3VudF9wYWNrYWdlX2lkXCI+LFxuICApOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3QgbmV3QWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIC4uLmFjY291bnRQYWNrYWdlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IFsuLi5zdGF0ZS5hY2NvdW50UGFja2FnZXMsIG5ld0FjY291bnRQYWNrYWdlXSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG5ld0FjY291bnRQYWNrYWdlXG4gIH0sXG4gIGdldEFjY291bnRQYWNrYWdlQnlJZDogKFxuICAgIGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgKTogQWNjb3VudFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgICAoYXApID0+IGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCxcbiAgICApXG4gIH0sXG4gIHVwZGF0ZUFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8QWNjb3VudFBhY2thZ2U+LFxuICApOiB2b2lkID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgYWNjb3VudFBhY2thZ2VzOiBzdGF0ZS5hY2NvdW50UGFja2FnZXMubWFwKChhcCkgPT5cbiAgICAgICAgYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkID8geyAuLi5hcCwgLi4udXBkYXRlcyB9IDogYXAsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBkZWxldGVBY2NvdW50UGFja2FnZTogKGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChhcCkgPT4gYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICBkZWxldGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBhZGRTbmlwcGV0OiAoXG4gICAgc25pcHBldDogT21pdDxcbiAgICAgIHouaW5wdXQ8dHlwZW9mIHNuaXBwZXRTY2hlbWE+LFxuICAgICAgXCJzbmlwcGV0X2lkXCIgfCBcInBhY2thZ2VfcmVsZWFzZV9pZFwiXG4gICAgPixcbiAgKTogU25pcHBldCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbmV4dElkID0gbmV3U3RhdGUuaWRDb3VudGVyICsgMVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIHRoYXQgd2lsbCBzZXJ2ZSBhcyBvdXIgc25pcHBldFxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGtnXyR7bmV4dElkfWAsXG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IHNuaXBwZXQub3duZXJfbmFtZSwgLy8gVXNpbmcgb3duZXJfbmFtZSBhcyBhY2NvdW50X2lkIHNpbmNlIHdlIGRvbid0IGhhdmUgY29udGV4dFxuICAgICAgb3duZXJfb3JnX2lkOiBcIlwiLCAvLyBFbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBudWxsIHRvIG1hdGNoIHR5cGVcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBuYW1lOiBgJHtzbmlwcGV0Lm93bmVyX25hbWV9LyR7c25pcHBldC51bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBzbmlwcGV0LnVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHdlYnNpdGU6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcInBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcImJvYXJkXCIsXG4gICAgICBpc19wYWNrYWdlOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0ge1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgICBwYWNrYWdlX2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9XG5cbiAgICAvLyBBZGQgYWxsIHRoZSBmaWxlc1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlczogUGFja2FnZUZpbGVbXSA9IFtdXG4gICAgbGV0IGZpbGVJZENvdW50ZXIgPSBuZXh0SWRcblxuICAgIC8vIEFkZCBtYWluIGNvZGUgZmlsZVxuICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuY29kZSB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfSlcblxuICAgIC8vIEFkZCBEVFMgZmlsZSBpZiBwcm92aWRlZFxuICAgIGlmIChzbmlwcGV0LmR0cykge1xuICAgICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogc25pcHBldC5kdHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY29tcGlsZWQgSlMgaWYgcHJvdmlkZWRcbiAgICBpZiAoc25pcHBldC5jb21waWxlZF9qcykge1xuICAgICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuY29tcGlsZWRfanMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgaWYgKHNuaXBwZXQuY2lyY3VpdF9qc29uICYmIHNuaXBwZXQuY2lyY3VpdF9qc29uLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkoc25pcHBldC5jaXJjdWl0X2pzb24pLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBkYXRhYmFzZSBzdGF0ZSBhdG9taWNhbGx5XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcGFja2FnZXM6IFsuLi5zdGF0ZS5wYWNrYWdlcywgbmV3UGFja2FnZV0sXG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IFsuLi5zdGF0ZS5wYWNrYWdlUmVsZWFzZXMsIG5ld1BhY2thZ2VSZWxlYXNlXSxcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgLi4ucGFja2FnZUZpbGVzXSxcbiAgICAgIGlkQ291bnRlcjogZmlsZUlkQ291bnRlcixcbiAgICB9KSlcblxuICAgIC8vIFJldHVybiBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgY3JlYXRlIGVuZHBvaW50XG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbmFtZTogbmV3UGFja2FnZS5uYW1lLFxuICAgICAgdW5zY29wZWRfbmFtZTogbmV3UGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgb3duZXJfbmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgY29kZTogc25pcHBldC5jb2RlIHx8IFwiXCIsXG4gICAgICBkdHM6IHNuaXBwZXQuZHRzLFxuICAgICAgY29tcGlsZWRfanM6IHNuaXBwZXQuY29tcGlsZWRfanMsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldC5zbmlwcGV0X3R5cGUsXG4gICAgICBjaXJjdWl0X2pzb246IHNuaXBwZXQuY2lyY3VpdF9qc29uIHx8IFtdLFxuICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgfVxuICB9LFxuICBnZXROZXdlc3RTbmlwcGV0czogKGxpbWl0OiBudW1iZXIpOiBTbmlwcGV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgICBjb25zdCBzbmlwcGV0UGFja2FnZXMgPSBzdGF0ZS5wYWNrYWdlc1xuICAgICAgLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgICAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEdldCB0aGUgY29kZSBmaWxlXG4gICAgICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgc3RhcnJlZFxuICAgICAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICAgIClcblxuICAgICAgICAvLyBDb252ZXJ0IHRvIHNuaXBwZXQgZm9ybWF0XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHNuaXBwZXQpOiBzbmlwcGV0IGlzIE5vbk51bGxhYmxlPHR5cGVvZiBzbmlwcGV0PiA9PiBzbmlwcGV0ICE9PSBudWxsLFxuICAgICAgKVxuICAgICAgLm1hcCgoc25pcHBldCkgPT4gKHtcbiAgICAgICAgLi4uc25pcHBldCxcbiAgICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIH0pKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gICAgICAuc2xpY2UoMCwgbGltaXQpXG5cbiAgICByZXR1cm4gc25pcHBldFBhY2thZ2VzXG4gIH0sXG4gIGdldFRyZW5kaW5nU25pcHBldHM6IChsaW1pdDogbnVtYmVyLCBzaW5jZTogc3RyaW5nKTogU25pcHBldFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3Qgc2luY2VEYXRlID0gbmV3IERhdGUoc2luY2UpLmdldFRpbWUoKVxuXG4gICAgLy8gR2V0IHN0YXIgY291bnRzIHdpdGhpbiB0aW1lIHBlcmlvZFxuICAgIGNvbnN0IHJlY2VudFN0YXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKVxuICAgIHN0YXRlLmFjY291bnRQYWNrYWdlcy5mb3JFYWNoKChhcCkgPT4ge1xuICAgICAgaWYgKGFwLmlzX3N0YXJyZWQgJiYgbmV3IERhdGUoYXAuY3JlYXRlZF9hdCkuZ2V0VGltZSgpID49IHNpbmNlRGF0ZSkge1xuICAgICAgICByZWNlbnRTdGFycy5zZXQoXG4gICAgICAgICAgYXAucGFja2FnZV9pZCxcbiAgICAgICAgICAocmVjZW50U3RhcnMuZ2V0KGFwLnBhY2thZ2VfaWQpIHx8IDApICsgMSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBwYWNrYWdlc1dpdGhTdGFyQ291bnQgPSBbLi4uc3RhdGUucGFja2FnZXNdXG4gICAgICAubWFwKChwa2cpID0+ICh7XG4gICAgICAgIC4uLnBrZyxcbiAgICAgICAgc3Rhcl9jb3VudDogcmVjZW50U3RhcnMuZ2V0KHBrZy5wYWNrYWdlX2lkKSB8fCAwLFxuICAgICAgfSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5zdGFyX2NvdW50IC0gYS5zdGFyX2NvdW50KVxuICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuXG4gICAgY29uc3QgdHJlbmRpbmdTbmlwcGV0cyA9IHBhY2thZ2VzV2l0aFN0YXJDb3VudFxuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZSA/IGNvZGVGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIlwiIDogXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzbmlwcGV0X3R5cGU6IHBrZy5pc19zbmlwcGV0ID8gXCJib2FyZFwiIDogXCJwYWNrYWdlXCIsXG4gICAgICAgICAgc3Rhcl9jb3VudDogcGtnLnN0YXJfY291bnQsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChzbmlwcGV0KSA9PiBzbmlwcGV0ICE9PSBudWxsKVxuXG4gICAgcmV0dXJuIHRyZW5kaW5nU25pcHBldHMgYXMgU25pcHBldFtdXG4gIH0sXG4gIGdldFBhY2thZ2VzQnlBdXRob3I6IChhdXRob3JOYW1lPzogc3RyaW5nKTogUGFja2FnZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGFja2FnZXMgPSBhdXRob3JOYW1lXG4gICAgICA/IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRob3JOYW1lKVxuICAgICAgOiBzdGF0ZS5wYWNrYWdlc1xuICAgIHJldHVybiBwYWNrYWdlcy5tYXAoKHBrZykgPT4gKHtcbiAgICAgIC4uLnBrZyxcbiAgICAgIHN0YXJfY291bnQ6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICkubGVuZ3RoLFxuICAgIH0pKVxuICB9LFxuICBnZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lOiAoXG4gICAgYXV0aG9yTmFtZTogc3RyaW5nLFxuICAgIHNuaXBwZXROYW1lOiBzdHJpbmcsXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICAvLyBMb29rIGZvciB0aGUgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzbmlwcGV0IHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZ1xuICAgIGNvbnN0IF9wYWNrYWdlID0gc3RhdGUucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGF1dGhvck5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpID09PSBzbmlwcGV0TmFtZS50b0xvd2VyQ2FzZSgpICYmXG4gICAgICAgIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBwci5pc19sYXRlc3QgPT09IHRydWUsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIGNvZGUgZmlsZSAoaW5kZXgudHMgb3IgaW5kZXgudHN4KVxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG5cbiAgICAvLyBNYXAgdGhlIHBhY2thZ2UgZGF0YSB0byBtYXRjaCB0aGUgU25pcHBldCBzdHJ1Y3R1cmVcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogX3BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogX3BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IF9wYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiBfcGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBfcGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiBfcGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IF9wYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiBfcGFja2FnZS51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogX3BhY2thZ2Uuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBfcGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICApPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIltdXCIsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogX3BhY2thZ2UuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogX3BhY2thZ2UuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogX3BhY2thZ2UuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9LFxuICB1cGRhdGVTbmlwcGV0OiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxTbmlwcGV0PixcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgcGFja2FnZVxuICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgY29uc3QgY3VycmVudFBhY2thZ2UgPSB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XVxuICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgIC4uLmN1cnJlbnRQYWNrYWdlLFxuICAgICAgICBkZXNjcmlwdGlvbjogdXBkYXRlcy5kZXNjcmlwdGlvbiA/PyBjdXJyZW50UGFja2FnZS5kZXNjcmlwdGlvbixcbiAgICAgICAgaXNfcHJpdmF0ZTogdXBkYXRlcy5pc19wcml2YXRlID8/IGN1cnJlbnRQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgICAgIGlzX3B1YmxpYzpcbiAgICAgICAgICB1cGRhdGVzLmlzX3ByaXZhdGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyAhdXBkYXRlcy5pc19wcml2YXRlXG4gICAgICAgICAgICA6IGN1cnJlbnRQYWNrYWdlLmlzX3B1YmxpYyxcbiAgICAgICAgaXNfdW5saXN0ZWQ6IHVwZGF0ZXMuaXNfcHJpdmF0ZVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogKHVwZGF0ZXMuaXNfdW5saXN0ZWQgPz8gY3VycmVudFBhY2thZ2UuaXNfdW5saXN0ZWQpLFxuICAgICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH1cblxuICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHBhY2thZ2UgcmVsZWFzZVxuICAgICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gY3VycmVudFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIClcbiAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBzdGF0ZVxuXG4gICAgICAvLyBVcGRhdGUgcGFja2FnZSBmaWxlcyBpZiBjb2RlL2R0cy9qcyBjaGFuZ2VkXG4gICAgICBjb25zdCB1cGRhdGVkRmlsZXMgPSBbLi4uc3RhdGUucGFja2FnZUZpbGVzXVxuICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gdXBkYXRlZEZpbGVzLmZpbHRlcihcbiAgICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICApXG5cbiAgICAgIGlmICh1cGRhdGVzLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjb2RlRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGNvZGVGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tjb2RlRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tjb2RlRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb2RlLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29kZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuZHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZHRzRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChkdHNGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tkdHNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2R0c0ZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuZHRzLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmR0cyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuY29tcGlsZWRfanMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBqc0ZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGpzRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbanNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2pzRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb21waWxlZF9qcyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29tcGlsZWRfanMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICAgIGlmICh1cGRhdGVzLmNpcmN1aXRfanNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNpcmN1aXRGaWxlSW5kZXggPSBwYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgKVxuICAgICAgICBpZiAoY2lyY3VpdEZpbGVJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeSh1cGRhdGVzLmNpcmN1aXRfanNvbiksXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHVybiB1cGRhdGVkIHN0YXRlXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgcGFja2FnZUZpbGVzOiB1cGRhdGVkRmlsZXMsXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIEdldCB0aGUgdXBkYXRlZCBzbmlwcGV0IHRvIHJldHVyblxuICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlID0gZ2V0KCkucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBzbmlwcGV0SWQsXG4gICAgKVxuICAgIGlmICghdXBkYXRlZFBhY2thZ2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gZ2V0KCkucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gZ2V0KCkucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcblxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG4gICAgY29uc3QgZHRzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICApXG4gICAgY29uc3QganNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICApXG4gICAgY29uc3QgY2lyY3VpdEZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICApXG5cbiAgICAvLyBSZXR1cm4gaW4gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogdXBkYXRlZFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogdXBkYXRlZFBhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IHVwZGF0ZWRQYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiB1cGRhdGVkUGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiB1cGRhdGVkUGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiB1cGRhdGVkUGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOiBkdHNGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOiBqc0ZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogdXBkYXRlZFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRQYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiB1cGRhdGVkUGFja2FnZS5zdGFyX2NvdW50IHx8IDAsXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogY2lyY3VpdEZpbGVcbiAgICAgICAgPyBKU09OLnBhcnNlKGNpcmN1aXRGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiB1cGRhdGVkUGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB1cGRhdGVkUGFja2FnZS5pc19wdWJsaWMgPz8gdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiB1cGRhdGVkUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIGdldFNuaXBwZXRCeUlkOiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgYXV0aD86IHsgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmcgfSxcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIC8vIExvb2sgZm9yIHRoZSBwYWNrYWdlIHRoYXQgcmVwcmVzZW50cyB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBfcGFja2FnZSA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBIYW5kbGUgdmlzaWJpbGl0eSBiYXNlZCBvbiBhdXRoZW50aWNhdGlvblxuICAgIGlmICghYXV0aCkge1xuICAgICAgLy8gVW5hdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBvbmx5IHNlZSBwdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgaWYgKCFfcGFja2FnZS5pc19wdWJsaWMgfHwgX3BhY2thZ2UuaXNfdW5saXN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBzZWU6XG4gICAgICAvLyAxLiBQdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgLy8gMi4gVGhlaXIgb3duIHVubGlzdGVkIHBhY2thZ2VzXG4gICAgICAvLyAzLiBUaGVpciBvd24gcHJpdmF0ZSBwYWNrYWdlc1xuICAgICAgY29uc3QgaXNPd25QYWNrYWdlID1cbiAgICAgICAgX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRoPy5naXRodWJfdXNlcm5hbWVcbiAgICAgIGNvbnN0IGlzUHVibGljQW5kTm90VW5saXN0ZWQgPSBfcGFja2FnZS5pc19wdWJsaWMgJiYgIV9wYWNrYWdlLmlzX3VubGlzdGVkXG4gICAgICBjb25zdCBpc093blVubGlzdGVkID0gX3BhY2thZ2UuaXNfdW5saXN0ZWQgJiYgaXNPd25QYWNrYWdlXG4gICAgICBjb25zdCBpc093blByaXZhdGUgPSBfcGFja2FnZS5pc19wcml2YXRlICYmIGlzT3duUGFja2FnZVxuXG4gICAgICBpZiAoIWlzUHVibGljQW5kTm90VW5saXN0ZWQgJiYgIWlzT3duVW5saXN0ZWQgJiYgIWlzT3duUHJpdmF0ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBjb2RlIGZpbGUgKGluZGV4LnRzIG9yIGluZGV4LnRzeClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgc3RhcnJlZCB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuXG4gICAgLy8gTWFwIHRoZSBwYWNrYWdlIGRhdGEgdG8gbWF0Y2ggdGhlIFNuaXBwZXQgc3RydWN0dXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IF9wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBfcGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogX3BhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogX3BhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBfcGFja2FnZS5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogX3BhY2thZ2UudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IF9wYWNrYWdlLnN0YXJfY291bnQgfHwgMCxcbiAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgIHZlcnNpb246IF9wYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICk/LmNvbnRlbnRfdGV4dFxuICAgICAgICA/IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiW11cIixcbiAgICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiBfcGFja2FnZS5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBfcGFja2FnZS5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBfcGFja2FnZS5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIHNlYXJjaFNuaXBwZXRzOiAocXVlcnk6IHN0cmluZyk6IFNuaXBwZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IGxvd2VyY2FzZVF1ZXJ5ID0gcXVlcnkudG9Mb3dlckNhc2UoKVxuXG4gICAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICAgIGNvbnN0IHBhY2thZ2VzID0gc3RhdGUucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IG5hbWUgb3IgZGVzY3JpcHRpb25cbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpIHx8XG4gICAgICAgIHBrZy5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSksXG4gICAgKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IGNvZGUgY29udGVudCBpbiBhbnkgZmlsZVxuICAgIGNvbnN0IG1hdGNoaW5nRmlsZXNCeUNvbnRlbnQgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuY29udGVudF90ZXh0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/PyBmYWxzZSxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2VzIGZvciBtYXRjaGluZyBmaWxlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnQgPSBtYXRjaGluZ0ZpbGVzQnlDb250ZW50XG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZSBmb3IgdGhpcyBmaWxlXG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgLy8gRmluZCB0aGUgcGFja2FnZSBmb3IgdGhpcyByZWxlYXNlXG4gICAgICAgIHJldHVybiBwYWNrYWdlcy5maW5kKFxuICAgICAgICAgIChwa2cpID0+XG4gICAgICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocGtnKTogcGtnIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBwa2c+ID0+IHBrZyAhPT0gbnVsbClcblxuICAgIC8vIENvbWJpbmUgYm90aCBzZXRzIG9mIG1hdGNoaW5nIHBhY2thZ2VzIGFuZCByZW1vdmUgZHVwbGljYXRlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFsuLi5tYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSwgLi4ubWF0Y2hpbmdQYWNrYWdlc0J5Q29udGVudF0pLFxuICAgIF1cblxuICAgIC8vIENvbnZlcnQgbWF0Y2hpbmcgcGFja2FnZXMgdG8gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4gbWF0Y2hpbmdQYWNrYWdlc1xuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGlzU3RhcnJlZCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgfSBhcyBTbmlwcGV0XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc25pcHBldCk6IHNuaXBwZXQgaXMgU25pcHBldCA9PiBzbmlwcGV0ICE9PSBudWxsKVxuICB9LFxuICBkZWxldGVTbmlwcGV0OiAoc25pcHBldElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5zbmlwcGV0cy5maW5kSW5kZXgoKHMpID0+IHMuc25pcHBldF9pZCA9PT0gc25pcHBldElkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zbmlwcGV0cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFNlc3Npb246IChzZXNzaW9uOiBPbWl0PFNlc3Npb24sIFwic2Vzc2lvbl9pZFwiPik6IFNlc3Npb24gPT4ge1xuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSB7IHNlc3Npb25faWQ6IGBzZXNzaW9uXyR7RGF0ZS5ub3coKX1gLCAuLi5zZXNzaW9uIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgc2Vzc2lvbnM6IFsuLi5zdGF0ZS5zZXNzaW9ucywgbmV3U2Vzc2lvbl0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1Nlc3Npb25cbiAgfSxcbiAgZ2V0U2Vzc2lvbnM6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbixcbiAgfTogeyBhY2NvdW50X2lkOiBzdHJpbmc7IGlzX2NsaV9zZXNzaW9uPzogYm9vbGVhbiB9KTogU2Vzc2lvbltdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnNlc3Npb25zLmZpbHRlcihcbiAgICAgIChzZXNzaW9uKSA9PlxuICAgICAgICBzZXNzaW9uLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQgJiZcbiAgICAgICAgKGlzX2NsaV9zZXNzaW9uID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBzZXNzaW9uLmlzX2NsaV9zZXNzaW9uID09PSBpc19jbGlfc2Vzc2lvbiksXG4gICAgKVxuICB9LFxuICBjcmVhdGVMb2dpblBhZ2U6ICgpOiBMb2dpblBhZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0xvZ2luUGFnZTogTG9naW5QYWdlID0ge1xuICAgICAgbG9naW5fcGFnZV9pZDogYGxvZ2luX3BhZ2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IGB0b2tlbl8ke0RhdGUubm93KCl9YCxcbiAgICAgIHdhc19sb2dpbl9zdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLCAvLyAzMCBtaW51dGVzIGV4cGlyYXRpb25cbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IFsuLi5zdGF0ZS5sb2dpblBhZ2VzLCBuZXdMb2dpblBhZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdMb2dpblBhZ2VcbiAgfSxcbiAgZ2V0TG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZyk6IExvZ2luUGFnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5sb2dpblBhZ2VzLmZpbmQoKGxwKSA9PiBscC5sb2dpbl9wYWdlX2lkID09PSBsb2dpblBhZ2VJZClcbiAgfSxcbiAgdXBkYXRlTG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxMb2dpblBhZ2U+KTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IHN0YXRlLmxvZ2luUGFnZXMubWFwKChscCkgPT5cbiAgICAgICAgbHAubG9naW5fcGFnZV9pZCA9PT0gbG9naW5QYWdlSWQgPyB7IC4uLmxwLCAuLi51cGRhdGVzIH0gOiBscCxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGdldEFjY291bnQ6IChhY2NvdW50SWQ6IHN0cmluZyk6IEFjY291bnQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudHMuZmluZCgoYWNjb3VudCkgPT4gYWNjb3VudC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQpXG4gIH0sXG4gIHVwZGF0ZUFjY291bnQ6IChcbiAgICBhY2NvdW50SWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnQ+LFxuICApOiBBY2NvdW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZEFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBhY2NvdW50SW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChhY2NvdW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi5zdGF0ZS5hY2NvdW50c1thY2NvdW50SW5kZXhdIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMuc2hpcHBpbmdJbmZvKSB7XG4gICAgICAgICAgdXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvID0ge1xuICAgICAgICAgICAgLi4udXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvLFxuICAgICAgICAgICAgLi4udXBkYXRlcy5zaGlwcGluZ0luZm8sXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSB1cGRhdGVzLnNoaXBwaW5nSW5mb1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi51cGRhdGVkQWNjb3VudCwgLi4udXBkYXRlcyB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRBY2NvdW50cyA9IFsuLi5zdGF0ZS5hY2NvdW50c11cbiAgICAgICAgdXBkYXRlZEFjY291bnRzW2FjY291bnRJbmRleF0gPSB1cGRhdGVkQWNjb3VudFxuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYWNjb3VudHM6IHVwZGF0ZWRBY2NvdW50cyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkQWNjb3VudFxuICB9LFxuICBjcmVhdGVTZXNzaW9uOiAoc2Vzc2lvbjogT21pdDxTZXNzaW9uLCBcInNlc3Npb25faWRcIj4pOiBTZXNzaW9uID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0geyBzZXNzaW9uX2lkOiBgc2Vzc2lvbl8ke0RhdGUubm93KCl9YCwgLi4uc2Vzc2lvbiB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHNlc3Npb25zOiBbLi4uc3RhdGUuc2Vzc2lvbnMsIG5ld1Nlc3Npb25dLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdTZXNzaW9uXG4gIH0sXG4gIGFkZFN0YXI6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgYWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBub3csXG4gICAgICB1cGRhdGVkX2F0OiBub3csXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGluY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgICAgc3Rhcl9jb3VudDogKHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLnN0YXJfY291bnQgfHwgMCkgKyAxLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzLFxuICAgICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gYWNjb3VudFBhY2thZ2VcbiAgfSxcbiAgcmVtb3ZlU3RhcjogKGFjY291bnRJZDogc3RyaW5nLCBwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGRlY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuXG4gICAgICBpZiAocGFja2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgICBzdGFyX2NvdW50OiBNYXRoLm1heChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAodXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0uc3Rhcl9jb3VudCB8fCAwKSAtIDEsXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYXApID0+XG4gICAgICAgICAgICAgICEoYXAuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKGFwKSA9PiAhKGFwLmFjY291bnRfaWQgPT09IGFjY291bnRJZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpLFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGhhc1N0YXJyZWQ6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgKGFwKSA9PlxuICAgICAgICBhcC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQgJiZcbiAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmXG4gICAgICAgIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlOiAoXG4gICAgX3BhY2thZ2U6IE9taXQ8ei5pbnB1dDx0eXBlb2YgcGFja2FnZVNjaGVtYT4sIFwicGFja2FnZV9pZFwiPixcbiAgKTogUGFja2FnZSA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGFja2FnZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgLi4uX3BhY2thZ2UsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlczogWy4uLnN0YXRlLnBhY2thZ2VzLCBuZXdQYWNrYWdlIGFzIFBhY2thZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlIGFzIFBhY2thZ2VcbiAgfSxcbiAgdXBkYXRlUGFja2FnZTogKFxuICAgIHBhY2thZ2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8UGFja2FnZT4sXG4gICk6IFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkUGFja2FnZTogUGFja2FnZSB8IHVuZGVmaW5lZFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VJbmRleCA9IHN0YXRlLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCxcbiAgICAgIClcbiAgICAgIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSByZXR1cm4gc3RhdGVcblxuICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgIC4uLnVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzLFxuICAgICAgfVxuICAgICAgdXBkYXRlZFBhY2thZ2UgPSB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHBhY2thZ2VzOiB1cGRhdGVkUGFja2FnZXMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRQYWNrYWdlXG4gIH0sXG4gIGdldFBhY2thZ2VCeUlkOiAocGFja2FnZUlkOiBzdHJpbmcpOiBQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGtnID0gc3RhdGUucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuICAgIGlmICghcGtnKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBrZyxcbiAgICB9XG4gIH0sXG4gIGdldFBhY2thZ2VSZWxlYXNlQnlJZDogKFxuICAgIHBhY2thZ2VSZWxlYXNlSWQ6IHN0cmluZyxcbiAgKTogUGFja2FnZVJlbGVhc2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgICApXG4gIH0sXG4gIGFkZFBhY2thZ2VSZWxlYXNlOiAoXG4gICAgcGFja2FnZVJlbGVhc2U6IE9taXQ8UGFja2FnZVJlbGVhc2UsIFwicGFja2FnZV9yZWxlYXNlX2lkXCI+LFxuICApOiBQYWNrYWdlUmVsZWFzZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSB7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlUmVsZWFzZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogWy4uLnN0YXRlLnBhY2thZ2VSZWxlYXNlcywgbmV3UGFja2FnZVJlbGVhc2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlUmVsZWFzZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlUmVsZWFzZTogKHBhY2thZ2VSZWxlYXNlOiBQYWNrYWdlUmVsZWFzZSk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8gcGFja2FnZVJlbGVhc2VcbiAgICAgICAgICA6IHByLFxuICAgICAgKSxcbiAgICB9KSlcbiAgfSxcbiAgZGVsZXRlUGFja2FnZUZpbGU6IChwYWNrYWdlRmlsZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gICAgICApXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHN0YXRlLnBhY2thZ2VGaWxlcy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFBhY2thZ2VGaWxlOiAoXG4gICAgcGFja2FnZUZpbGU6IE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+LFxuICApOiBQYWNrYWdlRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgbmV3UGFja2FnZUZpbGVdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlRmlsZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlRmlsZTogKFxuICAgIHBhY2thZ2VGaWxlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+PixcbiAgKTogUGFja2FnZUZpbGUgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlRmlsZXM6IHN0YXRlLnBhY2thZ2VGaWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICAgIGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkID8geyAuLi5maWxlLCAuLi51cGRhdGVzIH0gOiBmaWxlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICAgICkhXG4gIH0sXG4gIGdldFN0YXJDb3VudDogKHBhY2thZ2VJZDogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICkubGVuZ3RoXG4gIH0sXG4gIGdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkOiAocGFja2FnZVJlbGVhc2VJZDogc3RyaW5nKTogUGFja2FnZUZpbGVbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKHBmKSA9PiBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgKVxuICB9LFxufSkpXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgY29uc3QgZXJyb3JTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGVycm9yX2NvZGU6IHouc3RyaW5nKCksXG4gICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnBhc3N0aHJvdWdoKClcblxuZXhwb3J0IGNvbnN0IGVycm9yUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVycm9yOiBlcnJvclNjaGVtYSxcbn0pXG5cbmV4cG9ydCBjb25zdCBzbmlwcGV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCksXG4gIG93bmVyX25hbWU6IHouc3RyaW5nKCksXG4gIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjb2RlOiB6LnN0cmluZygpLFxuICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5kZWZhdWx0KFwiMC4wLjFcIiksXG4gIHN0YXJfY291bnQ6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3B1YmxpYzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxufSlcbmV4cG9ydCB0eXBlIFNuaXBwZXQgPSB6LmluZmVyPHR5cGVvZiBzbmlwcGV0U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2Vzc2lvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgaXNfY2xpX3Nlc3Npb246IHouYm9vbGVhbigpLFxufSlcbmV4cG9ydCB0eXBlIFNlc3Npb24gPSB6LmluZmVyPHR5cGVvZiBzZXNzaW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgbG9naW5QYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBsb2dpbl9wYWdlX2lkOiB6LnN0cmluZygpLFxuICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IHouc3RyaW5nKCksXG4gIHdhc19sb2dpbl9zdWNjZXNzZnVsOiB6LmJvb2xlYW4oKSxcbiAgaGFzX2JlZW5fdXNlZF90b19jcmVhdGVfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgTG9naW5QYWdlID0gei5pbmZlcjx0eXBlb2YgbG9naW5QYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2hpcHBpbmdJbmZvU2NoZW1hID0gei5vYmplY3Qoe1xuICBmaXJzdE5hbWU6IHouc3RyaW5nKCksXG4gIGxhc3ROYW1lOiB6LnN0cmluZygpLFxuICBjb21wYW55TmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhZGRyZXNzOiB6LnN0cmluZygpLFxuICBhcGFydG1lbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogei5zdHJpbmcoKSxcbiAgc3RhdGU6IHouc3RyaW5nKCksXG4gIHppcENvZGU6IHouc3RyaW5nKCksXG4gIGNvdW50cnk6IHouc3RyaW5nKCksXG4gIHBob25lOiB6LnN0cmluZygpLFxufSlcblxuZXhwb3J0IGNvbnN0IGFjY291bnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKSxcbiAgc2hpcHBpbmdJbmZvOiBzaGlwcGluZ0luZm9TY2hlbWEub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50ID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19ydW5uaW5nOiB6LmJvb2xlYW4oKSxcbiAgaXNfc3RhcnRlZDogei5ib29sZWFuKCksXG4gIGlzX2ZpbmlzaGVkOiB6LmJvb2xlYW4oKSxcbiAgZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCksXG4gIGhhc19lcnJvcjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHN0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY29tcGxldGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNpcmN1aXRfanNvbjogei5hbnkoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlciA9IHouaW5mZXI8dHlwZW9mIG9yZGVyU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JkZXJGaWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9maWxlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLFxuICBjb250ZW50X3R5cGU6IHouc3RyaW5nKCksXG4gIGZvcl9wcm92aWRlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB1cGxvYWRlZF9hdDogei5zdHJpbmcoKSxcbiAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNvbnRlbnRfYnl0ZXM6IHouaW5zdGFuY2VvZihVaW50OEFycmF5KS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIE9yZGVyRmlsZSA9IHouaW5mZXI8dHlwZW9mIG9yZGVyRmlsZVNjaGVtYT5cblxuLy8gVE9ETzogUmVtb3ZlIHRoaXMgc2NoZW1hIGFmdGVyIG1pZ3JhdGlvbiB0byBhY2NvdW50UGFja2FnZXMgaXMgY29tcGxldGVcbmV4cG9ydCBjb25zdCBhY2NvdW50U25pcHBldFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgaGFzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEFjY291bnRTbmlwcGV0ID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFNuaXBwZXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBhY2NvdW50UGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9wYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50UGFja2FnZSA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRQYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVJlbGVhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLFxuICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlUmVsZWFzZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VSZWxlYXNlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUZpbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlRmlsZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VGaWxlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgY3JlYXRvcl9hY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBvd25lcl9vcmdfaWQ6IHouc3RyaW5nKCksXG4gIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfc25pcHBldDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvYXJkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGFja2FnZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX21vZGVsOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZm9vdHByaW50OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSkub3B0aW9uYWwoKSxcbiAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXRlc3RfdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHdlYnNpdGU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGFpX2Rlc2NyaXB0aW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFpX3VzYWdlX2luc3RydWN0aW9uczogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIFBhY2thZ2UgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wbnBfdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fcG5wX2FuYWx5emVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19kZm1fcmVzdWx0X2dlbmVyYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9maWxlc19kb3dubG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2FkZGVkX3RvX2NhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB1cGxvYWRlZF9nZXJiZXJfbWV0YWRhdGE6IHouYW55KCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBnZXJiZXJfYW5hbHlzaXM6IHouYW55KCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBhcmVfZ2VyYmVyc19nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjdXJyZW50X3N0ZXA6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxufSlcbmV4cG9ydCB0eXBlIEpsY3BjYk9yZGVyU3RhdGUgPSB6LmluZmVyPHR5cGVvZiBqbGNwY2JPcmRlclN0YXRlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hID0gei5vYmplY3Qoe1xuICBqbGNwY2Jfb3JkZXJfc3RlcF9ydW5faWQ6IHouc3RyaW5nKCksXG4gIGlzX3J1bm5pbmc6IHouYm9vbGVhbigpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgc3RlcF9mdW5jdGlvbl9uYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZXJyb3JfbWVzc2FnZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgSmxjcGNiT3JkZXJTdGVwUnVuID0gei5pbmZlcjx0eXBlb2YgamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgZGF0YWJhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkQ291bnRlcjogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgcGFja2FnZVJlbGVhc2VzOiB6LmFycmF5KHBhY2thZ2VSZWxlYXNlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgcGFja2FnZUZpbGVzOiB6LmFycmF5KHBhY2thZ2VGaWxlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgc2Vzc2lvbnM6IHouYXJyYXkoc2Vzc2lvblNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGxvZ2luUGFnZXM6IHouYXJyYXkobG9naW5QYWdlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYWNjb3VudHM6IHouYXJyYXkoYWNjb3VudFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VzOiB6LmFycmF5KHBhY2thZ2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBvcmRlcnM6IHouYXJyYXkob3JkZXJTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBvcmRlckZpbGVzOiB6LmFycmF5KG9yZGVyRmlsZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFjY291bnRTbmlwcGV0czogei5hcnJheShhY2NvdW50U25pcHBldFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFjY291bnRQYWNrYWdlczogei5hcnJheShhY2NvdW50UGFja2FnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGpsY3BjYk9yZGVyU3RhdGU6IHouYXJyYXkoamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGpsY3BjYk9yZGVyU3RlcFJ1bnM6IHouYXJyYXkoamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hKS5kZWZhdWx0KFtdKSxcbn0pXG5leHBvcnQgdHlwZSBEYXRhYmFzZVNjaGVtYSA9IHouaW5mZXI8dHlwZW9mIGRhdGFiYXNlU2NoZW1hPlxuIiwgImltcG9ydCBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IGF4aW9zIGZyb20gXCJyZWRheGlvc1wiXG5pbXBvcnQgdHlwZSB7IERiQ2xpZW50IH0gZnJvbSBcIi4vZGItY2xpZW50XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSwgUGFja2FnZUZpbGUsIFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcIi4vc2NoZW1hXCJcblxuY29uc3QgZXh0cmFjdFRzY2lEZXBlbmRlbmNpZXMgPSAoXG4gIGNvZGU6IHN0cmluZyxcbik6IEFycmF5PHsgb3duZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+ID0+IHtcbiAgY29uc3QgcmVnZXggPSAvQHRzY2lcXC8oW14uXSspXFwuKFteXCInXFxzXSspL2dcbiAgY29uc3QgbWF0Y2hlcyA9IEFycmF5LmZyb20oY29kZS5tYXRjaEFsbChyZWdleCkpXG4gIHJldHVybiBtYXRjaGVzLm1hcCgobWF0Y2gpID0+ICh7XG4gICAgb3duZXI6IG1hdGNoWzFdLFxuICAgIG5hbWU6IG1hdGNoWzJdLFxuICB9KSlcbn1cblxuY29uc3QgcmVnaXN0cnlBcGkgPSBheGlvcy5jcmVhdGUoe1xuICBiYXNlVVJMOiBcImh0dHBzOi8vcmVnaXN0cnktYXBpLnRzY2lyY3VpdC5jb21cIixcbiAgaGVhZGVyczoge1xuICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gIH0sXG59KVxuXG5jb25zdCBmZXRjaFBhY2thZ2VGcm9tUmVnaXN0cnkgPSBhc3luYyAob3duZXI6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGZ1bGxOYW1lID0gYCR7b3duZXJ9LyR7bmFtZX1gXG4gIGNvbnNvbGUubG9nKGBGZXRjaGluZyBwYWNrYWdlICR7ZnVsbE5hbWV9Li4uYClcblxuICBsZXQgcGFja2FnZURhdGFcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlZ2lzdHJ5QXBpLnBvc3QoXCIvcGFja2FnZXMvZ2V0XCIsIHtcbiAgICAgIG5hbWU6IGZ1bGxOYW1lLFxuICAgIH0pXG4gICAgcGFja2FnZURhdGEgPSByZXNwb25zZS5kYXRhXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggcGFja2FnZSBkYXRhIGZvciAke2Z1bGxOYW1lfTpgLCBlKVxuICAgIHRocm93IGVcbiAgfVxuXG4gIGxldCByZWxlYXNlRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlX3JlbGVhc2VzL2dldFwiLCB7XG4gICAgICBwYWNrYWdlX2lkOiBwYWNrYWdlRGF0YS5wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgfSlcbiAgICByZWxlYXNlRGF0YSA9IHJlc3BvbnNlLmRhdGFcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCByZWxlYXNlIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsIGUpXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgbGV0IGZpbGVzRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlX2ZpbGVzL2xpc3RcIiwge1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiByZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIH0pXG4gICAgZmlsZXNEYXRhID0gcmVzcG9uc2UuZGF0YVxuXG4gICAgLy8gRmV0Y2ggY29udGVudF90ZXh0IGZvciBlYWNoIGZpbGUgaW5kaXZpZHVhbGx5XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzRGF0YS5wYWNrYWdlX2ZpbGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmaWxlUmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VfZmlsZXMvZ2V0XCIsIHtcbiAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHJlbGVhc2VEYXRhLnBhY2thZ2VfcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgZmlsZV9wYXRoOiBmaWxlLmZpbGVfcGF0aCxcbiAgICAgICAgfSlcbiAgICAgICAgZmlsZS5jb250ZW50X3RleHQgPSBmaWxlUmVzcG9uc2UuZGF0YS5wYWNrYWdlX2ZpbGUuY29udGVudF90ZXh0XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBjb250ZW50IGZvciBmaWxlICR7ZmlsZS5maWxlX3BhdGh9IGluIHBhY2thZ2UgJHtmdWxsTmFtZX06YCxcbiAgICAgICAgICBlLFxuICAgICAgICApXG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggZmlsZXMgZGF0YSBmb3IgJHtmdWxsTmFtZX06YCwgZSlcbiAgICB0aHJvdyBlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhY2thZ2U6IHBhY2thZ2VEYXRhLnBhY2thZ2UgYXMgUGFja2FnZSxcbiAgICByZWxlYXNlOiByZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UgYXMgUGFja2FnZVJlbGVhc2UsXG4gICAgZmlsZXM6IGZpbGVzRGF0YS5wYWNrYWdlX2ZpbGVzIGFzIFBhY2thZ2VGaWxlW10sXG4gIH1cbn1cblxuY29uc3QgbG9hZFBhY2thZ2VXaXRoRGVwZW5kZW5jaWVzID0gYXN5bmMgKFxuICBkYjogRGJDbGllbnQsXG4gIG93bmVyOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgbG9hZGVkUGFja2FnZXMgPSBuZXcgU2V0PHN0cmluZz4oKSxcbikgPT4ge1xuICBjb25zdCBwYWNrYWdlS2V5ID0gYCR7b3duZXJ9LyR7bmFtZX1gXG4gIGlmIChsb2FkZWRQYWNrYWdlcy5oYXMocGFja2FnZUtleSkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGV0IHJlc3VsdFxuICB0cnkge1xuICAgIHJlc3VsdCA9IGF3YWl0IGZldGNoUGFja2FnZUZyb21SZWdpc3RyeShvd25lciwgbmFtZSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYFx1MjcxNyBGYWlsZWQgdG8gbG9hZCAke3BhY2thZ2VLZXl9YClcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IHsgcGFja2FnZTogcGtnLCByZWxlYXNlLCBmaWxlcyB9ID0gcmVzdWx0XG5cbiAgLy8gQ2hlY2sgaWYgcGFja2FnZSBhbHJlYWR5IGV4aXN0c1xuICBpZiAoZGIuZ2V0UGFja2FnZUJ5SWQocGtnLnBhY2thZ2VfaWQpKSB7XG4gICAgY29uc29sZS5sb2coYFx1MjcxMyBQYWNrYWdlICR7cGFja2FnZUtleX0gYWxyZWFkeSBleGlzdHNgKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBBZGQgcGFja2FnZSwgcmVsZWFzZSwgYW5kIGZpbGVzIHRvIGRiXG4gIGRiLmFkZFBhY2thZ2Uoe1xuICAgIC4uLnBrZyxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICB9KVxuXG4gIGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfSlcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAuLi5maWxlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICBsb2FkZWRQYWNrYWdlcy5hZGQocGFja2FnZUtleSlcbiAgY29uc29sZS5sb2coYFx1MjcxMyBMb2FkZWQgJHtwYWNrYWdlS2V5fWApXG5cbiAgLy8gTG9hZCBkZXBlbmRlbmNpZXNcbiAgY29uc3QgbWFpbkZpbGUgPSBmaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICApXG4gIGlmICghbWFpbkZpbGU/LmNvbnRlbnRfdGV4dCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBleHRyYWN0VHNjaURlcGVuZGVuY2llcyhtYWluRmlsZS5jb250ZW50X3RleHQpXG4gIGxldCBhbGxEZXBzTG9hZGVkID0gdHJ1ZVxuXG4gIGZvciAoY29uc3QgZGVwIG9mIGRlcGVuZGVuY2llcykge1xuICAgIGNvbnN0IGRlcExvYWRlZCA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgZGVwLm93bmVyLFxuICAgICAgZGVwLm5hbWUsXG4gICAgICBsb2FkZWRQYWNrYWdlcyxcbiAgICApXG4gICAgaWYgKCFkZXBMb2FkZWQpIHtcbiAgICAgIGFsbERlcHNMb2FkZWQgPSBmYWxzZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgXHUyNkEwXHVGRTBGIEZhaWxlZCB0byBsb2FkIGRlcGVuZGVuY3kgJHtkZXAub3duZXJ9LyR7ZGVwLm5hbWV9IGZvciAke3BhY2thZ2VLZXl9YCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsRGVwc0xvYWRlZFxufVxuXG5leHBvcnQgY29uc3QgbG9hZEF1dG9sb2FkUGFja2FnZXMgPSBhc3luYyAoZGI6IERiQ2xpZW50KSA9PiB7XG4gIGNvbnN0IGF1dG9sb2FkUGF0aCA9IHBhdGguam9pbihcbiAgICBwYXRoLmRpcm5hbWUoX19kaXJuYW1lKSxcbiAgICBcImRiXCIsXG4gICAgXCJhdXRvbG9hZC1wYWNrYWdlcy5qc29uXCIsXG4gIClcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGF1dG9sb2FkUGF0aCkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYXV0b2xvYWQtcGFja2FnZXMuanNvbiBmb3VuZFwiKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYXV0b2xvYWRDb250ZW50ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoYXV0b2xvYWRQYXRoLCBcInV0ZjhcIikpXG4gIGNvbnN0IGxvYWRlZFBhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgbGV0IHN1Y2Nlc3NDb3VudCA9IDBcbiAgbGV0IGZhaWx1cmVDb3VudCA9IDBcblxuICBmb3IgKGNvbnN0IHBhY2thZ2VSZWYgb2YgYXV0b2xvYWRDb250ZW50LnBhY2thZ2VzKSB7XG4gICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgcGFja2FnZVJlZi5vd25lcixcbiAgICAgIHBhY2thZ2VSZWYubmFtZSxcbiAgICAgIGxvYWRlZFBhY2thZ2VzLFxuICAgIClcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgc3VjY2Vzc0NvdW50KytcbiAgICB9IGVsc2Uge1xuICAgICAgZmFpbHVyZUNvdW50KytcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhgXFxuUGFja2FnZSBsb2FkaW5nIGNvbXBsZXRlOmApXG4gIGNvbnNvbGUubG9nKGBcdTI3MTMgU3VjY2Vzc2Z1bGx5IGxvYWRlZDogJHtzdWNjZXNzQ291bnR9IHBhY2thZ2VzYClcbiAgaWYgKGZhaWx1cmVDb3VudCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhgXHUyNzE3IEZhaWxlZCB0byBsb2FkOiAke2ZhaWx1cmVDb3VudH0gcGFja2FnZXNgKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHsgbG9hZEF1dG9sb2FkUGFja2FnZXMgfSBmcm9tIFwiLi9hdXRvbG9hZC1kZXYtcGFja2FnZXNcIlxuXG5leHBvcnQgY29uc3Qgc2VlZCA9IChkYjogRGJDbGllbnQpID0+IHtcbiAgY29uc3QgeyBhY2NvdW50X2lkIH0gPSBkYi5hZGRBY2NvdW50KHtcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNoaXBwaW5nSW5mbzoge1xuICAgICAgZmlyc3ROYW1lOiBcIlRlc3RcIixcbiAgICAgIGxhc3ROYW1lOiBcIlVzZXJcIixcbiAgICAgIGNvbXBhbnlOYW1lOiBcIlRlc3QgQ29tcGFueVwiLFxuICAgICAgYWRkcmVzczogXCIxMjMgVGVzdCBTdFwiLFxuICAgICAgYXBhcnRtZW50OiBcIkFwdCA0QlwiLFxuICAgICAgY2l0eTogXCJUZXN0dmlsbGVcIixcbiAgICAgIHN0YXRlOiBcIk5ZXCIsXG4gICAgICB6aXBDb2RlOiBcIjEwMDAxXCIsXG4gICAgICBjb3VudHJ5OiBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiLFxuICAgICAgcGhvbmU6IFwiNTU1LTEyMy00NTY3XCIsXG4gICAgfSxcbiAgfSlcbiAgZGIuYWRkQWNjb3VudCh7XG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInNldmVpYmFyXCIsXG4gIH0pXG5cbiAgaWYgKHByb2Nlc3MuZW52LkFVVE9MT0FEX1BBQ0tBR0VTID09PSBcInRydWVcIikge1xuICAgIGxvYWRBdXRvbG9hZFBhY2thZ2VzKGRiKVxuICB9XG5cbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJ0ZXN0dXNlci9teS10ZXN0LWJvYXJkXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJteS10ZXN0LWJvYXJkXCIsXG4gICAgb3duZXJfbmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIGNvZGU6IGBcbmltcG9ydCB7IEE1NTVUaW1lciB9IGZyb20gXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIlxuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiAoXG4gIDxib2FyZCB3aWR0aD1cIjEwbW1cIiBoZWlnaHQ9XCIxMG1tXCI+XG4gICAgPEE1NTVUaW1lciBuYW1lPVwiVTFcIiAvPlxuICA8L2JvYXJkPlxuKWAudHJpbSgpLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc25pcHBldF90eXBlOiBcImJvYXJkXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBzaW1wbGUgYm9hcmQgd2l0aCBhbiBBNTU1IFRpbWVyIGNvbXBvbmVudFwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICAgIHN1cHBsaWVyX3BhcnRfbnVtYmVyczoge30sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgIGhlaWdodDogMTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIERlZmluZSB0aGUgQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyIHBhY2thZ2VcbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJzZXZlaWJhci9hNTU1dGltZXJcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcImE1NTV0aW1lclwiLFxuICAgIG93bmVyX25hbWU6IFwic2V2ZWliYXJcIixcbiAgICBjb2RlOiBgXG5leHBvcnQgY29uc3QgQTU1NVRpbWVyID0gKHsgbmFtZSB9OiB7IG5hbWU6IHN0cmluZyB9KSA9PiAoXG4gIDxjaGlwIG5hbWU9e25hbWV9IGZvb3RwcmludD1cImRpcDhcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiBgXG5kZWNsYXJlIG1vZHVsZSBcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiIHtcbiAgZXhwb3J0IGNvbnN0IEE1NTVUaW1lcjogKHsgbmFtZSB9OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9KSA9PiBhbnk7XG59XG5gLnRyaW0oKSxcbiAgICBjb21waWxlZF9qczogYFxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkE1NTVUaW1lciA9IHZvaWQgMDtcbmNvbnN0IEE1NTVUaW1lciA9ICh7XG4gIG5hbWVcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2hpcFwiLCB7XG4gIG5hbWU6IG5hbWUsXG4gIGZvb3RwcmludDogXCJkaXA4XCJcbn0pO1xuZXhwb3J0cy5BNTU1VGltZXIgPSBBNTU1VGltZXI7XG4gICAgYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgc2ltcGxlIHBhY2thZ2Ugd2l0aCBhbiBBNTU1IFRpbWVyIGNvbXBvbmVudFwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogNTAsXG4gICAgICAgIGhlaWdodDogNTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIEFkZCBhIHNuaXBwZXQgdGhhdCBvdXRwdXRzIGEgc3F1YXJlIHdhdmVmb3JtIHVzaW5nIHRoZSBhNTU1dGltZXJcblxuICBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL2E1NTV0aW1lci1zcXVhcmUtd2F2ZVwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwiYTU1NXRpbWVyLXNxdWFyZS13YXZlXCIsXG4gICAgb3duZXJfbmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIGNvZGU6IGBcbmltcG9ydCB7IEE1NTVUaW1lciB9IGZyb20gXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIlxuXG5leHBvcnQgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZSA9ICgpID0+IChcbiAgPEE1NTVUaW1lciBuYW1lPVwiVTFcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiAnZXhwb3J0IGRlY2xhcmUgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZTogKCkgPT4gaW1wb3J0KFwicmVhY3QvanN4LXJ1bnRpbWVcIikuSlNYLkVsZW1lbnQ7XFxuJyxcbiAgICBjb21waWxlZF9qczpcbiAgICAgICdcInVzZSBzdHJpY3RcIjtcXG5cXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcXG4gIHZhbHVlOiB0cnVlXFxufSk7XFxuZXhwb3J0cy5TcXVhcmVXYXZlTW9kdWxlID0gdm9pZCAwO1xcbnZhciBfc2V2ZWliYXIgPSByZXF1aXJlKFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCIpO1xcbmNvbnN0IFNxdWFyZVdhdmVNb2R1bGUgPSAoKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfc2V2ZWliYXIuQTU1NVRpbWVyLCB7XFxuICBuYW1lOiBcIlUxXCJcXG59KTtcXG5leHBvcnRzLlNxdWFyZVdhdmVNb2R1bGUgPSBTcXVhcmVXYXZlTW9kdWxlOycsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBIHNpbXBsZSBwYWNrYWdlIHRoYXQgb3V0cHV0cyBhIHNxdWFyZSB3YXZlZm9ybSB1c2luZyB0aGUgYTU1NXRpbWVyXCIsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBuYW1lOiBcInBpbjFcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMVwiLCBcIjFcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgbmFtZTogXCJwaW4yXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjJcIiwgXCIyXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIG5hbWU6IFwicGluM1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4zXCIsIFwiM1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBuYW1lOiBcInBpbjRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNFwiLCBcIjRcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgbmFtZTogXCJwaW41XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjVcIiwgXCI1XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIG5hbWU6IFwicGluNlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW42XCIsIFwiNlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBuYW1lOiBcInBpbjdcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluN1wiLCBcIjdcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgbmFtZTogXCJwaW44XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjhcIiwgXCI4XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfY29tcG9uZW50XCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZ0eXBlOiBcInNpbXBsZV9jaGlwXCIsXG4gICAgICAgIG5hbWU6IFwiVTFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX2NvbXBvbmVudFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IDEuMSxcbiAgICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHBpbl9zcGFjaW5nOiAwLjIsXG4gICAgICAgIHBvcnRfbGFiZWxzOiB7fSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzNcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF80XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzVcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzdcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA3LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfY29tcG9uZW50XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IDguODIsXG4gICAgICAgIGhlaWdodDogOC44MixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfYm9hcmRcIixcbiAgICAgICAgcGNiX2JvYXJkX2lkOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpY2tuZXNzOiAxLjQsXG4gICAgICAgIG51bV9sYXllcnM6IDQsXG4gICAgICAgIHdpZHRoOiA1MCxcbiAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIxXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMlwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjNcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNFwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI1XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNlwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjdcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjhcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXCIsXG4gICAgICAgIHBjYl9zaWxrc2NyZWVuX3BhdGhfaWQ6IFwicGNiX3NpbGtzY3JlZW5fcGF0aF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjcwOTQ2MzgwMzc5MDUwMjYsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC4zODM5NTkwNDM4MDYzMDY3LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogNi4xNDM2NDQ3NzU3MjI1NTZlLTE3LFxuICAgICAgICAgICAgeTogMy42MDY2NjY2NjY2NjY2Njc0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC4zODM5NTkwNDM4MDYzMDY3NCxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuNzA5NDYzODAzNzkwNTAyNyxcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdHJva2Vfd2lkdGg6IDAuMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2FkX2NvbXBvbmVudFwiLFxuICAgICAgICBjYWRfY29tcG9uZW50X2lkOiBcImNhZF9jb21wb25lbnRfMFwiLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLjcsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZvb3RwcmludGVyX3N0cmluZzogXCJkaXA4XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG5cbiAgZGIuYWRkT3JkZXIoe1xuICAgIGFjY291bnRfaWQsXG4gICAgaXNfcnVubmluZzogZmFsc2UsXG4gICAgaXNfc3RhcnRlZDogZmFsc2UsXG4gICAgaXNfZmluaXNoZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfcmVzaXN0b3JcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzFcIixcbiAgICAgICAgbmFtZTogXCJSMVwiLFxuICAgICAgICByZXNpc3RhbmU6IFwiMWtcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gIH0pXG59XG4iLCAiaW1wb3J0IHR5cGUgeyBEYkNsaWVudCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvZGItY2xpZW50XCJcbmltcG9ydCB7IGNyZWF0ZURhdGFiYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnRcIlxuaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuXG5leHBvcnQgY29uc3Qgd2l0aERiOiBNaWRkbGV3YXJlPFxuICB7fSxcbiAge1xuICAgIGRiOiBEYkNsaWVudFxuICB9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmICghY3R4LmRiKSB7XG4gICAgY3R4LmRiID0gY3JlYXRlRGF0YWJhc2UoKVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcblxuZXhwb3J0IHR5cGUgQ3R4RXJyb3JGbiA9IChcbiAgc3RhdHVzOiBudW1iZXIsXG4gIGVycm9yX3BheWxvYWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBzdHJpbmdcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgfSxcbikgPT4gUmVzcG9uc2VcblxuZXhwb3J0IGNvbnN0IHdpdGhDdHhFcnJvcjogTWlkZGxld2FyZTxcbiAge30sXG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICB9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGN0eC5lcnJvciA9IChzdGF0dXMsIGVycm9yX3BheWxvYWQpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IGVycm9yX3BheWxvYWQgfSksIHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG59XG4iLCAiaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgdHlwZSB7IEN0eEVycm9yRm4gfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5cbmV4cG9ydCBjb25zdCB3aXRoU2Vzc2lvbkF1dGg6IE1pZGRsZXdhcmU8XG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICAgIGRiOiBhbnlcbiAgfSxcbiAge1xuICAgIGF1dGg6IHtcbiAgICAgIHR5cGU6IFwic2Vzc2lvblwiXG4gICAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICAgIHBlcnNvbmFsX29yZ19pZDogc3RyaW5nXG4gICAgICBnaXRodWJfdXNlcm5hbWU6IHN0cmluZ1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gICAgfVxuICB9LFxuICB7fVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAocmVxLm1ldGhvZCA9PT0gXCJPUFRJT05TXCIpIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuXG4gIGNvbnN0IHRva2VuID0gcmVxLmhlYWRlcnMuZ2V0KFwiYXV0aG9yaXphdGlvblwiKT8uc3BsaXQoXCJCZWFyZXIgXCIpPy5bMV1cblxuICAvLyBPbmx5IGNoZWNrIGRhdGFiYXNlIGFjY291bnRzIHdoZW4gd2UncmUgaW4gYSBCdW4gdGVzdCBlbnZpcm9ubWVudFxuICBpZiAocHJvY2Vzcy5lbnYuQlVOX1RFU1QgPT09IFwidHJ1ZVwiICYmIGN0eC5kYj8uYWNjb3VudHMpIHtcbiAgICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoKGFjYzogYW55KSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gdG9rZW4pXG5cbiAgICBpZiAoYWNjb3VudCkge1xuICAgICAgY3R4LmF1dGggPSB7XG4gICAgICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgIHBlcnNvbmFsX29yZ19pZDogYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgICBzZXNzaW9uX2lkOiBgc2Vzc2lvbi0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIGFsbCBvdGhlciBlbnZpcm9ubWVudHMgb3IgaWYgYWNjb3VudCBub3QgZm91bmQgaW4gdGVzdCwgdXNlIGhhcmRjb2RlZCBhdXRoXG4gIGN0eC5hdXRoID0ge1xuICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgIGFjY291bnRfaWQ6IFwiYWNjb3VudC0xMjM0XCIsXG4gICAgcGVyc29uYWxfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgc2Vzc2lvbl9pZDogXCJzZXNzaW9uLTEyMzRcIixcbiAgfVxuXG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHR5cGUgeyBDdHhFcnJvckZuIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuXG5leHBvcnQgY29uc3Qgd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGg6IE1pZGRsZXdhcmU8XG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICAgIGRiOiBhbnlcbiAgfSxcbiAge1xuICAgIGF1dGg/OiB7XG4gICAgICB0eXBlOiBcInNlc3Npb25cIlxuICAgICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgICBwZXJzb25hbF9vcmdfaWQ6IHN0cmluZ1xuICAgICAgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmdcbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAge31cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKHJlcS5tZXRob2QgPT09IFwiT1BUSU9OU1wiKSByZXR1cm4gbmV4dChyZXEsIGN0eClcblxuICBjb25zdCB0b2tlbiA9IHJlcS5oZWFkZXJzLmdldChcImF1dGhvcml6YXRpb25cIik/LnNwbGl0KFwiQmVhcmVyIFwiKT8uWzFdXG5cbiAgaWYgKCF0b2tlbikge1xuICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LkJVTl9URVNUID09PSBcInRydWVcIiAmJiBjdHguZGI/LmFjY291bnRzKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IHRva2VuKVxuXG4gICAgaWYgKGFjY291bnQpIHtcbiAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICBwZXJzb25hbF9vcmdfaWQ6IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgc2Vzc2lvbl9pZDogYHNlc3Npb24tJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgfVxuXG4gIGN0eC5hdXRoID0ge1xuICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgIGFjY291bnRfaWQ6IFwiYWNjb3VudC0xMjM0XCIsXG4gICAgcGVyc29uYWxfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgc2Vzc2lvbl9pZDogXCJzZXNzaW9uLTEyMzRcIixcbiAgfVxuXG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCBrbGV1ciBmcm9tIFwia2xldXJcIlxuXG5leHBvcnQgY29uc3Qgd2l0aEVycm9ySGFuZGxpbmc6IE1pZGRsZXdhcmU8e30sIHt9PiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBuZXh0KHJlcSwgY3R4KVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcihrbGV1ci5yZWQoXCJJbnRlcmNlcHRlZCBlcnJvcjpcIiksIGVycm9yKVxuICAgIC8vIElmIGVycm9yIGlzIGEgUmVzcG9uc2UsIHJldHVybiBpdFxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gZXJyb3JcbiAgICB9XG4gICAgcmV0dXJuIChjdHggYXMgYW55KS5qc29uKFxuICAgICAge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbWVzc2FnZTogZXJyb3I/Lm1lc3NhZ2UsXG4gICAgICAgICAgZXJyb3JfY29kZTogZXJyb3I/LmVycm9yX2NvZGUgPz8gXCJpbnRlcm5hbF9zZXJ2ZXJfZXJyb3JcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IHN0YXR1czogZXJyb3I/LnN0YXR1cyB8fCA1MDAgfSxcbiAgICApXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQga2xldXIgZnJvbSBcImtsZXVyXCJcblxuLy8gRU5BQkxFIENPTE9SUyBBTFdBWVNcbmtsZXVyLmVuYWJsZWQgPSB0cnVlXG5cbmNvbnN0IGNvbG9yU3RhdHVzID0gKHN0YXR1czogbnVtYmVyKSA9PiB7XG4gIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgcmV0dXJuIGtsZXVyLnJlZChzdGF0dXMudG9TdHJpbmcoKSlcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIHJldHVybiBrbGV1ci55ZWxsb3coc3RhdHVzLnRvU3RyaW5nKCkpXG4gIH1cbiAgcmV0dXJuIGtsZXVyLmdyZWVuKHN0YXR1cy50b1N0cmluZygpKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlciB7XG4gIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbiAgaW5mbzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIHdhcm46ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICBkZWJ1ZzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjb25zdCB3aXRoUmVxdWVzdExvZ2dpbmc6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgbG9nZ2VyOiBMb2dnZXJcbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAoIWN0eC5sb2dnZXIpIHtcbiAgICBjdHgubG9nZ2VyID0ge1xuICAgICAgZXJyb3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5lcnJvciguLi5hcmdzKSxcbiAgICAgIGluZm86ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5sb2coLi4uYXJncyksXG4gICAgICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUud2FybiguLi5hcmdzKSxcbiAgICAgIGRlYnVnOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKC4uLmFyZ3MpLFxuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIGN0eC5sb2dnZXIuaW5mbyhrbGV1ci5ibHVlKGA+ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApKVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbmV4dChyZXEsIGN0eClcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2VCb2R5ID0gYXdhaXQgcmVzcG9uc2UuY2xvbmUoKS50ZXh0KClcbiAgICAgIGN0eC5sb2dnZXIuaW5mbyhcbiAgICAgICAgYDwgJHtjb2xvclN0YXR1cyhyZXNwb25zZS5zdGF0dXMpfSAke2tsZXVyLmdyYXkocmVzcG9uc2VCb2R5LnNsaWNlKDAsIDQwKS5yZXBsYWNlKC8oXFxyXFxufFxcbnxcXHIpL2dtLCBcIlwiKSl9YCxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oYDwgJHtjb2xvclN0YXR1cyhyZXNwb25zZS5zdGF0dXMpfWApXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBjdHgubG9nZ2VyLmluZm8oa2xldXIucmVkKGA8IEVSUk9SICR7ZS50b1N0cmluZygpLnNsaWNlKDAsIDUwKX0uLi5gKSlcbiAgICB0aHJvdyBlXG4gIH1cbn1cbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc2VlZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2VlZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKGN0eC5kYi5nZXRTdGF0ZSgpKVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJTdGVwcyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9vcmRlci1zdGVwc1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzdWNjZXNzOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgLy8gR2V0IGFsbCBvcmRlcnMgdGhhdCBhcmVuJ3QgZmluaXNoZWRcbiAgY29uc3Qgb3JkZXJzID0gY3R4LmRiLm9yZGVycy5maWx0ZXIoKG9yZGVyKSA9PiAhb3JkZXIuaXNfZmluaXNoZWQpXG4gIGNvbnN0IHVwZGF0ZWRPcmRlcnMgPSBbXVxuXG4gIGZvciAoY29uc3Qgb3JkZXIgb2Ygb3JkZXJzKSB7XG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGN0eC5kYi5nZXRKbGNwY2JPcmRlclN0YXRlc0J5T3JkZXJJZChvcmRlci5vcmRlcl9pZClcbiAgICBpZiAoIW9yZGVyU3RhdGUpIGNvbnRpbnVlXG5cbiAgICAvLyBGaW5kIHRoZSBuZXh0IHN0ZXAgdG8gY29tcGxldGVcbiAgICBsZXQgbmV4dFN0ZXBJbmRleCA9IC0xXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmRlclN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdGVwID0gb3JkZXJTdGVwc1tpXVxuICAgICAgaWYgKCFvcmRlclN0YXRlW3N0ZXBdKSB7XG4gICAgICAgIG5leHRTdGVwSW5kZXggPSBpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYWxsIHN0ZXBzIGFyZSBjb21wbGV0ZWQgb3Igbm8gbmV4dCBzdGVwIGZvdW5kXG4gICAgaWYgKG5leHRTdGVwSW5kZXggPT09IC0xKSB7XG4gICAgICB1cGRhdGVkT3JkZXJzLnB1c2goe1xuICAgICAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgICAgIGN1cnJlbnRfc3RlcDogbnVsbCxcbiAgICAgIH0pXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgbmV4dCBzdGVwIHRvIHRydWVcbiAgICBjb25zdCBuZXh0U3RlcCA9IG9yZGVyU3RlcHNbbmV4dFN0ZXBJbmRleF1cbiAgICBjb25zdCB1cGRhdGVzID0ge1xuICAgICAgW25leHRTdGVwXTogdHJ1ZSxcbiAgICAgIGN1cnJlbnRfc3RlcDogbmV4dFN0ZXAsXG4gICAgfVxuXG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgbGFzdCBzdGVwLCBhbHNvIHVwZGF0ZSB0aGUgb3JkZXIgc3RhdHVzXG4gICAgaWYgKG5leHRTdGVwSW5kZXggPT09IG9yZGVyU3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgY3R4LmRiLnVwZGF0ZU9yZGVyKG9yZGVyLm9yZGVyX2lkLCB7XG4gICAgICAgIGlzX2ZpbmlzaGVkOiB0cnVlLFxuICAgICAgICBjb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY3R4LmRiLnVwZGF0ZUpsY3BjYk9yZGVyU3RhdGUob3JkZXIub3JkZXJfaWQsIHVwZGF0ZXMpXG5cbiAgICB1cGRhdGVkT3JkZXJzLnB1c2goe1xuICAgICAgb3JkZXJfaWQ6IG9yZGVyLm9yZGVyX2lkLFxuICAgICAgY3VycmVudF9zdGVwOiBuZXh0U3RlcCxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICB9KVxufSlcbiIsICJleHBvcnQgY29uc3Qgb3JkZXJTdGVwcyA9IFtcbiAgXCJhcmVfZ2VyYmVyc19nZW5lcmF0ZWRcIixcbiAgXCJhcmVfZ2VyYmVyc191cGxvYWRlZFwiLFxuICBcImlzX2dlcmJlcl9hbmFseXplZFwiLFxuICBcImFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWRcIixcbiAgXCJpc19wY2JfYWRkZWRfdG9fY2FydFwiLFxuICBcImlzX2JvbV91cGxvYWRlZFwiLFxuICBcImlzX3BucF91cGxvYWRlZFwiLFxuICBcImlzX2JvbV9wbnBfYW5hbHl6ZWRcIixcbiAgXCJpc19ib21fcGFyc2luZ19jb21wbGV0ZVwiLFxuICBcImFyZV9jb21wb25lbnRzX2F2YWlsYWJsZVwiLFxuICBcImlzX3BhdGNoX21hcF9nZW5lcmF0ZWRcIixcbiAgXCJpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZFwiLFxuICBcImlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkXCIsXG4gIFwiYXJlX2ZpbGVzX2Rvd25sb2FkZWRcIixcbiAgXCJhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWRcIixcbiAgXCJhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZFwiLFxuICBcImlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkXCIsXG4gIFwiaXNfYWRkZWRfdG9fY2FydFwiLFxuXSBhcyBjb25zdFxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzZWVkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHsgb2s6IHouYm9vbGVhbigpIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHNlZWQoY3R4LmRiKVxuXG4gIHJldHVybiBjdHguanNvbih7IG9rOiB0cnVlIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhY2NvdW50X2JhbGFuY2U6IHoub2JqZWN0KHtcbiAgICAgIG1vbnRobHlfYWlfYnVkZ2V0X3VzZWRfdXNkOiB6Lm51bWJlcigpLFxuICAgIH0pLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICAvLyBGb3IgdGhpcyBleGFtcGxlLCB3ZSdsbCByZXR1cm4gYSBtb2NrIGJhbGFuY2VcbiAgLy8gSW4gYSByZWFsIGltcGxlbWVudGF0aW9uLCB5b3Ugd291bGQgZmV0Y2ggdGhpcyBmcm9tIGEgZGF0YWJhc2Ugb3IgZXh0ZXJuYWwgc2VydmljZVxuICBjb25zdCBtb2NrQmFsYW5jZSA9IHtcbiAgICBtb250aGx5X2FpX2J1ZGdldF91c2VkX3VzZDogMi41LFxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBhY2NvdW50X2JhbGFuY2U6IG1vY2tCYWxhbmNlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgYWNjb3VudFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnQ6IGFjY291bnRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChjdHguYXV0aC5hY2NvdW50X2lkKVxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQge1xuICBhY2NvdW50U2NoZW1hLFxuICBzaGlwcGluZ0luZm9TY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNoaXBwaW5nSW5mbzogc2hpcHBpbmdJbmZvU2NoZW1hLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudDogYWNjb3VudFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzaGlwcGluZ0luZm8gfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHVwZGF0ZWRBY2NvdW50ID0gY3R4LmRiLnVwZGF0ZUFjY291bnQoY3R4LmF1dGguYWNjb3VudF9pZCwge1xuICAgIHNoaXBwaW5nSW5mbyxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWRBY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgYWNjb3VudDogdXBkYXRlZEFjY291bnQgfSlcbn0pXG4iLCAiLyoqXG4gKiBGb3J3YXJkIHJlcXVlc3QgdG8gYW50aHJvcGljXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChyZXE6IFJlcXVlc3QpID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXEudXJsKVxuICBjb25zdCBhbnRocm9waWNBcGlLZXkgPSBwcm9jZXNzLmVudi5BTlRIUk9QSUNfQVBJX0tFWVxuXG4gIGlmICghYW50aHJvcGljQXBpS2V5KSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIkFudGhyb3BpYyBBUEkga2V5IGlzIG5vdCBzZXRcIiwgeyBzdGF0dXM6IDUwMCB9KVxuICB9XG5cbiAgY29uc3QgYW50aHJvcGljVXJsID1cbiAgICBcImh0dHBzOi8vYXBpLmFudGhyb3BpYy5jb21cIiArIHVybC5wYXRobmFtZS5yZXBsYWNlKC9eXFwvYXBpXFwvYWkvLCBcIlwiKVxuXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXEuaGVhZGVycylcbiAgaGVhZGVycy5zZXQoXCJ4LWFwaS1rZXlcIiwgYCR7YW50aHJvcGljQXBpS2V5fWApXG5cbiAgY29uc29sZS5sb2coXCJzZW5kaW5nIHJlcXVlc3QgdG8gYW50aHJvcGljXCIpXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYW50aHJvcGljVXJsLCB7XG4gICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgYm9keTogcmVxLmJvZHksXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGR1cGxleDogXCJoYWxmXCIsXG4gIH0pLnRoZW4oKHIpID0+IHIuanNvbigpKVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpLCB7XG4gICAgc3RhdHVzOiAyMDAsXG4gICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICB9KVxufVxuIiwgImltcG9ydCBhaSBmcm9tIFwiLi9haS9bLi4uYW55cm91dGVdXCJcbmV4cG9ydCBkZWZhdWx0IGFpXG4iLCAiaW1wb3J0IHsgUmVhZGFibGVTdHJlYW0gfSBmcm9tIFwic3RyZWFtL3dlYlwiXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChyZXE6IFJlcXVlc3QpID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXEudXJsKVxuICBjb25zdCBhbnRocm9waWNBcGlLZXkgPSBwcm9jZXNzLmVudi5BTlRIUk9QSUNfQVBJX0tFWVxuXG4gIGlmICghYW50aHJvcGljQXBpS2V5KSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIkFudGhyb3BpYyBBUEkga2V5IGlzIG5vdCBzZXRcIiwgeyBzdGF0dXM6IDUwMCB9KVxuICB9XG5cbiAgY29uc3QgYW50aHJvcGljVXJsID1cbiAgICBcImh0dHBzOi8vYXBpLmFudGhyb3BpYy5jb21cIiArIHVybC5wYXRobmFtZS5yZXBsYWNlKC9eXFwvYXBpXFwvYWkvLCBcIlwiKVxuXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXEuaGVhZGVycylcbiAgaGVhZGVycy5zZXQoXCJ4LWFwaS1rZXlcIiwgYCR7YW50aHJvcGljQXBpS2V5fWApXG4gIGhlYWRlcnMuc2V0KFwiQWNjZXB0XCIsIFwidGV4dC9ldmVudC1zdHJlYW1cIilcbiAgaGVhZGVycy5zZXQoXCJDYWNoZS1Db250cm9sXCIsIFwibm8tY2FjaGVcIilcbiAgaGVhZGVycy5zZXQoXCJDb25uZWN0aW9uXCIsIFwia2VlcC1hbGl2ZVwiKVxuXG4gIGNvbnNvbGUubG9nKFwic2VuZGluZyByZXF1ZXN0IHRvIGFudGhyb3BpY1wiKVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFudGhyb3BpY1VybCwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgIGJvZHk6IHJlcS5ib2R5LFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICB9KVxuXG4gIC8vIENoZWNrIGlmIHRoZSByZXNwb25zZSBpcyBzdWNjZXNzZnVsXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgYEFudGhyb3BpYyBBUEkgcmV0dXJuZWQgYW4gZXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCxcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIFJlYWRhYmxlU3RyZWFtIHRvIHByb2Nlc3MgdGhlIHJlc3BvbnNlXG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgYXN5bmMgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keSEuZ2V0UmVhZGVyKClcblxuICAgICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgICAgaWYgKGRvbmUpIGJyZWFrXG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICByZWFkZXIucmVsZWFzZUxvY2soKVxuICAgICAgICBjb250cm9sbGVyLmNsb3NlKClcbiAgICAgIH1cbiAgICB9LFxuICB9KVxuXG4gIC8vIFJldHVybiBhIHN0cmVhbWluZyByZXNwb25zZVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHN0cmVhbSBhcyBhbnksIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcInRleHQvZXZlbnQtc3RyZWFtXCIsXG4gICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1jYWNoZVwiLFxuICAgICAgQ29ubmVjdGlvbjogXCJrZWVwLWFsaXZlXCIsXG4gICAgfSxcbiAgfSlcbn1cbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHsgb2s6IHouYm9vbGVhbigpIH0pLFxufSkoYXN5bmMgKHJlcTogYW55LCBjdHg6IGFueSkgPT4ge1xuICByZXR1cm4gY3R4Lmpzb24oeyBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IG1zIGZyb20gXCJtc1wiXG5pbXBvcnQgeyBTaWduSldUIH0gZnJvbSBcImpvc2VcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzZXNzaW9uOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uX2lkOiB6LnN0cmluZygpLFxuICAgICAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgICAgIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gICAgICBpc19jbGlfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gICAgICB0b2tlbjogei5zdHJpbmcoKSxcbiAgICB9KSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IGFjY291bnRcbiAgaWYgKFwiYWNjb3VudF9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChyZXEuanNvbkJvZHkuYWNjb3VudF9pZClcbiAgfSBlbHNlIHtcbiAgICBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQocmVxLmpzb25Cb2R5LmdpdGh1Yl91c2VybmFtZSlcbiAgfVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG5ld19zZXNzaW9uID0gY3R4LmRiLmNyZWF0ZVNlc3Npb24oe1xuICAgIGV4cGlyZXNfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgKyBtcyhcIjYwIGRheVwiKSkudG9JU09TdHJpbmcoKSxcbiAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgaXNfY2xpX3Nlc3Npb246IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IHRva2VuID0gYXdhaXQgbmV3IFNpZ25KV1Qoe1xuICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICBzZXNzaW9uX2lkOiBuZXdfc2Vzc2lvbi5zZXNzaW9uX2lkLFxuICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gIH0pXG4gICAgLnNldFByb3RlY3RlZEhlYWRlcih7IGFsZzogXCJIUzI1NlwiIH0pXG4gICAgLnNldEV4cGlyYXRpb25UaW1lKG5ldyBEYXRlKERhdGUubm93KCkgKyBtcyhcIjYwIGRheVwiKSkudG9JU09TdHJpbmcoKSlcbiAgICAuc2lnbihuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocHJvY2Vzcy5lbnYuSldUX1NFQ1JFVCB8fCBcIlwiKSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHNlc3Npb246IHtcbiAgICAgIC4uLm5ld19zZXNzaW9uLFxuICAgICAgdG9rZW4sXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyRmlsZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9maWxlX2lkIH0gPSByZXEucXVlcnlcblxuICBjb25zdCBvcmRlckZpbGUgPSBjdHguZGIuZ2V0T3JkZXJGaWxlQnlJZChvcmRlcl9maWxlX2lkKVxuICBpZiAoIW9yZGVyRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX2ZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJGaWxlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCksXG4gICAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgZm9yX3Byb3ZpZGVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfaWQsIGNvbnRlbnRfYmFzZTY0LCBpc19nZXJiZXJzX3ppcCwgZm9yX3Byb3ZpZGVyIH0gPVxuICAgIHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IG9yZGVyID0gY3R4LmRiLmdldE9yZGVyQnlJZChvcmRlcl9pZClcbiAgaWYgKCFvcmRlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgIG9yZGVyX2lkLFxuICAgIGlzX2dlcmJlcnNfemlwOiBpc19nZXJiZXJzX3ppcCB8fCBmYWxzZSxcbiAgICBjb250ZW50X3R5cGU6IFwiYmFzZTY0XCIsXG4gICAgZm9yX3Byb3ZpZGVyOiBmb3JfcHJvdmlkZXIgfHwgbnVsbCxcbiAgICB1cGxvYWRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbnRlbnRfdGV4dDogQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwidXRmLThcIiksXG4gICAgY29udGVudF9ieXRlczogVWludDhBcnJheS5mcm9tKGF0b2IoY29udGVudF9iYXNlNjQpLCAoYykgPT5cbiAgICAgIGMuY2hhckNvZGVBdCgwKSxcbiAgICApLFxuICB9XG5cbiAgY29uc3Qgb3JkZXJGaWxlID0gY3R4LmRiLmFkZE9yZGVyRmlsZShuZXdPcmRlckZpbGUpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7XG4gIEpsY3BjYk9yZGVyU3RhdGUsXG4gIHR5cGUgT3JkZXIsXG4gIG9yZGVyU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkudXVpZCgpLm9wdGlvbmFsKCksXG4gICAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLFxuICAgIH0pXG4gICAgLnJlZmluZSgoZGF0YSkgPT4gZGF0YS5wYWNrYWdlX3JlbGVhc2VfaWQgfHwgZGF0YS5jaXJjdWl0X2pzb24sIHtcbiAgICAgIG1lc3NhZ2U6IFwiRWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBjaXJjdWl0X2pzb24gbXVzdCBiZSBwcm92aWRlZFwiLFxuICAgIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcjogb3JkZXJTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgY2lyY3VpdF9qc29uIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBuZXdPcmRlciA9IHtcbiAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIGlzX3J1bm5pbmc6IGZhbHNlLFxuICAgIGlzX3N0YXJ0ZWQ6IGZhbHNlLFxuICAgIGlzX2ZpbmlzaGVkOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzdGFydGVkX2F0OiBudWxsLFxuICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb24sXG4gIH1cblxuICBjb25zdCBvcmRlciA9IGN0eC5kYi5hZGRPcmRlcihuZXdPcmRlcilcblxuICBjb25zdCBuZXdKbGNwY2JPcmRlclN0YXRlID0ge1xuICAgIG9yZGVyX2lkOiBvcmRlci5vcmRlcl9pZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IGZhbHNlLFxuICAgIGlzX2dlcmJlcl9hbmFseXplZDogZmFsc2UsXG4gICAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gICAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICAgIGlzX2JvbV91cGxvYWRlZDogZmFsc2UsXG4gICAgaXNfcG5wX3VwbG9hZGVkOiBmYWxzZSxcbiAgICBpc19ib21fcG5wX2FuYWx5emVkOiBmYWxzZSxcbiAgICBpc19ib21fcGFyc2luZ19jb21wbGV0ZTogZmFsc2UsXG4gICAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiBmYWxzZSxcbiAgICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZDogZmFsc2UsXG4gICAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IGZhbHNlLFxuICAgIGFyZV9maWxlc19kb3dubG9hZGVkOiBmYWxzZSxcbiAgICBhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWQ6IGZhbHNlLFxuICAgIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogZmFsc2UsXG4gICAgaXNfYWRkZWRfdG9fY2FydDogZmFsc2UsXG4gICAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBjdXJyZW50X3N0ZXA6IG51bGwsXG4gIH1cblxuICBjdHguZGIuYWRkSmxjcGNiT3JkZXJTdGF0ZShuZXdKbGNwY2JPcmRlclN0YXRlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXIsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7XG4gIGVycm9yU2NoZW1hLFxuICBqbGNwY2JPcmRlclN0YXRlU2NoZW1hLFxuICBvcmRlclNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU3RlcHMgYXMgc2ltdWxhdGVTY2VuYXJpb3MgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHNcIlxuXG5jb25zdCBkZWZhdWx0T3JkZXJTdGF0ZSA9IHtcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IGZhbHNlLFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICBpc19ib21fdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19wbnBfdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19ib21fcG5wX2FuYWx5emVkOiBmYWxzZSxcbiAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IGZhbHNlLFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IGZhbHNlLFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IGZhbHNlLFxuICBpc19kZm1fcmVzdWx0X2dlbmVyYXRlZDogZmFsc2UsXG4gIGFyZV9maWxlc19kb3dubG9hZGVkOiBmYWxzZSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiBmYWxzZSxcbiAgYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IGZhbHNlLFxuICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogZmFsc2UsXG4gIGlzX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICB1cGxvYWRlZF9nZXJiZXJfbWV0YWRhdGE6IG51bGwsXG4gIGdlcmJlcl9hbmFseXNpczogbnVsbCxcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgY3VycmVudF9zdGVwOiBudWxsIGFzIG51bGwgfCAodHlwZW9mIHNpbXVsYXRlU2NlbmFyaW9zKVtudW1iZXJdLFxufVxuXG5jb25zdCBlcnJvck1hcCA9IHtcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRVJCRVJfR0VORVJBVElPTl9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlcmJlciBnZW5lcmF0aW9uIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZ2VyYmVyc191cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiR0VSQkVSX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlcmJlciB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2dlcmJlcl9hbmFseXplZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQU5BTFlaRV9HRVJCRVJfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBbmFseXplIGdlcmJlciBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYm9tX3VwbG9hZGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJCT01fVVBMT0FEX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQm9tIHVwbG9hZCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfcG5wX3VwbG9hZGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJQTlBfVVBMT0FEX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiUG5wIHVwbG9hZCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQU5BTFlaRV9CT01fQU5EX1BOUF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFuYWx5emUgYm9tIGFuZCBwbnAgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiB7XG4gICAgZXJyb3JfY29kZTogXCJCT01fUEFSU0lOR19GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkJvbSBwYXJzaW5nIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkNPTVBPTkVOVFNfQVZBSUxBQklMSVRZX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQ29tcG9uZW50cyBhdmFpbGFiaWxpdHkgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX3BhdGNoX21hcF9nZW5lcmF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFTkVSQVRFX1BBVENIX01BUF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlbmVyYXRlIHBhdGNoIG1hcCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkNSRUFUSU9OX0pTT05fTUVSR0VfRklMRV9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkNyZWF0aW9uIGpzb24gbWVyZ2UgZmlsZSBmYWlsZWRcIixcbiAgfSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFTkVSQVRFX0RGTV9SRVNVTFRfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZW5lcmF0ZSBkZm0gcmVzdWx0IGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRE9XTkxPQURfRklMRVNfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJEb3dubG9hZCBmaWxlcyBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJGRVRDSF9QUk9EVUNUX0NBVEVHT1JJRVNfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJGZXRjaCBwcm9kdWN0IGNhdGVnb3JpZXMgZmFpbGVkXCIsXG4gIH0sXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJGSU5BTF9DT1NUX0NBTENVTEFUSU9OX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRmluYWwgY29zdCBjYWxjdWxhdGlvbiBmYWlsZWRcIixcbiAgfSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIlVQREFURV9KU09OX01FUkdFX0ZJTEVfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJVcGRhdGUganNvbiBtZXJnZSBmaWxlIGZhaWxlZFwiLFxuICB9LFxuICBpc19wY2JfYWRkZWRfdG9fY2FydDoge1xuICAgIGVycm9yX2NvZGU6IFwiQUREX1BDQl9UT19DQVJUX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQWRkIHBjYiB0byBjYXJ0IGZhaWxlZFwiLFxuICB9LFxuICBpc19hZGRlZF90b19jYXJ0OiB7XG4gICAgZXJyb3JfY29kZTogXCJBRERfVE9fQ0FSVF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFkZCB0byBjYXJ0IGZhaWxlZFwiLFxuICB9LFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJJTklUSUFMX0NPU1RfQ0FMQ1VMQVRJT05fRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJJbml0aWFsIGNvc3QgY2FsY3VsYXRpb24gZmFpbGVkXCIsXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIG9yZGVyX2lkOiB6LnN0cmluZygpLFxuICAgIF9zaW11bGF0ZV9zY2VuYXJpbzogei5lbnVtKHNpbXVsYXRlU2NlbmFyaW9zKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXI6IG9yZGVyU2NoZW1hLFxuICAgIG9yZGVyU3RhdGU6IGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfaWQsIF9zaW11bGF0ZV9zY2VuYXJpbyB9ID0gcmVxLnF1ZXJ5XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuZ2V0T3JkZXJCeUlkKG9yZGVyX2lkKVxuICBpZiAoIW9yZGVyKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1cGRhdGVkT3JkZXJTdGF0ZSA9IHtcbiAgICAuLi5kZWZhdWx0T3JkZXJTdGF0ZSxcbiAgICBvcmRlcl9pZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICBpZiAoX3NpbXVsYXRlX3NjZW5hcmlvKSB7XG4gICAgY29uc3QgZXJyb3IgPSBlcnJvck1hcFtfc2ltdWxhdGVfc2NlbmFyaW9dXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBvcmRlci5lcnJvciA9IGVycm9yU2NoZW1hLnBhcnNlKGVycm9yKVxuICAgICAgb3JkZXIuaGFzX2Vycm9yID0gdHJ1ZVxuICAgICAgY3R4LmRiLnVwZGF0ZU9yZGVyKG9yZGVyX2lkLCB7IGVycm9yOiBvcmRlci5lcnJvciwgaGFzX2Vycm9yOiB0cnVlIH0pXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHNpbXVsYXRlU2NlbmFyaW9zLmluZGV4T2YoX3NpbXVsYXRlX3NjZW5hcmlvKVxuICAgICAgc2ltdWxhdGVTY2VuYXJpb3Muc2xpY2UoMCwgY3VycmVudEluZGV4KS5mb3JFYWNoKChzY2VuYXJpbykgPT4ge1xuICAgICAgICB1cGRhdGVkT3JkZXJTdGF0ZVtzY2VuYXJpb10gPSB0cnVlXG4gICAgICB9KVxuICAgICAgdXBkYXRlZE9yZGVyU3RhdGUuY3VycmVudF9zdGVwID0gc2ltdWxhdGVTY2VuYXJpb3NbY3VycmVudEluZGV4XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBleGlzdGluZ1N0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyX2lkKVxuICAgIGlmIChleGlzdGluZ1N0YXRlKSB7XG4gICAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgICBvcmRlcixcbiAgICAgICAgb3JkZXJTdGF0ZTogZXhpc3RpbmdTdGF0ZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY3R4LmRiLnVwZGF0ZUpsY3BjYk9yZGVyU3RhdGUob3JkZXJfaWQsIHVwZGF0ZWRPcmRlclN0YXRlKVxuXG4gIGNvbnN0IG9yZGVyU3RhdGUgPSBjdHguZGIuZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQob3JkZXJfaWQpIVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXIsXG4gICAgb3JkZXJTdGF0ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJzOiB6LmFycmF5KG9yZGVyU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcnM6IGN0eC5kYi5vcmRlcnMuZmlsdGVyKChvKSA9PiBvLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBQYWNrYWdlLCBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGNvbnN0IGZpbmRQYWNrYWdlUmVsZWFzZUlkID0gYXN5bmMgKFxuICBwYXJhbXM6XG4gICAgfCBzdHJpbmdcbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiBzdHJpbmdcbiAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB0cnVlXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHN0cmluZ1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgY3R4OiB7IGRiOiBhbnkgfSxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xuICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uKHBhcmFtcywgY3R4LmRiKVxuICB9XG5cbiAgaWYgKFxuICAgIFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIHBhcmFtcyAmJlxuICAgIHBhcmFtcy5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXG4gICkge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiB9ID0gcGFyYW1zXG5cbiAgICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5lbmRzV2l0aChcIkBsYXRlc3RcIikpIHtcbiAgICAgIGNvbnN0IFtwYWNrYWdlTmFtZV0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgICAgcmV0dXJuIGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgICB7XG4gICAgICAgICAgcGFja2FnZV9uYW1lOiBwYWNrYWdlTmFtZSEsXG4gICAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uKFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiEsXG4gICAgICBjdHguZGIsXG4gICAgKVxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9yZWxlYXNlX2lkXCIgaW4gcGFyYW1zICYmIHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFyYW1zLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZVwiIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lLCB1c2VfbGF0ZXN0X3ZlcnNpb24gfSA9IHBhcmFtc1xuXG4gICAgaWYgKCF1c2VfbGF0ZXN0X3ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInVzZV9sYXRlc3RfdmVyc2lvbiBtdXN0IGJlIHRydWVcIilcbiAgICB9XG5cbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwOiBQYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VfbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpLFxuICAgIClcbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uID0gKFxuICBwYWNrYWdlTmFtZVdpdGhWZXJzaW9uOiBzdHJpbmcsXG4gIGRiOiBhbnksXG4pOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKCFwYWNrYWdlTmFtZVdpdGhWZXJzaW9uKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlTmFtZVdpdGhWZXJzaW9uXG4gICAgLnJlcGxhY2UoL15ALywgXCJcIilcbiAgICAuc3BsaXQoXCJAXCIpXG5cbiAgY29uc3QgcGtnID0gZGIucGFja2FnZXMuZmluZCgocDogUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlXG5cbiAgaWYgKCF2ZXJzaW9uIHx8IHZlcnNpb24gPT09IFwibGF0ZXN0XCIpIHtcbiAgICBwYWNrYWdlUmVsZWFzZSA9IGRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBwYWNrYWdlUmVsZWFzZSA9IGRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICApXG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbn1cbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LmNvbnRlbnRfYmFzZTY0ICYmIHYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIGlmICghdi5jb250ZW50X2Jhc2U2NCAmJiAhdi5jb250ZW50X3RleHQpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkVpdGhlciBjb250ZW50X2Jhc2U2NCBvciBjb250ZW50X3RleHQgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGU6IHp0LnBhY2thZ2VGaWxlU2NoZW1hLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IHByb3ZpZGVkQ29udGVudE1pbWV0eXBlLFxuICAgIGNvbnRlbnRfYmFzZTY0LFxuICAgIGNvbnRlbnRfdGV4dCxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGwsXG4gICAgbnBtX3BhY2tfb3V0cHV0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgaWYgKGlzX3JlbGVhc2VfdGFyYmFsbCAmJiAhbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyByZXF1aXJlZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWlzX3JlbGVhc2VfdGFyYmFsbCAmJiBucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIG9ubHkgdmFsaWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uIH0sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9pZCxcbiAgKVxuXG4gIGlmICghZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUvdXBkYXRlIHRoZSBmaWxlXG4gIGlmIChleGlzdGluZ1BhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gbW9kaWZ5IGZpbGVzIGluIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBmaWxlIGV4aXN0c1xuICBjb25zdCBleGlzaXRpbmdGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZikgPT5cbiAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCAmJiBwZi5maWxlX3BhdGggPT09IGZpbGVfcGF0aCxcbiAgKVxuXG4gIC8vIERldGVybWluZSBjb250ZW50IG1pbWV0eXBlXG4gIGNvbnN0IGNvbnRlbnRNaW1ldHlwZSA9XG4gICAgcHJvdmlkZWRDb250ZW50TWltZXR5cGUgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzXCIpIHx8IGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c3hcIilcbiAgICAgID8gXCJ0ZXh0L3R5cGVzY3JpcHRcIlxuICAgICAgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNcIikgPyBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc29uXCIpID8gXCJhcHBsaWNhdGlvbi9qc29uXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIubWRcIikgPyBcInRleHQvbWFya2Rvd25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5odG1sXCIpID8gXCJ0ZXh0L2h0bWxcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5jc3NcIikgPyBcInRleHQvY3NzXCIgOiBudWxsKSB8fFxuICAgIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcblxuICBpZiAoZXhpc2l0aW5nRmlsZSkge1xuICAgIGNvbnN0IHBhY2thZ2VfZmlsZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlRmlsZShcbiAgICAgIGV4aXNpdGluZ0ZpbGUucGFja2FnZV9maWxlX2lkLFxuICAgICAge1xuICAgICAgICBjb250ZW50X3RleHQ6XG4gICAgICAgICAgY29udGVudF90ZXh0IHx8XG4gICAgICAgICAgKGNvbnRlbnRfYmFzZTY0XG4gICAgICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgICAgICA6IG51bGwpLFxuICAgICAgICBjb250ZW50X21pbWV0eXBlOiBjb250ZW50TWltZXR5cGUsXG4gICAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgICAgICBucG1fcGFja19vdXRwdXQ6IG5wbV9wYWNrX291dHB1dCB8fCBudWxsLFxuICAgICAgfSxcbiAgICApXG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBwYWNrYWdlX2ZpbGUsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENyZWF0ZSB0aGUgcGFja2FnZSBmaWxlXG4gIGNvbnN0IG5ld1BhY2thZ2VGaWxlID0ge1xuICAgIHBhY2thZ2VfZmlsZV9pZDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfdGV4dDpcbiAgICAgIGNvbnRlbnRfdGV4dCB8fFxuICAgICAgKGNvbnRlbnRfYmFzZTY0XG4gICAgICAgID8gQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKClcbiAgICAgICAgOiBudWxsKSxcbiAgICBjb250ZW50X21pbWV0eXBlOiBjb250ZW50TWltZXR5cGUsXG4gICAgaXNfZGlyZWN0b3J5OiBmYWxzZSxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGw6IGlzX3JlbGVhc2VfdGFyYmFsbCB8fCBmYWxzZSxcbiAgICBucG1fcGFja19vdXRwdXQ6IG5wbV9wYWNrX291dHB1dCB8fCBudWxsLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfVxuXG4gIC8vIEFkZCB0byB0aGUgdGVzdCBkYXRhYmFzZVxuICBjdHguZGIuYWRkUGFja2FnZUZpbGUobmV3UGFja2FnZUZpbGUpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX2ZpbGU6IG5ld1BhY2thZ2VGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LmNvbnRlbnRfYmFzZTY0ICYmIHYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIGlmICghdi5jb250ZW50X2Jhc2U2NCAmJiAhdi5jb250ZW50X3RleHQpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkVpdGhlciBjb250ZW50X2Jhc2U2NCBvciBjb250ZW50X3RleHQgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGU6IHp0LnBhY2thZ2VGaWxlU2NoZW1hLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IHByb3ZpZGVkQ29udGVudE1pbWV0eXBlLFxuICAgIGNvbnRlbnRfYmFzZTY0LFxuICAgIGNvbnRlbnRfdGV4dCxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGwsXG4gICAgbnBtX3BhY2tfb3V0cHV0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgaWYgKGlzX3JlbGVhc2VfdGFyYmFsbCAmJiAhbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyByZXF1aXJlZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWlzX3JlbGVhc2VfdGFyYmFsbCAmJiBucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIG9ubHkgdmFsaWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICAgIGN0eCxcbiAgICApXG4gICAgaWYgKGZvdW5kUGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcGFja2FnZVJlbGVhc2VJZCA9IGZvdW5kUGFja2FnZVJlbGVhc2VJZFxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBWZXJpZnkgdGhlIHBhY2thZ2UgcmVsZWFzZSBleGlzdHNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIERldGVybWluZSBjb250ZW50IG1pbWV0eXBlXG4gIGNvbnN0IGNvbnRlbnRNaW1ldHlwZSA9XG4gICAgcHJvdmlkZWRDb250ZW50TWltZXR5cGUgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzXCIpIHx8IGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c3hcIilcbiAgICAgID8gXCJ0ZXh0L3R5cGVzY3JpcHRcIlxuICAgICAgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNcIikgPyBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc29uXCIpID8gXCJhcHBsaWNhdGlvbi9qc29uXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIubWRcIikgPyBcInRleHQvbWFya2Rvd25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5odG1sXCIpID8gXCJ0ZXh0L2h0bWxcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5jc3NcIikgPyBcInRleHQvY3NzXCIgOiBudWxsKSB8fFxuICAgIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcblxuICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZmlsZVxuICBjb25zdCBuZXdQYWNrYWdlRmlsZSA9IHtcbiAgICBwYWNrYWdlX2ZpbGVfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X3RleHQ6XG4gICAgICBjb250ZW50X3RleHQgfHxcbiAgICAgIChjb250ZW50X2Jhc2U2NFxuICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgIDogbnVsbCksXG4gICAgY29udGVudF9taW1ldHlwZTogY29udGVudE1pbWV0eXBlLFxuICAgIGlzX2RpcmVjdG9yeTogZmFsc2UsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsOiBpc19yZWxlYXNlX3RhcmJhbGwgfHwgZmFsc2UsXG4gICAgbnBtX3BhY2tfb3V0cHV0OiBucG1fcGFja19vdXRwdXQgfHwgbnVsbCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICAvLyBBZGQgdG8gdGhlIHRlc3QgZGF0YWJhc2VcbiAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKG5ld1BhY2thZ2VGaWxlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlOiBuZXdQYWNrYWdlRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGZpbGVfcGF0aCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICAgIGN0eCxcbiAgICApXG4gICAgaWYgKGZvdW5kUGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcGFja2FnZVJlbGVhc2VJZCA9IGZvdW5kUGFja2FnZVJlbGVhc2VJZFxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZSB0byBjaGVjayBwZXJtaXNzaW9uc1xuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHRvIGNoZWNrIHBlcm1pc3Npb25zXG4gIGNvbnN0IGV4aXN0aW5ncGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAoIWV4aXN0aW5ncGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBmaWxlXG4gIGlmIChleGlzdGluZ3BhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gZGVsZXRlIGZpbGVzIGluIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBGaW5kIHRoZSBmaWxlXG4gIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PlxuICAgICAgZi5maWxlX3BhdGggPT09IGZpbGVfcGF0aCAmJiBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJmaWxlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIERlbGV0ZSB0aGUgZmlsZSB1c2luZyBkZWxldGVQYWNrYWdlRmlsZSBtZXRob2RcbiAgY29uc3QgZGVsZXRlZCA9IGN0eC5kYi5kZWxldGVQYWNrYWdlRmlsZShwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWQpXG5cbiAgaWYgKCFkZWxldGVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9kZWxldGlvbl9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGRlbGV0ZSBwYWNrYWdlIGZpbGVcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgTm90Rm91bmRFcnJvciB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0ICogYXMgWlQgZnJvbSBcIi4uL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGggfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoXCJcbmV4cG9ydCBjb25zdCBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yID0gYXN5bmMgKFxuICBkZXNjcmlwdG9yOlxuICAgIHwgeyBwYWNrYWdlX2ZpbGVfaWQ6IHN0cmluZyB9XG4gICAgfCB7IHBhY2thZ2VfcmVsZWFzZV9pZDogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9XG4gICAgfCB7IHBhY2thZ2VfaWQ6IHN0cmluZzsgdmVyc2lvbj86IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX25hbWU6IHN0cmluZzsgdmVyc2lvbj86IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH0sXG4gIGN0eDogeyBkYjogYW55IH0sXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBpZiAoXCJwYWNrYWdlX2ZpbGVfaWRcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PiBwZi5wYWNrYWdlX2ZpbGVfaWQgPT09IGRlc2NyaXB0b3IucGFja2FnZV9maWxlX2lkLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBkZXNjcmlwdG9yLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9yZWxlYXNlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkLCBmaWxlX3BhdGggfSA9IGRlc2NyaXB0b3JcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfaWRcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX2lkLCB2ZXJzaW9uLCBmaWxlX3BhdGggfSA9IGRlc2NyaXB0b3JcblxuICAgIC8vIFZlcmlmeSBwYWNrYWdlIGV4aXN0c1xuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgICAgKHA6IFpULlBhY2thZ2UpID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCxcbiAgICApXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBsZXQgcGFja2FnZVJlbGVhc2VcbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgZmlsZVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT5cbiAgICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHBmLmZpbGVfcGF0aCkgPT09XG4gICAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKGZpbGVfcGF0aCksXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9uYW1lXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lLCB2ZXJzaW9uLCBmaWxlX3BhdGggfSA9IGRlc2NyaXB0b3JcblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgZmlyc3RcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocDogWlQuUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQYWNrYWdlIG5vdCBmb3VuZDogJHtwYWNrYWdlX25hbWV9YClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBsZXQgcGFja2FnZVJlbGVhc2VcbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGZpbGVcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLCBmaWxlX3BhdGggfSA9IGRlc2NyaXB0b3JcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpWzFdXG4gICAgY29uc3QgdmVyc2lvbiA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpWzJdXG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHA6IFpULlBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQYWNrYWdlIG5vdCBmb3VuZDogJHtwYWNrYWdlTmFtZX1gKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGxldCBwYWNrYWdlUmVsZWFzZVxuICAgIGlmICghdmVyc2lvbiB8fCB2ZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kIGZvciB2ZXJzaW9uOiAke3ZlcnNpb24gfHwgXCJsYXRlc3RcIn1gLFxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGZpbGVcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQYWNrYWdlIGZpbGUgbm90IGZvdW5kOiAke2ZpbGVfcGF0aH1gKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiSW52YWxpZCBwYWNrYWdlIGZpbGUgZGVzY3JpcHRvclwiKVxufVxuIiwgImNvbnN0IFJFU1RSSUNURURfRElSUyA9IFtcIi9ub2RlX21vZHVsZXMvXCIsIFwiL2Rpc3QvXCIsIFwiLy5naXQvXCJdXG5cbi8qKlxuICogQSBub3JtYWxpemVkIHByb2plY3QgcGF0aCBhbHdheXMgc3RhcnRzIHdpdGggXCIuL1wiIGFuZCBuZXZlciBlbmRzIHdpdGggYSBzbGFzaC5cbiAqIEl0IGhhcyBubyBiYWNrd2FyZHMgc2xhc2hlcyBhbmQgbm8gZG91YmxlIHNsYXNoZXMuIEl0IGRvZXMgbm90IGdvIHRvIHBhcmVudFxuICogZGlyZWN0b3JpZXMuIEl0IGlzIG5vdCBhIGRpcmVjdG9yeSAobXVzdCBoYXZlIGEgZmlsZSBleHRlbnNpb24pXG4gKlxuICogR09PRDpcbiAqICAtIHNyYy9pbmRleC50c1xuICogIC0gUkVBRE1FLm1kXG4gKlxuICogQkFEOlxuICogLSAuL1JFQURNRS5tZFxuICogLSAuL3NyYy9pbmRleC50c1xuICogLSBzcmNcXGluZGV4LnRzXG4gKiAtIC4uL1JFQURNRS5tZFxuICogLSAuL3NyYy9cbiAqIC0gLi9zcmNcbiAqXG4gKiBBZGRpdGlvbmFsbHksIHRocm93IG9uIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIGluY2x1ZGVkLCBlLmcuXG4gKiAtIG5vZGVfbW9kdWxlc1xuICogLSBkaXN0XG4gKiAtIC5naXRcbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aEFuZFZhbGlkYXRlID0gKHJhd1BhdGg6IHN0cmluZykgPT4ge1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChyYXdQYXRoKVxuXG4gIGlmIChub3JtYWxpemVkUGF0aC5pbmNsdWRlcyhcIi4uL1wiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gUGFyZW50IGRpcmVjdG9yaWVzIGFyZSBub3QgYWxsb3dlZC5cIixcbiAgICApXG4gIH1cblxuICBpZiAoUkVTVFJJQ1RFRF9ESVJTLnNvbWUoKGRpcikgPT4gbm9ybWFsaXplZFBhdGguaW5jbHVkZXMoZGlyKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gUmVzdHJpY3RlZCBkaXJlY3RvcmllcyAoJHtSRVNUUklDVEVEX0RJUlMubWFwKFxuICAgICAgICAocmQpID0+IHJkLnNsaWNlKDEsIC0xKSxcbiAgICAgICkuam9pbihcIiwgXCIpfSkgYXJlIG5vdCBhbGxvd2VkLmAsXG4gICAgKVxuICB9XG5cbiAgaWYgKCFub3JtYWxpemVkUGF0aC5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gTXVzdCBoYXZlIGEgZmlsZSBleHRlbnNpb24uIEdpdmVuIFwiJHtyYXdQYXRofVwiYCxcbiAgICApXG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZFBhdGhcbn1cblxuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aCA9IChyYXdQYXRoOiBzdHJpbmcpID0+IHtcbiAgbGV0IG5vcm1hbGl6ZWRQYXRoID0gcmF3UGF0aC50cmltKCkgLy8gUmVtb3ZlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZVxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL1xcLysvZywgXCIvXCIpIC8vIFJlcGxhY2UgbXVsdGlwbGUgY29uc2VjdXRpdmUgc2xhc2hlcyB3aXRoIGEgc2luZ2xlIHNsYXNoXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXlxcLlxcLy8sIFwiXCIpIC8vIFJlbW92ZSBsZWFkaW5nIFwiLi9cIlxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL1xcLyQvLCBcIlwiKSAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKSAvLyBSZXBsYWNlIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXlxcLy8sIFwiXCIpIC8vIFJlbW92ZSBsZWFkaW5nIFwiL1wiXG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoXG59XG4iLCAiaW1wb3J0IHsgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3JcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKSxcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLCAvLyBVc2luZyBhbnkgYmVjYXVzZSB3ZSdyZSByZXR1cm5pbmcgYmluYXJ5IGRhdGFcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgcGFja2FnZUZpbGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGNvbnN0IHBhcmFtcyA9IHJlcS5xdWVyeVxuXG4gIGlmIChcInBhY2thZ2VfZmlsZV9pZFwiIGluIHBhcmFtcykge1xuICAgIHBhY2thZ2VGaWxlSWQgPSBwYXJhbXMucGFja2FnZV9maWxlX2lkXG4gIH0gZWxzZSBpZiAoXCJwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIgaW4gcGFyYW1zKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLCBmaWxlX3BhdGggfSA9IHBhcmFtc1xuXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICAgIGN0eCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwibm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcGFja2FnZUZpbGVJZCA9IGF3YWl0IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgICAgICAgZmlsZV9wYXRoOiBmaWxlX3BhdGgsXG4gICAgICAgIH0sXG4gICAgICAgIGN0eCxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZUZpbGVJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImJhZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOiBcIkNvdWxkIG5vdCBkZXRlcm1pbmUgcGFja2FnZV9maWxlX2lkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZikgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnRUeXBlID0gXCJ0ZXh0L3BsYWluXCJcblxuICBjb25zdCBoZWFkZXJzID0ge1xuICAgIFwiQ29udGVudC1UeXBlXCI6IGNvbnRlbnRUeXBlLFxuICAgIFwiQ29udGVudC1EaXNwb3NpdGlvblwiOiBgYXR0YWNobWVudDsgZmlsZW5hbWU9XCIke3BhY2thZ2VGaWxlLmZpbGVfcGF0aC5zcGxpdChcIi9cIikucG9wKCl9XCJgLFxuICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT04NjQwMCwgc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZT02MDQ4MDBcIixcbiAgICBFeHBpcmVzOiBuZXcgRGF0ZShEYXRlLm5vdygpICsgODY0MDAwMDApLnRvVVRDU3RyaW5nKCksXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHBhY2thZ2VGaWxlLmNvbnRlbnRfdGV4dCwgeyBoZWFkZXJzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3JcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9maWxlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgb2s6IHouYm9vbGVhbigpLFxuICAgICAgcGFja2FnZV9maWxlOiBaVC5wYWNrYWdlRmlsZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9yKFpULmVycm9yUmVzcG9uc2VTY2hlbWEpLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VGaWxlSWQgPSBhd2FpdCBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yKFxuICAgIHJlcS5qc29uQm9keSxcbiAgICBjdHgsXG4gIClcblxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PiBwZi5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9maWxlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlOiB7XG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IHBhY2thZ2VGaWxlLmNyZWF0ZWRfYXQudG9TdHJpbmcoKSxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIHVzZV9sYXRlc3RfdmVyc2lvbjogei5saXRlcmFsKHRydWUpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGVzOiB6LmFycmF5KFpULnBhY2thZ2VGaWxlU2NoZW1hKSxcbiAgfSksXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgcGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKHJlcS5qc29uQm9keSwgY3R4KVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBPbWl0IHRoZSBjb250ZW50X3RleHQgZmllbGRcbiAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlc1xuICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkKVxuICAgIC5tYXAoKHsgY29udGVudF90ZXh0LCAuLi5maWxlIH0pID0+ICh7XG4gICAgICAuLi5maWxlLFxuICAgIH0pKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlczogcGFja2FnZUZpbGVzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSA9IChcbiAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlOiBaVC5QYWNrYWdlUmVsZWFzZSxcbik6IFpULlBhY2thZ2VSZWxlYXNlID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5pbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UsXG4gICAgY3JlYXRlZF9hdDogaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmNyZWF0ZWRfYXQsXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBwYWNrYWdlUmVsZWFzZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgY29tbWl0X3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHBhY2thZ2VSZWxlYXNlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQge1xuICAgIHBhY2thZ2VfaWQsXG4gICAgaXNfbGF0ZXN0ID0gdHJ1ZSxcbiAgICB2ZXJzaW9uLFxuICAgIGNvbW1pdF9zaGEsXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGlmIChwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uICYmICF2ZXJzaW9uICYmICFwYWNrYWdlX2lkKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBwYXJzZWRWZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG5cbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZU5hbWV9YCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcGFja2FnZV9pZCA9IHBrZy5wYWNrYWdlX2lkXG4gICAgdmVyc2lvbiA9IHBhcnNlZFZlcnNpb25cbiAgfVxuXG4gIGlmICghcGFja2FnZV9pZCB8fCAhdmVyc2lvbikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJwYWNrYWdlX2lkIGFuZCB2ZXJzaW9uIGFyZSByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzXG4gIGNvbnN0IGV4aXN0aW5nUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgKVxuXG4gIGlmIChleGlzdGluZ1JlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ2ZXJzaW9uX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBgVmVyc2lvbiAke3ZlcnNpb259IGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIHBhY2thZ2VgLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgcHJldmlvdXMgbGF0ZXN0IGlmIG5lZWRlZFxuICBpZiAoaXNfbGF0ZXN0KSB7XG4gICAgY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuICAgICAgLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0KVxuICAgICAgLmZvckVhY2goKHByKSA9PiAocHIuaXNfbGF0ZXN0ID0gZmFsc2UpKVxuICB9XG5cbiAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSBjdHguZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIHBhY2thZ2VfaWQsXG4gICAgaXNfbGF0ZXN0LFxuICAgIHZlcnNpb24sXG4gICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgY29tbWl0X3NoYTogY29tbWl0X3NoYSA/PyBudWxsLFxuICB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSdzIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgaWYgdGhpcyBpcyB0aGUgbGF0ZXN0IHJlbGVhc2VcbiAgaWYgKGlzX2xhdGVzdCkge1xuICAgIGN0eC5kYi51cGRhdGVQYWNrYWdlKHBhY2thZ2VfaWQsIHtcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGxhdGVzdF92ZXJzaW9uOiB2ZXJzaW9uLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UobmV3UGFja2FnZVJlbGVhc2UpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHp0LnBhY2thZ2VSZWxlYXNlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgcGFja2FnZV9uYW1lLFxuICAgIHBhY2thZ2VfaWQsXG4gICAgaXNfbGF0ZXN0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfbmFtZSB3aXRoIGlzX2xhdGVzdFxuICBpZiAocGFja2FnZV9uYW1lICYmIGlzX2xhdGVzdCA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcblxuICAgIGlmICghcGtnKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU29ydCByZWxlYXNlcyBieSB2ZXJzaW9uIHRvIGZpbmQgdGhlIGxhdGVzdCBvbmVcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpXG4gICAgICAgIClcbiAgICAgIH0pXG5cbiAgICBpZiAocGFja2FnZVJlbGVhc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiTm8gcmVsZWFzZXMgZm91bmQgZm9yIHRoaXMgcGFja2FnZVwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKHBhY2thZ2VSZWxlYXNlc1swXSksXG4gICAgfSlcbiAgfVxuXG4gIC8vIEhhbmRsZSBwYWNrYWdlX2lkIHdpdGggaXNfbGF0ZXN0XG4gIGlmIChwYWNrYWdlX2lkICYmIGlzX2xhdGVzdCA9PT0gdHJ1ZSkge1xuICAgIC8vIFNvcnQgcmVsZWFzZXMgYnkgdmVyc2lvbiB0byBmaW5kIHRoZSBsYXRlc3Qgb25lXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuICAgICAgLmZpbHRlcigoeCkgPT4geC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpXG4gICAgICAgIClcbiAgICAgIH0pXG5cbiAgICBpZiAocGFja2FnZVJlbGVhc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiTm8gcmVsZWFzZXMgZm91bmQgZm9yIHRoaXMgcGFja2FnZVwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKHBhY2thZ2VSZWxlYXNlc1swXSksXG4gICAgfSlcbiAgfVxuXG4gIGlmIChwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uICYmICFwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBbcGFja2FnZU5hbWUsIHBhcnNlZFZlcnNpb25dID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBjb25zdCBwa2dSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKCh4KSA9PiB7XG4gICAgICByZXR1cm4geC52ZXJzaW9uID09IHBhcnNlZFZlcnNpb24gJiYgeC5wYWNrYWdlX2lkID09IHBrZz8ucGFja2FnZV9pZFxuICAgIH0pXG5cbiAgICBpZiAoIXBrZ1JlbGVhc2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwa2dSZWxlYXNlKSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZm91bmRSZWxlYXNlID1cbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQgJiYgY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG5cbiAgaWYgKCFmb3VuZFJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKGZvdW5kUmVsZWFzZSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VSZWxlYXNlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtcmVsZWFzZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29tbWl0X3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgoeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUgfSkgPT4ge1xuICAgICAgaWYgKHBhY2thZ2VfaWQgJiYgcGFja2FnZV9uYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcInBhY2thZ2VfaWQgYW5kIHBhY2thZ2VfbmFtZSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlXCIpXG4gICAgLnJlZmluZSgoeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUgfSkgPT4ge1xuICAgICAgaWYgKCFwYWNrYWdlX2lkICYmICFwYWNrYWdlX25hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwicGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2VzOiB6LmFycmF5KHBhY2thZ2VSZWxlYXNlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUsIGlzX2xhdGVzdCwgdmVyc2lvbiwgY29tbWl0X3NoYSB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICBpZiAoIXBhY2thZ2VfaWQgJiYgIXBhY2thZ2VfbmFtZSAmJiAhaXNfbGF0ZXN0ICYmICF2ZXJzaW9uICYmICFjb21taXRfc2hhKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9xdWVyeVwiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJBdCBsZWFzdCBvbmUgb2YgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lLCBpc19sYXRlc3QsIHZlcnNpb24gb3IgY29tbWl0X3NoYSBpcyByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgcmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzXG5cbiAgLy8gQXBwbHkgZmlsdGVyc1xuICBpZiAocGFja2FnZV9pZCkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgfVxuXG4gIGlmIChwYWNrYWdlX25hbWUpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gICAgaWYgKHBrZykge1xuICAgICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVsZWFzZXMgPSBbXVxuICAgIH1cbiAgfVxuXG4gIGlmIChpc19sYXRlc3QgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIuaXNfbGF0ZXN0ID09PSBpc19sYXRlc3QpXG4gIH1cblxuICBpZiAodmVyc2lvbikge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIudmVyc2lvbiA9PT0gdmVyc2lvbilcbiAgfVxuXG4gIGlmIChjb21taXRfc2hhKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5jb21taXRfc2hhID09PSBjb21taXRfc2hhKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2VzOiByZWxlYXNlcy5tYXAoKHByKSA9PiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwcikpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX2xvY2tlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgbGljZW5zZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgaXNfbG9ja2VkLFxuICAgIGlzX2xhdGVzdCxcbiAgICBsaWNlbnNlLFxuICB9ID0gcmVxLmpzb25Cb2R5XG4gIGxldCByZWxlYXNlSWQgPSBwYWNrYWdlX3JlbGVhc2VfaWRcblxuICAvLyBIYW5kbGUgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiBsb29rdXBcbiAgaWYgKCFyZWxlYXNlSWQgJiYgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuICAgIGlmIChwa2cpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICAgIGlmIChyZWxlYXNlKSB7XG4gICAgICAgIHJlbGVhc2VJZCA9IHJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFyZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZGVsdGEgPSB7IGlzX2xvY2tlZCwgaXNfbGF0ZXN0LCBsaWNlbnNlIH1cbiAgaWYgKFxuICAgIE9iamVjdC5rZXlzKGRlbHRhKS5maWx0ZXIoXG4gICAgICAoaykgPT4gZGVsdGFbayBhcyBrZXlvZiB0eXBlb2YgZGVsdGFdICE9PSB1bmRlZmluZWQsXG4gICAgKS5sZW5ndGggPT09IDBcbiAgKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm9fZmllbGRzX3Byb3ZpZGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIk5vIGZpZWxkcyBwcm92aWRlZCB0byB1cGRhdGVcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcmVsZWFzZUlkLFxuICApXG4gIGlmICghcmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBIYW5kbGUgaXNfbGF0ZXN0IHVwZGF0ZXNcbiAgaWYgKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIGlzX2xhdGVzdCkge1xuICAgIGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChwcikgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSByZWxlYXNlLnBhY2thZ2VfaWQgJiZcbiAgICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgIT09IHJlbGVhc2VJZCAmJlxuICAgICAgICAgIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICAgIC5mb3JFYWNoKChwcikgPT4ge1xuICAgICAgICBwci5pc19sYXRlc3QgPSBmYWxzZVxuICAgICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgcmVsZWFzZVxuICBPYmplY3QuYXNzaWduKHJlbGVhc2UsIHtcbiAgICAuLi4oaXNfbG9ja2VkICE9PSB1bmRlZmluZWQgJiYgeyBpc19sb2NrZWQgfSksXG4gICAgLi4uKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIHsgaXNfbGF0ZXN0IH0pLFxuICAgIC4uLihsaWNlbnNlICE9PSB1bmRlZmluZWQgJiYgeyBsaWNlbnNlIH0pLFxuICB9KVxuXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZShyZWxlYXNlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3Ioei5vYmplY3QoeyBuYW1lOiB6LnN0cmluZygpIH0pKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgcGFja2FnZUlkOiBzdHJpbmdcblxuICAvLyBHZXQgcGFja2FnZSBJRCBlaXRoZXIgZGlyZWN0bHkgb3IgYnkgbmFtZVxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gcmVxLmpzb25Cb2R5KSB7XG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIHBhY2thZ2VJZCA9IGJvZHkucGFja2FnZV9pZFxuICB9IGVsc2Uge1xuICAgIC8vIElmIG5hbWUgaXMgcHJvdmlkZWQsIGxvb2sgdXAgdGhlIHBhY2thZ2VfaWRcbiAgICBjb25zdCBib2R5ID0gcmVxLmpzb25Cb2R5XG4gICAgY29uc3QgcGFja2FnZURhdGEgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gYm9keS5uYW1lKVxuXG4gICAgaWYgKCFwYWNrYWdlRGF0YSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VJZCA9IHBhY2thZ2VEYXRhLnBhY2thZ2VfaWRcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHBhY2thZ2UgZXhpc3RzIChleHRyYSBjaGVjayBmb3IgSUQtYmFzZWQgbG9va3VwKVxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpXG5cbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbHJlYWR5IHN0YXJyZWRcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgKGFwKSA9PlxuICAgICAgYXAuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQsXG4gIClcblxuICBpZiAoZXhpc3Rpbmc/LmlzX3N0YXJyZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhbHJlYWR5X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBzdGFycmVkIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHBrZy5zdGFyX2NvdW50ID0gKHBrZy5zdGFyX2NvdW50IHx8IDApICsgMVxuXG4gIGlmIChleGlzdGluZykge1xuICAgIC8vIElmIHJlY29yZCBleGlzdHMgYnV0IGlzX3N0YXJyZWQgaXMgZmFsc2UsIHVwZGF0ZSB0byBpc19zdGFycmVkPXRydWVcbiAgICBleGlzdGluZy5pc19zdGFycmVkID0gdHJ1ZVxuICAgIGV4aXN0aW5nLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgfSBlbHNlIHtcbiAgICAvLyBBZGQgc3RhciBieSBjcmVhdGluZyBhIG5ldyBhY2NvdW50X3BhY2thZ2UgcmVjb3JkXG4gICAgY29uc3QgbmV3QWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9pZDogcGFja2FnZUlkLFxuICAgICAgaXNfc3RhcnJlZDogdHJ1ZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9XG4gICAgY3R4LmRiLmFkZEFjY291bnRQYWNrYWdlKG5ld0FjY291bnRQYWNrYWdlKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHR5cGUgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNYXBQYWNrYWdlID0gKGludGVybmFsUGFja2FnZToge1xuICBwYWNrYWdlX2lkOiBzdHJpbmdcbiAgY3JlYXRvcl9hY2NvdW50X2lkOiBzdHJpbmdcbiAgb3duZXJfb3JnX2lkOiBzdHJpbmdcbiAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmcgfCBudWxsXG4gIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogYm9vbGVhblxuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfdmVyc2lvbj86IHN0cmluZyB8IG51bGxcbiAgbGF0ZXN0X2xpY2Vuc2U/OiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmcgfCBudWxsXG4gIHN0YXJfY291bnQ/OiBudW1iZXIgfCBudWxsXG4gIG5hbWU6IHN0cmluZ1xuICB3ZWJzaXRlOiBzdHJpbmcgfCBudWxsXG4gIHVuc2NvcGVkX25hbWU6IHN0cmluZ1xuICB1cGRhdGVkX2F0OiBzdHJpbmdcbiAgY3JlYXRlZF9hdDogc3RyaW5nXG4gIGFpX2Rlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXG4gIGFpX3VzYWdlX2luc3RydWN0aW9uczogc3RyaW5nIHwgbnVsbFxuICBpc19zbmlwcGV0OiBib29sZWFuXG4gIGlzX2JvYXJkOiBib29sZWFuXG4gIGlzX3BhY2thZ2U6IGJvb2xlYW5cbiAgaXNfbW9kZWw6IGJvb2xlYW5cbiAgaXNfZm9vdHByaW50OiBib29sZWFuXG4gIGlzX3ByaXZhdGU6IGJvb2xlYW4gfCBudWxsXG4gIGlzX3VubGlzdGVkOiBib29sZWFuIHwgbnVsbFxufSk6IHp0LlBhY2thZ2UgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLmludGVybmFsUGFja2FnZSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgPz8gbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF92ZXJzaW9uID8/IG51bGwsXG4gICAgbGljZW5zZTogaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9saWNlbnNlID8/IG51bGwsXG4gICAgd2Vic2l0ZTogaW50ZXJuYWxQYWNrYWdlLndlYnNpdGUgPz8gbnVsbCxcbiAgICBzdGFyX2NvdW50OiBpbnRlcm5hbFBhY2thZ2Uuc3Rhcl9jb3VudCA/PyAwLFxuICAgIGNyZWF0ZWRfYXQ6IGludGVybmFsUGFja2FnZS5jcmVhdGVkX2F0LFxuICAgIHVwZGF0ZWRfYXQ6IGludGVybmFsUGFja2FnZS51cGRhdGVkX2F0LFxuICAgIGlzX3ByaXZhdGU6IGludGVybmFsUGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3B1YmxpYzogaW50ZXJuYWxQYWNrYWdlLmlzX3ByaXZhdGUgPT09IHRydWUgPyBmYWxzZSA6IHRydWUsXG4gICAgaXNfdW5saXN0ZWQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2UuaXNfcHJpdmF0ZSA9PT0gdHJ1ZVxuICAgICAgICA/IHRydWVcbiAgICAgICAgOiAoaW50ZXJuYWxQYWNrYWdlLmlzX3VubGlzdGVkID8/IGZhbHNlKSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIG5hbWU6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLnJlZ2V4KFxuICAgICAgICAvXltAYS16QS1aMC05LV9cXC9dKyQvLFxuICAgICAgICBcIlBhY2thZ2UgbmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIHVuZGVyc2NvcmVzLCBhbmQgZm9yd2FyZCBzbGFzaGVzXCIsXG4gICAgICApXG4gICAgICAudHJhbnNmb3JtKChuYW1lKSA9PiBuYW1lLnJlcGxhY2UoL15ALywgXCJcIikpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2U6IHBhY2thZ2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBuYW1lLCBkZXNjcmlwdGlvbiwgaXNfcHJpdmF0ZSwgaXNfdW5saXN0ZWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5uYW1lID09PSBuYW1lKVxuXG4gIGlmIChleGlzdGluZ1BhY2thZ2UpIHtcbiAgICB0aHJvdyBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IFwiQSBwYWNrYWdlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHVuc2NvcGVkX25hbWUgPSBuYW1lLnNwbGl0KFwiL1wiKVsxXVxuXG4gIGNvbnN0IG5ld1BhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgbmFtZSxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgb3duZXJfb3JnX2lkOiBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQsXG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogbnVsbCxcbiAgICBsaWNlbnNlOiBudWxsLFxuICAgIHdlYnNpdGU6IG51bGwsXG4gICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgc3Rhcl9jb3VudDogMCxcbiAgICBhaV9kZXNjcmlwdGlvbjogXCJwbGFjZWhvbGRlciBhaSBkZXNjcmlwdGlvblwiLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gZmFsc2UsXG4gICAgaXNfcHVibGljOiBpc19wcml2YXRlID09PSB0cnVlID8gZmFsc2UgOiB0cnVlLFxuICAgIGlzX3VubGlzdGVkOiBpc19wcml2YXRlID09PSB0cnVlID8gdHJ1ZSA6IChpc191bmxpc3RlZCA/PyBmYWxzZSksXG4gICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcInBsYWNlaG9sZGVyIGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICB9KVxuXG4gIGlmICghbmV3UGFja2FnZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgcGFja2FnZVwiKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBwYWNrYWdlOiBwdWJsaWNNYXBQYWNrYWdlKG5ld1BhY2thZ2UpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBwYWNrYWdlSW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG5cbiAgY29uc29sZS5sb2coXCJwa2dcIiwgcGtnLm93bmVyX29yZ19pZCwgY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkKVxuXG4gIGlmIChwa2cub3duZXJfb3JnX2lkICE9PSBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBkZWxldGUgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi5wYWNrYWdlcy5zcGxpY2UocGFja2FnZUluZGV4LCAxKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgLy8gQWNjZXB0IGVpdGhlciBwYWNrYWdlX2lkIG9yIHBhY2thZ2VfbmFtZSB0byBmaW5kIHRoZSBwYWNrYWdlIHRvIGZvcmtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgLy8gT3B0aW9uYWwgcGFyYW1ldGVycyB0byBjdXN0b21pemUgdGhlIGZvcmtlZCBwYWNrYWdlXG4gICAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgfSlcbiAgICAucmVmaW5lKFxuICAgICAgKGRhdGEpID0+XG4gICAgICAgIGRhdGEucGFja2FnZV9pZCAhPT0gdW5kZWZpbmVkIHx8IGRhdGEucGFja2FnZV9uYW1lICE9PSB1bmRlZmluZWQsXG4gICAgICB7XG4gICAgICAgIG1lc3NhZ2U6IFwiRWl0aGVyIHBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIG11c3QgYmUgcHJvdmlkZWRcIixcbiAgICAgIH0sXG4gICAgKVxuICAgIC50cmFuc2Zvcm0oKGRhdGEpID0+ICh7XG4gICAgICAuLi5kYXRhLFxuICAgICAgLy8gSWYgdGhlIHBhY2thZ2UgaXMgcHJpdmF0ZSwgaXQgc2hvdWxkIGJlIHVubGlzdGVkXG4gICAgICBpc191bmxpc3RlZDogZGF0YS5pc19wcml2YXRlID8gdHJ1ZSA6IGRhdGEuaXNfdW5saXN0ZWQsXG4gICAgfSkpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSwgaXNfcHJpdmF0ZSwgaXNfdW5saXN0ZWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIEZpbmQgdGhlIHBhY2thZ2UgdG8gZm9ya1xuICBsZXQgc291cmNlUGFja2FnZSA9IG51bGxcbiAgaWYgKHBhY2thZ2VfaWQpIHtcbiAgICBzb3VyY2VQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gIH0gZWxzZSBpZiAocGFja2FnZV9uYW1lKSB7XG4gICAgc291cmNlUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gIH1cblxuICBpZiAoIXNvdXJjZVBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGUgcGFja2FnZSB0byBmb3JrIHdhcyBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKHNvdXJjZVBhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiY2Fubm90X2Zvcmtfb3duX3BhY2thZ2VcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGNhbm5vdCBmb3JrIHlvdXIgb3duIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgZm9yayBhbHJlYWR5IGV4aXN0cyAodXNlciBhbHJlYWR5IGhhcyBhIHBhY2thZ2Ugd2l0aCB0aGUgc2FtZSBuYW1lKVxuICBjb25zdCBmb3JrTmFtZSA9IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtzb3VyY2VQYWNrYWdlLnVuc2NvcGVkX25hbWV9YFxuICBjb25zdCBleGlzdGluZ0ZvcmsgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PlxuICAgICAgcGtnLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBwa2cubmFtZSA9PT0gZm9ya05hbWUsXG4gIClcblxuICBpZiAoZXhpc3RpbmdGb3JrKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIHBhY2thZ2U6IHB1YmxpY01hcFBhY2thZ2UoZXhpc3RpbmdGb3JrKSxcbiAgICB9KVxuICB9XG5cbiAgLy8gRmluZCB0aGUgbGF0ZXN0IHJlbGVhc2Ugb2YgdGhlIHNvdXJjZSBwYWNrYWdlXG4gIGNvbnN0IHNvdXJjZVBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChyZWxlYXNlKSA9PlxuICAgICAgcmVsZWFzZS5wYWNrYWdlX2lkID09PSBzb3VyY2VQYWNrYWdlLnBhY2thZ2VfaWQgJiZcbiAgICAgIHJlbGVhc2UuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICApXG5cbiAgaWYgKCFzb3VyY2VQYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNvdXJjZV9wYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlRoZSBzb3VyY2UgcGFja2FnZSBkb2VzIG5vdCBoYXZlIGFueSByZWxlYXNlcyB0byBmb3JrXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgZmlsZXMgZnJvbSB0aGUgc291cmNlIHBhY2thZ2UgcmVsZWFzZVxuICBjb25zdCBzb3VyY2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgIChmaWxlKSA9PlxuICAgICAgZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHNvdXJjZVBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuXG4gIGlmIChzb3VyY2VGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzb3VyY2VfcGFja2FnZV9maWxlc19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2UgZG9lcyBub3QgaGF2ZSBhbnkgZmlsZXMgdG8gZm9ya1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIGZvcmtlZCBwYWNrYWdlXG4gIGNvbnN0IGZvcmtlZFBhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgbmFtZTogZm9ya05hbWUsXG4gICAgZGVzY3JpcHRpb246IHNvdXJjZVBhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IG51bGwsXG4gICAgbGljZW5zZTogbnVsbCxcbiAgICB3ZWJzaXRlOiBudWxsLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiBzb3VyY2VQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgc3Rhcl9jb3VudDogMCxcbiAgICBhaV9kZXNjcmlwdGlvbjogc291cmNlUGFja2FnZS5haV9kZXNjcmlwdGlvbiB8fCBcImZvcmtlZCBwYWNrYWdlXCIsXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSxcbiAgICBpc19wdWJsaWM6ICFpc19wcml2YXRlLFxuICAgIGlzX3VubGlzdGVkLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJmb3JrZWQgcGFja2FnZSB1c2FnZVwiLFxuICAgIGlzX2JvYXJkOiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfYm9hcmQpLFxuICAgIGlzX3BhY2thZ2U6IHRydWUsXG4gICAgaXNfbW9kZWw6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19tb2RlbCksXG4gICAgaXNfZm9vdHByaW50OiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfZm9vdHByaW50KSxcbiAgICBpc19zbmlwcGV0OiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfc25pcHBldCksXG4gIH0pXG5cbiAgaWYgKCFmb3JrZWRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmFpbGVkX3RvX2NyZWF0ZV9mb3JrZWRfcGFja2FnZVwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gY3JlYXRlIGZvcmtlZCBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG5ldyBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoZSBmb3JrZWQgcGFja2FnZVxuICBjb25zdCBmb3JrZWRQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgcGFja2FnZV9pZDogZm9ya2VkUGFja2FnZS5wYWNrYWdlX2lkLFxuICAgIHZlcnNpb246IHNvdXJjZVBhY2thZ2VSZWxlYXNlLnZlcnNpb24sXG4gICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbW1pdF9zaGE6IG51bGwsXG4gICAgbGljZW5zZTogc291cmNlUGFja2FnZVJlbGVhc2UubGljZW5zZSB8fCBudWxsLFxuICB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgZm9ya2VkIHBhY2thZ2Ugd2l0aCByZWxlYXNlIGluZm9cbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID1cbiAgICBmb3JrZWRQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA9IGZvcmtlZFBhY2thZ2VSZWxlYXNlLnZlcnNpb24gfHwgbnVsbFxuXG4gIC8vIENvcHkgYWxsIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2UgdG8gdGhlIGZvcmtlZCBwYWNrYWdlIHJlbGVhc2VcbiAgZm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogZm9ya2VkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBzb3VyY2VGaWxlLmZpbGVfcGF0aCxcbiAgICAgIGNvbnRlbnRfdGV4dDogc291cmNlRmlsZS5jb250ZW50X3RleHQsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShmb3JrZWRQYWNrYWdlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYVxuICAgICAgLmV4dGVuZCh7XG4gICAgICAgIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIG5hbWUgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgY29uc3QgYXV0aCA9IFwiYXV0aFwiIGluIGN0eCAmJiBjdHguYXV0aCA/IGN0eC5hdXRoIDogbnVsbFxuXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9XG4gICAgKHBhY2thZ2VfaWQgJiYgY3R4LmRiLmdldFBhY2thZ2VCeUlkKHBhY2thZ2VfaWQpKSB8fFxuICAgIGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2U6IHtcbiAgICAgIC4uLnB1YmxpY01hcFBhY2thZ2UoZm91bmRQYWNrYWdlKSxcbiAgICAgIGlzX3N0YXJyZWQ6IGF1dGhcbiAgICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChhdXRoLmFjY291bnRfaWQsIGZvdW5kUGFja2FnZS5wYWNrYWdlX2lkKVxuICAgICAgICA6IGZhbHNlLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3dyaXRhYmxlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBjcmVhdG9yX2FjY291bnRfaWQsIG93bmVyX2dpdGh1Yl91c2VybmFtZSwgbmFtZSwgaXNfd3JpdGFibGUgfSA9XG4gICAgcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IGF1dGggPSBcImF1dGhcIiBpbiBjdHggJiYgY3R4LmF1dGggPyBjdHguYXV0aCA6IG51bGxcblxuICBpZiAoIWF1dGggJiYgIWlzX3dyaXRhYmxlICYmICFjcmVhdG9yX2FjY291bnRfaWQgJiYgIW93bmVyX2dpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgbXVzdCBwcm92aWRlIHNvbWUgZmlsdGVyaW5nIHBhcmFtZXRlcnMgb3IgYmUgbG9nZ2VkIGluXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlc1xuXG4gIC8vIEFwcGx5IGZpbHRlcnNcbiAgaWYgKGNyZWF0b3JfYWNjb3VudF9pZCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+IHAuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjcmVhdG9yX2FjY291bnRfaWQsXG4gICAgKVxuICB9XG4gIGlmIChvd25lcl9naXRodWJfdXNlcm5hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PiBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXJfZ2l0aHViX3VzZXJuYW1lLFxuICAgIClcbiAgfVxuICBpZiAobmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG4gIH1cblxuICBpZiAoaXNfd3JpdGFibGUgJiYgYXV0aCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm93bmVyX29yZ19pZCA9PT0gYXV0aC5wZXJzb25hbF9vcmdfaWQpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VzOiBwYWNrYWdlcy5tYXAoKHApID0+ICh7XG4gICAgICAuLi5wLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogcC5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IG51bGwsXG4gICAgfSkpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZz8uaXNfc3RhcnJlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIG5vdCBzdGFycmVkIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHBrZy5zdGFyX2NvdW50ID0gTWF0aC5tYXgoMCwgKHBrZy5zdGFyX2NvdW50IHx8IDApIC0gMSlcblxuICAvLyBSZW1vdmUgc3RhciBieSB1cGRhdGluZyBpc19zdGFycmVkIHRvIGZhbHNlXG4gIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSBmYWxzZVxuICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCIuLi8uLi8uLi9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICBuYW1lOiB6XG4gICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAucmVnZXgoXG4gICAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgICBcIlBhY2thZ2UgbmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIHVuZGVyc2NvcmVzLCBhbmQgZm9yd2FyZCBzbGFzaGVzXCIsXG4gICAgICAgIClcbiAgICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICB3ZWJzaXRlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAudHJhbnNmb3JtKChkYXRhKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIGlzX3VubGlzdGVkOiBkYXRhLmlzX3ByaXZhdGUgPyB0cnVlIDogZGF0YS5pc191bmxpc3RlZCxcbiAgICB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIG5hbWUsIGRlc2NyaXB0aW9uLCB3ZWJzaXRlLCBpc19wcml2YXRlLCBpc191bmxpc3RlZCB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICBjb25zdCBwYWNrYWdlSW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhlIHBhY2thZ2VcbiAgaWYgKGV4aXN0aW5nUGFja2FnZS5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgcGFja2FnZSBuYW1lIGlmIG5hbWUgaXMgYmVpbmcgdXBkYXRlZFxuICBpZiAobmFtZSkge1xuICAgIGNvbnN0IG5ld0Z1bGxOYW1lID0gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YFxuICAgIGNvbnN0IGR1cGxpY2F0ZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwKSA9PiBwLm5hbWUgPT09IG5ld0Z1bGxOYW1lICYmIHAucGFja2FnZV9pZCAhPT0gcGFja2FnZV9pZCxcbiAgICApXG4gICAgaWYgKGR1cGxpY2F0ZVBhY2thZ2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgICBtZXNzYWdlOiBcIkEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB1cGRhdGVkUGFja2FnZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlKHBhY2thZ2VfaWQsIHtcbiAgICBuYW1lOiBuYW1lID8gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YCA6IGV4aXN0aW5nUGFja2FnZS5uYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBleGlzdGluZ1BhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgd2Vic2l0ZTogd2Vic2l0ZSA/PyBleGlzdGluZ1BhY2thZ2Uud2Vic2l0ZSxcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IGV4aXN0aW5nUGFja2FnZS5pc19wcml2YXRlLFxuICAgIGlzX3B1YmxpYzpcbiAgICAgIGlzX3ByaXZhdGUgIT09IHVuZGVmaW5lZCA/ICFpc19wcml2YXRlIDogZXhpc3RpbmdQYWNrYWdlLmlzX3B1YmxpYyxcbiAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgPz8gZXhpc3RpbmdQYWNrYWdlLmlzX3VubGlzdGVkLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidXBkYXRlX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gdXBkYXRlIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlOiB1cGRhdGVkUGFja2FnZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gQ2hlY2sgaWYgc25pcHBldCBleGlzdHMgKGFzIGEgcGFja2FnZSlcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICApXG5cbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCxcbiAgKVxuXG4gIGlmIChleGlzdGluZz8uaXNfc3RhcnJlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFscmVhZHlfc3RhcnJlZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgaGF2ZSBhbHJlYWR5IHN0YXJyZWQgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSdzIHN0YXIgY291bnRcbiAgc25pcHBldC5zdGFyX2NvdW50ID0gKHNuaXBwZXQuc3Rhcl9jb3VudCB8fCAwKSArIDFcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICAvLyBJZiByZWNvcmQgZXhpc3RzIGJ1dCBpc19zdGFycmVkIGlzIGZhbHNlLCB1cGRhdGUgdG8gaXNfc3RhcnJlZD10cnVlXG4gICAgZXhpc3RpbmcuaXNfc3RhcnJlZCA9IHRydWVcbiAgICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIHN0YXIgYnkgY3JlYXRpbmcgYSBuZXcgYWNjb3VudF9wYWNrYWdlIHJlY29yZFxuICAgIGN0eC5kYi5hZGRBY2NvdW50UGFja2FnZSh7XG4gICAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9pZDogc25pcHBldF9pZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb21waWxlZF9qczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNpcmN1aXRfanNvbjogei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIGR0czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHtcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIGNvZGUgPSBcIlwiLFxuICAgIHNuaXBwZXRfdHlwZSxcbiAgICBkZXNjcmlwdGlvbiA9IFwiXCIsXG4gICAgY29tcGlsZWRfanMsXG4gICAgY2lyY3VpdF9qc29uLFxuICAgIGR0cyxcbiAgICBpc19wcml2YXRlLFxuICAgIGlzX3B1YmxpYyxcbiAgICBpc191bmxpc3RlZCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApLnRvSVNPU3RyaW5nKClcblxuICBpZiAoIXVuc2NvcGVkX25hbWUpIHtcbiAgICAvLyBDb3VudCBzbmlwcGV0cyBvZiB0aGlzIHR5cGUgZm9yIHRoaXMgdXNlclxuICAgIGNvbnN0IHVzZXJTbmlwcGV0cyA9IGN0eC5kYi5wYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocCkgPT5cbiAgICAgICAgcC5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSAmJlxuICAgICAgICBwLmlzX3NuaXBwZXQgPT09IHRydWUgJiZcbiAgICAgICAgKChwLmlzX2JvYXJkICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJib2FyZFwiKSB8fFxuICAgICAgICAgIChwLmlzX3BhY2thZ2UgJiYgc25pcHBldF90eXBlID09PSBcInBhY2thZ2VcIikgfHxcbiAgICAgICAgICAocC5pc19tb2RlbCAmJiBzbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIikgfHxcbiAgICAgICAgICAocC5pc19mb290cHJpbnQgJiYgc25pcHBldF90eXBlID09PSBcImZvb3RwcmludFwiKSksXG4gICAgKVxuICAgIHVuc2NvcGVkX25hbWUgPSBgdW50aXRsZWQtJHtzbmlwcGV0X3R5cGV9LSR7dXNlclNuaXBwZXRzLmxlbmd0aCArIDF9YFxuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHBrZykgPT5cbiAgICAgIHBrZy51bnNjb3BlZF9uYW1lID09PSB1bnNjb3BlZF9uYW1lICYmXG4gICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gIClcblxuICBpZiAoZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgaGF2ZSBhbHJlYWR5IGZvcmtlZCB0aGlzIHNuaXBwZXQgaW4geW91ciBhY2NvdW50LlwiLFxuICAgIH0pXG4gIH1cblxuICB0cnkge1xuICAgIC8vIENyZWF0ZSB0aGUgcGFja2FnZSBkaXJlY3RseSAod2hpY2ggd2lsbCBzZXJ2ZSBhcyBvdXIgc25pcHBldClcbiAgICBjb25zdCBuZXdQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgb3duZXJfb3JnX2lkOiBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQsXG4gICAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBuYW1lOiBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7dW5zY29wZWRfbmFtZX1gLFxuICAgICAgdW5zY29wZWRfbmFtZTogdW5zY29wZWRfbmFtZSxcbiAgICAgIGxhdGVzdF92ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBsaWNlbnNlOiBudWxsLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBhaV9kZXNjcmlwdGlvbjogbnVsbCxcbiAgICAgIGlzX3NuaXBwZXQ6IHRydWUsXG4gICAgICBpc19ib2FyZDogc25pcHBldF90eXBlID09PSBcImJvYXJkXCIsXG4gICAgICBpc19wYWNrYWdlOiBzbmlwcGV0X3R5cGUgPT09IFwicGFja2FnZVwiLFxuICAgICAgaXNfbW9kZWw6IHNuaXBwZXRfdHlwZSA9PT0gXCJtb2RlbFwiLFxuICAgICAgaXNfZm9vdHByaW50OiBzbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXRfdHlwZSxcbiAgICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IGlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbnVsbCxcbiAgICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJwbGFjZWhvbGRlciBhaSB1c2FnZSBpbnN0cnVjdGlvbnNcIixcbiAgICB9KVxuXG4gICAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSBjdHguZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgICAgcGFja2FnZV9pZDogbmV3UGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgIH0pXG5cbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShuZXdQYWNrYWdlLnBhY2thZ2VfaWQsIHtcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICB9KVxuXG4gICAgLy8gQWRkIHBhY2thZ2UgZmlsZXNcbiAgICAvLyBBZGQgaW5kZXgudHN4IGZpbGUgd2l0aCB0aGUgY29kZSBjb250ZW50XG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgY29udGVudF90ZXh0OiBjb2RlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfSlcblxuICAgIC8vIEFkZCBEVFMgZmlsZSBpZiBwcm92aWRlZFxuICAgIGlmIChkdHMpIHtcbiAgICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IGR0cyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjb21waWxlZCBKUyBpZiBwcm92aWRlZFxuICAgIGlmIChjb21waWxlZF9qcykge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IGNvbXBpbGVkX2pzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNpcmN1aXQgSlNPTiBpZiBwcm92aWRlZFxuICAgIGlmIChjaXJjdWl0X2pzb24pIHtcbiAgICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkoY2lyY3VpdF9qc29uKSxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgc25pcHBldCByZXNwb25zZSBvYmplY3RcbiAgICBjb25zdCBzbmlwcGV0UmVzcG9uc2UgPSB7XG4gICAgICBzbmlwcGV0X2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIG5hbWU6IG5ld1BhY2thZ2UubmFtZSxcbiAgICAgIHVuc2NvcGVkX25hbWU6IG5ld1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG93bmVyX25hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIGNvZGUsXG4gICAgICBkdHMsXG4gICAgICBjb21waWxlZF9qcyxcbiAgICAgIHN0YXJfY291bnQ6IDAsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgc25pcHBldF90eXBlOiBzbmlwcGV0X3R5cGUsXG4gICAgICBjaXJjdWl0X2pzb246IGNpcmN1aXRfanNvbiB8fCBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc25pcHBldDogc25pcHBldFJlc3BvbnNlLFxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9jcmVhdGlvbl9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IGBGYWlsZWQgdG8gY3JlYXRlIHNuaXBwZXQ6ICR7ZXJyb3J9YCxcbiAgICB9KVxuICB9XG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHNuaXBwZXRJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHMpID0+IHMucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCxcbiAgKVxuXG4gIGlmIChzbmlwcGV0SW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5wYWNrYWdlc1tzbmlwcGV0SW5kZXhdXG5cbiAgaWYgKHNuaXBwZXQuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBkZWxldGUgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi5wYWNrYWdlcy5zcGxpY2Uoc25pcHBldEluZGV4LCAxKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIGpzZGVsaXZyX3Jlc29sdmU6IHpcbiAgICAgIC5lbnVtKFtcInRydWVcIiwgXCJmYWxzZVwiXSlcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAudHJhbnNmb3JtKCh2KSA9PiB2ID09PSBcInRydWVcIiksXG4gICAganNkZWxpdnJfcGF0aDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGpzZGVsaXZyX3BhdGgsIGpzZGVsaXZyX3Jlc29sdmUgfSA9IHJlcS5xdWVyeVxuXG4gIC8vIFBhcnNlIHRoZSBmaWxlIHBhdGhcbiAgY29uc3QgW293bmVyLCBwYWNrYWdlV2l0aFZlcnNpb24sIC4uLnJlc3RdID0ganNkZWxpdnJfcGF0aC5zcGxpdChcIi9cIilcbiAgY29uc3QgW3BhY2thZ2VOYW1lLCB2ZXJzaW9uXSA9IHBhY2thZ2VXaXRoVmVyc2lvbi5zcGxpdChcIkBcIilcbiAgY29uc3QgZmlsZU5hbWUgPSByZXN0LmpvaW4oXCIvXCIpXG5cbiAgLy8gRmluZCB0aGUgc25pcHBldFxuICBjb25zdCBfcGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChzKSA9PiBzLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXIgJiYgcy51bnNjb3BlZF9uYW1lID09PSBwYWNrYWdlTmFtZSxcbiAgKVxuXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IF9wYWNrYWdlPy5wYWNrYWdlX2lkLFxuICApXG5cbiAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgKHApID0+IHAucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZT8ucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG5cbiAgaWYgKCFfcGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghZmlsZU5hbWUgJiYgIWpzZGVsaXZyX3Jlc29sdmUpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgbGF0ZXN0OiBcIjAuMC4xXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNpb25zOiBbXCIwLjAuMVwiXSxcbiAgICAgIH0pLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgfSxcbiAgICApXG4gIH0gZWxzZSBpZiAoIWZpbGVOYW1lICYmIGpzZGVsaXZyX3Jlc29sdmUpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICB9KSxcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gSWYgbm8gZmlsZU5hbWUgaXMgcHJvdmlkZWQsIHJldHVybiB0aGUgZGlyZWN0b3J5IGxpc3RpbmdcbiAgaWYgKCFmaWxlTmFtZSB8fCBmaWxlTmFtZSA9PT0gXCJmbGF0XCIpIHtcbiAgICBjb25zdCBmaWxlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwiaW5kZXgudHNcIixcbiAgICAgICAgaGFzaDogXCJwbGFjZWhvbGRlcl9oYXNoXCIsXG4gICAgICAgIHRpbWU6IHBhY2thZ2VSZWxlYXNlPy5jcmVhdGVkX2F0LFxuICAgICAgICBzaXplOiBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIik/LmNvbnRlbnRfdGV4dFxuICAgICAgICAgID8ubGVuZ3RoLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwiaW5kZXguZC50c1wiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQ/Lmxlbmd0aCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICBuYW1lOiBcInBhY2thZ2UuanNvblwiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBuYW1lOiBgQHRzY2kvJHtvd25lcn0uJHtwYWNrYWdlTmFtZX1gLFxuICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIG1haW46IFwiaW5kZXgudHNcIixcbiAgICAgICAgICB0eXBlczogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIH0pLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICBkZWZhdWx0OiBcIi9pbmRleC50c1wiLFxuICAgICAgZmlsZXM6XG4gICAgICAgIGZpbGVOYW1lID09PSBcImZsYXRcIlxuICAgICAgICAgID8gZmlsZXMubWFwKChmKSA9PiAoe1xuICAgICAgICAgICAgICBuYW1lOiBgLyR7Zi5uYW1lfWAsXG4gICAgICAgICAgICAgIGhhc2g6IGYuaGFzaCxcbiAgICAgICAgICAgICAgdGltZTogZi50aW1lLFxuICAgICAgICAgICAgICBzaXplOiBmLnNpemUsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZGlyZWN0b3J5XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCIuXCIsXG4gICAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLCBudWxsLCAyKSwge1xuICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIEhhbmRsZSBmaWxlIGRvd25sb2Fkc1xuICBsZXQgY29udGVudDogc3RyaW5nXG4gIHN3aXRjaCAoZmlsZU5hbWUpIHtcbiAgICBjYXNlIFwiaW5kZXgudHNcIjpcbiAgICAgIGNvbnRlbnQgPVxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIpPy5jb250ZW50X3RleHQgfHxcbiAgICAgICAgXCJcIlxuICAgICAgYnJlYWtcbiAgICBjYXNlIFwiaW5kZXguZC50c1wiOlxuICAgICAgY29udGVudCA9XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIlxuICAgICAgYnJlYWtcbiAgICBjYXNlIFwicGFja2FnZS5qc29uXCI6XG4gICAgICBjb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBgQHRzY2kvJHtvd25lcn0uJHtwYWNrYWdlTmFtZX1gLFxuICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIG1haW46IFwiaW5kZXgudHNcIixcbiAgICAgICAgICB0eXBlczogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIH0sXG4gICAgICAgIG51bGwsXG4gICAgICAgIDIsXG4gICAgICApXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcImZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUmVxdWVzdGVkIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShjb250ZW50LCB7XG4gICAgc3RhdHVzOiAyMDAsXG4gICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcInRleHQvcGxhaW5cIiB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGZldGNoRWFzeUVEQUNvbXBvbmVudCwgY29udmVydFJhd0Vhc3lFZGFUb1RzIH0gZnJvbSBcImVhc3llZGFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgamxjcGNiX3BhcnRfbnVtYmVyOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBqbGNwY2JfcGFydF9udW1iZXIgfSA9IHJlcS5qc29uQm9keVxuXG4gIHRyeSB7XG4gICAgLy8gRmV0Y2ggdGhlIEVhc3lFREEgY29tcG9uZW50IGRhdGFcbiAgICBjb25zdCByYXdFYXN5SnNvbiA9IGF3YWl0IGZldGNoRWFzeUVEQUNvbXBvbmVudChqbGNwY2JfcGFydF9udW1iZXIpLmNhdGNoKFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBpbiBmZXRjaEVhc3lFREFDb21wb25lbnQ6ICR7ZS50b1N0cmluZygpfWApXG4gICAgICB9LFxuICAgIClcblxuICAgIC8vIENvbnZlcnQgdG8gVHlwZVNjcmlwdCBSZWFjdCBjb21wb25lbnRcbiAgICBjb25zdCB0c3hDb21wb25lbnQgPSBhd2FpdCBjb252ZXJ0UmF3RWFzeUVkYVRvVHMocmF3RWFzeUpzb24pLmNhdGNoKChlKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGluIGNvbnZlcnRSYXdFYXN5RWRhVG9UcyAke2UudG9TdHJpbmcoKX1gKVxuICAgIH0pXG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgc25pcHBldFxuICAgIGNvbnN0IG5ld1NuaXBwZXQgPSB7XG4gICAgICBzbmlwcGV0X2lkOiBgc25pcHBldF8ke2N0eC5kYi5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBuYW1lOiBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7amxjcGNiX3BhcnRfbnVtYmVyfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBqbGNwY2JfcGFydF9udW1iZXIsXG4gICAgICBvd25lcl9uYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBjb2RlOiB0c3hDb21wb25lbnQsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgICAgZGVzY3JpcHRpb246IGBHZW5lcmF0ZWQgZnJvbSBKTENQQ0IgcGFydCBudW1iZXIgJHtqbGNwY2JfcGFydF9udW1iZXJ9YCxcbiAgICB9XG5cbiAgICBjdHguZGIuYWRkU25pcHBldChuZXdTbmlwcGV0IGFzIGFueSlcblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBzbmlwcGV0OiBuZXdTbmlwcGV0IGFzIGFueSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiamxjcGNiX2dlbmVyYXRpb25fZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBgRmFpbGVkIHRvIGdlbmVyYXRlIHNuaXBwZXQgZnJvbSBKTENQQ0IgcGFydDogJHtlcnJvci5tZXNzYWdlfVxcblxcbiR7ZXJyb3Iuc3RhY2t9YCxcbiAgICB9KVxuICB9XG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQge1xuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyxcbiAgY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcsXG59IGZyb20gXCJjaXJjdWl0LXRvLXN2Z1wiXG5pbXBvcnQgeyBBbnlDaXJjdWl0RWxlbWVudCB9IGZyb20gXCJjaXJjdWl0LWpzb25cIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0SWQ6IHouc3RyaW5nKCksXG4gICAgaW1hZ2Vfb2Y6IHouZW51bShbXCJzY2hlbWF0aWNcIiwgXCJwY2JcIl0pLFxuICAgIGZvcm1hdDogei5lbnVtKFtcInN2Z1wiXSksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc3ZnOiB6LnN0cmluZygpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRJZCwgaW1hZ2Vfb2YsIGZvcm1hdCB9ID0gcmVxLnF1ZXJ5XG5cbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChzbmlwcGV0SWQpXG5cbiAgLy8gY2hlY2sgaWYgdGhlIHNuaXBwZXQgZXhpc3RzXG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBmb3JtYXQgaXMgdmFsaWRcbiAgaWYgKGZvcm1hdCAhPT0gXCJzdmdcIikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICBtZXNzYWdlOiBcIkZvcm1hdCBtdXN0IGJlICdzdmcnXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChpbWFnZV9vZiA9PT0gXCJzY2hlbWF0aWNcIikge1xuICAgIGNvbnN0IGNpcmN1aXRKc29uID0gc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXVxuICAgIGNvbnN0IHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnKGNpcmN1aXRKc29uKVxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHN2ZyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGltYWdlX29mID09PSBcInBjYlwiKSB7XG4gICAgY29uc3Qgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcoXG4gICAgICBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdLFxuICAgIClcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBzdmcsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgZXJyb3JfY29kZTogXCJJTlZBTElEX1JFUVVFU1RfVFlQRVwiLFxuICAgIG1lc3NhZ2U6IFwiUmVxdWVzdCB0eXBlIG11c3QgYmUgZWl0aGVyICdzY2hlbWF0aWMnIG9yICdwY2InXCIsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgb3duZXJfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25Cb2R5OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQsIG5hbWUsIG93bmVyX25hbWUsIHVuc2NvcGVkX25hbWUgfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICAvLyBGaXJzdCB0cnkgdG8gZmluZCBieSBzbmlwcGV0X2lkXG4gIGlmIChzbmlwcGV0X2lkKSB7XG4gICAgY29uc3QgZm91bmRTbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKHNuaXBwZXRfaWQsIGN0eC5hdXRoKVxuICAgIGlmIChmb3VuZFNuaXBwZXQpIHtcbiAgICAgIGlmIChjdHguYXV0aCkge1xuICAgICAgICBmb3VuZFNuaXBwZXQuaXNfc3RhcnJlZCA9IGN0eC5kYi5oYXNTdGFycmVkKFxuICAgICAgICAgIGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICAgICAgZm91bmRTbmlwcGV0LnNuaXBwZXRfaWQsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICAgIG9rOiB0cnVlLFxuICAgICAgICBzbmlwcGV0OiBmb3VuZFNuaXBwZXQsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIG5vdCBmb3VuZCBieSBJRCwgdHJ5IHRvIGZpbmQgYnkgb3RoZXIgcGFyYW1ldGVyc1xuICBjb25zdCBmb3VuZFBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiB7XG4gICAgaWYgKCFwa2cuaXNfc25pcHBldCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKG5hbWUgJiYgcGtnLm5hbWUudG9Mb3dlckNhc2UoKSAhPT0gbmFtZS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gZmFsc2VcbiAgICBpZiAoXG4gICAgICBvd25lcl9uYW1lICYmXG4gICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpICE9PSBvd25lcl9uYW1lLnRvTG93ZXJDYXNlKClcbiAgICApXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICBpZiAoXG4gICAgICB1bnNjb3BlZF9uYW1lICYmXG4gICAgICBwa2cudW5zY29wZWRfbmFtZS50b0xvd2VyQ2FzZSgpICE9PSB1bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKClcbiAgICApXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gdHJ1ZVxuICB9KVxuXG4gIGlmICghZm91bmRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBTbmlwcGV0IG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShyZXEuY29tbW9uUGFyYW1zKX0pYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gQ29udmVydCBwYWNrYWdlIHRvIHNuaXBwZXQgZm9ybWF0XG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoZm91bmRQYWNrYWdlLnBhY2thZ2VfaWQpXG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBgU25pcHBldCBub3QgZm91bmQgKHNlYXJjaGVkIHVzaW5nICR7SlNPTi5zdHJpbmdpZnkocmVxLmNvbW1vblBhcmFtcyl9KWAsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChjdHguYXV0aCkge1xuICAgIHNuaXBwZXQuaXNfc3RhcnJlZCA9IGN0eC5kYi5oYXNTdGFycmVkKFxuICAgICAgY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHNuaXBwZXQuc25pcHBldF9pZCxcbiAgICApXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHNuaXBwZXQsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IEFueUNpcmN1aXRFbGVtZW50IH0gZnJvbSBcImNpcmN1aXQtanNvblwiXG5pbXBvcnQge1xuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub0Fzc2VtYmx5U3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyxcbiAgY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcsXG59IGZyb20gXCJjaXJjdWl0LXRvLXN2Z1wiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcm91dGVQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBhdXRob3I6IHouc3RyaW5nKCksXG4gICAgc25pcHBldF9uYW1lOiB6LnN0cmluZygpLFxuICAgIHR5cGVGb3JtYXQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICByYXdSZXNwb25zZTogdHJ1ZSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGF1dGhvciwgc25pcHBldF9uYW1lLCB0eXBlRm9ybWF0IH0gPSByZXEucm91dGVQYXJhbXNcblxuICAvLyBHZXQgdGhlIHNuaXBwZXRcbiAgY29uc3QgbmFtZSA9IGF1dGhvciArIFwiL1wiICsgc25pcHBldF9uYW1lXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5QXV0aG9yQW5kTmFtZShhdXRob3IsIG5hbWUpXG5cbiAgLy8gSWYgc25pcHBldCBpcyBub3QgZm91bmQsIHJldHVybiA0MDRcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGZvcm1hdCBpcyB2YWxpZFxuICBjb25zdCBmb3JtYXQgPSB0eXBlRm9ybWF0LnNwbGl0KFwiLlwiKVsxXVxuICBpZiAoZm9ybWF0ICE9PSBcInN2Z1wiKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRm9ybWF0IG11c3QgYmUgJ3N2ZydcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHR5cGUgaXMgdmFsaWRcbiAgY29uc3QgdHlwZSA9IHR5cGVGb3JtYXQuc3BsaXQoXCIuXCIpWzBdXG4gIGNvbnN0IHR5cGVzVmFsaWQgPSBbXCJzY2hlbWF0aWNcIiwgXCJwY2JcIiwgXCJhc3NlbWJseVwiXVxuICBpZiAoIXR5cGVzVmFsaWQuaW5jbHVkZXModHlwZSkpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgIG1lc3NhZ2U6IGBUeXBlIG11c3QgYmUgJyR7dHlwZXNWYWxpZC5qb2luKFwiJyBvciAnXCIpfSdgLFxuICAgIH0pXG4gIH1cblxuICAvLyBDb252ZXJ0IGNpcmN1aXQganNvbiB0byBzdmdcbiAgbGV0IHN2Zzogc3RyaW5nXG4gIGlmICh0eXBlID09PSBcInNjaGVtYXRpY1wiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcoXG4gICAgICBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdLFxuICAgIClcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcInBjYlwiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcoXG4gICAgICBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdLFxuICAgIClcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImFzc2VtYmx5XCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub0Fzc2VtYmx5U3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidW5rbm93bl9lcnJvclwiLFxuICAgICAgbWVzc2FnZTogXCJVbmtub3duIGVycm9yXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2Uoc3ZnLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJpbWFnZS9zdmcreG1sXCIsXG4gICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJwdWJsaWMsIG1heC1hZ2U9MzE1MzYwMDBcIixcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IG5ld2VzdFNuaXBwZXRzID0gY3R4LmRiLmdldE5ld2VzdFNuaXBwZXRzKDIwKVxuICByZXR1cm4gY3R4Lmpzb24oeyBzbmlwcGV0czogbmV3ZXN0U25pcHBldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgLy8gR2V0IHRyZW5kaW5nIHNuaXBwZXRzIGZyb20gbGFzdCA3IGRheXNcbiAgY29uc3Qgc2V2ZW5EYXlzQWdvID0gbmV3IERhdGUoKVxuICBzZXZlbkRheXNBZ28uc2V0RGF0ZShzZXZlbkRheXNBZ28uZ2V0RGF0ZSgpIC0gNylcblxuICBjb25zdCB0cmVuZGluZ1NuaXBwZXRzID0gY3R4LmRiLmdldFRyZW5kaW5nU25pcHBldHMoXG4gICAgMjAsXG4gICAgc2V2ZW5EYXlzQWdvLnRvSVNPU3RyaW5nKCksXG4gIClcbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHM6IHRyZW5kaW5nU25pcHBldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3duZXJfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzdGFycmVkX2J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3duZXJfbmFtZSwgdW5zY29wZWRfbmFtZSwgc3RhcnJlZF9ieSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgbGV0IHBhY2thZ2VzID0gY3R4LmRiLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcblxuICAvLyBGaWx0ZXIgYnkgb3duZXJfbmFtZSBpZiBwcm92aWRlZFxuICBpZiAob3duZXJfbmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHBrZykgPT5cbiAgICAgICAgcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gb3duZXJfbmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgIClcbiAgfVxuXG4gIC8vIEZpbHRlciBieSB1bnNjb3BlZF9uYW1lIGlmIHByb3ZpZGVkXG4gIGlmICh1bnNjb3BlZF9uYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PiBwa2cudW5zY29wZWRfbmFtZS50b0xvd2VyQ2FzZSgpID09PSB1bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgKVxuICB9XG5cbiAgLy8gRmlsdGVyIGJ5IHN0YXJyZWRfYnkgaWYgcHJvdmlkZWRcbiAgaWYgKHN0YXJyZWRfYnkpIHtcbiAgICAvLyBHZXQgdGhlIGFjY291bnQgSUQgZm9yIHRoZSBzdGFycmVkX2J5IHVzZXJuYW1lXG4gICAgY29uc3Qgc3RhcnJlZEJ5QWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgICAgKGFjYykgPT4gYWNjLmdpdGh1Yl91c2VybmFtZS50b0xvd2VyQ2FzZSgpID09PSBzdGFycmVkX2J5LnRvTG93ZXJDYXNlKCksXG4gICAgKVxuICAgIGlmIChzdGFycmVkQnlBY2NvdW50KSB7XG4gICAgICAvLyBGaWx0ZXIgcGFja2FnZXMgdG8gb25seSBpbmNsdWRlIHRob3NlIHRoYXQgYXJlIHN0YXJyZWQgYnkgdGhpcyBhY2NvdW50XG4gICAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcigocGtnKSA9PlxuICAgICAgICBjdHguZGIuaGFzU3RhcnJlZChzdGFycmVkQnlBY2NvdW50LmFjY291bnRfaWQsIHBrZy5wYWNrYWdlX2lkKSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCB0aGUgYWNjb3VudCwgcmV0dXJuIG5vIHNuaXBwZXRzXG4gICAgICBwYWNrYWdlcyA9IFtdXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc25pcHBldHMgPSBwYWNrYWdlcy5tYXAoKHBrZykgPT4ge1xuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChcbiAgICAgIHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgb3duZXJfbmFtZTogcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgIGNvZGU6IFwiXCIsXG4gICAgICAgIGR0czogXCJcIixcbiAgICAgICAgY29tcGlsZWRfanM6IFwiXCIsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgc3Rhcl9jb3VudDogY3R4LmRiLmdldFN0YXJDb3VudChwa2cucGFja2FnZV9pZCksXG4gICAgICAgIGlzX3N0YXJyZWQ6IGN0eC5hdXRoXG4gICAgICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChjdHguYXV0aC5hY2NvdW50X2lkLCBwa2cucGFja2FnZV9pZClcbiAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICAgIGlzX3VubGlzdGVkOiBwa2cuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5nZXRQYWNrYWdlRmlsZXNCeVJlbGVhc2VJZChcbiAgICAgIHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+XG4gICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuICAgIGNvbnN0IHN0YXJDb3VudCA9IGN0eC5kYi5nZXRTdGFyQ291bnQocGtnLnBhY2thZ2VfaWQpXG4gICAgY29uc3QgaXNTdGFycmVkID0gY3R4LmF1dGhcbiAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoY3R4LmF1dGguYWNjb3VudF9pZCwgcGtnLnBhY2thZ2VfaWQpXG4gICAgICA6IGZhbHNlXG5cbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgKT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICAgICAgKT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogc3RhckNvdW50LFxuICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgdmVyc2lvbjogcGtnLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGlzX3ByaXZhdGU6IHBrZy5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHNuaXBwZXRzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBhY2NvdW50U25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIENoZWNrIGlmIHNuaXBwZXQgZXhpc3RzXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldF9pZClcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gY2hlY2sgaWYgbm90IGFscmVhZHkgc3RhcnJlZFxuICBpZiAoIWN0eC5kYi5oYXNTdGFycmVkKGN0eC5hdXRoLmFjY291bnRfaWQsIHNuaXBwZXRfaWQpKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgbm90IHN0YXJyZWQgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFJlbW92ZSBzdGFyXG4gIGN0eC5kYi5yZW1vdmVTdGFyKGN0eC5hdXRoLmFjY291bnRfaWQsIHNuaXBwZXRfaWQpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHE6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBxIH0gPSByZXEucXVlcnlcbiAgY29uc3Qgc25pcHBldHMgPSBjdHguZGIuc2VhcmNoU25pcHBldHMocSlcbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCIuLi8uLi8uLi9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICAgIGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb21waWxlZF9qczogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgc25pcHBldF9pZCxcbiAgICBjb2RlLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgZHRzLFxuICAgIGNvbXBpbGVkX2pzLFxuICAgIGNpcmN1aXRfanNvbixcbiAgICBzbmlwcGV0X3R5cGUsXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudCxcbiAgICBpc19wcml2YXRlLFxuICAgIGlzX3VubGlzdGVkLFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocykgPT4gcy5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBfcGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChyKSA9PiByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAoZikgPT4gZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlPy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcbiAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIgfHwgZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIixcbiAgKVxuICBjb25zdCBkdHNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgY29uc3QgY29tcGlsZWRKc0ZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgKVxuICBjb25zdCBtYW51YWxFZGl0c0pzb25GaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIm1hbnVhbC1lZGl0cy5qc29uXCIsXG4gIClcbiAgY29uc3QgY2lyY3VpdEpzb25GaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICApXG5cbiAgaWYgKF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSAhPT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1cGRhdGVkU25pcHBldCA9IGN0eC5kYi51cGRhdGVTbmlwcGV0KHNuaXBwZXRfaWQsIHtcbiAgICBjb2RlOiBjb2RlID8/IGNvZGVGaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIixcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gX3BhY2thZ2UuZGVzY3JpcHRpb24gPz8gXCJcIixcbiAgICB1bnNjb3BlZF9uYW1lOiB1bnNjb3BlZF9uYW1lID8/IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgbmFtZTogdW5zY29wZWRfbmFtZVxuICAgICAgPyBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7dW5zY29wZWRfbmFtZX1gXG4gICAgICA6IF9wYWNrYWdlLm5hbWUsXG4gICAgZHRzOiBkdHMgPz8gZHRzRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgY29tcGlsZWRfanM6IGNvbXBpbGVkX2pzID8/IGNvbXBpbGVkSnNGaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIixcbiAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50OlxuICAgICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gbWFudWFsX2VkaXRzX2pzb25fY29udGVudFxuICAgICAgICA6IChtYW51YWxFZGl0c0pzb25GaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIiksXG4gICAgY2lyY3VpdF9qc29uOlxuICAgICAgY2lyY3VpdF9qc29uID8/XG4gICAgICAoY2lyY3VpdEpzb25GaWxlPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKGNpcmN1aXRKc29uRmlsZS5jb250ZW50X3RleHQpXG4gICAgICAgIDogW10pLFxuICAgIHNuaXBwZXRfdHlwZTogc25pcHBldF90eXBlID8/IF9wYWNrYWdlLnNuaXBwZXRfdHlwZSxcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IF9wYWNrYWdlLmlzX3ByaXZhdGUgPz8gZmFsc2UsXG4gICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkID8/IF9wYWNrYWdlLmlzX3VubGlzdGVkID8/IGZhbHNlLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWRTbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidXBkYXRlX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gdXBkYXRlIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0OiB1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LENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixxQkFBcUI7QUFBQSxRQUNyQixPQUFPO0FBQUEs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R0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEs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Q3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixH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RUFBUSw2QkFBOENLO0FBQUEsRUFBUSx3QkFBeUM7QUFBQSxFQUFRLHdCQUF5Q0o7QUFDeDdFO0FBRUEsSUFBTSxhQUFhO0FBQUEsRUFDakIsY0FBYyxnQkFBZ0IsT0FBTyxLQUFLLG9CQUFvQixDQUFDO0FBQUEsRUFDL0Q7QUFBQSxFQUNBLGFBQWEsT0FBTyxLQUFLLFlBQVksNkJBQTZCLFlBQVksT0FBTyxFQUFFLEdBQUc7QUFDNUY7QUFFQSxJQUFPLGdCQUFROyIsCiAgIm5hbWVzIjogWyJzZWVkIiwgInN0YXRlIiwgInBhY2thZ2VSZWxlYXNlIiwgInBhY2thZ2VGaWxlcyIsICJwa2ciLCAia2xldXIiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAicm91dGVTcGVjIiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInJvdXRlU3BlYyIsICJ6IiwgInJvdXRlU3BlYyIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInVwZGF0ZV9kZWZhdWx0IiwgInJlbGVhc2UiLCAieiIsICJwa2ciLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInBrZyIsICJ6IiwgInVwZGF0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJhZGRfc3Rhcl9kZWZhdWx0IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJkZWxldGVfZGVmYXVsdCIsICJ6IiwgImRvd25sb2FkX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyIsICJ6IiwgImNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnIiwgImNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnIiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgInJlbW92ZV9zdGFyX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgImdldF9kZWZhdWx0IiwgImNyZWF0ZV9kZWZhdWx0IiwgImxpc3RfZGVmYXVsdCIsICJ1cGRhdGVfZGVmYXVsdCIsICJkZWxldGVfZGVmYXVsdCIsICJhZGRfc3Rhcl9kZWZhdWx0IiwgImRvd25sb2FkX2RlZmF1bHQiLCAicmVtb3ZlX3N0YXJfZGVmYXVsdCJdCn0K
|