sonamu 0.9.19 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +36 -0
- package/dist/ai/agents/agent.js +5 -7
- package/dist/ai/agents/index.js +1 -2
- package/dist/ai/agents/types.js +1 -1
- package/dist/ai/index.js +1 -2
- package/dist/ai/providers/rtzr/api.js +2 -3
- package/dist/ai/providers/rtzr/error.js +14 -29
- package/dist/ai/providers/rtzr/index.js +1 -2
- package/dist/ai/providers/rtzr/model.js +13 -20
- package/dist/ai/providers/rtzr/options.js +2 -3
- package/dist/ai/providers/rtzr/provider.js +2 -3
- package/dist/ai/providers/rtzr/utils.js +12 -21
- package/dist/api/base-frame.js +4 -4
- package/dist/api/caster.js +21 -38
- package/dist/api/code-converters.js +41 -98
- package/dist/api/config.d.ts +1 -10
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +9 -8
- package/dist/api/context.js +2 -3
- package/dist/api/decorators.js +80 -116
- package/dist/api/index.js +2 -3
- package/dist/api/secret.js +6 -10
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +200 -387
- package/dist/api/validator.js +5 -8
- package/dist/api/websocket-helpers.js +21 -32
- package/dist/auth/audit-log/builders.js +2 -3
- package/dist/auth/audit-log/events.js +2 -2
- package/dist/auth/audit-log/plugin.js +30 -61
- package/dist/auth/audit-log-ingestor.js +19 -41
- package/dist/auth/auth-generator.js +16 -41
- package/dist/auth/better-auth-entities.js +3 -4
- package/dist/auth/index.js +2 -3
- package/dist/auth/knex-adapter.js +18 -45
- package/dist/auth/plugins/entity-definitions/admin.js +2 -2
- package/dist/auth/plugins/entity-definitions/anonymous.js +2 -2
- package/dist/auth/plugins/entity-definitions/api-key.js +2 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +2 -2
- package/dist/auth/plugins/entity-definitions/index.js +2 -3
- package/dist/auth/plugins/entity-definitions/jwt.js +2 -2
- package/dist/auth/plugins/entity-definitions/organization.js +2 -2
- package/dist/auth/plugins/entity-definitions/passkey.js +2 -2
- package/dist/auth/plugins/entity-definitions/phone-number.js +2 -2
- package/dist/auth/plugins/entity-definitions/sso.js +2 -2
- package/dist/auth/plugins/entity-definitions/two-factor.js +2 -2
- package/dist/auth/plugins/entity-definitions/types.js +1 -1
- package/dist/auth/plugins/entity-definitions/username.js +2 -2
- package/dist/auth/plugins/index.js +1 -2
- package/dist/auth/plugins/wrappers/admin.js +2 -3
- package/dist/auth/plugins/wrappers/anonymous.js +2 -3
- package/dist/auth/plugins/wrappers/api-key.js +2 -3
- package/dist/auth/plugins/wrappers/index.js +1 -2
- package/dist/auth/plugins/wrappers/jwt.js +2 -3
- package/dist/auth/plugins/wrappers/organization.js +2 -3
- package/dist/auth/plugins/wrappers/passkey.js +2 -3
- package/dist/auth/plugins/wrappers/phone-number.js +2 -3
- package/dist/auth/plugins/wrappers/sso.js +2 -3
- package/dist/auth/plugins/wrappers/two-factor.js +2 -3
- package/dist/auth/plugins/wrappers/username.js +2 -3
- package/dist/bin/build-config.js +2 -2
- package/dist/bin/cli.js +151 -258
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +55 -97
- package/dist/bin/hmr-hook-register.js +3 -3
- package/dist/bin/migrate-targets.d.ts +3 -0
- package/dist/bin/migrate-targets.d.ts.map +1 -0
- package/dist/bin/migrate-targets.js +11 -0
- package/dist/bin/test-command.js +25 -55
- package/dist/bin/ts-loader-register.js +5 -6
- package/dist/bin/ts-loader-registration.js +6 -13
- package/dist/cache/cache-manager.js +3 -4
- package/dist/cache/decorator.js +11 -21
- package/dist/cache/drivers.js +2 -3
- package/dist/cache/index.js +2 -3
- package/dist/cache/types.js +1 -1
- package/dist/cache-control/cache-control.js +21 -34
- package/dist/cache-control/types.js +1 -1
- package/dist/compress/compress.js +10 -10
- package/dist/compress/index.js +1 -2
- package/dist/compress/types.js +1 -1
- package/dist/cone/cone-generator.js +25 -63
- package/dist/database/_batch_update.js +26 -46
- package/dist/database/base-model.js +44 -97
- package/dist/database/base-model.types.js +1 -1
- package/dist/database/db.d.ts +8 -14
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +127 -72
- package/dist/database/knex.js +5 -8
- package/dist/database/puri-subset.types.js +1 -1
- package/dist/database/puri-wrapper.js +11 -15
- package/dist/database/puri.js +117 -234
- package/dist/database/puri.types.js +3 -4
- package/dist/database/transaction-context.js +4 -5
- package/dist/database/upsert-builder.js +109 -176
- package/dist/dict/en.d.ts +1 -0
- package/dist/dict/en.d.ts.map +1 -1
- package/dist/dict/en.js +4 -4
- package/dist/dict/index.js +2 -3
- package/dist/dict/ko.d.ts +1 -0
- package/dist/dict/ko.d.ts.map +1 -1
- package/dist/dict/ko.js +4 -4
- package/dist/dict/rc-keys.js +3 -4
- package/dist/dict/sd.js +8 -19
- package/dist/dict/sonamu-dictionary.js +141 -284
- package/dist/dict/types.js +1 -1
- package/dist/dict/utils.js +4 -5
- package/dist/entity/entity-manager.d.ts +2 -2
- package/dist/entity/entity-manager.js +34 -82
- package/dist/entity/entity-template-cone.js +33 -66
- package/dist/entity/entity.js +156 -310
- package/dist/env.d.ts +14 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +75 -0
- package/dist/exceptions/error-handler.js +2 -3
- package/dist/exceptions/so-exceptions.js +7 -5
- package/dist/filter/index.js +1 -2
- package/dist/filter/types.js +3 -4
- package/dist/filter/utils.js +21 -54
- package/dist/index.js +8 -7
- package/dist/logger/category.js +6 -12
- package/dist/logger/configure.js +23 -34
- package/dist/migration/code-generation.js +146 -314
- package/dist/migration/index-where-predicate.js +52 -144
- package/dist/migration/migration-set.js +19 -33
- package/dist/migration/migrator.d.ts +2 -0
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +69 -53
- package/dist/migration/postgresql-schema-reader.js +126 -225
- package/dist/migration/slack-confirm.d.ts +1 -0
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/migration/slack-confirm.js +28 -38
- package/dist/migration/types.js +1 -1
- package/dist/naite/messaging-types.js +1 -1
- package/dist/naite/naite-reporter.js +15 -32
- package/dist/naite/naite.js +43 -76
- package/dist/ssr/index.js +6 -9
- package/dist/ssr/registry.js +10 -18
- package/dist/ssr/renderer.js +10 -21
- package/dist/ssr/types.js +1 -1
- package/dist/storage/base-file.js +5 -10
- package/dist/storage/buffered-file.js +3 -4
- package/dist/storage/drivers.js +2 -3
- package/dist/storage/index.js +2 -3
- package/dist/storage/s3-driver.js +5 -9
- package/dist/storage/storage-manager.js +5 -5
- package/dist/storage/types.js +1 -1
- package/dist/storage/uploaded-file.js +4 -6
- package/dist/stream/index.js +1 -2
- package/dist/stream/sse.js +8 -13
- package/dist/stream/ws-audience-resolver.js +5 -5
- package/dist/stream/ws-audience.js +3 -4
- package/dist/stream/ws-cluster-bus.js +3 -4
- package/dist/stream/ws-core.js +1 -1
- package/dist/stream/ws-delivery.js +11 -25
- package/dist/stream/ws-local-connection-store.js +9 -18
- package/dist/stream/ws-presence-store.js +43 -97
- package/dist/stream/ws-registry.js +17 -22
- package/dist/stream/ws-telemetry-memory.js +38 -45
- package/dist/stream/ws-telemetry-trace.js +4 -6
- package/dist/stream/ws-telemetry.js +82 -135
- package/dist/stream/ws.js +47 -91
- package/dist/syncer/api-parser.js +81 -147
- package/dist/syncer/checksum.js +9 -20
- package/dist/syncer/code-generator.js +29 -47
- package/dist/syncer/entity-operations.js +17 -27
- package/dist/syncer/event-batcher.js +8 -15
- package/dist/syncer/file-patterns.js +3 -4
- package/dist/syncer/file-tracking.js +6 -10
- package/dist/syncer/index.js +1 -2
- package/dist/syncer/module-loader.js +10 -26
- package/dist/syncer/syncer-actions.js +19 -37
- package/dist/syncer/syncer.js +46 -98
- package/dist/syncer/watcher.js +12 -26
- package/dist/tasks/decorator.js +7 -11
- package/dist/tasks/step-wrapper.js +7 -8
- package/dist/tasks/workflow-manager.js +18 -25
- package/dist/template/entity-converter.js +40 -64
- package/dist/template/helpers.js +32 -63
- package/dist/template/implementations/entity.template.js +7 -11
- package/dist/template/implementations/entry-server.template.js +2 -3
- package/dist/template/implementations/generated.template.js +25 -51
- package/dist/template/implementations/generated_http.template.js +31 -58
- package/dist/template/implementations/generated_sso.template.js +45 -85
- package/dist/template/implementations/init_types.template.js +4 -7
- package/dist/template/implementations/model.template.js +5 -10
- package/dist/template/implementations/model_test.template.js +2 -3
- package/dist/template/implementations/queries.template.js +4 -7
- package/dist/template/implementations/sd.template.js +17 -35
- package/dist/template/implementations/services.template.js +18 -30
- package/dist/template/implementations/view_form.template.js +72 -125
- package/dist/template/implementations/view_id_all_select.template.js +2 -3
- package/dist/template/implementations/view_list.template.js +86 -143
- package/dist/template/implementations/view_search_input.template.js +2 -3
- package/dist/template/index.js +5 -8
- package/dist/template/template-manager.js +13 -26
- package/dist/template/template-types.js +2 -3
- package/dist/template/template.js +7 -11
- package/dist/template/zod-converter.js +173 -348
- package/dist/testing/_relation-graph.js +18 -37
- package/dist/testing/bootstrap.js +5 -8
- package/dist/testing/data-explorer.js +34 -78
- package/dist/testing/dev-test-routes.js +54 -60
- package/dist/testing/dev-vitest-manager.js +33 -84
- package/dist/testing/faker-mappings.js +3 -4
- package/dist/testing/fixture-generator.d.ts +2 -1
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +159 -321
- package/dist/testing/fixture-loader.js +2 -2
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +124 -227
- package/dist/testing/global-setup.d.ts.map +1 -1
- package/dist/testing/global-setup.js +29 -17
- package/dist/testing/index.js +1 -2
- package/dist/testing/naite-vitest-reporter.js +2 -3
- package/dist/testing/parallel-db-manager.js +5 -3
- package/dist/testing/vitest-helpers.d.ts.map +1 -1
- package/dist/testing/vitest-helpers.js +15 -12
- package/dist/types/types.d.ts +14 -14
- package/dist/types/types.js +27 -50
- package/dist/ui/ai-api.js +6 -11
- package/dist/ui/ai-client.js +86 -134
- package/dist/ui/api.js +99 -195
- package/dist/ui/cdd-service.js +78 -130
- package/dist/ui/cdd-types.js +1 -1
- package/dist/ui-web/assets/{index-Df8q-fhb.js → index-DFStGyd0.js} +49 -49
- package/dist/ui-web/assets/index-Dx4ap5i4.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.js +13 -25
- package/dist/utils/class-name.js +3 -4
- package/dist/utils/console-util.js +11 -26
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +14 -12
- package/dist/utils/esm-utils.js +5 -8
- package/dist/utils/formatter.js +10 -22
- package/dist/utils/fs-utils.js +14 -25
- package/dist/utils/lodash-able.js +3 -4
- package/dist/utils/model.js +7 -14
- package/dist/utils/object-utils.js +41 -73
- package/dist/utils/path-utils.js +5 -9
- package/dist/utils/process-utils.js +4 -7
- package/dist/utils/sql-parser.js +6 -13
- package/dist/utils/type-utils.js +16 -26
- package/dist/utils/utils.js +18 -40
- package/dist/utils/zod-error.js +9 -16
- package/dist/vector/chunking.js +24 -37
- package/dist/vector/config.js +2 -2
- package/dist/vector/embedding.js +8 -19
- package/dist/vector/index.js +1 -2
- package/dist/vector/types.js +1 -1
- package/package.json +7 -7
- package/src/__tests__/env.test.ts +127 -0
- package/src/api/__tests__/config.test.ts +10 -1
- package/src/api/config.ts +4 -12
- package/src/api/sonamu.ts +14 -4
- package/src/bin/__tests__/migrate-targets.test.ts +28 -0
- package/src/bin/__tests__/test-command.test.ts +82 -1
- package/src/bin/cli.ts +9 -18
- package/src/bin/fixture.ts +5 -4
- package/src/bin/migrate-targets.ts +7 -0
- package/src/bin/test-command.ts +2 -2
- package/src/database/__tests__/db.test.ts +175 -0
- package/src/database/db.ts +193 -71
- package/src/dict/en.ts +2 -0
- package/src/dict/ko.ts +2 -0
- package/src/env.ts +123 -0
- package/src/migration/__tests__/migrator.test.ts +149 -0
- package/src/migration/migrator.ts +74 -17
- package/src/migration/slack-confirm.ts +21 -0
- package/src/skills/sonamu/database.md +1 -1
- package/src/skills/sonamu/entity-basic.md +31 -0
- package/src/skills/sonamu/puri.md +22 -0
- package/src/skills/sonamu/testing-devrunner.md +1 -1
- package/src/skills/sonamu/upsert.md +53 -6
- package/src/stream/ws-telemetry-memory.ts +2 -2
- package/src/testing/fixture-generator.ts +2 -1
- package/src/testing/fixture-manager.ts +3 -4
- package/src/testing/global-setup.ts +42 -18
- package/src/testing/vitest-helpers.ts +14 -0
- package/src/utils/controller.ts +14 -7
- package/tsdown.api.config.ts +6 -0
- package/dist/_virtual/rolldown_runtime.js +0 -39
- package/dist/ui-web/assets/index-D4rYm-Xz.css +0 -1
package/dist/api/validator.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
2
|
-
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
3
2
|
//#region src/api/validator.ts
|
|
4
3
|
function validateMethodName(methodName) {
|
|
5
|
-
if (RESERVED_KEYWORDS.has(methodName)) {
|
|
6
|
-
throw new ApiValidationError(`Method name ${methodName} is a reserved keyword. Please choose a different name.`);
|
|
7
|
-
}
|
|
4
|
+
if (RESERVED_KEYWORDS.has(methodName)) throw new ApiValidationError(`Method name ${methodName} is a reserved keyword. Please choose a different name.`);
|
|
8
5
|
}
|
|
9
6
|
var RESERVED_KEYWORDS, ApiValidationError;
|
|
10
7
|
var init_validator = __esmMin((() => {
|
|
11
|
-
RESERVED_KEYWORDS = new Set([
|
|
8
|
+
RESERVED_KEYWORDS = /* @__PURE__ */ new Set([
|
|
12
9
|
"abstract",
|
|
13
10
|
"arguments",
|
|
14
11
|
"async",
|
|
@@ -83,8 +80,8 @@ var init_validator = __esmMin((() => {
|
|
|
83
80
|
}
|
|
84
81
|
};
|
|
85
82
|
}));
|
|
86
|
-
|
|
87
83
|
//#endregion
|
|
88
84
|
init_validator();
|
|
89
85
|
export { ApiValidationError, RESERVED_KEYWORDS, init_validator, validateMethodName };
|
|
90
|
-
|
|
86
|
+
|
|
87
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvdmFsaWRhdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSRVNFUlZFRF9LRVlXT1JEUyA9IG5ldyBTZXQoW1xuICBcImFic3RyYWN0XCIsXG4gIFwiYXJndW1lbnRzXCIsXG4gIFwiYXN5bmNcIixcbiAgXCJhd2FpdFwiLFxuICBcImJvb2xlYW5cIixcbiAgXCJicmVha1wiLFxuICBcImJ5dGVcIixcbiAgXCJjYXNlXCIsXG4gIFwiY2F0Y2hcIixcbiAgXCJjaGFyXCIsXG4gIFwiY2xhc3NcIixcbiAgXCJjb25zdFwiLFxuICBcImNvbnRpbnVlXCIsXG4gIFwiZGVidWdnZXJcIixcbiAgXCJkZWZhdWx0XCIsXG4gIFwiZGVsZXRlXCIsXG4gIFwiZG9cIixcbiAgXCJkb3VibGVcIixcbiAgXCJlbHNlXCIsXG4gIFwiZW51bVwiLFxuICBcImV2YWxcIixcbiAgXCJleHBvcnRcIixcbiAgXCJleHRlbmRzXCIsXG4gIFwiZmFsc2VcIixcbiAgXCJmaW5hbFwiLFxuICBcImZpbmFsbHlcIixcbiAgXCJmbG9hdFwiLFxuICBcImZvclwiLFxuICBcImZ1bmN0aW9uXCIsXG4gIFwiZ290b1wiLFxuICBcImlmXCIsXG4gIFwiaW1wbGVtZW50c1wiLFxuICBcImltcG9ydFwiLFxuICBcImluXCIsXG4gIFwiaW5zdGFuY2VvZlwiLFxuICBcImludFwiLFxuICBcImludGVyZmFjZVwiLFxuICBcImxldFwiLFxuICBcImxvbmdcIixcbiAgXCJuYXRpdmVcIixcbiAgXCJuZXdcIixcbiAgXCJudWxsXCIsXG4gIFwicGFja2FnZVwiLFxuICBcInByaXZhdGVcIixcbiAgXCJwcm90ZWN0ZWRcIixcbiAgXCJwdWJsaWNcIixcbiAgXCJyZXR1cm5cIixcbiAgXCJzaG9ydFwiLFxuICBcInN0YXRpY1wiLFxuICBcInN1cGVyXCIsXG4gIFwic3dpdGNoXCIsXG4gIFwic3luY2hyb25pemVkXCIsXG4gIFwidGhpc1wiLFxuICBcInRocm93XCIsXG4gIFwidGhyb3dzXCIsXG4gIFwidHJhbnNpZW50XCIsXG4gIFwidHJ1ZVwiLFxuICBcInRyeVwiLFxuICBcInR5cGVvZlwiLFxuICBcInVzaW5nXCIsXG4gIFwidmFyXCIsXG4gIFwidm9pZFwiLFxuICBcInZvbGF0aWxlXCIsXG4gIFwid2hpbGVcIixcbiAgXCJ3aXRoXCIsXG4gIFwieWllbGRcIixcbl0pO1xuXG5leHBvcnQgY2xhc3MgQXBpVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgW1NvbmFtdSBBUEkgVmFsaWRhdGlvbl0gJHttZXNzYWdlfWApO1xuICAgIHRoaXMubmFtZSA9IFwiQXBpVmFsaWRhdGlvbkVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTWV0aG9kTmFtZShtZXRob2ROYW1lOiBzdHJpbmcpIHtcbiAgaWYgKFJFU0VSVkVEX0tFWVdPUkRTLmhhcyhtZXRob2ROYW1lKSkge1xuICAgIHRocm93IG5ldyBBcGlWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBgTWV0aG9kIG5hbWUgJHttZXRob2ROYW1lfSBpcyBhIHJlc2VydmVkIGtleXdvcmQuIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgbmFtZS5gLFxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUE0RUEsU0FBZ0IsbUJBQW1CLFlBQW9CO0NBQ3JELElBQUksa0JBQWtCLElBQUksVUFBVSxHQUNsQyxNQUFNLElBQUksbUJBQ1IsZUFBZSxXQUFXLHdEQUM1QjtBQUVKOzs7Q0FsRmEsb0NBQW9CLElBQUksSUFBSTtFQUN2QztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FDRixDQUFDO0NBRVkscUJBQWIsY0FBd0MsTUFBTTtFQUM1QyxZQUFZLFNBQWlCO0dBQzNCLE1BQU0sMkJBQTJCLFNBQVM7R0FDMUMsS0FBSyxPQUFPO0VBQ2Q7Q0FDRiJ9
|
|
@@ -1,46 +1,35 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_so_exceptions, isSoException } from "../exceptions/so-exceptions.js";
|
|
3
3
|
import { init_utils, isPlainObject } from "../utils/utils.js";
|
|
4
|
-
|
|
5
4
|
//#region src/api/websocket-helpers.ts
|
|
6
5
|
function resolveIntegratedViteHmrOptions({ httpServer, requiresDedicatedWebSocketServer, rawPort = process.env.SONAMU_VITE_HMR_PORT }) {
|
|
7
|
-
if (!requiresDedicatedWebSocketServer) {
|
|
8
|
-
return { server: httpServer };
|
|
9
|
-
}
|
|
6
|
+
if (!requiresDedicatedWebSocketServer) return { server: httpServer };
|
|
10
7
|
const parsedPort = rawPort?.trim() ? Number(rawPort) : 24678;
|
|
11
8
|
return Number.isFinite(parsedPort) && parsedPort > 0 ? { port: parsedPort } : { port: 24678 };
|
|
12
9
|
}
|
|
13
10
|
function resolveWebSocketPluginOptions({ rawPluginOption }) {
|
|
14
11
|
const pluginOptions = rawPluginOption && rawPluginOption !== true ? { ...rawPluginOption } : {};
|
|
15
12
|
const serverOptions = isPlainObject(pluginOptions.options) ? { ...pluginOptions.options } : {};
|
|
16
|
-
if (Object.keys(serverOptions).length > 0)
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
return Object.keys(pluginOptions).length > 0 ? pluginOptions : undefined;
|
|
13
|
+
if (Object.keys(serverOptions).length > 0) pluginOptions.options = serverOptions;
|
|
14
|
+
return Object.keys(pluginOptions).length > 0 ? pluginOptions : void 0;
|
|
20
15
|
}
|
|
21
16
|
function resolveWebSocketCloseDescriptor(error) {
|
|
22
17
|
if (isSoException(error)) {
|
|
23
|
-
if (error.statusCode === 400) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return {
|
|
39
|
-
code: 1008,
|
|
40
|
-
reason: "Rejected websocket connection",
|
|
41
|
-
logLevel: "warn"
|
|
42
|
-
};
|
|
43
|
-
}
|
|
18
|
+
if (error.statusCode === 400) return {
|
|
19
|
+
code: 1008,
|
|
20
|
+
reason: "Invalid websocket handshake",
|
|
21
|
+
logLevel: "warn"
|
|
22
|
+
};
|
|
23
|
+
if (error.statusCode === 401 || error.statusCode === 403) return {
|
|
24
|
+
code: 1008,
|
|
25
|
+
reason: "Unauthorized websocket connection",
|
|
26
|
+
logLevel: "warn"
|
|
27
|
+
};
|
|
28
|
+
if (error.statusCode >= 400 && error.statusCode < 500) return {
|
|
29
|
+
code: 1008,
|
|
30
|
+
reason: "Rejected websocket connection",
|
|
31
|
+
logLevel: "warn"
|
|
32
|
+
};
|
|
44
33
|
}
|
|
45
34
|
return {
|
|
46
35
|
code: 1011,
|
|
@@ -57,8 +46,8 @@ var init_websocket_helpers = __esmMin((() => {
|
|
|
57
46
|
init_so_exceptions();
|
|
58
47
|
init_utils();
|
|
59
48
|
}));
|
|
60
|
-
|
|
61
49
|
//#endregion
|
|
62
50
|
init_websocket_helpers();
|
|
63
51
|
export { createWebSocketReplyStub, init_websocket_helpers, resolveIntegratedViteHmrOptions, resolveWebSocketCloseDescriptor, resolveWebSocketPluginOptions };
|
|
64
|
-
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWhlbHBlcnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS93ZWJzb2NrZXQtaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFNlcnZlciB9IGZyb20gXCJodHRwXCI7XG5cbmltcG9ydCB7IHR5cGUgV2Vic29ja2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS93ZWJzb2NrZXRcIjtcbmltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5IH0gZnJvbSBcImZhc3RpZnlcIjtcblxuaW1wb3J0IHsgaXNTb0V4Y2VwdGlvbiB9IGZyb20gXCIuLi9leGNlcHRpb25zL3NvLWV4Y2VwdGlvbnNcIjtcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcblxuLy8gRmFzdGlmeSB3ZWJzb2NrZXQgcm91dGXsmYAgVml0ZSBITVIgd2Vic29ja2V07J20IOqwmeydgCBzZXJ2ZXIgc29ja2V07J2EIOuRkOqzoCDstqnrj4ztlZjripQg6rKD7J2EIOuwqeyngO2VmOq4sCDsnITtlbQsXG4vLyBXUyByb3V0ZeqwgCDsobTsnqztlZjrqbQgSE1S7J2EIOuzhOuPhCDtj6ztirjroZwg67aE66as7ZW0IOudhOybgFxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVJbnRlZ3JhdGVkVml0ZUhtck9wdGlvbnMoe1xuICBodHRwU2VydmVyLFxuICByZXF1aXJlc0RlZGljYXRlZFdlYlNvY2tldFNlcnZlcixcbiAgcmF3UG9ydCA9IHByb2Nlc3MuZW52LlNPTkFNVV9WSVRFX0hNUl9QT1JULFxufToge1xuICBodHRwU2VydmVyOiBTZXJ2ZXI7XG4gIHJlcXVpcmVzRGVkaWNhdGVkV2ViU29ja2V0U2VydmVyOiBib29sZWFuO1xuICByYXdQb3J0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufSk6IHsgc2VydmVyOiBTZXJ2ZXIgfSB8IHsgcG9ydDogbnVtYmVyIH0ge1xuICBpZiAoIXJlcXVpcmVzRGVkaWNhdGVkV2ViU29ja2V0U2VydmVyKSB7XG4gICAgcmV0dXJuIHsgc2VydmVyOiBodHRwU2VydmVyIH07XG4gIH1cblxuICBjb25zdCBwYXJzZWRQb3J0ID0gcmF3UG9ydD8udHJpbSgpID8gTnVtYmVyKHJhd1BvcnQpIDogMjQ2Nzg7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkUG9ydCkgJiYgcGFyc2VkUG9ydCA+IDAgPyB7IHBvcnQ6IHBhcnNlZFBvcnQgfSA6IHsgcG9ydDogMjQ2NzggfTtcbn1cblxuLy8gQGZhc3RpZnkvd2Vic29ja2V0IHRyYW5zcG9ydCBvcHRpb27snYAgc2VydmVyLnBsdWdpbnMud3Psl5Ag66qF7Iuc65CcIOqwkuunjCDsgqzsmqntlaguXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVdlYlNvY2tldFBsdWdpbk9wdGlvbnMoe1xuICByYXdQbHVnaW5PcHRpb24sXG59OiB7XG4gIHJhd1BsdWdpbk9wdGlvbjogYm9vbGVhbiB8IFdlYnNvY2tldFBsdWdpbk9wdGlvbnMgfCB1bmRlZmluZWQ7XG59KTogV2Vic29ja2V0UGx1Z2luT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBsdWdpbk9wdGlvbnMgPSByYXdQbHVnaW5PcHRpb24gJiYgcmF3UGx1Z2luT3B0aW9uICE9PSB0cnVlID8geyAuLi5yYXdQbHVnaW5PcHRpb24gfSA6IHt9O1xuICBjb25zdCBzZXJ2ZXJPcHRpb25zID0gaXNQbGFpbk9iamVjdChwbHVnaW5PcHRpb25zLm9wdGlvbnMpXG4gICAgPyB7IC4uLnBsdWdpbk9wdGlvbnMub3B0aW9ucyB9XG4gICAgOiAoe30gYXMgTm9uTnVsbGFibGU8V2Vic29ja2V0UGx1Z2luT3B0aW9uc1tcIm9wdGlvbnNcIl0+KTtcblxuICBpZiAoT2JqZWN0LmtleXMoc2VydmVyT3B0aW9ucykubGVuZ3RoID4gMCkge1xuICAgIHBsdWdpbk9wdGlvbnMub3B0aW9ucyA9IHNlcnZlck9wdGlvbnM7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmtleXMocGx1Z2luT3B0aW9ucykubGVuZ3RoID4gMCA/IHBsdWdpbk9wdGlvbnMgOiB1bmRlZmluZWQ7XG59XG5cbi8vIGhhbmRzaGFrZS9hdXRoL3ZhbGlkYXRpb24g7Iuk7Yyo66W8IGdlbmVyaWMgMTAxMeuhnCDrrYnqsJzsp4Ag7JWK6rOgIDEwMDgocG9saWN5IHZpb2xhdGlvbinroZwg66ek7ZWR7ZW0LFxuLy8gY2xvc2UgY29kZSBwb2xpY3nrpbwg7ZWcIOqzs+yXkOyEnCDsoJXsnZjtlahcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlV2ViU29ja2V0Q2xvc2VEZXNjcmlwdG9yKGVycm9yOiB1bmtub3duKToge1xuICBjb2RlOiBudW1iZXI7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBsb2dMZXZlbDogXCJ3YXJuXCIgfCBcImVycm9yXCI7XG59IHtcbiAgaWYgKGlzU29FeGNlcHRpb24oZXJyb3IpKSB7XG4gICAgaWYgKGVycm9yLnN0YXR1c0NvZGUgPT09IDQwMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29kZTogMTAwOCxcbiAgICAgICAgcmVhc29uOiBcIkludmFsaWQgd2Vic29ja2V0IGhhbmRzaGFrZVwiLFxuICAgICAgICBsb2dMZXZlbDogXCJ3YXJuXCIsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChlcnJvci5zdGF0dXNDb2RlID09PSA0MDEgfHwgZXJyb3Iuc3RhdHVzQ29kZSA9PT0gNDAzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlOiAxMDA4LFxuICAgICAgICByZWFzb246IFwiVW5hdXRob3JpemVkIHdlYnNvY2tldCBjb25uZWN0aW9uXCIsXG4gICAgICAgIGxvZ0xldmVsOiBcIndhcm5cIixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGVycm9yLnN0YXR1c0NvZGUgPj0gNDAwICYmIGVycm9yLnN0YXR1c0NvZGUgPCA1MDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IDEwMDgsXG4gICAgICAgIHJlYXNvbjogXCJSZWplY3RlZCB3ZWJzb2NrZXQgY29ubmVjdGlvblwiLFxuICAgICAgICBsb2dMZXZlbDogXCJ3YXJuXCIsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29kZTogMTAxMSxcbiAgICByZWFzb246IFwiV2ViU29ja2V0IGhhbmRsZXIgZmFpbGVkXCIsXG4gICAgbG9nTGV2ZWw6IFwiZXJyb3JcIixcbiAgfTtcbn1cblxuLy8gV1Mg6rK966Gc7JeQ7ISc64qUIHJlcGx56rCAIOyhtOyerO2VmOyngCDslYrsnLzrr4DroZwg7KCR6re8IOyLnOuPhOulvCDsponsi5wg7JeQ65+s66GcIHN1cmZhY2XtlbQgdHJhbnNwb3J0IG1pc3VzZeulvCDruajrpqwg65Oc65+s64OEXG4vLyBTU0UvcmVwbHnsl5Ag7J2Y7KG07ZWY64qUIGNvbnRleHRQcm92aWRlcuqwgCDsnojsnLzrqbQgd2Vic29ja2V0Q29udGV4dFByb3ZpZGVy66W8IOuUsOuhnCDsoJXsnZjtlZjrnbzripQg6rCA7J2065OcIOyXre2VoOuPhCDtlahcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXZWJTb2NrZXRSZXBseVN0dWIoKTogRmFzdGlmeVJlcGx5IHtcbiAgcmV0dXJuIG5ldyBQcm94eSh7fSBhcyBGYXN0aWZ5UmVwbHksIHtcbiAgICBnZXQoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRmFzdGlmeVJlcGx5IGlzIG5vdCBhdmFpbGFibGUgaW4gd2Vic29ja2V0IGNvbnRleHQuIERlZmluZSB3ZWJzb2NrZXRDb250ZXh0UHJvdmlkZXIgaWYgeW91ciBjb250ZXh0IHNldHVwIGRlcGVuZHMgb24gcmVwbHkgbXV0YXRpb24uXCIsXG4gICAgICApO1xuICAgIH0sXG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBVUEsU0FBZ0IsZ0NBQWdDLEVBQzlDLFlBQ0Esa0NBQ0EsVUFBVSxRQUFRLElBQUksd0JBS2tCO0NBQ3hDLElBQUksQ0FBQyxrQ0FDSCxPQUFPLEVBQUUsUUFBUSxXQUFXO0NBRzlCLE1BQU0sYUFBYSxTQUFTLEtBQUssSUFBSSxPQUFPLE9BQU8sSUFBSTtDQUN2RCxPQUFPLE9BQU8sU0FBUyxVQUFVLEtBQUssYUFBYSxJQUFJLEVBQUUsTUFBTSxXQUFXLElBQUksRUFBRSxNQUFNLE1BQU07QUFDOUY7QUFHQSxTQUFnQiw4QkFBOEIsRUFDNUMsbUJBR3FDO0NBQ3JDLE1BQU0sZ0JBQWdCLG1CQUFtQixvQkFBb0IsT0FBTyxFQUFFLEdBQUcsZ0JBQWdCLElBQUksQ0FBQztDQUM5RixNQUFNLGdCQUFnQixjQUFjLGNBQWMsT0FBTyxJQUNyRCxFQUFFLEdBQUcsY0FBYyxRQUFRLElBQzFCLENBQUM7Q0FFTixJQUFJLE9BQU8sS0FBSyxhQUFhLENBQUMsQ0FBQyxTQUFTLEdBQ3RDLGNBQWMsVUFBVTtDQUcxQixPQUFPLE9BQU8sS0FBSyxhQUFhLENBQUMsQ0FBQyxTQUFTLElBQUksZ0JBQWdCO0FBQ2pFO0FBSUEsU0FBZ0IsZ0NBQWdDLE9BSTlDO0NBQ0EsSUFBSSxjQUFjLEtBQUssR0FBRztFQUN4QixJQUFJLE1BQU0sZUFBZSxLQUN2QixPQUFPO0dBQ0wsTUFBTTtHQUNOLFFBQVE7R0FDUixVQUFVO0VBQ1o7RUFHRixJQUFJLE1BQU0sZUFBZSxPQUFPLE1BQU0sZUFBZSxLQUNuRCxPQUFPO0dBQ0wsTUFBTTtHQUNOLFFBQVE7R0FDUixVQUFVO0VBQ1o7RUFHRixJQUFJLE1BQU0sY0FBYyxPQUFPLE1BQU0sYUFBYSxLQUNoRCxPQUFPO0dBQ0wsTUFBTTtHQUNOLFFBQVE7R0FDUixVQUFVO0VBQ1o7Q0FFSjtDQUVBLE9BQU87RUFDTCxNQUFNO0VBQ04sUUFBUTtFQUNSLFVBQVU7Q0FDWjtBQUNGO0FBSUEsU0FBZ0IsMkJBQXlDO0NBQ3ZELE9BQU8sSUFBSSxNQUFNLENBQUMsR0FBbUIsRUFDbkMsTUFBTTtFQUNKLE1BQU0sSUFBSSxNQUNSLHNJQUNGO0NBQ0YsRUFDRixDQUFDO0FBQ0g7O29CQTFGMkQ7WUFDYiJ9
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { EVENT_TYPES, ORGANIZATION_EVENT_TYPES } from "./events.js";
|
|
2
|
-
|
|
3
2
|
//#region src/auth/audit-log/builders.ts
|
|
4
3
|
const createEvent = (base, data, trigger, location) => ({
|
|
5
4
|
...base,
|
|
@@ -301,7 +300,7 @@ const buildAuditEventCatalog = () => ({
|
|
|
301
300
|
member: buildMemberEvents(),
|
|
302
301
|
invitation: buildInvitationEvents()
|
|
303
302
|
});
|
|
304
|
-
|
|
305
303
|
//#endregion
|
|
306
304
|
export { buildAuditEventCatalog };
|
|
307
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlcnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvYXVkaXQtbG9nL2J1aWxkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQWNjb3VudFNuYXBzaG90LFxuICB0eXBlIEF1ZGl0TG9nRXZlbnQsXG4gIHR5cGUgQnVpbGRlcixcbiAgdHlwZSBCdWlsZGVyTG9jYXRpb24sXG4gIHR5cGUgQnVpbGRlclRyaWdnZXIsXG4gIEVWRU5UX1RZUEVTLFxuICB0eXBlIEludml0YXRpb25TbmFwc2hvdCxcbiAgdHlwZSBNZW1iZXJTbmFwc2hvdCxcbiAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLFxuICB0eXBlIE9yZ2FuaXphdGlvblNuYXBzaG90LFxuICB0eXBlIFNlc3Npb25TbmFwc2hvdCxcbiAgdHlwZSBUZWFtU25hcHNob3QsXG4gIHR5cGUgVXNlclByb2ZpbGVMaXRlLFxuICB0eXBlIFVzZXJTbmFwc2hvdCxcbiAgdHlwZSBWZXJpZmljYXRpb25TbmFwc2hvdCxcbn0gZnJvbSBcIi4vZXZlbnRzXCI7XG5cbi8vIOuqqOuToCDruYzrjZQg6rO17Ya1IO2VhOuTnCh0cmlnZ2VyZWRCeS90cmlnZ2VyQ29udGV4dCwgaXBBZGRyZXNzL2NpdHkvY291bnRyeS9jb3VudHJ5Q29kZSnrpbwg7ZWp7ISx7ZWc64ukLlxuY29uc3QgY3JlYXRlRXZlbnQgPSAoXG4gIGJhc2U6IHsgZXZlbnRLZXk6IHN0cmluZzsgZXZlbnRUeXBlOiBzdHJpbmc7IGV2ZW50RGlzcGxheU5hbWU/OiBzdHJpbmcgfSxcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbj86IEJ1aWxkZXJMb2NhdGlvbixcbik6IEF1ZGl0TG9nRXZlbnQgPT4gKHtcbiAgLi4uYmFzZSxcbiAgZXZlbnREYXRhOiB7XG4gICAgLi4uZGF0YSxcbiAgICB0cmlnZ2VyZWRCeTogdHJpZ2dlci50cmlnZ2VyZWRCeSxcbiAgICB0cmlnZ2VyQ29udGV4dDogdHJpZ2dlci50cmlnZ2VyQ29udGV4dCxcbiAgfSxcbiAgaXBBZGRyZXNzOiBsb2NhdGlvbj8uaXBBZGRyZXNzLFxuICBjaXR5OiBsb2NhdGlvbj8uY2l0eSxcbiAgY291bnRyeTogbG9jYXRpb24/LmNvdW50cnksXG4gIGNvdW50cnlDb2RlOiBsb2NhdGlvbj8uY291bnRyeUNvZGUsXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWNjb3VudCDruYzrjZRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB0eXBlIEFjY291bnRFdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja0FjY291bnRMaW5raW5nOiBCdWlsZGVyPFxuICAgIFtBY2NvdW50U25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tBY2NvdW50VW5saW5rOiBCdWlsZGVyPFxuICAgIFtBY2NvdW50U25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tBY2NvdW50UGFzc3dvcmRDaGFuZ2U6IEJ1aWxkZXI8XG4gICAgW0FjY291bnRTbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xufTtcblxuY29uc3QgYnVpbGRBY2NvdW50RXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIGFjY291bnQ6IEFjY291bnRTbmFwc2hvdCxcbiAgdXNlcjogVXNlclByb2ZpbGVMaXRlLFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogYWNjb3VudC51c2VySWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIHVzZXJJZDogYWNjb3VudC51c2VySWQsXG4gICAgICB1c2VyRW1haWw6IHVzZXI/LmVtYWlsID8/IFwidW5rbm93blwiLFxuICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICBhY2NvdW50SWQ6IGFjY291bnQuaWQsXG4gICAgICBwcm92aWRlcklkOiBhY2NvdW50LnByb3ZpZGVySWQsXG4gICAgfSxcbiAgICB0cmlnZ2VyLFxuICAgIGxvY2F0aW9uLFxuICApO1xuXG5jb25zdCBidWlsZEFjY291bnRFdmVudHMgPSAoKTogQWNjb3VudEV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tBY2NvdW50TGlua2luZzogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuQUNDT1VOVF9MSU5LRUQsXG4gICAgICBgTGlua2VkICR7YWNjb3VudC5wcm92aWRlcklkfSBhY2NvdW50YCxcbiAgICAgIGFjY291bnQsXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrQWNjb3VudFVubGluazogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuQUNDT1VOVF9VTkxJTktFRCxcbiAgICAgIGBVbmxpbmtlZCAke2FjY291bnQucHJvdmlkZXJJZH0gYWNjb3VudGAsXG4gICAgICBhY2NvdW50LFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja0FjY291bnRQYXNzd29yZENoYW5nZTogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuUEFTU1dPUkRfQ0hBTkdFRCxcbiAgICAgIFwiUGFzc3dvcmQgY2hhbmdlZFwiLFxuICAgICAgYWNjb3VudCxcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbn0pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXNzaW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHR5cGUgU2Vzc2lvbkV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrVXNlclNpZ25lZEluOiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tVc2VyU2lnbmVkT3V0OiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tTZXNzaW9uQ3JlYXRlZDogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrU2Vzc2lvblJldm9rZWQ6IEJ1aWxkZXI8XG4gICAgW1Nlc3Npb25TbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1Nlc3Npb25SZXZva2VkQWxsOiBCdWlsZGVyPFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXJdPjtcbiAgdHJhY2tVc2VySW1wZXJzb25hdGVkOiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1VzZXJJbXBlcnNvbmF0aW9uU3RvcDogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tFbWFpbFZlcmlmaWNhdGlvblNlbnQ6IEJ1aWxkZXI8XG4gICAgW1Nlc3Npb25TbmFwc2hvdCwgeyBuYW1lPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZyB9LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tFbWFpbFNpZ25JbkF0dGVtcHQ6IEJ1aWxkZXI8XG4gICAgW1xuICAgICAgeyBlbWFpbDogc3RyaW5nOyBsb2dpbk1ldGhvZDogc3RyaW5nIHwgbnVsbCB9LFxuICAgICAgVXNlclByb2ZpbGVMaXRlLFxuICAgICAgQnVpbGRlclRyaWdnZXIsXG4gICAgICBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWQsXG4gICAgXVxuICA+O1xuICB0cmFja1NvY2lhbFNpZ25JbkF0dGVtcHQ6IEJ1aWxkZXI8XG4gICAgW3sgbG9naW5NZXRob2Q6IHN0cmluZyB8IG51bGwgfSwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1NvY2lhbFNpZ25JblJlZGlyZWN0aW9uQXR0ZW1wdDogQnVpbGRlcjxcbiAgICBbeyBsb2dpbk1ldGhvZDogc3RyaW5nIHwgbnVsbCB9LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG59O1xuXG5jb25zdCBzZXNzaW9uTGlmZWN5Y2xlRGF0YSA9IChzZXNzaW9uOiBTZXNzaW9uU25hcHNob3QsIHVzZXI6IFVzZXJQcm9maWxlTGl0ZSkgPT4gKHtcbiAgdXNlcklkOiBzZXNzaW9uLnVzZXJJZCxcbiAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gIHVzZXJFbWFpbDogdXNlcj8uZW1haWwgPz8gXCJ1bmtub3duXCIsXG4gIHNlc3Npb25JZDogc2Vzc2lvbi5pZCxcbiAgbG9naW5NZXRob2Q6IHNlc3Npb24ubG9naW5NZXRob2QgPz8gXCJ1bmtub3duXCIsXG4gIHVzZXJBZ2VudDogc2Vzc2lvbi51c2VyQWdlbnQsXG59KTtcblxuY29uc3QgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIHNlc3Npb246IFNlc3Npb25TbmFwc2hvdCxcbiAgdXNlcjogVXNlclByb2ZpbGVMaXRlLFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogc2Vzc2lvbi51c2VySWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHNlc3Npb25MaWZlY3ljbGVEYXRhKHNlc3Npb24sIHVzZXIpLFxuICAgIHRyaWdnZXIsXG4gICAgbG9jYXRpb24sXG4gICk7XG5cbmNvbnN0IGJ1aWxkSW1wZXJzb25hdGlvbkV2ZW50ID0gKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnREaXNwbGF5TmFtZTogc3RyaW5nLFxuICBzZXNzaW9uOiBTZXNzaW9uU25hcHNob3QsXG4gIHVzZXI6IFVzZXJQcm9maWxlTGl0ZSxcbiAgaW1wZXJzb25hdG9yOiBVc2VyUHJvZmlsZUxpdGUsXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbjogQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiBzZXNzaW9uLnVzZXJJZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAge1xuICAgICAgLi4uc2Vzc2lvbkxpZmVjeWNsZURhdGEoc2Vzc2lvbiwgdXNlciksXG4gICAgICBpbXBlcnNvbmF0ZWRCeTogaW1wZXJzb25hdG9yPy5uYW1lID8/IGltcGVyc29uYXRvcj8uZW1haWwgPz8gc2Vzc2lvbi5pbXBlcnNvbmF0ZWRCeSxcbiAgICAgIGltcGVyc29uYXRlZEJ5SWQ6IHNlc3Npb24uaW1wZXJzb25hdGVkQnksXG4gICAgfSxcbiAgICB0cmlnZ2VyLFxuICAgIGxvY2F0aW9uLFxuICApO1xuXG5jb25zdCBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZID0gXCJVc2VyIHNpZ24taW4gYXR0ZW1wdCBmYWlsZWRcIjtcblxuY29uc3QgYnVpbGRTZXNzaW9uRXZlbnRzID0gKCk6IFNlc3Npb25FdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrVXNlclNpZ25lZEluOiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX1NJR05FRF9JTixcbiAgICAgIGBTaWduZWQgaW4gdmlhICR7c2Vzc2lvbi5sb2dpbk1ldGhvZCA/PyBcInVua25vd25cIn1gLFxuICAgICAgc2Vzc2lvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tVc2VyU2lnbmVkT3V0OiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX1NJR05FRF9PVVQsXG4gICAgICBcIlVzZXIgc2lnbmVkIG91dFwiLFxuICAgICAgc2Vzc2lvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tTZXNzaW9uQ3JlYXRlZDogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkU2Vzc2lvbkxpZmVjeWNsZUV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuU0VTU0lPTl9DUkVBVEVELFxuICAgICAgXCJTZXNzaW9uIGNyZWF0ZWRcIixcbiAgICAgIHNlc3Npb24sXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrU2Vzc2lvblJldm9rZWQ6IChzZXNzaW9uLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFNlc3Npb25MaWZlY3ljbGVFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlNFU1NJT05fUkVWT0tFRCxcbiAgICAgIFwiU2Vzc2lvbiByZXZva2VkXCIsXG4gICAgICBzZXNzaW9uLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1Nlc3Npb25SZXZva2VkQWxsOiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IHNlc3Npb24udXNlcklkLFxuICAgICAgICBldmVudFR5cGU6IEVWRU5UX1RZUEVTLkFMTF9TRVNTSU9OU19SRVZPS0VELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIkFsbCBzZXNzaW9ucyByZXZva2VkXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB1c2VySWQ6IHNlc3Npb24udXNlcklkLFxuICAgICAgICB1c2VyTmFtZTogdXNlcj8ubmFtZSA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlckVtYWlsOiB1c2VyPy5lbWFpbCA/PyBcInVua25vd25cIixcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrVXNlckltcGVyc29uYXRlZDogKHNlc3Npb24sIHVzZXIsIGltcGVyc29uYXRvciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRJbXBlcnNvbmF0aW9uRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX0lNUEVSU09OQVRFRCxcbiAgICAgIFwiVXNlciBpbXBlcnNvbmF0ZWRcIixcbiAgICAgIHNlc3Npb24sXG4gICAgICB1c2VyLFxuICAgICAgaW1wZXJzb25hdG9yLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrVXNlckltcGVyc29uYXRpb25TdG9wOiAoc2Vzc2lvbiwgdXNlciwgaW1wZXJzb25hdG9yLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZEltcGVyc29uYXRpb25FdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlVTRVJfSU1QRVJTT05BVEVEX1NUT1BQRUQsXG4gICAgICBcIlVzZXIgaW1wZXJzb25hdGlvbiBzdG9wcGVkXCIsXG4gICAgICBzZXNzaW9uLFxuICAgICAgdXNlcixcbiAgICAgIGltcGVyc29uYXRvcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja0VtYWlsVmVyaWZpY2F0aW9uU2VudDogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIpID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiBzZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5FTUFJTF9WRVJJRklDQVRJT05fU0VOVCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJWZXJpZmljYXRpb24gZW1haWwgc2VudFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgdXNlck5hbWU6IHVzZXIubmFtZSxcbiAgICAgICAgdXNlckVtYWlsOiB1c2VyLmVtYWlsLFxuICAgICAgICBzZXNzaW9uSWQ6IHNlc3Npb24uaWQsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICAvLyDso7zsnZg6IOq4sOyhtCDrj5nsnpEg7Jyg7KeAIOKAlCBgbmFtZU5hbWVgIOyYpO2DgCDtlYTrk5zrqoXrj4Qg6re464yA66GcIOuztOyhtO2VnOuLpC5cbiAgdHJhY2tFbWFpbFNpZ25JbkF0dGVtcHQ6IChhdHRlbXB0LCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IHVzZXI/LmlkID8/IFwidW5rbm93blwiLFxuICAgICAgICBldmVudFR5cGU6IEVWRU5UX1RZUEVTLlVTRVJfU0lHTl9JTl9GQUlMRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFNJR05fSU5fRkFJTEVEX0RJU1BMQVksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB1c2VySWQ6IHVzZXI/LmlkID8/IFwidW5rbm93blwiLFxuICAgICAgICBuYW1lTmFtZTogdXNlcj8ubmFtZSA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlckVtYWlsOiBhdHRlbXB0LmVtYWlsLFxuICAgICAgICBsb2dpbk1ldGhvZDogYXR0ZW1wdC5sb2dpbk1ldGhvZCxcbiAgICAgIH0sXG4gICAgICB7IHRyaWdnZXJlZEJ5OiB1c2VyPy5pZCA/PyB0cmlnZ2VyLnRyaWdnZXJlZEJ5LCB0cmlnZ2VyQ29udGV4dDogdHJpZ2dlci50cmlnZ2VyQ29udGV4dCB9LFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tTb2NpYWxTaWduSW5BdHRlbXB0OiAoYXR0ZW1wdCwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5VU0VSX1NJR05fSU5fRkFJTEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJFbWFpbDogdXNlcj8uZW1haWwgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIGxvZ2luTWV0aG9kOiBhdHRlbXB0LmxvZ2luTWV0aG9kLFxuICAgICAgfSxcbiAgICAgIHsgdHJpZ2dlcmVkQnk6IHVzZXI/LmlkID8/IHRyaWdnZXIudHJpZ2dlcmVkQnksIHRyaWdnZXJDb250ZXh0OiB0cmlnZ2VyLnRyaWdnZXJDb250ZXh0IH0sXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICAvLyDso7zsnZg6IOq4sOyhtCDrj5nsnpEg7Jyg7KeAIOKAlCB1c2VyRW1haWwg6rCS7J20IHVzZXI/Lmlk66GcIOyEpOygleuQmOuKlCDquLDsobQg64+Z7J6R64+EIOq3uOuMgOuhnCDrs7TsobTtlZzri6QuXG4gIHRyYWNrU29jaWFsU2lnbkluUmVkaXJlY3Rpb25BdHRlbXB0OiAoYXR0ZW1wdCwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5VU0VSX1NJR05fSU5fRkFJTEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJFbWFpbDogdXNlcj8uaWQgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIGxvZ2luTWV0aG9kOiBhdHRlbXB0LmxvZ2luTWV0aG9kLFxuICAgICAgfSxcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVzZXIg67mM642UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgdHlwZSBVc2VyRXZlbnRCdWlsZGVycyA9IHtcbiAgdHJhY2tVc2VyU2lnbmVkVXA6IEJ1aWxkZXI8W1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF0+O1xuICB0cmFja1VzZXJEZWxldGVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbiAgdHJhY2tVc2VyUHJvZmlsZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW1VzZXJTbmFwc2hvdCwgc3RyaW5nW10sIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrVXNlclByb2ZpbGVJbWFnZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tVc2VyQmFubmVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbiAgdHJhY2tVc2VyVW5CYW5uZWQ6IEJ1aWxkZXI8W1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF0+O1xuICB0cmFja1VzZXJFbWFpbFZlcmlmaWVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbn07XG5cbmNvbnN0IHVzZXJJZGVudGl0eURhdGEgPSAodXNlcjogVXNlclNuYXBzaG90KSA9PiAoe1xuICB1c2VySWQ6IHVzZXIuaWQsXG4gIHVzZXJFbWFpbDogdXNlci5lbWFpbCxcbiAgdXNlck5hbWU6IHVzZXIubmFtZSxcbn0pO1xuXG5jb25zdCBidWlsZFVzZXJFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgdXNlcjogVXNlclNuYXBzaG90LFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXh0cmE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogdXNlci5pZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAgeyAuLi51c2VySWRlbnRpdHlEYXRhKHVzZXIpLCAuLi5leHRyYSB9LFxuICAgIHRyaWdnZXIsXG4gICAgbG9jYXRpb24sXG4gICk7XG5cbmNvbnN0IGJ1aWxkVXNlckV2ZW50cyA9ICgpOiBVc2VyRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja1VzZXJTaWduZWRVcDogKHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkVXNlckV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9DUkVBVEVELFxuICAgICAgYCR7dXNlci5uYW1lIHx8IHVzZXIuZW1haWx9IHNpZ25lZCB1cGAsXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrVXNlckRlbGV0ZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5VU0VSX0RFTEVURUQsIFwiVXNlciBkZWxldGVkXCIsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSxcbiAgdHJhY2tVc2VyUHJvZmlsZVVwZGF0ZWQ6ICh1c2VyLCB1cGRhdGVkRmllbGRzLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5QUk9GSUxFX1VQREFURUQsIFwiUHJvZmlsZSB1cGRhdGVkXCIsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uLCB7XG4gICAgICB1cGRhdGVkRmllbGRzLFxuICAgIH0pLFxuICB0cmFja1VzZXJQcm9maWxlSW1hZ2VVcGRhdGVkOiAodXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRVc2VyRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5QUk9GSUxFX0lNQUdFX1VQREFURUQsXG4gICAgICBcIlByb2ZpbGUgaW1hZ2UgdXBkYXRlZFwiLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1VzZXJCYW5uZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT4ge1xuICAgIGNvbnN0IHJlYXNvblN1ZmZpeCA9IHVzZXIuYmFuUmVhc29uID8gYDogJHt1c2VyLmJhblJlYXNvbn1gIDogXCJcIjtcbiAgICBjb25zdCBleHBpcmVzU3VmZml4ID0gdXNlci5iYW5FeHBpcmVzID8gYCAodW50aWwgJHt1c2VyLmJhbkV4cGlyZXMudG9JU09TdHJpbmcoKX0pYCA6IFwiXCI7XG4gICAgcmV0dXJuIGJ1aWxkVXNlckV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9CQU5ORUQsXG4gICAgICBgVXNlciBiYW5uZWQke3JlYXNvblN1ZmZpeH0ke2V4cGlyZXNTdWZmaXh9YCxcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgICB7XG4gICAgICAgIGJhbm5lZDogdXNlci5iYW5uZWQsXG4gICAgICAgIGJhblJlYXNvbjogdXNlci5iYW5SZWFzb24sXG4gICAgICAgIGJhbkV4cGlyZXM6IHVzZXIuYmFuRXhwaXJlcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfSxcbiAgdHJhY2tVc2VyVW5CYW5uZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5VU0VSX1VOQkFOTkVELCBcIlVzZXIgdW5iYW5uZWRcIiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24sIHtcbiAgICAgIGJhbm5lZDogdXNlci5iYW5uZWQsXG4gICAgfSksXG4gIHRyYWNrVXNlckVtYWlsVmVyaWZpZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5FTUFJTF9WRVJJRklFRCwgXCJFbWFpbCB2ZXJpZmllZFwiLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbiksXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVmVyaWZpY2F0aW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHR5cGUgVmVyaWZpY2F0aW9uRXZlbnRCdWlsZGVycyA9IHtcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdDogQnVpbGRlcjxcbiAgICBbVmVyaWZpY2F0aW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdENvbXBsZXRpb246IEJ1aWxkZXI8XG4gICAgW1ZlcmlmaWNhdGlvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG59O1xuXG5jb25zdCBidWlsZFZlcmlmaWNhdGlvbkV2ZW50ID0gKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnREaXNwbGF5TmFtZTogc3RyaW5nLFxuICB2ZXJpZmljYXRpb246IFZlcmlmaWNhdGlvblNuYXBzaG90LFxuICB1c2VyOiBVc2VyUHJvZmlsZUxpdGUsXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbjogQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiB2ZXJpZmljYXRpb24udmFsdWUsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIHVzZXJJZDogdmVyaWZpY2F0aW9uLnZhbHVlLFxuICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICB1c2VyRW1haWw6IHVzZXI/LmVtYWlsID8/IFwidW5rbm93blwiLFxuICAgIH0sXG4gICAgdHJpZ2dlcixcbiAgICBsb2NhdGlvbixcbiAgKTtcblxuY29uc3QgYnVpbGRWZXJpZmljYXRpb25FdmVudHMgPSAoKTogVmVyaWZpY2F0aW9uRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja1Bhc3N3b3JkUmVzZXRSZXF1ZXN0OiAodmVyaWZpY2F0aW9uLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFZlcmlmaWNhdGlvbkV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuUEFTU1dPUkRfUkVTRVRfUkVRVUVTVEVELFxuICAgICAgXCJQYXNzd29yZCByZXNldCByZXF1ZXN0ZWRcIixcbiAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdENvbXBsZXRpb246ICh2ZXJpZmljYXRpb24sIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkVmVyaWZpY2F0aW9uRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5QQVNTV09SRF9SRVNFVF9DT01QTEVURUQsXG4gICAgICBcIlBhc3N3b3JkIHJlc2V0IGNvbXBsZXRlZFwiLFxuICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9yZ2FuaXphdGlvbiAvIFRlYW0gLyBNZW1iZXIgLyBJbnZpdGF0aW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuY29uc3Qgb3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhID0gKG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uU25hcHNob3QpID0+ICh7XG4gIG9yZ2FuaXphdGlvbklkOiBvcmdhbml6YXRpb24uaWQsXG4gIG9yZ2FuaXphdGlvblNsdWc6IG9yZ2FuaXphdGlvbi5zbHVnLFxuICBvcmdhbml6YXRpb25OYW1lOiBvcmdhbml6YXRpb24ubmFtZSxcbn0pO1xuXG5leHBvcnQgdHlwZSBPcmdhbml6YXRpb25FdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja09yZ2FuaXphdGlvbkNyZWF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xuICB0cmFja09yZ2FuaXphdGlvblVwZGF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xufTtcblxuY29uc3QgYnVpbGRPcmdhbml6YXRpb25FdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdHJpZ2dlcjogQnVpbGRlclRyaWdnZXIsXG4pOiBBdWRpdExvZ0V2ZW50ID0+XG4gIGNyZWF0ZUV2ZW50KFxuICAgIHsgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAgb3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgdHJpZ2dlcixcbiAgKTtcblxuY29uc3QgYnVpbGRPcmdhbml6YXRpb25FdmVudHMgPSAoKTogT3JnYW5pemF0aW9uRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja09yZ2FuaXphdGlvbkNyZWF0ZWQ6IChvcmdhbml6YXRpb24sIHRyaWdnZXIpID0+XG4gICAgYnVpbGRPcmdhbml6YXRpb25FdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fQ1JFQVRFRCxcbiAgICAgIFwiT3JnYW5pemF0aW9uIENyZWF0ZWRcIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25VcGRhdGVkOiAob3JnYW5pemF0aW9uLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkT3JnYW5pemF0aW9uRXZlbnQoXG4gICAgICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX1VQREFURUQsXG4gICAgICBcIk9yZ2FuaXphdGlvbiBVcGRhdGVkXCIsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG59KTtcblxuZXhwb3J0IHR5cGUgVGVhbUV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbUNyZWF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbVVwZGF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbURlbGV0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbU1lbWJlckFkZGVkOiBCdWlsZGVyPFxuICAgIFtcbiAgICAgIE9yZ2FuaXphdGlvblNuYXBzaG90LFxuICAgICAgVGVhbVNuYXBzaG90LFxuICAgICAgVXNlclNuYXBzaG90LFxuICAgICAgeyB0ZWFtSWQ6IHN0cmluZzsgdXNlcklkOiBzdHJpbmcgfSxcbiAgICAgIEJ1aWxkZXJUcmlnZ2VyLFxuICAgIF1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25UZWFtTWVtYmVyUmVtb3ZlZDogQnVpbGRlcjxcbiAgICBbXG4gICAgICBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgICAgIFRlYW1TbmFwc2hvdCxcbiAgICAgIFVzZXJTbmFwc2hvdCxcbiAgICAgIHsgdGVhbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0sXG4gICAgICBCdWlsZGVyVHJpZ2dlcixcbiAgICBdXG4gID47XG59O1xuXG5jb25zdCBidWlsZFRlYW1MaWZlY3ljbGVFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdGVhbTogVGVhbVNuYXBzaG90LFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLCBldmVudFR5cGUsIGV2ZW50RGlzcGxheU5hbWUgfSxcbiAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCB0ZWFtSWQ6IHRlYW0uaWQsIHRlYW1OYW1lOiB0ZWFtLm5hbWUgfSxcbiAgICB0cmlnZ2VyLFxuICApO1xuXG5jb25zdCBidWlsZFRlYW1NZW1iZXJFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdGVhbTogVGVhbVNuYXBzaG90LFxuICB1c2VyOiBVc2VyU25hcHNob3QsXG4gIHRlYW1NZW1iZXI6IHsgdGVhbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0sXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiBvcmdhbml6YXRpb24uaWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgdGVhbUlkOiB0ZWFtTWVtYmVyLnRlYW1JZCxcbiAgICAgIHRlYW1OYW1lOiB0ZWFtLm5hbWUsXG4gICAgICB1c2VyaWQ6IHRlYW1NZW1iZXIudXNlcklkLFxuICAgICAgbWVtYmVyTmFtZTogdXNlci5uYW1lLFxuICAgIH0sXG4gICAgdHJpZ2dlcixcbiAgKTtcblxuY29uc3QgYnVpbGRUZWFtRXZlbnRzID0gKCk6IFRlYW1FdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbUNyZWF0ZWQ6IChvcmdhbml6YXRpb24sIHRlYW0sIHRyaWdnZXIpID0+XG4gICAgYnVpbGRUZWFtTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX1RFQU1fQ1JFQVRFRCxcbiAgICAgIFwiT3JnYW5pemF0aW9uIHRlYW0gY3JlYXRlZFwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25UZWFtVXBkYXRlZDogKG9yZ2FuaXphdGlvbiwgdGVhbSwgdHJpZ2dlcikgPT5cbiAgICBidWlsZFRlYW1MaWZlY3ljbGVFdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fVEVBTV9VUERBVEVELFxuICAgICAgXCJPcmdhbml6YXRpb24gdGVhbSB1cGRhdGVkXCIsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICB0ZWFtLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvblRlYW1EZWxldGVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbUxpZmVjeWNsZUV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX0RFTEVURUQsXG4gICAgICBcIk9yZ2FuaXphdGlvbiB0ZWFtIGRlbGV0ZWRcIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRlYW0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbU1lbWJlckFkZGVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB1c2VyLCB0ZWFtTWVtYmVyLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbU1lbWJlckV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX01FTUJFUl9BRERFRCxcbiAgICAgIFwiVXNlciBhZGRlZCB0byBvcmdhbml6YXRpb24gdGVhbVwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHVzZXIsXG4gICAgICB0ZWFtTWVtYmVyLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvblRlYW1NZW1iZXJSZW1vdmVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB1c2VyLCB0ZWFtTWVtYmVyLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbU1lbWJlckV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX01FTUJFUl9SRU1PVkVELFxuICAgICAgXCJVc2VyIHJlbW92ZWQgZnJvbSBvcmdhbml6YXRpb24gdGVhbVwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHVzZXIsXG4gICAgICB0ZWFtTWVtYmVyLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxufSk7XG5cbmV4cG9ydCB0eXBlIE1lbWJlckV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyQWRkZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBNZW1iZXJTbmFwc2hvdCwgVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJSZW1vdmVkOiBCdWlsZGVyPFxuICAgIFtPcmdhbml6YXRpb25TbmFwc2hvdCwgTWVtYmVyU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUm9sZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBNZW1iZXJTbmFwc2hvdCwgVXNlclNuYXBzaG90LCBzdHJpbmcsIEJ1aWxkZXJUcmlnZ2VyXVxuICA+O1xufTtcblxuY29uc3QgbWVtYmVyQ29yZURhdGEgPSAobWVtYmVyOiBNZW1iZXJTbmFwc2hvdCwgdXNlcjogVXNlclNuYXBzaG90KSA9PiAoe1xuICB1c2VySWQ6IG1lbWJlci51c2VySWQsXG4gIG1lbWJlck5hbWU6IHVzZXIubmFtZSxcbiAgcm9sZTogbWVtYmVyLnJvbGUsXG4gIG1lbWJlcklkOiBtZW1iZXIuaWQsXG4gIG1lbWJlckVtYWlsOiB1c2VyLmVtYWlsLFxufSk7XG5cbmNvbnN0IGJ1aWxkTWVtYmVyRXZlbnRzID0gKCk6IE1lbWJlckV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJBZGRlZDogKG9yZ2FuaXphdGlvbiwgbWVtYmVyLCB1c2VyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0FEREVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIk1lbWJlciBhZGRlZCB0byBvcmdhbml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCAuLi5tZW1iZXJDb3JlRGF0YShtZW1iZXIsIHVzZXIpIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUmVtb3ZlZDogKG9yZ2FuaXphdGlvbiwgbWVtYmVyLCB1c2VyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX1JFTU9WRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiTWVtYmVyIHJlbW92ZWQgZnJvbSBvcmdhbml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCAuLi5tZW1iZXJDb3JlRGF0YShtZW1iZXIsIHVzZXIpIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUm9sZVVwZGF0ZWQ6IChvcmdhbml6YXRpb24sIG1lbWJlciwgdXNlciwgcHJldmlvdXNSb2xlLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX1JPTEVfVVBEQVRFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJPcmdhbml6YXRpb24gbWVtYmVyIHJvbGUgdXBkYXRlZFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIHVzZXJJZDogbWVtYmVyLnVzZXJJZCxcbiAgICAgICAgbWVtYmVyTmFtZTogdXNlci5uYW1lLFxuICAgICAgICBuZXdSb2xlOiBtZW1iZXIucm9sZSxcbiAgICAgICAgb2xkUm9sZTogcHJldmlvdXNSb2xlLFxuICAgICAgICBtZW1iZXJJZDogbWVtYmVyLmlkLFxuICAgICAgICBtZW1iZXJFbWFpbDogdXNlci5lbWFpbCxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG59KTtcblxuZXhwb3J0IHR5cGUgSW52aXRhdGlvbkV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlZDogQnVpbGRlcjxcbiAgICBbT3JnYW5pemF0aW9uU25hcHNob3QsIEludml0YXRpb25TbmFwc2hvdCwgVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJJbnZpdGVBY2NlcHRlZDogQnVpbGRlcjxcbiAgICBbT3JnYW5pemF0aW9uU25hcHNob3QsIEludml0YXRpb25TbmFwc2hvdCwgTWVtYmVyU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlUmVqZWN0ZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBJbnZpdGF0aW9uU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlQ2FuY2VsZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBJbnZpdGF0aW9uU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG59O1xuXG5jb25zdCBpbnZpdGVlRGF0YSA9IChpbnZpdGF0aW9uOiBJbnZpdGF0aW9uU25hcHNob3QpID0+ICh7XG4gIGludml0ZWVJZDogaW52aXRhdGlvbi5pZCxcbiAgaW52aXRlZUVtYWlsOiBpbnZpdGF0aW9uLmVtYWlsLFxuICBpbnZpdGVlUm9sZTogaW52aXRhdGlvbi5yb2xlLFxuICBpbnZpdGVlVGVhbUlkOiBpbnZpdGF0aW9uLnRlYW1JZCxcbn0pO1xuXG5jb25zdCBidWlsZEludml0YXRpb25FdmVudHMgPSAoKTogSW52aXRhdGlvbkV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJJbnZpdGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCBpbnZpdGVyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0lOVklURUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiVXNlciBpbnZpdGVkIHRvIG9yZ2FuaXphdGlvblwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIC4uLmludml0ZWVEYXRhKGludml0YXRpb24pLFxuICAgICAgICBpbnZpdGVySWQ6IGludml0ZXIuaWQsXG4gICAgICAgIGludml0ZXJOYW1lOiBpbnZpdGVyLm5hbWUsXG4gICAgICAgIGludml0ZXJFbWFpbDogaW52aXRlci5lbWFpbCxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlQWNjZXB0ZWQ6IChvcmdhbml6YXRpb24sIGludml0YXRpb24sIG1lbWJlciwgYWNjZXB0ZWRCeSwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQUNDRVBURUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiVXNlciBhY2NlcHRlZCBpbnZpdGUgb3JnYW5pemF0aW9uIGludml0ZVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIC4uLmludml0ZWVEYXRhKGludml0YXRpb24pLFxuICAgICAgICBhY2NlcHRlZEJ5SWQ6IGFjY2VwdGVkQnkuaWQsXG4gICAgICAgIGFjY2VwdGVkQnlFbWFpbDogYWNjZXB0ZWRCeS5lbWFpbCxcbiAgICAgICAgYWNjZXB0ZWRCeU5hbWU6IGFjY2VwdGVkQnkubmFtZSxcbiAgICAgICAgbWVtYmVySWQ6IG1lbWJlci5pZCxcbiAgICAgICAgbWVtYmVyUm9sZTogbWVtYmVyLnJvbGUsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZVJlamVjdGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCByZWplY3RlZEJ5LCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0lOVklURV9SRUpFQ1RFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJVc2VyIHJlamVjdGVkIG9yZ2FuaXphdGlvbiBpbnZpdGVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICAuLi5pbnZpdGVlRGF0YShpbnZpdGF0aW9uKSxcbiAgICAgICAgcmVqZWN0ZWRCeUlkOiByZWplY3RlZEJ5LmlkLFxuICAgICAgICByZWplY3RlZEJ5RW1haWw6IHJlamVjdGVkQnkuZW1haWwsXG4gICAgICAgIHJlamVjdGVkQnlOYW1lOiByZWplY3RlZEJ5Lm5hbWUsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZUNhbmNlbGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCBjYW5jZWxsZWRCeSwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQ0FOQ0VMRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiT3JnYW5pemF0aW9uIGludml0ZSBjYW5jZWxsZWRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICAuLi5pbnZpdGVlRGF0YShpbnZpdGF0aW9uKSxcbiAgICAgICAgY2FuY2VsbGVkQnlJZDogY2FuY2VsbGVkQnkuaWQsXG4gICAgICAgIGNhbmNlbGxlZEJ5TmFtZTogY2FuY2VsbGVkQnkubmFtZSxcbiAgICAgICAgY2FuY2VsbGVkQnlFbWFpbDogY2FuY2VsbGVkQnkuZW1haWwsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxufSk7XG5cbi8vIFRPRE8oc2VjdXJpdHkpOiBzb25hbXUuY29uZmln7J2YIHNlY3VyaXR5IOyYteyFmOydtCDrj4TsnoXrkJjrqbRcbi8vIFNlY3VyaXR5RXZlbnRCdWlsZGVycyAodHJhY2tTZWN1cml0eUJsb2NrZWQvQWxsb3dlZC9DaGFsbGVuZ2VkL1N0YWxlQWNjb3VudCkg7IS57IWY7J2EIOy2lOqwgO2VnOuLpC5cbi8vIGRhc2jsnZggY3JlYXRlU2VjdXJpdHlDbGllbnQvb25TZWN1cml0eUV2ZW50IOq1rO2YhOydgCDtmITsnqwgc2NvcGUgb3V0IChSMSkuXG5cbmV4cG9ydCB0eXBlIEF1ZGl0RXZlbnRCdWlsZGVyQ2F0YWxvZyA9IHtcbiAgYWNjb3VudDogQWNjb3VudEV2ZW50QnVpbGRlcnM7XG4gIHNlc3Npb246IFNlc3Npb25FdmVudEJ1aWxkZXJzO1xuICB1c2VyOiBVc2VyRXZlbnRCdWlsZGVycztcbiAgdmVyaWZpY2F0aW9uOiBWZXJpZmljYXRpb25FdmVudEJ1aWxkZXJzO1xuICBvcmdhbml6YXRpb246IE9yZ2FuaXphdGlvbkV2ZW50QnVpbGRlcnM7XG4gIHRlYW06IFRlYW1FdmVudEJ1aWxkZXJzO1xuICBtZW1iZXI6IE1lbWJlckV2ZW50QnVpbGRlcnM7XG4gIGludml0YXRpb246IEludml0YXRpb25FdmVudEJ1aWxkZXJzO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkQXVkaXRFdmVudENhdGFsb2cgPSAoKTogQXVkaXRFdmVudEJ1aWxkZXJDYXRhbG9nID0+ICh7XG4gIGFjY291bnQ6IGJ1aWxkQWNjb3VudEV2ZW50cygpLFxuICBzZXNzaW9uOiBidWlsZFNlc3Npb25FdmVudHMoKSxcbiAgdXNlcjogYnVpbGRVc2VyRXZlbnRzKCksXG4gIHZlcmlmaWNhdGlvbjogYnVpbGRWZXJpZmljYXRpb25FdmVudHMoKSxcbiAgb3JnYW5pemF0aW9uOiBidWlsZE9yZ2FuaXphdGlvbkV2ZW50cygpLFxuICB0ZWFtOiBidWlsZFRlYW1FdmVudHMoKSxcbiAgbWVtYmVyOiBidWlsZE1lbWJlckV2ZW50cygpLFxuICBpbnZpdGF0aW9uOiBidWlsZEludml0YXRpb25FdmVudHMoKSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFtQkEsTUFBTSxlQUNKLE1BQ0EsTUFDQSxTQUNBLGNBQ21CO0NBQ25CLEdBQUc7Q0FDSCxXQUFXO0VBQ1QsR0FBRztFQUNILGFBQWEsUUFBUTtFQUNyQixnQkFBZ0IsUUFBUTtFQUN6QjtDQUNELFdBQVcsVUFBVTtDQUNyQixNQUFNLFVBQVU7Q0FDaEIsU0FBUyxVQUFVO0NBQ25CLGFBQWEsVUFBVTtDQUN4QjtBQWlCRCxNQUFNLHFCQUNKLFdBQ0Esa0JBQ0EsU0FDQSxNQUNB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
|
|
305
|
+
|
|
306
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlcnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvYXVkaXQtbG9nL2J1aWxkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQWNjb3VudFNuYXBzaG90LFxuICB0eXBlIEF1ZGl0TG9nRXZlbnQsXG4gIHR5cGUgQnVpbGRlcixcbiAgdHlwZSBCdWlsZGVyTG9jYXRpb24sXG4gIHR5cGUgQnVpbGRlclRyaWdnZXIsXG4gIEVWRU5UX1RZUEVTLFxuICB0eXBlIEludml0YXRpb25TbmFwc2hvdCxcbiAgdHlwZSBNZW1iZXJTbmFwc2hvdCxcbiAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLFxuICB0eXBlIE9yZ2FuaXphdGlvblNuYXBzaG90LFxuICB0eXBlIFNlc3Npb25TbmFwc2hvdCxcbiAgdHlwZSBUZWFtU25hcHNob3QsXG4gIHR5cGUgVXNlclByb2ZpbGVMaXRlLFxuICB0eXBlIFVzZXJTbmFwc2hvdCxcbiAgdHlwZSBWZXJpZmljYXRpb25TbmFwc2hvdCxcbn0gZnJvbSBcIi4vZXZlbnRzXCI7XG5cbi8vIOuqqOuToCDruYzrjZQg6rO17Ya1IO2VhOuTnCh0cmlnZ2VyZWRCeS90cmlnZ2VyQ29udGV4dCwgaXBBZGRyZXNzL2NpdHkvY291bnRyeS9jb3VudHJ5Q29kZSnrpbwg7ZWp7ISx7ZWc64ukLlxuY29uc3QgY3JlYXRlRXZlbnQgPSAoXG4gIGJhc2U6IHsgZXZlbnRLZXk6IHN0cmluZzsgZXZlbnRUeXBlOiBzdHJpbmc7IGV2ZW50RGlzcGxheU5hbWU/OiBzdHJpbmcgfSxcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbj86IEJ1aWxkZXJMb2NhdGlvbixcbik6IEF1ZGl0TG9nRXZlbnQgPT4gKHtcbiAgLi4uYmFzZSxcbiAgZXZlbnREYXRhOiB7XG4gICAgLi4uZGF0YSxcbiAgICB0cmlnZ2VyZWRCeTogdHJpZ2dlci50cmlnZ2VyZWRCeSxcbiAgICB0cmlnZ2VyQ29udGV4dDogdHJpZ2dlci50cmlnZ2VyQ29udGV4dCxcbiAgfSxcbiAgaXBBZGRyZXNzOiBsb2NhdGlvbj8uaXBBZGRyZXNzLFxuICBjaXR5OiBsb2NhdGlvbj8uY2l0eSxcbiAgY291bnRyeTogbG9jYXRpb24/LmNvdW50cnksXG4gIGNvdW50cnlDb2RlOiBsb2NhdGlvbj8uY291bnRyeUNvZGUsXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWNjb3VudCDruYzrjZRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB0eXBlIEFjY291bnRFdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja0FjY291bnRMaW5raW5nOiBCdWlsZGVyPFxuICAgIFtBY2NvdW50U25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tBY2NvdW50VW5saW5rOiBCdWlsZGVyPFxuICAgIFtBY2NvdW50U25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tBY2NvdW50UGFzc3dvcmRDaGFuZ2U6IEJ1aWxkZXI8XG4gICAgW0FjY291bnRTbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xufTtcblxuY29uc3QgYnVpbGRBY2NvdW50RXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIGFjY291bnQ6IEFjY291bnRTbmFwc2hvdCxcbiAgdXNlcjogVXNlclByb2ZpbGVMaXRlLFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogYWNjb3VudC51c2VySWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIHVzZXJJZDogYWNjb3VudC51c2VySWQsXG4gICAgICB1c2VyRW1haWw6IHVzZXI/LmVtYWlsID8/IFwidW5rbm93blwiLFxuICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICBhY2NvdW50SWQ6IGFjY291bnQuaWQsXG4gICAgICBwcm92aWRlcklkOiBhY2NvdW50LnByb3ZpZGVySWQsXG4gICAgfSxcbiAgICB0cmlnZ2VyLFxuICAgIGxvY2F0aW9uLFxuICApO1xuXG5jb25zdCBidWlsZEFjY291bnRFdmVudHMgPSAoKTogQWNjb3VudEV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tBY2NvdW50TGlua2luZzogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuQUNDT1VOVF9MSU5LRUQsXG4gICAgICBgTGlua2VkICR7YWNjb3VudC5wcm92aWRlcklkfSBhY2NvdW50YCxcbiAgICAgIGFjY291bnQsXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrQWNjb3VudFVubGluazogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuQUNDT1VOVF9VTkxJTktFRCxcbiAgICAgIGBVbmxpbmtlZCAke2FjY291bnQucHJvdmlkZXJJZH0gYWNjb3VudGAsXG4gICAgICBhY2NvdW50LFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja0FjY291bnRQYXNzd29yZENoYW5nZTogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuUEFTU1dPUkRfQ0hBTkdFRCxcbiAgICAgIFwiUGFzc3dvcmQgY2hhbmdlZFwiLFxuICAgICAgYWNjb3VudCxcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbn0pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXNzaW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHR5cGUgU2Vzc2lvbkV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrVXNlclNpZ25lZEluOiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tVc2VyU2lnbmVkT3V0OiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tTZXNzaW9uQ3JlYXRlZDogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrU2Vzc2lvblJldm9rZWQ6IEJ1aWxkZXI8XG4gICAgW1Nlc3Npb25TbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1Nlc3Npb25SZXZva2VkQWxsOiBCdWlsZGVyPFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXJdPjtcbiAgdHJhY2tVc2VySW1wZXJzb25hdGVkOiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1VzZXJJbXBlcnNvbmF0aW9uU3RvcDogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tFbWFpbFZlcmlmaWNhdGlvblNlbnQ6IEJ1aWxkZXI8XG4gICAgW1Nlc3Npb25TbmFwc2hvdCwgeyBuYW1lPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZyB9LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tFbWFpbFNpZ25JbkF0dGVtcHQ6IEJ1aWxkZXI8XG4gICAgW1xuICAgICAgeyBlbWFpbDogc3RyaW5nOyBsb2dpbk1ldGhvZDogc3RyaW5nIHwgbnVsbCB9LFxuICAgICAgVXNlclByb2ZpbGVMaXRlLFxuICAgICAgQnVpbGRlclRyaWdnZXIsXG4gICAgICBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWQsXG4gICAgXVxuICA+O1xuICB0cmFja1NvY2lhbFNpZ25JbkF0dGVtcHQ6IEJ1aWxkZXI8XG4gICAgW3sgbG9naW5NZXRob2Q6IHN0cmluZyB8IG51bGwgfSwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1NvY2lhbFNpZ25JblJlZGlyZWN0aW9uQXR0ZW1wdDogQnVpbGRlcjxcbiAgICBbeyBsb2dpbk1ldGhvZDogc3RyaW5nIHwgbnVsbCB9LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG59O1xuXG5jb25zdCBzZXNzaW9uTGlmZWN5Y2xlRGF0YSA9IChzZXNzaW9uOiBTZXNzaW9uU25hcHNob3QsIHVzZXI6IFVzZXJQcm9maWxlTGl0ZSkgPT4gKHtcbiAgdXNlcklkOiBzZXNzaW9uLnVzZXJJZCxcbiAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gIHVzZXJFbWFpbDogdXNlcj8uZW1haWwgPz8gXCJ1bmtub3duXCIsXG4gIHNlc3Npb25JZDogc2Vzc2lvbi5pZCxcbiAgbG9naW5NZXRob2Q6IHNlc3Npb24ubG9naW5NZXRob2QgPz8gXCJ1bmtub3duXCIsXG4gIHVzZXJBZ2VudDogc2Vzc2lvbi51c2VyQWdlbnQsXG59KTtcblxuY29uc3QgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIHNlc3Npb246IFNlc3Npb25TbmFwc2hvdCxcbiAgdXNlcjogVXNlclByb2ZpbGVMaXRlLFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogc2Vzc2lvbi51c2VySWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHNlc3Npb25MaWZlY3ljbGVEYXRhKHNlc3Npb24sIHVzZXIpLFxuICAgIHRyaWdnZXIsXG4gICAgbG9jYXRpb24sXG4gICk7XG5cbmNvbnN0IGJ1aWxkSW1wZXJzb25hdGlvbkV2ZW50ID0gKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnREaXNwbGF5TmFtZTogc3RyaW5nLFxuICBzZXNzaW9uOiBTZXNzaW9uU25hcHNob3QsXG4gIHVzZXI6IFVzZXJQcm9maWxlTGl0ZSxcbiAgaW1wZXJzb25hdG9yOiBVc2VyUHJvZmlsZUxpdGUsXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbjogQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiBzZXNzaW9uLnVzZXJJZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAge1xuICAgICAgLi4uc2Vzc2lvbkxpZmVjeWNsZURhdGEoc2Vzc2lvbiwgdXNlciksXG4gICAgICBpbXBlcnNvbmF0ZWRCeTogaW1wZXJzb25hdG9yPy5uYW1lID8/IGltcGVyc29uYXRvcj8uZW1haWwgPz8gc2Vzc2lvbi5pbXBlcnNvbmF0ZWRCeSxcbiAgICAgIGltcGVyc29uYXRlZEJ5SWQ6IHNlc3Npb24uaW1wZXJzb25hdGVkQnksXG4gICAgfSxcbiAgICB0cmlnZ2VyLFxuICAgIGxvY2F0aW9uLFxuICApO1xuXG5jb25zdCBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZID0gXCJVc2VyIHNpZ24taW4gYXR0ZW1wdCBmYWlsZWRcIjtcblxuY29uc3QgYnVpbGRTZXNzaW9uRXZlbnRzID0gKCk6IFNlc3Npb25FdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrVXNlclNpZ25lZEluOiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX1NJR05FRF9JTixcbiAgICAgIGBTaWduZWQgaW4gdmlhICR7c2Vzc2lvbi5sb2dpbk1ldGhvZCA/PyBcInVua25vd25cIn1gLFxuICAgICAgc2Vzc2lvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tVc2VyU2lnbmVkT3V0OiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX1NJR05FRF9PVVQsXG4gICAgICBcIlVzZXIgc2lnbmVkIG91dFwiLFxuICAgICAgc2Vzc2lvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tTZXNzaW9uQ3JlYXRlZDogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkU2Vzc2lvbkxpZmVjeWNsZUV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuU0VTU0lPTl9DUkVBVEVELFxuICAgICAgXCJTZXNzaW9uIGNyZWF0ZWRcIixcbiAgICAgIHNlc3Npb24sXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrU2Vzc2lvblJldm9rZWQ6IChzZXNzaW9uLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFNlc3Npb25MaWZlY3ljbGVFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlNFU1NJT05fUkVWT0tFRCxcbiAgICAgIFwiU2Vzc2lvbiByZXZva2VkXCIsXG4gICAgICBzZXNzaW9uLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1Nlc3Npb25SZXZva2VkQWxsOiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IHNlc3Npb24udXNlcklkLFxuICAgICAgICBldmVudFR5cGU6IEVWRU5UX1RZUEVTLkFMTF9TRVNTSU9OU19SRVZPS0VELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIkFsbCBzZXNzaW9ucyByZXZva2VkXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB1c2VySWQ6IHNlc3Npb24udXNlcklkLFxuICAgICAgICB1c2VyTmFtZTogdXNlcj8ubmFtZSA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlckVtYWlsOiB1c2VyPy5lbWFpbCA/PyBcInVua25vd25cIixcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrVXNlckltcGVyc29uYXRlZDogKHNlc3Npb24sIHVzZXIsIGltcGVyc29uYXRvciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRJbXBlcnNvbmF0aW9uRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX0lNUEVSU09OQVRFRCxcbiAgICAgIFwiVXNlciBpbXBlcnNvbmF0ZWRcIixcbiAgICAgIHNlc3Npb24sXG4gICAgICB1c2VyLFxuICAgICAgaW1wZXJzb25hdG9yLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrVXNlckltcGVyc29uYXRpb25TdG9wOiAoc2Vzc2lvbiwgdXNlciwgaW1wZXJzb25hdG9yLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZEltcGVyc29uYXRpb25FdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlVTRVJfSU1QRVJTT05BVEVEX1NUT1BQRUQsXG4gICAgICBcIlVzZXIgaW1wZXJzb25hdGlvbiBzdG9wcGVkXCIsXG4gICAgICBzZXNzaW9uLFxuICAgICAgdXNlcixcbiAgICAgIGltcGVyc29uYXRvcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja0VtYWlsVmVyaWZpY2F0aW9uU2VudDogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIpID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiBzZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5FTUFJTF9WRVJJRklDQVRJT05fU0VOVCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJWZXJpZmljYXRpb24gZW1haWwgc2VudFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgdXNlck5hbWU6IHVzZXIubmFtZSxcbiAgICAgICAgdXNlckVtYWlsOiB1c2VyLmVtYWlsLFxuICAgICAgICBzZXNzaW9uSWQ6IHNlc3Npb24uaWQsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICAvLyDso7zsnZg6IOq4sOyhtCDrj5nsnpEg7Jyg7KeAIOKAlCBgbmFtZU5hbWVgIOyYpO2DgCDtlYTrk5zrqoXrj4Qg6re464yA66GcIOuztOyhtO2VnOuLpC5cbiAgdHJhY2tFbWFpbFNpZ25JbkF0dGVtcHQ6IChhdHRlbXB0LCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IHVzZXI/LmlkID8/IFwidW5rbm93blwiLFxuICAgICAgICBldmVudFR5cGU6IEVWRU5UX1RZUEVTLlVTRVJfU0lHTl9JTl9GQUlMRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFNJR05fSU5fRkFJTEVEX0RJU1BMQVksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB1c2VySWQ6IHVzZXI/LmlkID8/IFwidW5rbm93blwiLFxuICAgICAgICBuYW1lTmFtZTogdXNlcj8ubmFtZSA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlckVtYWlsOiBhdHRlbXB0LmVtYWlsLFxuICAgICAgICBsb2dpbk1ldGhvZDogYXR0ZW1wdC5sb2dpbk1ldGhvZCxcbiAgICAgIH0sXG4gICAgICB7IHRyaWdnZXJlZEJ5OiB1c2VyPy5pZCA/PyB0cmlnZ2VyLnRyaWdnZXJlZEJ5LCB0cmlnZ2VyQ29udGV4dDogdHJpZ2dlci50cmlnZ2VyQ29udGV4dCB9LFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tTb2NpYWxTaWduSW5BdHRlbXB0OiAoYXR0ZW1wdCwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5VU0VSX1NJR05fSU5fRkFJTEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJFbWFpbDogdXNlcj8uZW1haWwgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIGxvZ2luTWV0aG9kOiBhdHRlbXB0LmxvZ2luTWV0aG9kLFxuICAgICAgfSxcbiAgICAgIHsgdHJpZ2dlcmVkQnk6IHVzZXI/LmlkID8/IHRyaWdnZXIudHJpZ2dlcmVkQnksIHRyaWdnZXJDb250ZXh0OiB0cmlnZ2VyLnRyaWdnZXJDb250ZXh0IH0sXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICAvLyDso7zsnZg6IOq4sOyhtCDrj5nsnpEg7Jyg7KeAIOKAlCB1c2VyRW1haWwg6rCS7J20IHVzZXI/Lmlk66GcIOyEpOygleuQmOuKlCDquLDsobQg64+Z7J6R64+EIOq3uOuMgOuhnCDrs7TsobTtlZzri6QuXG4gIHRyYWNrU29jaWFsU2lnbkluUmVkaXJlY3Rpb25BdHRlbXB0OiAoYXR0ZW1wdCwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5VU0VSX1NJR05fSU5fRkFJTEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJFbWFpbDogdXNlcj8uaWQgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIGxvZ2luTWV0aG9kOiBhdHRlbXB0LmxvZ2luTWV0aG9kLFxuICAgICAgfSxcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVzZXIg67mM642UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgdHlwZSBVc2VyRXZlbnRCdWlsZGVycyA9IHtcbiAgdHJhY2tVc2VyU2lnbmVkVXA6IEJ1aWxkZXI8W1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF0+O1xuICB0cmFja1VzZXJEZWxldGVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbiAgdHJhY2tVc2VyUHJvZmlsZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW1VzZXJTbmFwc2hvdCwgc3RyaW5nW10sIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrVXNlclByb2ZpbGVJbWFnZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tVc2VyQmFubmVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbiAgdHJhY2tVc2VyVW5CYW5uZWQ6IEJ1aWxkZXI8W1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF0+O1xuICB0cmFja1VzZXJFbWFpbFZlcmlmaWVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbn07XG5cbmNvbnN0IHVzZXJJZGVudGl0eURhdGEgPSAodXNlcjogVXNlclNuYXBzaG90KSA9PiAoe1xuICB1c2VySWQ6IHVzZXIuaWQsXG4gIHVzZXJFbWFpbDogdXNlci5lbWFpbCxcbiAgdXNlck5hbWU6IHVzZXIubmFtZSxcbn0pO1xuXG5jb25zdCBidWlsZFVzZXJFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgdXNlcjogVXNlclNuYXBzaG90LFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXh0cmE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogdXNlci5pZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAgeyAuLi51c2VySWRlbnRpdHlEYXRhKHVzZXIpLCAuLi5leHRyYSB9LFxuICAgIHRyaWdnZXIsXG4gICAgbG9jYXRpb24sXG4gICk7XG5cbmNvbnN0IGJ1aWxkVXNlckV2ZW50cyA9ICgpOiBVc2VyRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja1VzZXJTaWduZWRVcDogKHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkVXNlckV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9DUkVBVEVELFxuICAgICAgYCR7dXNlci5uYW1lIHx8IHVzZXIuZW1haWx9IHNpZ25lZCB1cGAsXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrVXNlckRlbGV0ZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5VU0VSX0RFTEVURUQsIFwiVXNlciBkZWxldGVkXCIsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSxcbiAgdHJhY2tVc2VyUHJvZmlsZVVwZGF0ZWQ6ICh1c2VyLCB1cGRhdGVkRmllbGRzLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5QUk9GSUxFX1VQREFURUQsIFwiUHJvZmlsZSB1cGRhdGVkXCIsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uLCB7XG4gICAgICB1cGRhdGVkRmllbGRzLFxuICAgIH0pLFxuICB0cmFja1VzZXJQcm9maWxlSW1hZ2VVcGRhdGVkOiAodXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRVc2VyRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5QUk9GSUxFX0lNQUdFX1VQREFURUQsXG4gICAgICBcIlByb2ZpbGUgaW1hZ2UgdXBkYXRlZFwiLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1VzZXJCYW5uZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT4ge1xuICAgIGNvbnN0IHJlYXNvblN1ZmZpeCA9IHVzZXIuYmFuUmVhc29uID8gYDogJHt1c2VyLmJhblJlYXNvbn1gIDogXCJcIjtcbiAgICBjb25zdCBleHBpcmVzU3VmZml4ID0gdXNlci5iYW5FeHBpcmVzID8gYCAodW50aWwgJHt1c2VyLmJhbkV4cGlyZXMudG9JU09TdHJpbmcoKX0pYCA6IFwiXCI7XG4gICAgcmV0dXJuIGJ1aWxkVXNlckV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9CQU5ORUQsXG4gICAgICBgVXNlciBiYW5uZWQke3JlYXNvblN1ZmZpeH0ke2V4cGlyZXNTdWZmaXh9YCxcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgICB7XG4gICAgICAgIGJhbm5lZDogdXNlci5iYW5uZWQsXG4gICAgICAgIGJhblJlYXNvbjogdXNlci5iYW5SZWFzb24sXG4gICAgICAgIGJhbkV4cGlyZXM6IHVzZXIuYmFuRXhwaXJlcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfSxcbiAgdHJhY2tVc2VyVW5CYW5uZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5VU0VSX1VOQkFOTkVELCBcIlVzZXIgdW5iYW5uZWRcIiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24sIHtcbiAgICAgIGJhbm5lZDogdXNlci5iYW5uZWQsXG4gICAgfSksXG4gIHRyYWNrVXNlckVtYWlsVmVyaWZpZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5FTUFJTF9WRVJJRklFRCwgXCJFbWFpbCB2ZXJpZmllZFwiLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbiksXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVmVyaWZpY2F0aW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHR5cGUgVmVyaWZpY2F0aW9uRXZlbnRCdWlsZGVycyA9IHtcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdDogQnVpbGRlcjxcbiAgICBbVmVyaWZpY2F0aW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdENvbXBsZXRpb246IEJ1aWxkZXI8XG4gICAgW1ZlcmlmaWNhdGlvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG59O1xuXG5jb25zdCBidWlsZFZlcmlmaWNhdGlvbkV2ZW50ID0gKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnREaXNwbGF5TmFtZTogc3RyaW5nLFxuICB2ZXJpZmljYXRpb246IFZlcmlmaWNhdGlvblNuYXBzaG90LFxuICB1c2VyOiBVc2VyUHJvZmlsZUxpdGUsXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbjogQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiB2ZXJpZmljYXRpb24udmFsdWUsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIHVzZXJJZDogdmVyaWZpY2F0aW9uLnZhbHVlLFxuICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICB1c2VyRW1haWw6IHVzZXI/LmVtYWlsID8/IFwidW5rbm93blwiLFxuICAgIH0sXG4gICAgdHJpZ2dlcixcbiAgICBsb2NhdGlvbixcbiAgKTtcblxuY29uc3QgYnVpbGRWZXJpZmljYXRpb25FdmVudHMgPSAoKTogVmVyaWZpY2F0aW9uRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja1Bhc3N3b3JkUmVzZXRSZXF1ZXN0OiAodmVyaWZpY2F0aW9uLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFZlcmlmaWNhdGlvbkV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuUEFTU1dPUkRfUkVTRVRfUkVRVUVTVEVELFxuICAgICAgXCJQYXNzd29yZCByZXNldCByZXF1ZXN0ZWRcIixcbiAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdENvbXBsZXRpb246ICh2ZXJpZmljYXRpb24sIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkVmVyaWZpY2F0aW9uRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5QQVNTV09SRF9SRVNFVF9DT01QTEVURUQsXG4gICAgICBcIlBhc3N3b3JkIHJlc2V0IGNvbXBsZXRlZFwiLFxuICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9yZ2FuaXphdGlvbiAvIFRlYW0gLyBNZW1iZXIgLyBJbnZpdGF0aW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuY29uc3Qgb3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhID0gKG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uU25hcHNob3QpID0+ICh7XG4gIG9yZ2FuaXphdGlvbklkOiBvcmdhbml6YXRpb24uaWQsXG4gIG9yZ2FuaXphdGlvblNsdWc6IG9yZ2FuaXphdGlvbi5zbHVnLFxuICBvcmdhbml6YXRpb25OYW1lOiBvcmdhbml6YXRpb24ubmFtZSxcbn0pO1xuXG5leHBvcnQgdHlwZSBPcmdhbml6YXRpb25FdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja09yZ2FuaXphdGlvbkNyZWF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xuICB0cmFja09yZ2FuaXphdGlvblVwZGF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xufTtcblxuY29uc3QgYnVpbGRPcmdhbml6YXRpb25FdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdHJpZ2dlcjogQnVpbGRlclRyaWdnZXIsXG4pOiBBdWRpdExvZ0V2ZW50ID0+XG4gIGNyZWF0ZUV2ZW50KFxuICAgIHsgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAgb3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgdHJpZ2dlcixcbiAgKTtcblxuY29uc3QgYnVpbGRPcmdhbml6YXRpb25FdmVudHMgPSAoKTogT3JnYW5pemF0aW9uRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja09yZ2FuaXphdGlvbkNyZWF0ZWQ6IChvcmdhbml6YXRpb24sIHRyaWdnZXIpID0+XG4gICAgYnVpbGRPcmdhbml6YXRpb25FdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fQ1JFQVRFRCxcbiAgICAgIFwiT3JnYW5pemF0aW9uIENyZWF0ZWRcIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25VcGRhdGVkOiAob3JnYW5pemF0aW9uLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkT3JnYW5pemF0aW9uRXZlbnQoXG4gICAgICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX1VQREFURUQsXG4gICAgICBcIk9yZ2FuaXphdGlvbiBVcGRhdGVkXCIsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG59KTtcblxuZXhwb3J0IHR5cGUgVGVhbUV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbUNyZWF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbVVwZGF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbURlbGV0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbU1lbWJlckFkZGVkOiBCdWlsZGVyPFxuICAgIFtcbiAgICAgIE9yZ2FuaXphdGlvblNuYXBzaG90LFxuICAgICAgVGVhbVNuYXBzaG90LFxuICAgICAgVXNlclNuYXBzaG90LFxuICAgICAgeyB0ZWFtSWQ6IHN0cmluZzsgdXNlcklkOiBzdHJpbmcgfSxcbiAgICAgIEJ1aWxkZXJUcmlnZ2VyLFxuICAgIF1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25UZWFtTWVtYmVyUmVtb3ZlZDogQnVpbGRlcjxcbiAgICBbXG4gICAgICBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgICAgIFRlYW1TbmFwc2hvdCxcbiAgICAgIFVzZXJTbmFwc2hvdCxcbiAgICAgIHsgdGVhbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0sXG4gICAgICBCdWlsZGVyVHJpZ2dlcixcbiAgICBdXG4gID47XG59O1xuXG5jb25zdCBidWlsZFRlYW1MaWZlY3ljbGVFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdGVhbTogVGVhbVNuYXBzaG90LFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLCBldmVudFR5cGUsIGV2ZW50RGlzcGxheU5hbWUgfSxcbiAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCB0ZWFtSWQ6IHRlYW0uaWQsIHRlYW1OYW1lOiB0ZWFtLm5hbWUgfSxcbiAgICB0cmlnZ2VyLFxuICApO1xuXG5jb25zdCBidWlsZFRlYW1NZW1iZXJFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdGVhbTogVGVhbVNuYXBzaG90LFxuICB1c2VyOiBVc2VyU25hcHNob3QsXG4gIHRlYW1NZW1iZXI6IHsgdGVhbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0sXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiBvcmdhbml6YXRpb24uaWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgdGVhbUlkOiB0ZWFtTWVtYmVyLnRlYW1JZCxcbiAgICAgIHRlYW1OYW1lOiB0ZWFtLm5hbWUsXG4gICAgICB1c2VyaWQ6IHRlYW1NZW1iZXIudXNlcklkLFxuICAgICAgbWVtYmVyTmFtZTogdXNlci5uYW1lLFxuICAgIH0sXG4gICAgdHJpZ2dlcixcbiAgKTtcblxuY29uc3QgYnVpbGRUZWFtRXZlbnRzID0gKCk6IFRlYW1FdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbUNyZWF0ZWQ6IChvcmdhbml6YXRpb24sIHRlYW0sIHRyaWdnZXIpID0+XG4gICAgYnVpbGRUZWFtTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX1RFQU1fQ1JFQVRFRCxcbiAgICAgIFwiT3JnYW5pemF0aW9uIHRlYW0gY3JlYXRlZFwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25UZWFtVXBkYXRlZDogKG9yZ2FuaXphdGlvbiwgdGVhbSwgdHJpZ2dlcikgPT5cbiAgICBidWlsZFRlYW1MaWZlY3ljbGVFdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fVEVBTV9VUERBVEVELFxuICAgICAgXCJPcmdhbml6YXRpb24gdGVhbSB1cGRhdGVkXCIsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICB0ZWFtLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvblRlYW1EZWxldGVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbUxpZmVjeWNsZUV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX0RFTEVURUQsXG4gICAgICBcIk9yZ2FuaXphdGlvbiB0ZWFtIGRlbGV0ZWRcIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRlYW0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbU1lbWJlckFkZGVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB1c2VyLCB0ZWFtTWVtYmVyLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbU1lbWJlckV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX01FTUJFUl9BRERFRCxcbiAgICAgIFwiVXNlciBhZGRlZCB0byBvcmdhbml6YXRpb24gdGVhbVwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHVzZXIsXG4gICAgICB0ZWFtTWVtYmVyLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvblRlYW1NZW1iZXJSZW1vdmVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB1c2VyLCB0ZWFtTWVtYmVyLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbU1lbWJlckV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX01FTUJFUl9SRU1PVkVELFxuICAgICAgXCJVc2VyIHJlbW92ZWQgZnJvbSBvcmdhbml6YXRpb24gdGVhbVwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHVzZXIsXG4gICAgICB0ZWFtTWVtYmVyLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxufSk7XG5cbmV4cG9ydCB0eXBlIE1lbWJlckV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyQWRkZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBNZW1iZXJTbmFwc2hvdCwgVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJSZW1vdmVkOiBCdWlsZGVyPFxuICAgIFtPcmdhbml6YXRpb25TbmFwc2hvdCwgTWVtYmVyU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUm9sZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBNZW1iZXJTbmFwc2hvdCwgVXNlclNuYXBzaG90LCBzdHJpbmcsIEJ1aWxkZXJUcmlnZ2VyXVxuICA+O1xufTtcblxuY29uc3QgbWVtYmVyQ29yZURhdGEgPSAobWVtYmVyOiBNZW1iZXJTbmFwc2hvdCwgdXNlcjogVXNlclNuYXBzaG90KSA9PiAoe1xuICB1c2VySWQ6IG1lbWJlci51c2VySWQsXG4gIG1lbWJlck5hbWU6IHVzZXIubmFtZSxcbiAgcm9sZTogbWVtYmVyLnJvbGUsXG4gIG1lbWJlcklkOiBtZW1iZXIuaWQsXG4gIG1lbWJlckVtYWlsOiB1c2VyLmVtYWlsLFxufSk7XG5cbmNvbnN0IGJ1aWxkTWVtYmVyRXZlbnRzID0gKCk6IE1lbWJlckV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJBZGRlZDogKG9yZ2FuaXphdGlvbiwgbWVtYmVyLCB1c2VyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0FEREVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIk1lbWJlciBhZGRlZCB0byBvcmdhbml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCAuLi5tZW1iZXJDb3JlRGF0YShtZW1iZXIsIHVzZXIpIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUmVtb3ZlZDogKG9yZ2FuaXphdGlvbiwgbWVtYmVyLCB1c2VyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX1JFTU9WRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiTWVtYmVyIHJlbW92ZWQgZnJvbSBvcmdhbml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCAuLi5tZW1iZXJDb3JlRGF0YShtZW1iZXIsIHVzZXIpIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUm9sZVVwZGF0ZWQ6IChvcmdhbml6YXRpb24sIG1lbWJlciwgdXNlciwgcHJldmlvdXNSb2xlLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX1JPTEVfVVBEQVRFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJPcmdhbml6YXRpb24gbWVtYmVyIHJvbGUgdXBkYXRlZFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIHVzZXJJZDogbWVtYmVyLnVzZXJJZCxcbiAgICAgICAgbWVtYmVyTmFtZTogdXNlci5uYW1lLFxuICAgICAgICBuZXdSb2xlOiBtZW1iZXIucm9sZSxcbiAgICAgICAgb2xkUm9sZTogcHJldmlvdXNSb2xlLFxuICAgICAgICBtZW1iZXJJZDogbWVtYmVyLmlkLFxuICAgICAgICBtZW1iZXJFbWFpbDogdXNlci5lbWFpbCxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG59KTtcblxuZXhwb3J0IHR5cGUgSW52aXRhdGlvbkV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlZDogQnVpbGRlcjxcbiAgICBbT3JnYW5pemF0aW9uU25hcHNob3QsIEludml0YXRpb25TbmFwc2hvdCwgVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJJbnZpdGVBY2NlcHRlZDogQnVpbGRlcjxcbiAgICBbT3JnYW5pemF0aW9uU25hcHNob3QsIEludml0YXRpb25TbmFwc2hvdCwgTWVtYmVyU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlUmVqZWN0ZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBJbnZpdGF0aW9uU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlQ2FuY2VsZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBJbnZpdGF0aW9uU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG59O1xuXG5jb25zdCBpbnZpdGVlRGF0YSA9IChpbnZpdGF0aW9uOiBJbnZpdGF0aW9uU25hcHNob3QpID0+ICh7XG4gIGludml0ZWVJZDogaW52aXRhdGlvbi5pZCxcbiAgaW52aXRlZUVtYWlsOiBpbnZpdGF0aW9uLmVtYWlsLFxuICBpbnZpdGVlUm9sZTogaW52aXRhdGlvbi5yb2xlLFxuICBpbnZpdGVlVGVhbUlkOiBpbnZpdGF0aW9uLnRlYW1JZCxcbn0pO1xuXG5jb25zdCBidWlsZEludml0YXRpb25FdmVudHMgPSAoKTogSW52aXRhdGlvbkV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJJbnZpdGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCBpbnZpdGVyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0lOVklURUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiVXNlciBpbnZpdGVkIHRvIG9yZ2FuaXphdGlvblwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIC4uLmludml0ZWVEYXRhKGludml0YXRpb24pLFxuICAgICAgICBpbnZpdGVySWQ6IGludml0ZXIuaWQsXG4gICAgICAgIGludml0ZXJOYW1lOiBpbnZpdGVyLm5hbWUsXG4gICAgICAgIGludml0ZXJFbWFpbDogaW52aXRlci5lbWFpbCxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlQWNjZXB0ZWQ6IChvcmdhbml6YXRpb24sIGludml0YXRpb24sIG1lbWJlciwgYWNjZXB0ZWRCeSwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQUNDRVBURUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiVXNlciBhY2NlcHRlZCBpbnZpdGUgb3JnYW5pemF0aW9uIGludml0ZVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIC4uLmludml0ZWVEYXRhKGludml0YXRpb24pLFxuICAgICAgICBhY2NlcHRlZEJ5SWQ6IGFjY2VwdGVkQnkuaWQsXG4gICAgICAgIGFjY2VwdGVkQnlFbWFpbDogYWNjZXB0ZWRCeS5lbWFpbCxcbiAgICAgICAgYWNjZXB0ZWRCeU5hbWU6IGFjY2VwdGVkQnkubmFtZSxcbiAgICAgICAgbWVtYmVySWQ6IG1lbWJlci5pZCxcbiAgICAgICAgbWVtYmVyUm9sZTogbWVtYmVyLnJvbGUsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZVJlamVjdGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCByZWplY3RlZEJ5LCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0lOVklURV9SRUpFQ1RFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJVc2VyIHJlamVjdGVkIG9yZ2FuaXphdGlvbiBpbnZpdGVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICAuLi5pbnZpdGVlRGF0YShpbnZpdGF0aW9uKSxcbiAgICAgICAgcmVqZWN0ZWRCeUlkOiByZWplY3RlZEJ5LmlkLFxuICAgICAgICByZWplY3RlZEJ5RW1haWw6IHJlamVjdGVkQnkuZW1haWwsXG4gICAgICAgIHJlamVjdGVkQnlOYW1lOiByZWplY3RlZEJ5Lm5hbWUsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZUNhbmNlbGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCBjYW5jZWxsZWRCeSwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQ0FOQ0VMRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiT3JnYW5pemF0aW9uIGludml0ZSBjYW5jZWxsZWRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICAuLi5pbnZpdGVlRGF0YShpbnZpdGF0aW9uKSxcbiAgICAgICAgY2FuY2VsbGVkQnlJZDogY2FuY2VsbGVkQnkuaWQsXG4gICAgICAgIGNhbmNlbGxlZEJ5TmFtZTogY2FuY2VsbGVkQnkubmFtZSxcbiAgICAgICAgY2FuY2VsbGVkQnlFbWFpbDogY2FuY2VsbGVkQnkuZW1haWwsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxufSk7XG5cbi8vIFRPRE8oc2VjdXJpdHkpOiBzb25hbXUuY29uZmln7J2YIHNlY3VyaXR5IOyYteyFmOydtCDrj4TsnoXrkJjrqbRcbi8vIFNlY3VyaXR5RXZlbnRCdWlsZGVycyAodHJhY2tTZWN1cml0eUJsb2NrZWQvQWxsb3dlZC9DaGFsbGVuZ2VkL1N0YWxlQWNjb3VudCkg7IS57IWY7J2EIOy2lOqwgO2VnOuLpC5cbi8vIGRhc2jsnZggY3JlYXRlU2VjdXJpdHlDbGllbnQvb25TZWN1cml0eUV2ZW50IOq1rO2YhOydgCDtmITsnqwgc2NvcGUgb3V0IChSMSkuXG5cbmV4cG9ydCB0eXBlIEF1ZGl0RXZlbnRCdWlsZGVyQ2F0YWxvZyA9IHtcbiAgYWNjb3VudDogQWNjb3VudEV2ZW50QnVpbGRlcnM7XG4gIHNlc3Npb246IFNlc3Npb25FdmVudEJ1aWxkZXJzO1xuICB1c2VyOiBVc2VyRXZlbnRCdWlsZGVycztcbiAgdmVyaWZpY2F0aW9uOiBWZXJpZmljYXRpb25FdmVudEJ1aWxkZXJzO1xuICBvcmdhbml6YXRpb246IE9yZ2FuaXphdGlvbkV2ZW50QnVpbGRlcnM7XG4gIHRlYW06IFRlYW1FdmVudEJ1aWxkZXJzO1xuICBtZW1iZXI6IE1lbWJlckV2ZW50QnVpbGRlcnM7XG4gIGludml0YXRpb246IEludml0YXRpb25FdmVudEJ1aWxkZXJzO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkQXVkaXRFdmVudENhdGFsb2cgPSAoKTogQXVkaXRFdmVudEJ1aWxkZXJDYXRhbG9nID0+ICh7XG4gIGFjY291bnQ6IGJ1aWxkQWNjb3VudEV2ZW50cygpLFxuICBzZXNzaW9uOiBidWlsZFNlc3Npb25FdmVudHMoKSxcbiAgdXNlcjogYnVpbGRVc2VyRXZlbnRzKCksXG4gIHZlcmlmaWNhdGlvbjogYnVpbGRWZXJpZmljYXRpb25FdmVudHMoKSxcbiAgb3JnYW5pemF0aW9uOiBidWlsZE9yZ2FuaXphdGlvbkV2ZW50cygpLFxuICB0ZWFtOiBidWlsZFRlYW1FdmVudHMoKSxcbiAgbWVtYmVyOiBidWlsZE1lbWJlckV2ZW50cygpLFxuICBpbnZpdGF0aW9uOiBidWlsZEludml0YXRpb25FdmVudHMoKSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQW1CQSxNQUFNLGVBQ0osTUFDQSxNQUNBLFNBQ0EsY0FDbUI7Q0FDbkIsR0FBRztDQUNILFdBQVc7RUFDVCxHQUFHO0VBQ0gsYUFBYSxRQUFRO0VBQ3JCLGdCQUFnQixRQUFRO0NBQzFCO0NBQ0EsV0FBVyxVQUFVO0NBQ3JCLE1BQU0sVUFBVTtDQUNoQixTQUFTLFVBQVU7Q0FDbkIsYUFBYSxVQUFVO0FBQ3pCO0FBaUJBLE1BQU0scUJBQ0osV0FDQSxrQkFDQSxTQUNBLE1BQ0Es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
|
|
@@ -68,7 +68,7 @@ const ROUTES = {
|
|
|
68
68
|
ADMIN_BAN_USER: "/admin/ban-user",
|
|
69
69
|
ADMIN_UNBAN_USER: "/admin/unban-user"
|
|
70
70
|
};
|
|
71
|
-
|
|
72
71
|
//#endregion
|
|
73
72
|
export { EVENT_TYPES, ORGANIZATION_EVENT_TYPES, ROUTES };
|
|
74
|
-
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy9ldmVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBzb25hbXVBdWRpdExvZyDtlIzrn6zqt7jsnbjsnbQgYXVkaXQtbG9nLWluZ2VzdG9y66GcIOyghOuLrO2VmOuKlCDsnbTrsqTtirggYm9keSDtg4DsnoUuXG4gKi9cbmV4cG9ydCB0eXBlIEF1ZGl0TG9nRXZlbnQgPSB7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICBldmVudERhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudEtleTogc3RyaW5nO1xuICBldmVudERpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBpcEFkZHJlc3M/OiBzdHJpbmc7XG4gIGNpdHk/OiBzdHJpbmc7XG4gIGNvdW50cnk/OiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlPzogc3RyaW5nO1xufTtcblxuLy8gZGFzaChAYmV0dGVyLWF1dGgvaW5mcmEp7J2YIGF1ZGl0LWV2ZW50IOyDgeyImCDsp5HtlansnYQgU29uYW11IOuhnOy7rCDsoIHsnqwg6rK966Gc7JeQIOunnuqyjCDtj6ztjIUuXG5leHBvcnQgY29uc3QgRVZFTlRfVFlQRVMgPSB7XG4gIFVTRVJfQ1JFQVRFRDogXCJ1c2VyX2NyZWF0ZWRcIixcbiAgVVNFUl9TSUdORURfSU46IFwidXNlcl9zaWduZWRfaW5cIixcbiAgVVNFUl9TSUdORURfT1VUOiBcInVzZXJfc2lnbmVkX291dFwiLFxuICBVU0VSX1NJR05fSU5fRkFJTEVEOiBcInVzZXJfc2lnbl9pbl9mYWlsZWRcIixcbiAgUEFTU1dPUkRfUkVTRVRfUkVRVUVTVEVEOiBcInBhc3N3b3JkX3Jlc2V0X3JlcXVlc3RlZFwiLFxuICBQQVNTV09SRF9SRVNFVF9DT01QTEVURUQ6IFwicGFzc3dvcmRfcmVzZXRfY29tcGxldGVkXCIsXG4gIFBBU1NXT1JEX0NIQU5HRUQ6IFwicGFzc3dvcmRfY2hhbmdlZFwiLFxuICBFTUFJTF9WRVJJRklDQVRJT05fU0VOVDogXCJlbWFpbF92ZXJpZmljYXRpb25fc2VudFwiLFxuICBFTUFJTF9WRVJJRklFRDogXCJlbWFpbF92ZXJpZmllZFwiLFxuICBQUk9GSUxFX1VQREFURUQ6IFwicHJvZmlsZV91cGRhdGVkXCIsXG4gIFBST0ZJTEVfSU1BR0VfVVBEQVRFRDogXCJwcm9maWxlX2ltYWdlX3VwZGF0ZWRcIixcbiAgU0VTU0lPTl9DUkVBVEVEOiBcInNlc3Npb25fY3JlYXRlZFwiLFxuICBTRVNTSU9OX1JFVk9LRUQ6IFwic2Vzc2lvbl9yZXZva2VkXCIsXG4gIEFMTF9TRVNTSU9OU19SRVZPS0VEOiBcImFsbF9zZXNzaW9uc19yZXZva2VkXCIsXG4gIEFDQ09VTlRfTElOS0VEOiBcImFjY291bnRfbGlua2VkXCIsXG4gIEFDQ09VTlRfVU5MSU5LRUQ6IFwiYWNjb3VudF91bmxpbmtlZFwiLFxuICBVU0VSX0JBTk5FRDogXCJ1c2VyX2Jhbm5lZFwiLFxuICBVU0VSX1VOQkFOTkVEOiBcInVzZXJfdW5iYW5uZWRcIixcbiAgVVNFUl9ERUxFVEVEOiBcInVzZXJfZGVsZXRlZFwiLFxuICBVU0VSX0lNUEVSU09OQVRFRDogXCJ1c2VyX2ltcGVyc29uYXRlZFwiLFxuICBVU0VSX0lNUEVSU09OQVRFRF9TVE9QUEVEOiBcInVzZXJfaW1wZXJzb25hdGVkX3N0b3BwZWRcIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMgPSB7XG4gIE9SR0FOSVpBVElPTl9DUkVBVEVEOiBcIm9yZ2FuaXphdGlvbl9jcmVhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9VUERBVEVEOiBcIm9yZ2FuaXphdGlvbl91cGRhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfQURERUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9hZGRlZFwiLFxuICBPUkdBTklaQVRJT05fTUVNQkVSX1JFTU9WRUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9yZW1vdmVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfUk9MRV9VUERBVEVEOiBcIm9yZ2FuaXphdGlvbl9tZW1iZXJfcm9sZV91cGRhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfSU5WSVRFRDogXCJvcmdhbml6YXRpb25fbWVtYmVyX2ludml0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQ0FOQ0VMRUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfY2FuY2VsZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQUNDRVBURUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfYWNjZXB0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfUkVKRUNURUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfcmVqZWN0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX1RFQU1fQ1JFQVRFRDogXCJvcmdhbml6YXRpb25fdGVhbV9jcmVhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9URUFNX1VQREFURUQ6IFwib3JnYW5pemF0aW9uX3RlYW1fdXBkYXRlZFwiLFxuICBPUkdBTklaQVRJT05fVEVBTV9ERUxFVEVEOiBcIm9yZ2FuaXphdGlvbl90ZWFtX2RlbGV0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX1RFQU1fTUVNQkVSX0FEREVEOiBcIm9yZ2FuaXphdGlvbl90ZWFtX21lbWJlcl9hZGRlZFwiLFxuICBPUkdBTklaQVRJT05fVEVBTV9NRU1CRVJfUkVNT1ZFRDogXCJvcmdhbml6YXRpb25fdGVhbV9tZW1iZXJfcmVtb3ZlZFwiLFxufSBhcyBjb25zdDtcblxuLy8gZGFzaOydmCByb3V0ZXMg7IOB7IiYIOykkSDsmrDrpqzqsIAg7Iuk7KCcIG1hdGNoZXLroZwg7JOw64qUIO2VreuqqeunjCDtj6ztjIUuXG5leHBvcnQgY29uc3QgUk9VVEVTID0ge1xuICBTSUdOX0lOOiBcIi9zaWduLWluXCIsXG4gIFNJR05fSU5fRU1BSUw6IFwiL3NpZ24taW4vZW1haWxcIixcbiAgU0lHTl9JTl9FTUFJTF9PVFA6IFwiL3NpZ24taW4vZW1haWwtb3RwXCIsXG4gIFNJR05fSU5fU09DSUFMOiBcIi9zaWduLWluL3NvY2lhbFwiLFxuICBTSUdOX0lOX1NPQ0lBTF9DQUxMQkFDSzogXCIvY2FsbGJhY2svOmlkXCIsXG4gIFNJR05fSU5fT0FVVEhfQ0FMTEJBQ0s6IFwiL29hdXRoMi9jYWxsYmFjay86aWRcIixcbiAgU0lHTl9VUDogXCIvc2lnbi11cFwiLFxuICBTSUdOX1VQX0VNQUlMOiBcIi9zaWduLXVwL2VtYWlsXCIsXG4gIFNJR05fT1VUOiBcIi9zaWduLW91dFwiLFxuICBTRU5EX1ZFUklGSUNBVElPTl9FTUFJTDogXCIvc2VuZC12ZXJpZmljYXRpb24tZW1haWxcIixcbiAgVVBEQVRFX1VTRVI6IFwiL3VwZGF0ZS11c2VyXCIsXG4gIENIQU5HRV9FTUFJTDogXCIvY2hhbmdlLWVtYWlsXCIsXG4gIFZFUklGWV9FTUFJTDogXCIvdmVyaWZ5LWVtYWlsXCIsXG4gIENIQU5HRV9QQVNTV09SRDogXCIvY2hhbmdlLXBhc3N3b3JkXCIsXG4gIFNFVF9QQVNTV09SRDogXCIvc2V0LXBhc3N3b3JkXCIsXG4gIFJFU0VUX1BBU1NXT1JEOiBcIi9yZXNldC1wYXNzd29yZFwiLFxuICBSRVFVRVNUX1BBU1NXT1JEX1JFU0VUOiBcIi9yZXF1ZXN0LXBhc3N3b3JkLXJlc2V0XCIsXG4gIFJFVk9LRV9BTExfU0VTU0lPTlM6IFwiL3Jldm9rZS1zZXNzaW9uc1wiLFxuICBEQVNIX1JPVVRFOiBcIi9kYXNoXCIsXG4gIERBU0hfVVBEQVRFX1VTRVI6IFwiL2Rhc2gvdXBkYXRlLXVzZXJcIixcbiAgREFTSF9SRVZPS0VfU0VTU0lPTlNfQUxMOiBcIi9kYXNoL3Nlc3Npb25zL3Jldm9rZS1hbGxcIixcbiAgREFTSF9CQU5fVVNFUjogXCIvZGFzaC9iYW4tdXNlclwiLFxuICBEQVNIX1VOQkFOX1VTRVI6IFwiL2Rhc2gvdW5iYW4tdXNlclwiLFxuICBBRE1JTl9ST1VURTogXCIvYWRtaW5cIixcbiAgQURNSU5fUkVWT0tFX1VTRVJfU0VTU0lPTlM6IFwiL2FkbWluL3Jldm9rZS11c2VyLXNlc3Npb25zXCIsXG4gIEFETUlOX1NFVF9QQVNTV09SRDogXCIvYWRtaW4vc2V0LXVzZXItcGFzc3dvcmRcIixcbiAgQURNSU5fQkFOX1VTRVI6IFwiL2FkbWluL2Jhbi11c2VyXCIsXG4gIEFETUlOX1VOQkFOX1VTRVI6IFwiL2FkbWluL3VuYmFuLXVzZXJcIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJ1aWxkZXJUcmlnZ2VyID0geyB0cmlnZ2VyZWRCeTogc3RyaW5nOyB0cmlnZ2VyQ29udGV4dDogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBCdWlsZGVyTG9jYXRpb24gPSB7XG4gIGlwQWRkcmVzcz86IHN0cmluZztcbiAgY2l0eT86IHN0cmluZztcbiAgY291bnRyeT86IHN0cmluZztcbiAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG59O1xuXG4vLyDruYzrjZTsl5Ag64SY6riw64qUIOy1nOyGjCDsl5Tti7Dti7Agc2hhcGUuIGJldHRlci1hdXRoIOuCtOu2gCDtg4DsnoXsnYQg6re464yA66GcIOyTsOyngCDslYrqs6Bcbi8vIO2VhOyalO2VnCDtlYTrk5zrp4wg7ISg7Ja47ZWY7JesIO2VuOuTpOufrCDroIjsnbTslrTsl5DshJwg7KKB7ZiA7IScIOyghOuLrO2VnOuLpC5cbmV4cG9ydCB0eXBlIFVzZXJTbmFwc2hvdCA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGJhbm5lZD86IGJvb2xlYW47XG4gIGJhblJlYXNvbj86IHN0cmluZyB8IG51bGw7XG4gIGJhbkV4cGlyZXM/OiBEYXRlIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBTZXNzaW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBsb2dpbk1ldGhvZD86IHN0cmluZyB8IG51bGw7XG4gIHVzZXJBZ2VudD86IHN0cmluZyB8IG51bGw7XG4gIGltcGVyc29uYXRlZEJ5Pzogc3RyaW5nIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBBY2NvdW50U25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBwcm92aWRlcklkOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgVmVyaWZpY2F0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgT3JnYW5pemF0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNsdWc/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgVGVhbVNuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE1lbWJlclNuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgcm9sZT86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBJbnZpdGF0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICByb2xlPzogc3RyaW5nO1xuICB0ZWFtSWQ/OiBzdHJpbmcgfCBudWxsO1xufTtcblxuLy8g7IKs7Jqp7J6QIO2UhOuhnO2VhCDrs7TsobAgKOyhsO2ajCDsi6TtjKgg7IucIG51bGwpXG5leHBvcnQgdHlwZSBVc2VyUHJvZmlsZUxpdGUgPSB7IGlkOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nIH0gfCBudWxsO1xuXG4vLyDrqqjrk6Ag67mM642U64qUIHB1cmU6IGlucHV0IC0+IEF1ZGl0TG9nRXZlbnQuXG4vLyDruYTrj5nquLAgYWRhcHRlciDsobDtmozripQgaG9vayDroIjsnbTslrTsl5DshJwg7IiY7ZaJ7ZWY6rOgLCDsobDtmowg6rKw6rO866W8IOyduOyekOuhnCDsoITri6ztlZzri6QuXG5leHBvcnQgdHlwZSBCdWlsZGVyPEEgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gKC4uLmFyZ3M6IEEpID0+IEF1ZGl0TG9nRXZlbnQ7XG4iXSwibWFwcGluZ3MiOiI7QUFlQSxNQUFhLGNBQWM7Q0FDekIsY0FBYztDQUNkLGdCQUFnQjtDQUNoQixpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsa0JBQWtCO0NBQ2xCLHlCQUF5QjtDQUN6QixnQkFBZ0I7Q0FDaEIsaUJBQWlCO0NBQ2pCLHVCQUF1QjtDQUN2QixpQkFBaUI7Q0FDakIsaUJBQWlCO0NBQ2pCLHNCQUFzQjtDQUN0QixnQkFBZ0I7Q0FDaEIsa0JBQWtCO0NBQ2xCLGFBQWE7Q0FDYixlQUFlO0NBQ2YsY0FBYztDQUNkLG1CQUFtQjtDQUNuQiwyQkFBMkI7QUFDN0I7QUFFQSxNQUFhLDJCQUEyQjtDQUN0QyxzQkFBc0I7Q0FDdEIsc0JBQXNCO0NBQ3RCLDJCQUEyQjtDQUMzQiw2QkFBNkI7Q0FDN0Isa0NBQWtDO0NBQ2xDLDZCQUE2QjtDQUM3QixxQ0FBcUM7Q0FDckMscUNBQXFDO0NBQ3JDLHFDQUFxQztDQUNyQywyQkFBMkI7Q0FDM0IsMkJBQTJCO0NBQzNCLDJCQUEyQjtDQUMzQixnQ0FBZ0M7Q0FDaEMsa0NBQWtDO0FBQ3BDO0FBR0EsTUFBYSxTQUFTO0NBQ3BCLFNBQVM7Q0FDVCxlQUFlO0NBQ2YsbUJBQW1CO0NBQ25CLGdCQUFnQjtDQUNoQix5QkFBeUI7Q0FDekIsd0JBQXdCO0NBQ3hCLFNBQVM7Q0FDVCxlQUFlO0NBQ2YsVUFBVTtDQUNWLHlCQUF5QjtDQUN6QixhQUFhO0NBQ2IsY0FBYztDQUNkLGNBQWM7Q0FDZCxpQkFBaUI7Q0FDakIsY0FBYztDQUNkLGdCQUFnQjtDQUNoQix3QkFBd0I7Q0FDeEIscUJBQXFCO0NBQ3JCLFlBQVk7Q0FDWixrQkFBa0I7Q0FDbEIsMEJBQTBCO0NBQzFCLGVBQWU7Q0FDZixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLDRCQUE0QjtDQUM1QixvQkFBb0I7Q0FDcEIsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtBQUNwQiJ9
|