@cartanova/qgrid-cli 2.10.10 → 2.11.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/bundle/dist/_virtual/_rolldown/runtime.js +1 -10
- package/bundle/dist/application/monit/log-buffer.js +12 -6
- package/bundle/dist/application/monit/monit.frame.js +11 -3
- package/bundle/dist/application/monit/monit.types.js +1 -1
- package/bundle/dist/application/qgrid/conv-routing.js +9 -6
- package/bundle/dist/application/qgrid/expired-token-reminder.js +2 -2
- package/bundle/dist/application/qgrid/oauth.js +31 -4
- package/bundle/dist/application/qgrid/qgrid-image-generation.js +1 -1
- package/bundle/dist/application/qgrid/qgrid-response-format.js +21 -19
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +40 -33
- package/bundle/dist/application/qgrid/qgrid.dispatcher.js +128 -93
- package/bundle/dist/application/qgrid/qgrid.frame.js +930 -49
- package/bundle/dist/application/qgrid/qgrid.types.js +212 -5
- package/bundle/dist/application/qgrid/schema-prompt.js +75 -48
- package/bundle/dist/application/qgrid/slack-user-map.js +1 -1
- package/bundle/dist/application/qgrid/token-death.js +1 -1
- package/bundle/dist/application/qgrid/token-subscriber.js +83 -30
- package/bundle/dist/application/qgrid/token-trigger-setup.js +1 -1
- package/bundle/dist/application/qgrid/token-window-keepalive.js +8 -6
- package/bundle/dist/application/qgrid/tool-emulation-schema.js +13 -13
- package/bundle/dist/application/qgrid/tool-emulation.js +19 -15
- package/bundle/dist/application/request-log/json-schema-type-text.js +29 -12
- package/bundle/dist/application/request-log/request-log.model.js +83 -70
- package/bundle/dist/application/request-log/request-log.types.js +1 -1
- package/bundle/dist/application/request-log/zod-code-format.js +1 -1
- package/bundle/dist/application/request-log-step/request-log-step.model.js +1 -1
- package/bundle/dist/application/request-log-step/request-log-step.types.js +1 -1
- package/bundle/dist/application/setting/setting.constant.js +1 -1
- package/bundle/dist/application/setting/setting.model.js +2 -2
- package/bundle/dist/application/setting/setting.store.js +2 -2
- package/bundle/dist/application/setting/setting.types.js +1 -1
- package/bundle/dist/application/sonamu.generated.js +32 -16
- package/bundle/dist/application/sonamu.generated.sso.js +1 -1
- package/bundle/dist/application/token/token.model.js +26 -9
- package/bundle/dist/application/token/token.types.js +20 -3
- package/bundle/dist/i18n/en.js +15 -1
- package/bundle/dist/i18n/ko.js +15 -1
- package/bundle/dist/i18n/sd.generated.js +1 -1
- package/bundle/dist/migrations/20260807133553_manual__backfill_request_log_cost.js +8 -6
- package/bundle/dist/server-bootstrap.js +4 -2
- package/bundle/dist/server-error-handler.js +1 -1
- package/bundle/dist/sonamu.config.js +37 -8
- package/bundle/dist/startup-migrations.js +17 -7
- package/bundle/dist/testing/global.js +1 -1
- package/bundle/dist/testing/schema-bench.js +0 -0
- package/bundle/dist/testing/test-database-name.js +1 -1
- package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +1 -1
- package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +11 -5
- package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +4 -4
- package/bundle/dist/utils/providers/anthropic/anthropic-thinking.js +1 -1
- package/bundle/dist/utils/providers/anthropic/claude-session.js +20 -19
- package/bundle/dist/utils/providers/anthropic/fence-strip.js +1 -1
- package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +49 -23
- package/bundle/dist/utils/providers/common/credentials.js +5 -1
- package/bundle/dist/utils/providers/common/effort.js +3 -3
- package/bundle/dist/utils/providers/common/model-cost.js +69 -14
- package/bundle/dist/utils/providers/common/provider-types.js +29 -1
- package/bundle/dist/utils/providers/common/schema-validation.js +78 -40
- package/bundle/dist/utils/providers/common/smooth-weighted-round-robin.js +1 -1
- package/bundle/dist/utils/providers/common/strictifier.js +62 -43
- package/bundle/dist/utils/providers/common/thinking.js +3 -2
- package/bundle/dist/utils/providers/common/ttft.js +1 -1
- package/bundle/dist/utils/providers/grok/grok-backend-protocol.js +427 -0
- package/bundle/dist/utils/providers/grok/grok-constants.js +55 -0
- package/bundle/dist/utils/providers/grok/grok-direct-client.js +196 -0
- package/bundle/dist/utils/providers/grok/grok-dispatcher.js +1313 -0
- package/bundle/dist/utils/providers/grok/grok-headers.js +118 -0
- package/bundle/dist/utils/providers/grok/grok-media-client.js +420 -0
- package/bundle/dist/utils/providers/grok/grok-models.js +114 -0
- package/bundle/dist/utils/providers/grok/grok-oauth.js +455 -0
- package/bundle/dist/utils/providers/grok/grok-quota.js +119 -0
- package/bundle/dist/utils/providers/grok/grok-refresh.js +192 -0
- package/bundle/dist/utils/providers/grok/grok-types.js +186 -0
- package/bundle/dist/utils/providers/grok/grok-voice-client.js +199 -0
- package/bundle/dist/utils/providers/grok/index.js +11 -0
- package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +111 -83
- package/bundle/dist/utils/providers/openai/openai-callback-relay.js +3 -2
- package/bundle/dist/utils/providers/openai/openai-constants.js +1 -1
- package/bundle/dist/utils/providers/openai/openai-direct-client.js +23 -7
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +143 -106
- package/bundle/dist/utils/providers/openai/openai-image-generation.js +48 -33
- package/bundle/dist/utils/providers/openai/openai-oauth.js +28 -13
- package/bundle/dist/utils/providers/openai/openai-quota.js +38 -27
- package/bundle/dist/utils/providers/openai/openai-refresh.js +17 -9
- package/bundle/dist/utils/providers/openai/openai-sse.js +1 -1
- package/bundle/dist/utils/providers/openai/openai-transport-config.js +1 -1
- package/bundle/dist/utils/quiet-hours.js +1 -1
- package/bundle/dist/utils/slack-notify.js +14 -8
- package/bundle/dist/utils/subset-loaders.js +4 -5
- package/bundle/src/application/monit/log-buffer.ts +23 -9
- package/bundle/src/application/monit/monit.frame.ts +22 -5
- package/bundle/src/application/monit/monit.types.ts +6 -0
- package/bundle/src/application/qgrid/conv-routing.test.ts +76 -4
- package/bundle/src/application/qgrid/conv-routing.ts +35 -9
- package/bundle/src/application/qgrid/expired-token-reminder.ts +9 -1
- package/bundle/src/application/qgrid/oauth.ts +51 -15
- package/bundle/src/application/qgrid/qgrid-image-generation.ts +9 -0
- package/bundle/src/application/qgrid/qgrid-response-format.ts +50 -25
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +19 -0
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +84 -40
- package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +97 -0
- package/bundle/src/application/qgrid/qgrid.dispatcher.ts +274 -126
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +1013 -3
- package/bundle/src/application/qgrid/qgrid.frame.ts +1415 -60
- package/bundle/src/application/qgrid/qgrid.types.ts +335 -0
- package/bundle/src/application/qgrid/schema-prompt.ts +105 -41
- package/bundle/src/application/qgrid/slack-user-map.ts +5 -0
- package/bundle/src/application/qgrid/token-death.ts +4 -0
- package/bundle/src/application/qgrid/token-subscriber.test.ts +21 -19
- package/bundle/src/application/qgrid/token-subscriber.ts +186 -53
- package/bundle/src/application/qgrid/token-trigger-setup.ts +2 -0
- package/bundle/src/application/qgrid/token-window-keepalive.ts +49 -6
- package/bundle/src/application/qgrid/tool-emulation-schema.ts +33 -29
- package/bundle/src/application/qgrid/tool-emulation.ts +52 -27
- package/bundle/src/application/request-log/json-schema-type-text.test.ts +5 -5
- package/bundle/src/application/request-log/json-schema-type-text.ts +81 -26
- package/bundle/src/application/request-log/request-log.model.test.ts +111 -4
- package/bundle/src/application/request-log/request-log.model.ts +277 -146
- package/bundle/src/application/request-log/request-log.types.ts +6 -0
- package/bundle/src/application/request-log/zod-code-format.ts +11 -0
- package/bundle/src/application/request-log-step/request-log-step.model.ts +1 -0
- package/bundle/src/application/request-log-step/request-log-step.types.ts +2 -0
- package/bundle/src/application/setting/setting.constant.ts +9 -0
- package/bundle/src/application/setting/setting.model.ts +12 -2
- package/bundle/src/application/setting/setting.store.ts +5 -1
- package/bundle/src/application/setting/setting.types.ts +8 -0
- package/bundle/src/application/sonamu.generated.http +133 -0
- package/bundle/src/application/sonamu.generated.sso.ts +2 -0
- package/bundle/src/application/sonamu.generated.ts +15 -0
- package/bundle/src/application/token/token.identity.test.ts +20 -0
- package/bundle/src/application/token/token.model.ts +66 -7
- package/bundle/src/application/token/token.types.ts +24 -1
- package/bundle/src/i18n/en.ts +19 -0
- package/bundle/src/i18n/ko.ts +21 -0
- package/bundle/src/i18n/sd.generated.ts +23 -2
- package/bundle/src/migrations/20260807133553_manual__backfill_request_log_cost.ts +16 -8
- package/bundle/src/server-bootstrap.ts +4 -2
- package/bundle/src/server-error-handler.ts +1 -0
- package/bundle/src/sonamu.config.ts +69 -7
- package/bundle/src/startup-migrations.ts +27 -9
- package/bundle/src/testing/global.ts +20 -0
- package/bundle/src/testing/schema-bench.ts +105 -30
- package/bundle/src/testing/test-database-name.ts +2 -0
- package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +8 -0
- package/bundle/src/utils/providers/anthropic/anthropic-dispatcher.ts +41 -6
- package/bundle/src/utils/providers/anthropic/anthropic-quota.ts +7 -3
- package/bundle/src/utils/providers/anthropic/anthropic-thinking.ts +6 -0
- package/bundle/src/utils/providers/anthropic/claude-session.ts +58 -24
- package/bundle/src/utils/providers/anthropic/fence-strip.ts +11 -0
- package/bundle/src/utils/providers/anthropic/stream-json-adapter.ts +110 -45
- package/bundle/src/utils/providers/common/credentials.ts +8 -0
- package/bundle/src/utils/providers/common/effort.ts +9 -2
- package/bundle/src/utils/providers/common/model-cost.test.ts +48 -1
- package/bundle/src/utils/providers/common/model-cost.ts +259 -158
- package/bundle/src/utils/providers/common/provider-dispatcher.ts +98 -2
- package/bundle/src/utils/providers/common/provider-types.ts +46 -3
- package/bundle/src/utils/providers/common/schema-validation.test.ts +5 -1
- package/bundle/src/utils/providers/common/schema-validation.ts +124 -56
- package/bundle/src/utils/providers/common/smooth-weighted-round-robin.ts +4 -0
- package/bundle/src/utils/providers/common/strictifier.ts +185 -59
- package/bundle/src/utils/providers/common/thinking.ts +2 -2
- package/bundle/src/utils/providers/common/ttft.ts +4 -2
- package/bundle/src/utils/providers/grok/__fixtures__/golden-responses-1.0.60.json +164 -0
- package/bundle/src/utils/providers/grok/grok-backend-protocol.test.ts +325 -0
- package/bundle/src/utils/providers/grok/grok-backend-protocol.ts +721 -0
- package/bundle/src/utils/providers/grok/grok-constants.ts +105 -0
- package/bundle/src/utils/providers/grok/grok-direct-client.test.ts +179 -0
- package/bundle/src/utils/providers/grok/grok-direct-client.ts +313 -0
- package/bundle/src/utils/providers/grok/grok-dispatcher.test.ts +1395 -0
- package/bundle/src/utils/providers/grok/grok-dispatcher.ts +2105 -0
- package/bundle/src/utils/providers/grok/grok-headers.test.ts +149 -0
- package/bundle/src/utils/providers/grok/grok-headers.ts +199 -0
- package/bundle/src/utils/providers/grok/grok-media-client.test.ts +446 -0
- package/bundle/src/utils/providers/grok/grok-media-client.ts +703 -0
- package/bundle/src/utils/providers/grok/grok-models.test.ts +96 -0
- package/bundle/src/utils/providers/grok/grok-models.ts +161 -0
- package/bundle/src/utils/providers/grok/grok-oauth.test.ts +406 -0
- package/bundle/src/utils/providers/grok/grok-oauth.ts +771 -0
- package/bundle/src/utils/providers/grok/grok-quota.test.ts +142 -0
- package/bundle/src/utils/providers/grok/grok-quota.ts +198 -0
- package/bundle/src/utils/providers/grok/grok-refresh.test.ts +239 -0
- package/bundle/src/utils/providers/grok/grok-refresh.ts +325 -0
- package/bundle/src/utils/providers/grok/grok-types.test.ts +252 -0
- package/bundle/src/utils/providers/grok/grok-types.ts +374 -0
- package/bundle/src/utils/providers/grok/grok-voice-client.test.ts +321 -0
- package/bundle/src/utils/providers/grok/grok-voice-client.ts +284 -0
- package/bundle/src/utils/providers/grok/index.ts +20 -0
- package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +221 -137
- package/bundle/src/utils/providers/openai/openai-callback-relay.ts +12 -1
- package/bundle/src/utils/providers/openai/openai-constants.ts +2 -0
- package/bundle/src/utils/providers/openai/openai-direct-client.ts +111 -21
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +322 -169
- package/bundle/src/utils/providers/openai/openai-image-generation.ts +116 -36
- package/bundle/src/utils/providers/openai/openai-oauth.ts +48 -20
- package/bundle/src/utils/providers/openai/openai-quota.ts +77 -46
- package/bundle/src/utils/providers/openai/openai-refresh.ts +42 -18
- package/bundle/src/utils/providers/openai/openai-sse.ts +27 -3
- package/bundle/src/utils/providers/openai/openai-transport-config.ts +2 -0
- package/bundle/src/utils/quiet-hours.ts +12 -1
- package/bundle/src/utils/slack-notify.ts +44 -13
- package/bundle/src/utils/subset-loaders.ts +7 -7
- package/bundle/web-dist/client/assets/clsx-5XM_pHvN.js +1 -0
- package/bundle/web-dist/client/assets/index-BA7uQ-6c.js +31 -0
- package/bundle/web-dist/client/assets/index-Be2qCZmI.css +1 -0
- package/bundle/web-dist/client/assets/logs-C47OJGEI.js +1 -0
- package/bundle/web-dist/client/assets/monit-BS9no0dU.js +4 -0
- package/bundle/web-dist/client/assets/plus-sdACTfH0.js +1 -0
- package/bundle/web-dist/client/assets/refresh-cw-CY8o_1cT.js +1 -0
- package/bundle/web-dist/client/assets/request-model-BRtFuZvj.js +1 -0
- package/bundle/web-dist/client/assets/routes-kqgkUxE8.js +5 -0
- package/bundle/web-dist/client/assets/{services.generated-NP-ValHd.js → services.generated-CefiDXEv.js} +5 -5
- package/bundle/web-dist/client/assets/settings-DNDvFGSw.js +1 -0
- package/bundle/web-dist/client/assets/show-u8Np69q3.js +2 -0
- package/bundle/web-dist/client/assets/tokens-QvP410NW.js +1 -0
- package/bundle/web-dist/client/assets/total-cost-MnfKU8IN.js +1 -0
- package/bundle/web-dist/client/assets/use-oauth-login-flow-Bzdh28Ws.js +1 -0
- package/bundle/web-dist/client/assets/use-update-token-mutation-CfJKaxmR.js +1 -0
- package/bundle/web-dist/client/assets/vendor-react-CUFFrVN9.js +244 -0
- package/bundle/web-dist/client/assets/vendor-tanstack-Bf_jag9G.js +1 -0
- package/bundle/web-dist/client/index.html +6 -6
- package/bundle/web-dist/server/assets/clsx-D_N5PN_2.js +16 -0
- package/bundle/web-dist/server/assets/{lazyRouteComponent-CgBdabgd.js → lazyRouteComponent-D8iTIHyn.js} +129 -2
- package/bundle/web-dist/server/assets/logs-B3OTd9hy.js +825 -0
- package/bundle/web-dist/server/assets/{monit-ZPt66W5M.js → monit-B2hqorPe.js} +385 -126
- package/bundle/web-dist/server/assets/plus-DwG7h9kq.js +28 -0
- package/bundle/web-dist/server/assets/{react-dom-Ds75e4Jl.js → react-dom-BIYQzBqG.js} +2 -129
- package/bundle/web-dist/server/assets/refresh-cw-mMBkwOq0.js +44 -0
- package/bundle/web-dist/server/assets/{request-model-DjGldb-h.js → request-model-I6OdODSH.js} +15 -6
- package/bundle/web-dist/server/assets/{routes-Ct-k7nBA.js → routes-B95YlUv2.js} +760 -213
- package/bundle/web-dist/server/assets/{services.generated-BA4AcAf5.js → services.generated-DQATJ6qf.js} +12820 -12194
- package/bundle/web-dist/server/assets/settings-C3gbGk0m.js +830 -0
- package/bundle/web-dist/server/assets/{show-LSFIzvO2.js → show-Bxaj3rhH.js} +1350 -418
- package/bundle/web-dist/server/assets/tokens-CZjH3cB7.js +1038 -0
- package/bundle/web-dist/server/assets/total-cost-fTE9Xy82.js +18 -0
- package/bundle/web-dist/server/assets/use-oauth-login-flow-CKDHgc3U.js +2379 -0
- package/bundle/web-dist/server/assets/{use-update-token-mutation-pkArIzCP.js → use-update-token-mutation-BEbgOzaa.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +4295 -22810
- package/dist/cli.js +9 -9
- package/package.json +4 -11
- package/postinstall.mjs +12 -0
- package/skills/qgrid/SKILL.md +1 -0
- package/skills/qgrid/references/cli-env-and-server-boot.md +4 -1
- package/skills/qgrid/references/decision-rationale.md +23 -0
- package/skills/qgrid/references/grok-runtime.md +89 -0
- package/skills/qgrid/references/provider-runtime-differences.md +30 -29
- package/skills/qgrid/references/repo-map.md +10 -0
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +56 -3
- package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +0 -406
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.10/node_modules/@vitest/expect/dist/index.js +0 -1507
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js +0 -887
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2756
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/index.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/utils.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.10/node_modules/@vitest/snapshot/dist/index.js +0 -922
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js +0 -386
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -121
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/constants.js +0 -51
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/diff.js +0 -1317
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/display.js +0 -561
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js +0 -40
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js +0 -272
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/offset.js +0 -27
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js +0 -77
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/source-map.js +0 -381
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/timers.js +0 -51
- package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +0 -2986
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +0 -109
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +0 -10
- package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +0 -1126
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -21
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -432
- package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +0 -517
- package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +0 -101
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.11.2_@emnapi_runtime@1.11.2_@types_node@25.0.7_esbuild@0.27.4_5b35fc1fb85d2af4d105e0d74f940f50/node_modules/vite/dist/node/module-runner.js +0 -1265
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +0 -9
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +0 -41
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +0 -19
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +0 -202
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +0 -46
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +0 -119
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +0 -3044
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +0 -59
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/index.js +0 -28
- package/bundle/dist/testing/setup-mocks.js +0 -16
- package/bundle/src/testing/setup-mocks.ts +0 -44
- package/bundle/web-dist/client/assets/index-Bw2s88Ot.css +0 -1
- package/bundle/web-dist/client/assets/index-DZwzUfI-.js +0 -106
- package/bundle/web-dist/client/assets/logs-Cog79DU5.js +0 -1
- package/bundle/web-dist/client/assets/monit-2auznBys.js +0 -1
- package/bundle/web-dist/client/assets/plus-B62CuqT8.js +0 -1
- package/bundle/web-dist/client/assets/refresh-cw-NNcU0Cmq.js +0 -1
- package/bundle/web-dist/client/assets/request-model-CojtinqK.js +0 -1
- package/bundle/web-dist/client/assets/routes-B0lTeLK-.js +0 -5
- package/bundle/web-dist/client/assets/settings-D8ZxZGSJ.js +0 -1
- package/bundle/web-dist/client/assets/show-CFSERlnM.js +0 -2
- package/bundle/web-dist/client/assets/tokens-CZXUyI7O.js +0 -1
- package/bundle/web-dist/client/assets/use-oauth-login-flow-hboOs3wG.js +0 -1
- package/bundle/web-dist/client/assets/use-update-token-mutation-BQHS0byG.js +0 -1
- package/bundle/web-dist/client/assets/vendor-react-DH4kUfK2.js +0 -9
- package/bundle/web-dist/client/assets/vendor-tanstack-DJRQAbrY.js +0 -1
- package/bundle/web-dist/server/assets/logs-BMyR98rU.js +0 -509
- package/bundle/web-dist/server/assets/plus-BZ9I0VgC.js +0 -19
- package/bundle/web-dist/server/assets/refresh-cw-CztCFis-.js +0 -23
- package/bundle/web-dist/server/assets/settings-CBUZ47Xx.js +0 -461
- package/bundle/web-dist/server/assets/tokens-DxrBW512.js +0 -448
- package/bundle/web-dist/server/assets/use-oauth-login-flow-Gn8flMK5.js +0 -178
- package/dist/cli.d.ts +0 -10
- /package/bundle/web-dist/client/assets/{cost-DH2jZbrw.js → cost-DB3HbU7T.js} +0 -0
- /package/bundle/web-dist/client/assets/{preload-helper-ca-nBW7U.js → preload-helper-DWTEM3RW.js} +0 -0
- /package/bundle/web-dist/server/assets/{cost-eEHeTRT5.js → cost-BC9yzyA9.js} +0 -0
|
@@ -1,5 +1,24 @@
|
|
|
1
|
+
import { isJsonObject, jsonValueSchema } from "../../utils/providers/common/provider-types.js";
|
|
2
|
+
import { z } from "zod";
|
|
1
3
|
//#region src/application/qgrid/schema-prompt.ts
|
|
2
4
|
/**
|
|
5
|
+
* output schema / tool envelope 계약의 프롬프트 렌더링 (SON-532).
|
|
6
|
+
*
|
|
7
|
+
* anthropic 경로는 CC 에 --json-schema 를 전달하지 않는다 — 강제 없는 사후 채점(AJV)이
|
|
8
|
+
* 소비자 의도와 충돌해 내부 재시도 루프를 만들었기 때문. 대신 여기서 계약을 텍스트로
|
|
9
|
+
* 렌더해 system prompt 말미에 주입하고, 판정은 소비자 zod(스키마) / parseEnvelope
|
|
10
|
+
* (envelope, tool-emulation.ts)가 맡는다.
|
|
11
|
+
*
|
|
12
|
+
* 원칙:
|
|
13
|
+
* - user 스키마는 수신 원형 그대로 안내한다 — strictify(전 필드 required 강제,
|
|
14
|
+
* additionalProperties:false)를 거치지 않아 소비자의 nullish/optional 의도가 보존된다.
|
|
15
|
+
* - envelope 은 buildToolCallSchema(tool-emulation-schema.ts)처럼 user 스키마를 $defs 로
|
|
16
|
+
* 합성하지 않는다. 텍스트 안내라 `$ref` 문서 루트 충돌이 없어 rebase 가 불필요하고,
|
|
17
|
+
* 그 덕에 rebase 가 거절하던 형태(named anchor $ref 등)도 그대로 통과한다.
|
|
18
|
+
* - 렌더된 계약은 parseEnvelope 의 zod 계약({"result": ...} 한 겹, 상호배타 변형)과
|
|
19
|
+
* 정확히 일치해야 한다 — 교차 테스트(schema-prompt.test.ts)가 드리프트를 막는다.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
3
22
|
* system prompt 말미에 계약을 덧붙인다. anthropic 은 cold-only(매 턴 CC 재스폰 + system
|
|
4
23
|
* 재전송)라 멀티턴에도 계약이 매 턴 일관되게 주입된다. system 이 argv 64KB 를 넘으면
|
|
5
24
|
* claude-session 의 --system-prompt-file 분기가 흡수한다.
|
|
@@ -27,36 +46,35 @@ function renderOutputSchemaPrompt(jsonSchema) {
|
|
|
27
46
|
"</output-json-schema>"
|
|
28
47
|
].join("\n");
|
|
29
48
|
}
|
|
30
|
-
/**
|
|
31
|
-
* envelope 예시 JSON. 렌더 문구와 parseEnvelope 계약의 드리프트를 교차 테스트로 잡기
|
|
32
|
-
* 위해 분리 export 한다 — 예시가 실제 파서를 통과하지 못하면 안내문이 틀린 것이다.
|
|
33
|
-
*
|
|
34
|
-
* 예시는 스스로 계약을 지켜야 한다: args 는 첫 tool 의 inputSchema 를 실제로 만족하는
|
|
35
|
-
* 인스턴스여야 한다. 생성기가 다루지 못하는 keyword(pattern/$ref/allOf 등)가 스키마에
|
|
36
|
-
* 있으면 **fail-closed** — 위반 가능성이 있는 예시를 싣는 대신 예시 자체를 생략하고
|
|
37
|
-
* 렌더러가 프로즈 서술로 대체한다 (`toolCallExample: undefined`).
|
|
38
|
-
*/
|
|
39
49
|
function buildEnvelopeExamples(tools) {
|
|
40
50
|
const firstTool = tools[0];
|
|
41
|
-
const args =
|
|
51
|
+
const args = exampleArgsForTool(firstTool);
|
|
52
|
+
const examples = { textAnswerExample: JSON.stringify({ result: {
|
|
53
|
+
action: "answer",
|
|
54
|
+
answer: "your final answer",
|
|
55
|
+
toolCalls: null
|
|
56
|
+
} }) };
|
|
57
|
+
if (args.ok) examples.toolCallExample = JSON.stringify({ result: {
|
|
58
|
+
action: "tool_call",
|
|
59
|
+
answer: null,
|
|
60
|
+
toolCalls: [{
|
|
61
|
+
toolName: firstTool?.name ?? "toolName",
|
|
62
|
+
args: JSON.stringify(args.value)
|
|
63
|
+
}]
|
|
64
|
+
} });
|
|
65
|
+
return examples;
|
|
66
|
+
}
|
|
67
|
+
/** A missing tool or schema allows any object; a schema that is not JSON yields no example. */
|
|
68
|
+
function exampleArgsForTool(tool) {
|
|
69
|
+
if (tool === void 0 || tool.inputSchema === void 0) return {
|
|
42
70
|
ok: true,
|
|
43
71
|
value: {}
|
|
44
72
|
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
toolName: firstTool?.name ?? "toolName",
|
|
51
|
-
args: JSON.stringify(args.value)
|
|
52
|
-
}]
|
|
53
|
-
} }) } : {},
|
|
54
|
-
textAnswerExample: JSON.stringify({ result: {
|
|
55
|
-
action: "answer",
|
|
56
|
-
answer: "your final answer",
|
|
57
|
-
toolCalls: null
|
|
58
|
-
} })
|
|
59
|
-
};
|
|
73
|
+
const inputSchema = jsonValueSchema.safeParse(tool.inputSchema);
|
|
74
|
+
return inputSchema.success ? exampleValueForSchema(inputSchema.data) : { ok: false };
|
|
75
|
+
}
|
|
76
|
+
function jsonNumber(value) {
|
|
77
|
+
return z.number().safeParse(value).data;
|
|
60
78
|
}
|
|
61
79
|
/** 생성기가 값 선택에 반영하는 keyword. 어노테이션(description 등)은 값과 무관해 무시한다. */
|
|
62
80
|
const EXAMPLE_ANNOTATION_KEYWORDS = /* @__PURE__ */ new Set([
|
|
@@ -98,37 +116,41 @@ function exampleValueForSchema(schema) {
|
|
|
98
116
|
ok: true,
|
|
99
117
|
value: {}
|
|
100
118
|
};
|
|
101
|
-
if (
|
|
119
|
+
if (!isJsonObject(schema)) return { ok: false };
|
|
102
120
|
const node = schema;
|
|
103
121
|
for (const keyword of Object.keys(node)) if (!EXAMPLE_HANDLED_KEYWORDS.has(keyword) && !EXAMPLE_ANNOTATION_KEYWORDS.has(keyword)) return { ok: false };
|
|
104
|
-
|
|
122
|
+
const enumValues = node.enum;
|
|
123
|
+
if (Array.isArray(enumValues) && enumValues.length > 0) return {
|
|
105
124
|
ok: true,
|
|
106
|
-
value:
|
|
125
|
+
value: enumValues[0] ?? null
|
|
107
126
|
};
|
|
108
127
|
if ("const" in node) return {
|
|
109
128
|
ok: true,
|
|
110
|
-
value: node.const
|
|
129
|
+
value: node.const ?? null
|
|
111
130
|
};
|
|
112
|
-
for (const kw of ["anyOf", "oneOf"])
|
|
131
|
+
for (const kw of ["anyOf", "oneOf"]) {
|
|
113
132
|
const list = node[kw];
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
const
|
|
117
|
-
|
|
133
|
+
if (Array.isArray(list)) {
|
|
134
|
+
if (kw === "oneOf" && list.length > 1) return { ok: false };
|
|
135
|
+
for (const branch of list) {
|
|
136
|
+
const result = exampleValueForSchema(branch);
|
|
137
|
+
if (result.ok) return result;
|
|
138
|
+
}
|
|
139
|
+
return { ok: false };
|
|
118
140
|
}
|
|
119
|
-
return { ok: false };
|
|
120
141
|
}
|
|
121
142
|
switch (Array.isArray(node.type) ? node.type[0] : node.type) {
|
|
122
143
|
case "string": {
|
|
123
|
-
const min =
|
|
144
|
+
const min = jsonNumber(node.minLength) ?? 0;
|
|
145
|
+
const maxLength = jsonNumber(node.maxLength);
|
|
124
146
|
if (min > 64) return { ok: false };
|
|
125
147
|
const base = "example";
|
|
126
148
|
const value = 7 >= min ? base : base.padEnd(min, "x");
|
|
127
|
-
if (
|
|
128
|
-
if (
|
|
149
|
+
if (maxLength !== void 0 && value.length > maxLength) {
|
|
150
|
+
if (maxLength < min) return { ok: false };
|
|
129
151
|
return {
|
|
130
152
|
ok: true,
|
|
131
|
-
value: value.slice(0,
|
|
153
|
+
value: value.slice(0, maxLength)
|
|
132
154
|
};
|
|
133
155
|
}
|
|
134
156
|
return {
|
|
@@ -139,10 +161,14 @@ function exampleValueForSchema(schema) {
|
|
|
139
161
|
case "number":
|
|
140
162
|
case "integer": {
|
|
141
163
|
let value = 0;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
164
|
+
const minimum = jsonNumber(node.minimum);
|
|
165
|
+
const exclusiveMinimum = jsonNumber(node.exclusiveMinimum);
|
|
166
|
+
const maximum = jsonNumber(node.maximum);
|
|
167
|
+
const exclusiveMaximum = jsonNumber(node.exclusiveMaximum);
|
|
168
|
+
if (minimum !== void 0) value = minimum;
|
|
169
|
+
else if (exclusiveMinimum !== void 0) value = exclusiveMinimum + 1;
|
|
170
|
+
if (maximum !== void 0 && value > maximum) return { ok: false };
|
|
171
|
+
if (exclusiveMaximum !== void 0 && value >= exclusiveMaximum) return { ok: false };
|
|
146
172
|
return {
|
|
147
173
|
ok: true,
|
|
148
174
|
value
|
|
@@ -157,9 +183,10 @@ function exampleValueForSchema(schema) {
|
|
|
157
183
|
value: null
|
|
158
184
|
};
|
|
159
185
|
case "array": {
|
|
160
|
-
const min =
|
|
186
|
+
const min = jsonNumber(node.minItems) ?? 0;
|
|
187
|
+
const maxItems = jsonNumber(node.maxItems);
|
|
161
188
|
if (min > 8) return { ok: false };
|
|
162
|
-
if (
|
|
189
|
+
if (maxItems !== void 0 && maxItems < min) return { ok: false };
|
|
163
190
|
if (min === 0) return {
|
|
164
191
|
ok: true,
|
|
165
192
|
value: []
|
|
@@ -173,8 +200,8 @@ function exampleValueForSchema(schema) {
|
|
|
173
200
|
}
|
|
174
201
|
case void 0:
|
|
175
202
|
case "object": {
|
|
176
|
-
const properties =
|
|
177
|
-
const required = Array.isArray(node.required) ? node.required.
|
|
203
|
+
const properties = isJsonObject(node.properties) ? node.properties : {};
|
|
204
|
+
const required = Array.isArray(node.required) ? node.required.flatMap((key) => z.string().safeParse(key).data ?? []) : [];
|
|
178
205
|
const entries = [];
|
|
179
206
|
for (const key of required) {
|
|
180
207
|
const child = exampleValueForSchema(properties[key]);
|
|
@@ -237,4 +264,4 @@ function renderToolEnvelopePrompt(tools, jsonSchema) {
|
|
|
237
264
|
//#endregion
|
|
238
265
|
export { buildEnvelopeExamples, composeSystemWithSchemaContract, renderOutputSchemaPrompt, renderSchemaContractPrompt, renderToolEnvelopePrompt };
|
|
239
266
|
|
|
240
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXByb21wdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvc2NoZW1hLXByb21wdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG91dHB1dCBzY2hlbWEgLyB0b29sIGVudmVsb3BlIOqzhOyVveydmCDtlITroaztlITtirgg66CM642U66eBIChTT04tNTMyKS5cbiAqXG4gKiBhbnRocm9waWMg6rK966Gc64qUIENDIOyXkCAtLWpzb24tc2NoZW1hIOulvCDsoITri6ztlZjsp4Ag7JWK64qU64ukIOKAlCDqsJXsoJwg7JeG64qUIOyCrO2bhCDssYTsoJAoQUpWKeydtFxuICog7IaM67mE7J6QIOydmOuPhOyZgCDstqnrj4ztlbQg64K067aAIOyerOyLnOuPhCDro6jtlITrpbwg66eM65Ok7JeI6riwIOuVjOusuC4g64yA7IugIOyXrOq4sOyEnCDqs4Tslb3snYQg7YWN7Iqk7Yq466GcXG4gKiDroIzrjZTtlbQgc3lzdGVtIHByb21wdCDrp5Drr7jsl5Ag7KO87J6F7ZWY6rOgLCDtjJDsoJXsnYAg7IaM67mE7J6QIHpvZCjsiqTtgqTrp4gpIC8gcGFyc2VFbnZlbG9wZVxuICogKGVudmVsb3BlLCB0b29sLWVtdWxhdGlvbi50cynqsIAg66eh64qU64ukLlxuICpcbiAqIOybkOy5mTpcbiAqIC0gdXNlciDsiqTtgqTrp4jripQg7IiY7IugIOybkO2YlSDqt7jrjIDroZwg7JWI64K07ZWc64ukIOKAlCBzdHJpY3RpZnko7KCEIO2VhOuTnCByZXF1aXJlZCDqsJXsoJwsXG4gKiAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOmZhbHNlKeulvCDqsbDsuZjsp4Ag7JWK7JWEIOyGjOu5hOyekOydmCBudWxsaXNoL29wdGlvbmFsIOydmOuPhOqwgCDrs7TsobTrkJzri6QuXG4gKiAtIGVudmVsb3BlIOydgCBidWlsZFRvb2xDYWxsU2NoZW1hKHRvb2wtZW11bGF0aW9uLXNjaGVtYS50cynsspjrn7wgdXNlciDsiqTtgqTrp4jrpbwgJGRlZnMg66GcXG4gKiAgIO2VqeyEse2VmOyngCDslYrripTri6QuIO2FjeyKpO2KuCDslYjrgrTrnbwgYCRyZWZgIOusuOyEnCDro6jtirgg7Lap64+M7J20IOyXhuyWtCByZWJhc2Ug6rCAIOu2iO2VhOyalO2VmOqzoCxcbiAqICAg6re4IOuNleyXkCByZWJhc2Ug6rCAIOqxsOygiO2VmOuNmCDtmJXtg5wobmFtZWQgYW5jaG9yICRyZWYg65OxKeuPhCDqt7jrjIDroZwg7Ya16rO87ZWc64ukLlxuICogLSDroIzrjZTrkJwg6rOE7JW97J2AIHBhcnNlRW52ZWxvcGUg7J2YIHpvZCDqs4Tslb0oe1wicmVzdWx0XCI6IC4uLn0g7ZWcIOqyuSwg7IOB7Zi467Cw7YOAIOuzgO2YlSnqs7xcbiAqICAg7KCV7ZmV7Z6IIOydvOy5mO2VtOyVvCDtlZzri6Qg4oCUIOq1kOywqCDthYzsiqTtirgoc2NoZW1hLXByb21wdC50ZXN0LnRzKeqwgCDrk5zrpqztlITtirjrpbwg66eJ64qU64ukLlxuICovXG5pbXBvcnQgeyB0eXBlIFFncmlkVG9vbCwgdHlwZSBRdWVyeUlucHV0IH0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuLyoqXG4gKiBzeXN0ZW0gcHJvbXB0IOunkOuvuOyXkCDqs4Tslb3snYQg642n67aZ7J2464ukLiBhbnRocm9waWMg7J2AIGNvbGQtb25seSjrp6Qg7YS0IENDIOyerOyKpO2PsCArIHN5c3RlbVxuICog7J6s7KCE7IahKeudvCDrqYDti7DthLTsl5Drj4Qg6rOE7JW97J20IOunpCDthLQg7J286rSA65CY6rKMIOyjvOyeheuQnOuLpC4gc3lzdGVtIOydtCBhcmd2IDY0S0Ig66W8IOuEmOycvOuptFxuICogY2xhdWRlLXNlc3Npb24g7J2YIC0tc3lzdGVtLXByb21wdC1maWxlIOu2hOq4sOqwgCDtnaHsiJjtlZzri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlU3lzdGVtV2l0aFNjaGVtYUNvbnRyYWN0KFxuICBzeXN0ZW06IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgaW5wdXQ6IFBpY2s8UXVlcnlJbnB1dCwgXCJ0b29sc1wiIHwgXCJqc29uU2NoZW1hXCI+LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29udHJhY3QgPSByZW5kZXJTY2hlbWFDb250cmFjdFByb21wdChpbnB1dCk7XG4gIGlmIChjb250cmFjdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gc3lzdGVtO1xuICByZXR1cm4gc3lzdGVtID8gYCR7c3lzdGVtfVxcblxcbiR7Y29udHJhY3R9YCA6IGNvbnRyYWN0O1xufVxuXG4vKiog7JqU7LKt7JeQIOyKpO2CpOuniC90b29scyDqsIAg7JeG7Jy866m0IHVuZGVmaW5lZCDigJQg6rOE7JW9IOyjvOyehSDsl4bsnbQg7Y+J67KU7ZWcIO2FjeyKpO2KuCDsmpTssq3snbTri6QuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyU2NoZW1hQ29udHJhY3RQcm9tcHQoXG4gIGlucHV0OiBQaWNrPFF1ZXJ5SW5wdXQsIFwidG9vbHNcIiB8IFwianNvblNjaGVtYVwiPixcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChpbnB1dC50b29scz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlbmRlclRvb2xFbnZlbG9wZVByb21wdChpbnB1dC50b29scywgaW5wdXQuanNvblNjaGVtYSk7XG4gIH1cbiAgaWYgKGlucHV0Lmpzb25TY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZW5kZXJPdXRwdXRTY2hlbWFQcm9tcHQoaW5wdXQuanNvblNjaGVtYSk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8gMTA5MTc0OCDsi6TsuKEo7Iqk7YKk66eIIOybkOusuCArIFwi7Y6c7IqkwrfshKTrqoUg7JeG7J20IEpTT04g66eMXCIg7KeA7IucKeyXkOyEnCDqsoDspp3rkJwg7ZiV7Iud7J2EIOuUsOuluOuLpC5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJPdXRwdXRTY2hlbWFQcm9tcHQoanNvblNjaGVtYTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFtcbiAgICBcIiMjIE91dHB1dCBGb3JtYXRcIixcbiAgICBcIlwiLFxuICAgIFwiWW91ciBlbnRpcmUgcmVwbHkgbXVzdCBiZSBhIHNpbmdsZSBKU09OIG9iamVjdCB0aGF0IGNvbmZvcm1zIHRvIHRoZSBKU09OIFNjaGVtYSBiZWxvdy5cIixcbiAgICBcIk91dHB1dCByYXcgSlNPTiBvbmx5IOKAlCBubyBjb2RlIGZlbmNlcywgbm8gcHJvc2UgYmVmb3JlIG9yIGFmdGVyIHRoZSBKU09OLlwiLFxuICAgIFwiU3RhcnQgeW91ciByZXBseSB3aXRoIHsgYW5kIGVuZCBpdCB3aXRoIH0uXCIsXG4gICAgXCJcIixcbiAgICBcIjxvdXRwdXQtanNvbi1zY2hlbWE+XCIsXG4gICAganNvblNjaGVtYSxcbiAgICBcIjwvb3V0cHV0LWpzb24tc2NoZW1hPlwiLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG5cbi8qKlxuICogZW52ZWxvcGUg7JiI7IucIEpTT04uIOugjOuNlCDrrLjqtazsmYAgcGFyc2VFbnZlbG9wZSDqs4Tslb3snZgg65Oc66as7ZSE7Yq466W8IOq1kOywqCDthYzsiqTtirjroZwg7J6h6riwXG4gKiDsnITtlbQg67aE66asIGV4cG9ydCDtlZzri6Qg4oCUIOyYiOyLnOqwgCDsi6TsoJwg7YyM7ISc66W8IO2GteqzvO2VmOyngCDrqrvtlZjrqbQg7JWI64K066y47J20IO2LgOumsCDqsoPsnbTri6QuXG4gKlxuICog7JiI7Iuc64qUIOyKpOyKpOuhnCDqs4Tslb3snYQg7KeA7Lyc7JW8IO2VnOuLpDogYXJncyDripQg7LKrIHRvb2wg7J2YIGlucHV0U2NoZW1hIOulvCDsi6TsoJzroZwg66eM7KGx7ZWY64qUXG4gKiDsnbjsiqTthLTsiqTsl6zslbwg7ZWc64ukLiDsg53shLHquLDqsIAg64uk66Oo7KeAIOuqu+2VmOuKlCBrZXl3b3JkKHBhdHRlcm4vJHJlZi9hbGxPZiDrk7Ep6rCAIOyKpO2CpOuniOyXkFxuICog7J6I7Jy866m0ICoqZmFpbC1jbG9zZWQqKiDigJQg7JyE67CYIOqwgOuKpeyEseydtCDsnojripQg7JiI7Iuc66W8IOyLo+uKlCDrjIDsi6Ag7JiI7IucIOyekOyytOulvCDsg53rnrXtlZjqs6BcbiAqIOugjOuNlOufrOqwgCDtlITroZzspogg7ISc7Iig66GcIOuMgOyytO2VnOuLpCAoYHRvb2xDYWxsRXhhbXBsZTogdW5kZWZpbmVkYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEVudmVsb3BlRXhhbXBsZXModG9vbHM6IFFncmlkVG9vbFtdKToge1xuICB0b29sQ2FsbEV4YW1wbGU/OiBzdHJpbmc7XG4gIHRleHRBbnN3ZXJFeGFtcGxlOiBzdHJpbmc7XG59IHtcbiAgY29uc3QgZmlyc3RUb29sID0gdG9vbHNbMF07XG4gIGNvbnN0IGFyZ3MgPSBmaXJzdFRvb2wgPyBleGFtcGxlVmFsdWVGb3JTY2hlbWEoZmlyc3RUb29sLmlucHV0U2NoZW1hKSA6IHsgb2s6IHRydWUsIHZhbHVlOiB7fSB9O1xuICByZXR1cm4ge1xuICAgIC4uLihhcmdzLm9rXG4gICAgICA/IHtcbiAgICAgICAgICB0b29sQ2FsbEV4YW1wbGU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgICBhY3Rpb246IFwidG9vbF9jYWxsXCIsXG4gICAgICAgICAgICAgIGFuc3dlcjogbnVsbCxcbiAgICAgICAgICAgICAgdG9vbENhbGxzOiBbXG4gICAgICAgICAgICAgICAgeyB0b29sTmFtZTogZmlyc3RUb29sPy5uYW1lID8/IFwidG9vbE5hbWVcIiwgYXJnczogSlNPTi5zdHJpbmdpZnkoYXJncy52YWx1ZSkgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH1cbiAgICAgIDoge30pLFxuICAgIHRleHRBbnN3ZXJFeGFtcGxlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICByZXN1bHQ6IHsgYWN0aW9uOiBcImFuc3dlclwiLCBhbnN3ZXI6IFwieW91ciBmaW5hbCBhbnN3ZXJcIiwgdG9vbENhbGxzOiBudWxsIH0sXG4gICAgfSksXG4gIH07XG59XG5cbnR5cGUgRXhhbXBsZVJlc3VsdCA9IHsgb2s6IHRydWU7IHZhbHVlOiB1bmtub3duIH0gfCB7IG9rOiBmYWxzZSB9O1xuXG4vKiog7IOd7ISx6riw6rCAIOqwkiDshKDtg53sl5Ag67CY7JiB7ZWY64qUIGtleXdvcmQuIOyWtOuFuO2FjOydtOyFmChkZXNjcmlwdGlvbiDrk7Ep7J2AIOqwkuqzvCDrrLTqtIDtlbQg66y07Iuc7ZWc64ukLiAqL1xuY29uc3QgRVhBTVBMRV9BTk5PVEFUSU9OX0tFWVdPUkRTID0gbmV3IFNldChbXG4gIFwiZGVzY3JpcHRpb25cIixcbiAgXCJ0aXRsZVwiLFxuICBcImRlZmF1bHRcIixcbiAgXCJleGFtcGxlc1wiLFxuICBcIiRjb21tZW50XCIsXG4gIFwiZGVwcmVjYXRlZFwiLFxuICBcInJlYWRPbmx5XCIsXG4gIFwid3JpdGVPbmx5XCIsXG5dKTtcbmNvbnN0IEVYQU1QTEVfSEFORExFRF9LRVlXT1JEUyA9IG5ldyBTZXQoW1xuICBcInR5cGVcIixcbiAgXCJlbnVtXCIsXG4gIFwiY29uc3RcIixcbiAgXCJwcm9wZXJ0aWVzXCIsXG4gIFwicmVxdWlyZWRcIixcbiAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiLFxuICBcIml0ZW1zXCIsXG4gIFwibWluSXRlbXNcIixcbiAgXCJtYXhJdGVtc1wiLFxuICBcIm1pbkxlbmd0aFwiLFxuICBcIm1heExlbmd0aFwiLFxuICBcIm1pbmltdW1cIixcbiAgXCJtYXhpbXVtXCIsXG4gIFwiZXhjbHVzaXZlTWluaW11bVwiLFxuICBcImV4Y2x1c2l2ZU1heGltdW1cIixcbiAgXCJhbnlPZlwiLFxuICBcIm9uZU9mXCIsXG5dKTtcblxuLyoqXG4gKiBpbnB1dFNjaGVtYSDrpbwg66eM7KGx7ZWY64qUIOyYiOyLnCDsnbjsiqTthLTsiqQg7IOd7ISxLiDsp4Dsm5Aga2V5d29yZCDsp5Htlakg67CW7J2YIOygnOyVvVxuICogKHBhdHRlcm4vZm9ybWF0LyRyZWYvYWxsT2Yvbm90L2lmL211bHRpcGxlT2YvdW5pcXVlSXRlbXMvLi4uKeydhCDrp4zrgpjrqbQg6rCS7J2EXG4gKiDsp4DslrTrgrTsp4Ag7JWK6rOgIHsgb2s6IGZhbHNlIH0g66W8IOuPjOugpOykgOuLpCDigJQg6rOE7JW9IOychOuwmCDsmIjsi5zripQg66qo64247J20IOuyoOuCgOuLpC5cbiAqL1xuZnVuY3Rpb24gZXhhbXBsZVZhbHVlRm9yU2NoZW1hKHNjaGVtYTogdW5rbm93bik6IEV4YW1wbGVSZXN1bHQge1xuICBpZiAoc2NoZW1hID09PSB0cnVlIHx8IHNjaGVtYSA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHt9IH07XG4gIGlmIChzY2hlbWEgPT09IG51bGwgfHwgdHlwZW9mIHNjaGVtYSAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KHNjaGVtYSkpIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuICBjb25zdCBub2RlID0gc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIGZvciAoY29uc3Qga2V5d29yZCBvZiBPYmplY3Qua2V5cyhub2RlKSkge1xuICAgIGlmICghRVhBTVBMRV9IQU5ETEVEX0tFWVdPUkRTLmhhcyhrZXl3b3JkKSAmJiAhRVhBTVBMRV9BTk5PVEFUSU9OX0tFWVdPUkRTLmhhcyhrZXl3b3JkKSkge1xuICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlIH07XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS5lbnVtKSAmJiBub2RlLmVudW0ubGVuZ3RoID4gMCkgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBub2RlLmVudW1bMF0gfTtcbiAgaWYgKFwiY29uc3RcIiBpbiBub2RlKSByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IG5vZGUuY29uc3QgfTtcblxuICBmb3IgKGNvbnN0IGt3IG9mIFtcImFueU9mXCIsIFwib25lT2ZcIl0gYXMgY29uc3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlW2t3XSkpIHtcbiAgICAgIC8vIG9uZU9mIOuKlCBcIuygle2Zle2eiCDtlZjrgphcIuudvCDssqsg67iM656c7LmYIOqwkuydtCDri6Trpbgg67iM656c7LmY7JeQ64+EIOunpOy5reuQoCDsiJgg7J6I64ukIOKAlFxuICAgICAgLy8g6rKA7Kad6riwIOyXhuydtCDtmZXsi6DtlaAg7IiYIOyXhuycvOuvgOuhnCDruIzrnpzsuZjqsIAg7ZWY64KY7J28IOuVjOunjCDsg53shLHtlZzri6QuXG4gICAgICBjb25zdCBsaXN0ID0gbm9kZVtrd10gYXMgdW5rbm93bltdO1xuICAgICAgaWYgKGt3ID09PSBcIm9uZU9mXCIgJiYgbGlzdC5sZW5ndGggPiAxKSByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIGxpc3QpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZXhhbXBsZVZhbHVlRm9yU2NoZW1hKGJyYW5jaCk7XG4gICAgICAgIGlmIChyZXN1bHQub2spIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0eXBlID0gQXJyYXkuaXNBcnJheShub2RlLnR5cGUpID8gbm9kZS50eXBlWzBdIDogbm9kZS50eXBlO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwic3RyaW5nXCI6IHtcbiAgICAgIGNvbnN0IG1pbiA9IHR5cGVvZiBub2RlLm1pbkxlbmd0aCA9PT0gXCJudW1iZXJcIiA/IG5vZGUubWluTGVuZ3RoIDogMDtcbiAgICAgIGlmIChtaW4gPiA2NCkgcmV0dXJuIHsgb2s6IGZhbHNlIH07XG4gICAgICBjb25zdCBiYXNlID0gXCJleGFtcGxlXCI7XG4gICAgICBjb25zdCB2YWx1ZSA9IGJhc2UubGVuZ3RoID49IG1pbiA/IGJhc2UgOiBiYXNlLnBhZEVuZChtaW4sIFwieFwiKTtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS5tYXhMZW5ndGggPT09IFwibnVtYmVyXCIgJiYgdmFsdWUubGVuZ3RoID4gbm9kZS5tYXhMZW5ndGgpIHtcbiAgICAgICAgaWYgKG5vZGUubWF4TGVuZ3RoIDwgbWluKSByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiB2YWx1ZS5zbGljZSgwLCBub2RlLm1heExlbmd0aCkgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZSB9O1xuICAgIH1cbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgY2FzZSBcImludGVnZXJcIjoge1xuICAgICAgbGV0IHZhbHVlID0gMDtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS5taW5pbXVtID09PSBcIm51bWJlclwiKSB2YWx1ZSA9IG5vZGUubWluaW11bTtcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiBub2RlLmV4Y2x1c2l2ZU1pbmltdW0gPT09IFwibnVtYmVyXCIpIHZhbHVlID0gbm9kZS5leGNsdXNpdmVNaW5pbXVtICsgMTtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS5tYXhpbXVtID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gbm9kZS5tYXhpbXVtKSByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS5leGNsdXNpdmVNYXhpbXVtID09PSBcIm51bWJlclwiICYmIHZhbHVlID49IG5vZGUuZXhjbHVzaXZlTWF4aW11bSkge1xuICAgICAgICByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZSB9O1xuICAgIH1cbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBmYWxzZSB9O1xuICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICBjYXNlIFwiYXJyYXlcIjoge1xuICAgICAgY29uc3QgbWluID0gdHlwZW9mIG5vZGUubWluSXRlbXMgPT09IFwibnVtYmVyXCIgPyBub2RlLm1pbkl0ZW1zIDogMDtcbiAgICAgIGlmIChtaW4gPiA4KSByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS5tYXhJdGVtcyA9PT0gXCJudW1iZXJcIiAmJiBub2RlLm1heEl0ZW1zIDwgbWluKSByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICAgIGlmIChtaW4gPT09IDApIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogW10gfTtcbiAgICAgIGNvbnN0IGl0ZW0gPSBleGFtcGxlVmFsdWVGb3JTY2hlbWEobm9kZS5pdGVtcyk7XG4gICAgICBpZiAoIWl0ZW0ub2spIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuICAgICAgLy8g6rCZ7J2AIOqwkiDrsJjrs7XsnbTrnbwgdW5pcXVlSXRlbXMg7JmAIOy2qeuPjO2VmOyngOunjCwgdW5pcXVlSXRlbXMg64qUIOyngOybkCDsp5Htlakg67CW7J206528XG4gICAgICAvLyDsnITsnZgga2V5d29yZCDqsoDsgqzsl5DshJwg7J2066+4IGZhaWwtY2xvc2VkIOuQnOuLpC5cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluIH0sICgpID0+IGl0ZW0udmFsdWUpIH07XG4gICAgfVxuICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgIGNhc2UgXCJvYmplY3RcIjoge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9XG4gICAgICAgIG5vZGUucHJvcGVydGllcyAmJiB0eXBlb2Ygbm9kZS5wcm9wZXJ0aWVzID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KG5vZGUucHJvcGVydGllcylcbiAgICAgICAgICA/IChub2RlLnByb3BlcnRpZXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gICAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IHJlcXVpcmVkID0gQXJyYXkuaXNBcnJheShub2RlLnJlcXVpcmVkKVxuICAgICAgICA/IG5vZGUucmVxdWlyZWQuZmlsdGVyKChrKTogayBpcyBzdHJpbmcgPT4gdHlwZW9mIGsgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIDogW107XG4gICAgICBjb25zdCBlbnRyaWVzOiBBcnJheTxbc3RyaW5nLCB1bmtub3duXT4gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIHJlcXVpcmVkKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gZXhhbXBsZVZhbHVlRm9yU2NoZW1hKHByb3BlcnRpZXNba2V5XSk7XG4gICAgICAgIGlmICghY2hpbGQub2spIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuICAgICAgICBlbnRyaWVzLnB1c2goW2tleSwgY2hpbGQudmFsdWVdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgfVxufVxuXG4vLyBlbnZlbG9wZSDqs4Tslb0g66y46rWs64qUIGJ1aWxkVG9vbENhbGxTY2hlbWEg7J2YIGRlc2NyaXB0aW9uIOuTpOqzvCDqsJnsnYAg7ZGc7ZiE7J2EIOyTtOuLpFxuLy8gKFwiRG8gbm90IGludm9rZSAuLi4gYXMgbmF0aXZlIENsYXVkZSBDb2RlIHRvb2xzXCIg65OxKSDigJQg66qo64247J20IHN0cnVjdHVyZWQv7ZSE66Gs7ZSE7Yq4XG4vLyDslrTripAg7JWI64K066W8IOuwm+yVhOuPhCDqsJnsnYAg6rec7LmZ7J2EIOydveqyjCDtlZzri6QuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVG9vbEVudmVsb3BlUHJvbXB0KHRvb2xzOiBRZ3JpZFRvb2xbXSwganNvblNjaGVtYT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgdG9vbENhbGxFeGFtcGxlLCB0ZXh0QW5zd2VyRXhhbXBsZSB9ID0gYnVpbGRFbnZlbG9wZUV4YW1wbGVzKHRvb2xzKTtcblxuICBjb25zdCB0b29sTGlzdCA9IHRvb2xzXG4gICAgLm1hcCgodG9vbCkgPT4ge1xuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSB0b29sLmRlc2NyaXB0aW9uID8gYCDigJQgJHt0b29sLmRlc2NyaXB0aW9ufWAgOiBcIlwiO1xuICAgICAgcmV0dXJuIGAtICR7dG9vbC5uYW1lfSR7ZGVzY3JpcHRpb259XFxuICBpbnB1dFNjaGVtYTogJHtKU09OLnN0cmluZ2lmeSh0b29sLmlucHV0U2NoZW1hKX1gO1xuICAgIH0pXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgLy8g7JiI7Iuc6rCAIHJhdy1KU09OLW9ubHkg6rec7LmZ7J2EIOyKpOyKpOuhnCDslrTquLDrqbQg7JWIIOuQnOuLpDoganNvbiBhbnN3ZXIg64qUIOyKpO2CpOuniCDsooXsho3snbTrnbxcbiAgLy8g7Jyg7Zqo7ZWcIOumrO2EsOuftCDsmIjsi5zrpbwg66eM65OkIOyImCDsl4bsnLzrr4DroZwg7JiI7IucIOyXhuydtCDtlITroZzspojroZzrp4wg7ISc7Iig7ZWc64ukICjsnpDrpqztkZzsi5zsnpDqsIBcbiAgLy8g7ISe7J24IOu5hCBKU09OIOyYiOyLnOulvCDrqqjrjbjsnbQg6re464yA66GcIOuyoOuBvOuKlCDqsoMg67Cp7KeAKS5cbiAgY29uc3QgYW5zd2VyVmFyaWFudCA9XG4gICAganNvblNjaGVtYSA9PT0gdW5kZWZpbmVkXG4gICAgICA/IFtcbiAgICAgICAgICBcIjIuIEZpbmFsIGFuc3dlciDigJQgdXNlIG9ubHkgd2hlbiBubyBmdXJ0aGVyIGNsaWVudCB0b29sIHJlc3VsdCBpcyBuZWVkZWQ6XCIsXG4gICAgICAgICAgdGV4dEFuc3dlckV4YW1wbGUsXG4gICAgICAgICAgJy0gXCJ0b29sQ2FsbHNcIiBtdXN0IGJlIG51bGwuJyxcbiAgICAgICAgICAnLSBcImFuc3dlclwiIG11c3QgYmUgYSBwbGFpbiBzdHJpbmcgd2l0aCB5b3VyIGZpbmFsIGFuc3dlciAobm90IG51bGwpLicsXG4gICAgICAgIF1cbiAgICAgIDogW1xuICAgICAgICAgIFwiMi4gRmluYWwgYW5zd2VyIOKAlCB1c2Ugb25seSB3aGVuIG5vIGZ1cnRoZXIgY2xpZW50IHRvb2wgcmVzdWx0IGlzIG5lZWRlZDpcIixcbiAgICAgICAgICAnLSBTZXQgXCJhY3Rpb25cIiB0byBcImFuc3dlclwiIGFuZCBcInRvb2xDYWxsc1wiIHRvIG51bGwuJyxcbiAgICAgICAgICAnLSBcImFuc3dlclwiIG11c3QgYmUgYSBKU09OIHZhbHVlIChub3QgbnVsbCwgYW5kIG5vdCBhIHN0cmluZyBvZiBKU09OKSB0aGF0IGNvbmZvcm1zIHRvIHRoZSBKU09OIFNjaGVtYSBiZWxvdy4nLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgXCI8YW5zd2VyLWpzb24tc2NoZW1hPlwiLFxuICAgICAgICAgIGpzb25TY2hlbWEsXG4gICAgICAgICAgXCI8L2Fuc3dlci1qc29uLXNjaGVtYT5cIixcbiAgICAgICAgXTtcblxuICAvLyDsmIjsi5wg7IOd7ISx6riw6rCAIOuLpOujqOyngCDrqrvtlZjripQgaW5wdXRTY2hlbWEoZmFpbC1jbG9zZWQp66m0IOq1rOyhsCDshJzsiKDroZwg64yA7LK07ZWc64ukIOKAlFxuICAvLyDsiqTtgqTrp4jrpbwg7JyE67CY7ZWgIOyImCDsnojripQg7JiI7Iuc66W8IOyLo+uKlCDqsoPrs7Tri6Qg7JiI7Iuc6rCAIOyXhuuKlCDtjrjsnbQg7JWI7KCE7ZWY64ukLlxuICBjb25zdCB0b29sQ2FsbFZhcmlhbnQgPSBbXG4gICAgdG9vbENhbGxFeGFtcGxlICE9PSB1bmRlZmluZWRcbiAgICAgID8gXCIxLiBSZXF1ZXN0IGNsaWVudC1zaWRlIHRvb2wgZXhlY3V0aW9uLCBmb3IgZXhhbXBsZTpcIlxuICAgICAgOiBcIjEuIFJlcXVlc3QgY2xpZW50LXNpZGUgdG9vbCBleGVjdXRpb246XCIsXG4gICAgLi4uKHRvb2xDYWxsRXhhbXBsZSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IFt0b29sQ2FsbEV4YW1wbGVdXG4gICAgICA6IFtcbiAgICAgICAgICAnLSBTZXQgXCJhY3Rpb25cIiB0byBcInRvb2xfY2FsbFwiIGFuZCBcImFuc3dlclwiIHRvIG51bGwuJyxcbiAgICAgICAgICAnLSBcInRvb2xDYWxsc1wiIGlzIGFuIGFycmF5IG9mIG9iamVjdHMsIGVhY2gge1widG9vbE5hbWVcIjogLi4uLCBcImFyZ3NcIjogLi4ufS4nLFxuICAgICAgICBdKSxcbiAgICAnLSBcInRvb2xDYWxsc1wiIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZW50cnkuJyxcbiAgICAnLSBcInRvb2xOYW1lXCIgbXVzdCBiZSBvbmUgb2YgdGhlIGNsaWVudCB0b29sIG5hbWVzIGxpc3RlZCBiZWxvdy4nLFxuICAgICctIFwiYXJnc1wiIG11c3QgYmUgdGhlIHRvb2wgYXJndW1lbnRzIGVuY29kZWQgYXMgYSBKU09OIHN0cmluZyAobm90IGFuIG9iamVjdCksIGNvbmZvcm1pbmcgdG8gdGhhdCB0b29sXFwncyBpbnB1dFNjaGVtYS4nLFxuICAgICctIFwiYW5zd2VyXCIgbXVzdCBiZSBudWxsLicsXG4gIF07XG5cbiAgcmV0dXJuIFtcbiAgICBcIiMjIENsaWVudCBUb29sIFByb3RvY29sXCIsXG4gICAgXCJcIixcbiAgICBcIlRoZSBjbGllbnQtc2lkZSB0b29scyBsaXN0ZWQgYmVsb3cgYXJlIGV4ZWN1dGVkIGJ5IHRoZSBjbGllbnQsIHdoaWNoIHJldHVybnMgZWFjaCByZXN1bHRcIixcbiAgICBcImluIGEgZm9sbG93LXVwIHR1cm4uIERvIG5vdCBpbnZva2UgdGhlbSBhcyBuYXRpdmUgQ2xhdWRlIENvZGUgdG9vbHMuXCIsXG4gICAgXCJcIixcbiAgICAnWW91ciBlbnRpcmUgcmVwbHkgbXVzdCBiZSBhIHNpbmdsZSBKU09OIG9iamVjdCBvZiB0aGUgZm9ybSB7XCJyZXN1bHRcIjogLi4ufSDigJQnLFxuICAgIFwicmF3IEpTT04gb25seSwgbm8gY29kZSBmZW5jZXMsIG5vIHByb3NlIGJlZm9yZSBvciBhZnRlciB0aGUgSlNPTi5cIixcbiAgICAnVGhlIFwicmVzdWx0XCIgdmFsdWUgaXMgZXhhY3RseSBvbmUgb2YgdGhlIHR3byB2YXJpYW50czonLFxuICAgIFwiXCIsXG4gICAgLi4udG9vbENhbGxWYXJpYW50LFxuICAgIFwiXCIsXG4gICAgLi4uYW5zd2VyVmFyaWFudCxcbiAgICBcIlwiLFxuICAgIFwiQXZhaWxhYmxlIGNsaWVudCB0b29sczpcIixcbiAgICB0b29sTGlzdCxcbiAgXS5qb2luKFwiXFxuXCIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUF3QkEsU0FBZ0IsZ0NBQ2QsUUFDQSxPQUNvQjtDQUNwQixNQUFNLFdBQVcsMkJBQTJCLEtBQUs7Q0FDakQsSUFBSSxhQUFhLFFBQVcsT0FBTztDQUNuQyxPQUFPLFNBQVMsR0FBRyxPQUFPLE1BQU0sYUFBYTtBQUMvQzs7QUFHQSxTQUFnQiwyQkFDZCxPQUNvQjtDQUNwQixJQUFJLE1BQU0sT0FBTyxRQUNmLE9BQU8seUJBQXlCLE1BQU0sT0FBTyxNQUFNLFVBQVU7Q0FFL0QsSUFBSSxNQUFNLGVBQWUsUUFDdkIsT0FBTyx5QkFBeUIsTUFBTSxVQUFVO0FBR3BEO0FBR0EsU0FBZ0IseUJBQXlCLFlBQTRCO0NBQ25FLE9BQU87RUFDTDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FDRixDQUFDLENBQUMsS0FBSyxJQUFJO0FBQ2I7Ozs7Ozs7Ozs7QUFXQSxTQUFnQixzQkFBc0IsT0FHcEM7Q0FDQSxNQUFNLFlBQVksTUFBTTtDQUN4QixNQUFNLE9BQU8sWUFBWSxzQkFBc0IsVUFBVSxXQUFXLElBQUk7RUFBRSxJQUFJO0VBQU0sT0FBTyxDQUFDO0NBQUU7Q0FDOUYsT0FBTztFQUNMLEdBQUksS0FBSyxLQUNMLEVBQ0UsaUJBQWlCLEtBQUssVUFBVSxFQUM5QixRQUFRO0dBQ04sUUFBUTtHQUNSLFFBQVE7R0FDUixXQUFXLENBQ1Q7SUFBRSxVQUFVLFdBQVcsUUFBUTtJQUFZLE1BQU0sS0FBSyxVQUFVLEtBQUssS0FB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
|
|
267
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXByb21wdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvc2NoZW1hLXByb21wdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG91dHB1dCBzY2hlbWEgLyB0b29sIGVudmVsb3BlIOqzhOyVveydmCDtlITroaztlITtirgg66CM642U66eBIChTT04tNTMyKS5cbiAqXG4gKiBhbnRocm9waWMg6rK966Gc64qUIENDIOyXkCAtLWpzb24tc2NoZW1hIOulvCDsoITri6ztlZjsp4Ag7JWK64qU64ukIOKAlCDqsJXsoJwg7JeG64qUIOyCrO2bhCDssYTsoJAoQUpWKeydtFxuICog7IaM67mE7J6QIOydmOuPhOyZgCDstqnrj4ztlbQg64K067aAIOyerOyLnOuPhCDro6jtlITrpbwg66eM65Ok7JeI6riwIOuVjOusuC4g64yA7IugIOyXrOq4sOyEnCDqs4Tslb3snYQg7YWN7Iqk7Yq466GcXG4gKiDroIzrjZTtlbQgc3lzdGVtIHByb21wdCDrp5Drr7jsl5Ag7KO87J6F7ZWY6rOgLCDtjJDsoJXsnYAg7IaM67mE7J6QIHpvZCjsiqTtgqTrp4gpIC8gcGFyc2VFbnZlbG9wZVxuICogKGVudmVsb3BlLCB0b29sLWVtdWxhdGlvbi50cynqsIAg66eh64qU64ukLlxuICpcbiAqIOybkOy5mTpcbiAqIC0gdXNlciDsiqTtgqTrp4jripQg7IiY7IugIOybkO2YlSDqt7jrjIDroZwg7JWI64K07ZWc64ukIOKAlCBzdHJpY3RpZnko7KCEIO2VhOuTnCByZXF1aXJlZCDqsJXsoJwsXG4gKiAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOmZhbHNlKeulvCDqsbDsuZjsp4Ag7JWK7JWEIOyGjOu5hOyekOydmCBudWxsaXNoL29wdGlvbmFsIOydmOuPhOqwgCDrs7TsobTrkJzri6QuXG4gKiAtIGVudmVsb3BlIOydgCBidWlsZFRvb2xDYWxsU2NoZW1hKHRvb2wtZW11bGF0aW9uLXNjaGVtYS50cynsspjrn7wgdXNlciDsiqTtgqTrp4jrpbwgJGRlZnMg66GcXG4gKiAgIO2VqeyEse2VmOyngCDslYrripTri6QuIO2FjeyKpO2KuCDslYjrgrTrnbwgYCRyZWZgIOusuOyEnCDro6jtirgg7Lap64+M7J20IOyXhuyWtCByZWJhc2Ug6rCAIOu2iO2VhOyalO2VmOqzoCxcbiAqICAg6re4IOuNleyXkCByZWJhc2Ug6rCAIOqxsOygiO2VmOuNmCDtmJXtg5wobmFtZWQgYW5jaG9yICRyZWYg65OxKeuPhCDqt7jrjIDroZwg7Ya16rO87ZWc64ukLlxuICogLSDroIzrjZTrkJwg6rOE7JW97J2AIHBhcnNlRW52ZWxvcGUg7J2YIHpvZCDqs4Tslb0oe1wicmVzdWx0XCI6IC4uLn0g7ZWcIOqyuSwg7IOB7Zi467Cw7YOAIOuzgO2YlSnqs7xcbiAqICAg7KCV7ZmV7Z6IIOydvOy5mO2VtOyVvCDtlZzri6Qg4oCUIOq1kOywqCDthYzsiqTtirgoc2NoZW1hLXByb21wdC50ZXN0LnRzKeqwgCDrk5zrpqztlITtirjrpbwg66eJ64qU64ukLlxuICovXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQge1xuICBpc0pzb25PYmplY3QsXG4gIHR5cGUgSnNvbk9iamVjdCxcbiAgdHlwZSBKc29uVmFsdWUsXG4gIGpzb25WYWx1ZVNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL3V0aWxzL3Byb3ZpZGVycy9jb21tb24vcHJvdmlkZXItdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgUWdyaWRUb29sLCB0eXBlIFF1ZXJ5SW5wdXQgfSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG4vKipcbiAqIHN5c3RlbSBwcm9tcHQg66eQ66+47JeQIOqzhOyVveydhCDrjafrtpnsnbjri6QuIGFudGhyb3BpYyDsnYAgY29sZC1vbmx5KOunpCDthLQgQ0Mg7J6s7Iqk7Y+wICsgc3lzdGVtXG4gKiDsnqzsoITshqEp6528IOupgO2LsO2EtOyXkOuPhCDqs4Tslb3snbQg66ekIO2EtCDsnbzqtIDrkJjqsowg7KO87J6F65Cc64ukLiBzeXN0ZW0g7J20IGFyZ3YgNjRLQiDrpbwg64SY7Jy866m0XG4gKiBjbGF1ZGUtc2Vzc2lvbiDsnZggLS1zeXN0ZW0tcHJvbXB0LWZpbGUg67aE6riw6rCAIO2doeyImO2VnOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VTeXN0ZW1XaXRoU2NoZW1hQ29udHJhY3QoXG4gIHN5c3RlbTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbnB1dDogUGljazxRdWVyeUlucHV0LCBcInRvb2xzXCIgfCBcImpzb25TY2hlbWFcIj4sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb250cmFjdCA9IHJlbmRlclNjaGVtYUNvbnRyYWN0UHJvbXB0KGlucHV0KTtcblxuICBpZiAoY29udHJhY3QgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHN5c3RlbTtcblxuICByZXR1cm4gc3lzdGVtID8gYCR7c3lzdGVtfVxcblxcbiR7Y29udHJhY3R9YCA6IGNvbnRyYWN0O1xufVxuXG4vKiog7JqU7LKt7JeQIOyKpO2CpOuniC90b29scyDqsIAg7JeG7Jy866m0IHVuZGVmaW5lZCDigJQg6rOE7JW9IOyjvOyehSDsl4bsnbQg7Y+J67KU7ZWcIO2FjeyKpO2KuCDsmpTssq3snbTri6QuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyU2NoZW1hQ29udHJhY3RQcm9tcHQoXG4gIGlucHV0OiBQaWNrPFF1ZXJ5SW5wdXQsIFwidG9vbHNcIiB8IFwianNvblNjaGVtYVwiPixcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChpbnB1dC50b29scz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlbmRlclRvb2xFbnZlbG9wZVByb21wdChpbnB1dC50b29scywgaW5wdXQuanNvblNjaGVtYSk7XG4gIH1cblxuICBpZiAoaW5wdXQuanNvblNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlbmRlck91dHB1dFNjaGVtYVByb21wdChpbnB1dC5qc29uU2NoZW1hKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8vIDEwOTE3NDgg7Iuk7LihKOyKpO2CpOuniCDsm5DrrLggKyBcIu2OnOyKpMK37ISk66qFIOyXhuydtCBKU09OIOunjFwiIOyngOyLnCnsl5DshJwg6rKA7Kad65CcIO2YleyLneydhCDrlLDrpbjri6QuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyT3V0cHV0U2NoZW1hUHJvbXB0KGpzb25TY2hlbWE6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBbXG4gICAgXCIjIyBPdXRwdXQgRm9ybWF0XCIsXG4gICAgXCJcIixcbiAgICBcIllvdXIgZW50aXJlIHJlcGx5IG11c3QgYmUgYSBzaW5nbGUgSlNPTiBvYmplY3QgdGhhdCBjb25mb3JtcyB0byB0aGUgSlNPTiBTY2hlbWEgYmVsb3cuXCIsXG4gICAgXCJPdXRwdXQgcmF3IEpTT04gb25seSDigJQgbm8gY29kZSBmZW5jZXMsIG5vIHByb3NlIGJlZm9yZSBvciBhZnRlciB0aGUgSlNPTi5cIixcbiAgICBcIlN0YXJ0IHlvdXIgcmVwbHkgd2l0aCB7IGFuZCBlbmQgaXQgd2l0aCB9LlwiLFxuICAgIFwiXCIsXG4gICAgXCI8b3V0cHV0LWpzb24tc2NoZW1hPlwiLFxuICAgIGpzb25TY2hlbWEsXG4gICAgXCI8L291dHB1dC1qc29uLXNjaGVtYT5cIixcbiAgXS5qb2luKFwiXFxuXCIpO1xufVxuXG4vKipcbiAqIGVudmVsb3BlIOyYiOyLnCBKU09OLiDroIzrjZQg66y46rWs7JmAIHBhcnNlRW52ZWxvcGUg6rOE7JW97J2YIOuTnOumrO2UhO2KuOulvCDqtZDssKgg7YWM7Iqk7Yq466GcIOyeoeq4sFxuICog7JyE7ZW0IOu2hOumrCBleHBvcnQg7ZWc64ukIOKAlCDsmIjsi5zqsIAg7Iuk7KCcIO2MjOyEnOulvCDthrXqs7ztlZjsp4Ag66q77ZWY66m0IOyViOuCtOusuOydtCDti4DrprAg6rKD7J2064ukLlxuICpcbiAqIOyYiOyLnOuKlCDsiqTsiqTroZwg6rOE7JW97J2EIOyngOy8nOyVvCDtlZzri6Q6IGFyZ3Mg64qUIOyyqyB0b29sIOydmCBpbnB1dFNjaGVtYSDrpbwg7Iuk7KCc66GcIOunjOyhse2VmOuKlFxuICog7J247Iqk7YS07Iqk7Jes7JW8IO2VnOuLpC4g7IOd7ISx6riw6rCAIOuLpOujqOyngCDrqrvtlZjripQga2V5d29yZChwYXR0ZXJuLyRyZWYvYWxsT2Yg65OxKeqwgCDsiqTtgqTrp4jsl5BcbiAqIOyeiOycvOuptCAqKmZhaWwtY2xvc2VkKiog4oCUIOychOuwmCDqsIDriqXshLHsnbQg7J6I64qUIOyYiOyLnOulvCDsi6PripQg64yA7IugIOyYiOyLnCDsnpDssrTrpbwg7IOd65617ZWY6rOgXG4gKiDroIzrjZTrn6zqsIAg7ZSE66Gc7KaIIOyEnOyIoOuhnCDrjIDssrTtlZzri6QgKGB0b29sQ2FsbEV4YW1wbGU6IHVuZGVmaW5lZGApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudmVsb3BlRXhhbXBsZXMge1xuICB0b29sQ2FsbEV4YW1wbGU/OiBzdHJpbmc7XG4gIHRleHRBbnN3ZXJFeGFtcGxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEVudmVsb3BlRXhhbXBsZXModG9vbHM6IFFncmlkVG9vbFtdKTogRW52ZWxvcGVFeGFtcGxlcyB7XG4gIGNvbnN0IGZpcnN0VG9vbCA9IHRvb2xzWzBdO1xuICBjb25zdCBhcmdzID0gZXhhbXBsZUFyZ3NGb3JUb29sKGZpcnN0VG9vbCk7XG5cbiAgY29uc3QgZXhhbXBsZXM6IEVudmVsb3BlRXhhbXBsZXMgPSB7XG4gICAgdGV4dEFuc3dlckV4YW1wbGU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHJlc3VsdDogeyBhY3Rpb246IFwiYW5zd2VyXCIsIGFuc3dlcjogXCJ5b3VyIGZpbmFsIGFuc3dlclwiLCB0b29sQ2FsbHM6IG51bGwgfSxcbiAgICB9KSxcbiAgfTtcblxuICBpZiAoYXJncy5vaykge1xuICAgIGV4YW1wbGVzLnRvb2xDYWxsRXhhbXBsZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHJlc3VsdDoge1xuICAgICAgICBhY3Rpb246IFwidG9vbF9jYWxsXCIsXG4gICAgICAgIGFuc3dlcjogbnVsbCxcbiAgICAgICAgdG9vbENhbGxzOiBbeyB0b29sTmFtZTogZmlyc3RUb29sPy5uYW1lID8/IFwidG9vbE5hbWVcIiwgYXJnczogSlNPTi5zdHJpbmdpZnkoYXJncy52YWx1ZSkgfV0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGV4YW1wbGVzO1xufVxuXG50eXBlIEV4YW1wbGVSZXN1bHQgPSB7IG9rOiB0cnVlOyB2YWx1ZTogSnNvblZhbHVlIH0gfCB7IG9rOiBmYWxzZSB9O1xuXG4vKiogQSBtaXNzaW5nIHRvb2wgb3Igc2NoZW1hIGFsbG93cyBhbnkgb2JqZWN0OyBhIHNjaGVtYSB0aGF0IGlzIG5vdCBKU09OIHlpZWxkcyBubyBleGFtcGxlLiAqL1xuZnVuY3Rpb24gZXhhbXBsZUFyZ3NGb3JUb29sKHRvb2w6IFFncmlkVG9vbCB8IHVuZGVmaW5lZCk6IEV4YW1wbGVSZXN1bHQge1xuICBpZiAodG9vbCA9PT0gdW5kZWZpbmVkIHx8IHRvb2wuaW5wdXRTY2hlbWEgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiB7fSB9O1xuICBjb25zdCBpbnB1dFNjaGVtYSA9IGpzb25WYWx1ZVNjaGVtYS5zYWZlUGFyc2UodG9vbC5pbnB1dFNjaGVtYSk7XG5cbiAgcmV0dXJuIGlucHV0U2NoZW1hLnN1Y2Nlc3MgPyBleGFtcGxlVmFsdWVGb3JTY2hlbWEoaW5wdXRTY2hlbWEuZGF0YSkgOiB7IG9rOiBmYWxzZSB9O1xufVxuXG5mdW5jdGlvbiBqc29uTnVtYmVyKHZhbHVlOiBKc29uVmFsdWUgfCB1bmRlZmluZWQpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICByZXR1cm4gei5udW1iZXIoKS5zYWZlUGFyc2UodmFsdWUpLmRhdGE7XG59XG5cbi8qKiDsg53shLHquLDqsIAg6rCSIOyEoO2DneyXkCDrsJjsmIHtlZjripQga2V5d29yZC4g7Ja064W47YWM7J207IWYKGRlc2NyaXB0aW9uIOuTsSnsnYAg6rCS6rO8IOustOq0gO2VtCDrrLTsi5ztlZzri6QuICovXG5jb25zdCBFWEFNUExFX0FOTk9UQVRJT05fS0VZV09SRFMgPSBuZXcgU2V0KFtcbiAgXCJkZXNjcmlwdGlvblwiLFxuICBcInRpdGxlXCIsXG4gIFwiZGVmYXVsdFwiLFxuICBcImV4YW1wbGVzXCIsXG4gIFwiJGNvbW1lbnRcIixcbiAgXCJkZXByZWNhdGVkXCIsXG4gIFwicmVhZE9ubHlcIixcbiAgXCJ3cml0ZU9ubHlcIixcbl0pO1xuXG5jb25zdCBFWEFNUExFX0hBTkRMRURfS0VZV09SRFMgPSBuZXcgU2V0KFtcbiAgXCJ0eXBlXCIsXG4gIFwiZW51bVwiLFxuICBcImNvbnN0XCIsXG4gIFwicHJvcGVydGllc1wiLFxuICBcInJlcXVpcmVkXCIsXG4gIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIixcbiAgXCJpdGVtc1wiLFxuICBcIm1pbkl0ZW1zXCIsXG4gIFwibWF4SXRlbXNcIixcbiAgXCJtaW5MZW5ndGhcIixcbiAgXCJtYXhMZW5ndGhcIixcbiAgXCJtaW5pbXVtXCIsXG4gIFwibWF4aW11bVwiLFxuICBcImV4Y2x1c2l2ZU1pbmltdW1cIixcbiAgXCJleGNsdXNpdmVNYXhpbXVtXCIsXG4gIFwiYW55T2ZcIixcbiAgXCJvbmVPZlwiLFxuXSk7XG5cbi8qKlxuICogaW5wdXRTY2hlbWEg66W8IOunjOyhse2VmOuKlCDsmIjsi5wg7J247Iqk7YS07IqkIOyDneyEsS4g7KeA7JuQIGtleXdvcmQg7KeR7ZWpIOuwluydmCDsoJzslb1cbiAqIChwYXR0ZXJuL2Zvcm1hdC8kcmVmL2FsbE9mL25vdC9pZi9tdWx0aXBsZU9mL3VuaXF1ZUl0ZW1zLy4uLinsnYQg66eM64KY66m0IOqwkuydhFxuICog7KeA7Ja064K07KeAIOyViuqzoCB7IG9rOiBmYWxzZSB9IOulvCDrj4zroKTspIDri6Qg4oCUIOqzhOyVvSDsnITrsJgg7JiI7Iuc64qUIOuqqOuNuOydtCDrsqDrgoDri6QuXG4gKi9cbmZ1bmN0aW9uIGV4YW1wbGVWYWx1ZUZvclNjaGVtYShzY2hlbWE6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCk6IEV4YW1wbGVSZXN1bHQge1xuICBpZiAoc2NoZW1hID09PSB0cnVlIHx8IHNjaGVtYSA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHt9IH07XG5cbiAgaWYgKCFpc0pzb25PYmplY3Qoc2NoZW1hKSkgcmV0dXJuIHsgb2s6IGZhbHNlIH07XG4gIGNvbnN0IG5vZGUgPSBzY2hlbWE7XG5cbiAgZm9yIChjb25zdCBrZXl3b3JkIG9mIE9iamVjdC5rZXlzKG5vZGUpKSB7XG4gICAgaWYgKCFFWEFNUExFX0hBTkRMRURfS0VZV09SRFMuaGFzKGtleXdvcmQpICYmICFFWEFNUExFX0FOTk9UQVRJT05fS0VZV09SRFMuaGFzKGtleXdvcmQpKSB7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBlbnVtVmFsdWVzID0gbm9kZS5lbnVtO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGVudW1WYWx1ZXMpICYmIGVudW1WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogZW51bVZhbHVlc1swXSA/PyBudWxsIH07XG4gIH1cblxuICBpZiAoXCJjb25zdFwiIGluIG5vZGUpIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogbm9kZS5jb25zdCA/PyBudWxsIH07XG5cbiAgZm9yIChjb25zdCBrdyBvZiBbXCJhbnlPZlwiLCBcIm9uZU9mXCJdIGFzIGNvbnN0KSB7XG4gICAgY29uc3QgbGlzdCA9IG5vZGVba3ddO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICAgIC8vIG9uZU9mIOuKlCBcIuygle2Zle2eiCDtlZjrgphcIuudvCDssqsg67iM656c7LmYIOqwkuydtCDri6Trpbgg67iM656c7LmY7JeQ64+EIOunpOy5reuQoCDsiJgg7J6I64ukIOKAlFxuICAgICAgLy8g6rKA7Kad6riwIOyXhuydtCDtmZXsi6DtlaAg7IiYIOyXhuycvOuvgOuhnCDruIzrnpzsuZjqsIAg7ZWY64KY7J28IOuVjOunjCDsg53shLHtlZzri6QuXG4gICAgICBpZiAoa3cgPT09IFwib25lT2ZcIiAmJiBsaXN0Lmxlbmd0aCA+IDEpIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuXG4gICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiBsaXN0KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4YW1wbGVWYWx1ZUZvclNjaGVtYShicmFuY2gpO1xuXG4gICAgICAgIGlmIChyZXN1bHQub2spIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHR5cGUgPSBBcnJheS5pc0FycmF5KG5vZGUudHlwZSkgPyBub2RlLnR5cGVbMF0gOiBub2RlLnR5cGU7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBcInN0cmluZ1wiOiB7XG4gICAgICBjb25zdCBtaW4gPSBqc29uTnVtYmVyKG5vZGUubWluTGVuZ3RoKSA/PyAwO1xuICAgICAgY29uc3QgbWF4TGVuZ3RoID0ganNvbk51bWJlcihub2RlLm1heExlbmd0aCk7XG5cbiAgICAgIGlmIChtaW4gPiA2NCkgcmV0dXJuIHsgb2s6IGZhbHNlIH07XG4gICAgICBjb25zdCBiYXNlID0gXCJleGFtcGxlXCI7XG4gICAgICBjb25zdCB2YWx1ZSA9IGJhc2UubGVuZ3RoID49IG1pbiA/IGJhc2UgOiBiYXNlLnBhZEVuZChtaW4sIFwieFwiKTtcblxuICAgICAgaWYgKG1heExlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICBpZiAobWF4TGVuZ3RoIDwgbWluKSByZXR1cm4geyBvazogZmFsc2UgfTtcblxuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHZhbHVlLnNsaWNlKDAsIG1heExlbmd0aCkgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlIH07XG4gICAgfVxuXG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgIGNhc2UgXCJpbnRlZ2VyXCI6IHtcbiAgICAgIGxldCB2YWx1ZSA9IDA7XG4gICAgICBjb25zdCBtaW5pbXVtID0ganNvbk51bWJlcihub2RlLm1pbmltdW0pO1xuICAgICAgY29uc3QgZXhjbHVzaXZlTWluaW11bSA9IGpzb25OdW1iZXIobm9kZS5leGNsdXNpdmVNaW5pbXVtKTtcbiAgICAgIGNvbnN0IG1heGltdW0gPSBqc29uTnVtYmVyKG5vZGUubWF4aW11bSk7XG4gICAgICBjb25zdCBleGNsdXNpdmVNYXhpbXVtID0ganNvbk51bWJlcihub2RlLmV4Y2x1c2l2ZU1heGltdW0pO1xuXG4gICAgICBpZiAobWluaW11bSAhPT0gdW5kZWZpbmVkKSB2YWx1ZSA9IG1pbmltdW07XG4gICAgICBlbHNlIGlmIChleGNsdXNpdmVNaW5pbXVtICE9PSB1bmRlZmluZWQpIHZhbHVlID0gZXhjbHVzaXZlTWluaW11bSArIDE7XG5cbiAgICAgIGlmIChtYXhpbXVtICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgPiBtYXhpbXVtKSByZXR1cm4geyBvazogZmFsc2UgfTtcblxuICAgICAgaWYgKGV4Y2x1c2l2ZU1heGltdW0gIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSA+PSBleGNsdXNpdmVNYXhpbXVtKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWUgfTtcbiAgICB9XG5cbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBmYWxzZSB9O1xuICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICBjYXNlIFwiYXJyYXlcIjoge1xuICAgICAgY29uc3QgbWluID0ganNvbk51bWJlcihub2RlLm1pbkl0ZW1zKSA/PyAwO1xuICAgICAgY29uc3QgbWF4SXRlbXMgPSBqc29uTnVtYmVyKG5vZGUubWF4SXRlbXMpO1xuXG4gICAgICBpZiAobWluID4gOCkgcmV0dXJuIHsgb2s6IGZhbHNlIH07XG5cbiAgICAgIGlmIChtYXhJdGVtcyAhPT0gdW5kZWZpbmVkICYmIG1heEl0ZW1zIDwgbWluKSByZXR1cm4geyBvazogZmFsc2UgfTtcblxuICAgICAgaWYgKG1pbiA9PT0gMCkgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBbXSB9O1xuICAgICAgY29uc3QgaXRlbSA9IGV4YW1wbGVWYWx1ZUZvclNjaGVtYShub2RlLml0ZW1zKTtcblxuICAgICAgaWYgKCFpdGVtLm9rKSByZXR1cm4geyBvazogZmFsc2UgfTtcblxuICAgICAgLy8g6rCZ7J2AIOqwkiDrsJjrs7XsnbTrnbwgdW5pcXVlSXRlbXMg7JmAIOy2qeuPjO2VmOyngOunjCwgdW5pcXVlSXRlbXMg64qUIOyngOybkCDsp5Htlakg67CW7J206528XG4gICAgICAvLyDsnITsnZgga2V5d29yZCDqsoDsgqzsl5DshJwg7J2066+4IGZhaWwtY2xvc2VkIOuQnOuLpC5cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluIH0sICgpID0+IGl0ZW0udmFsdWUpIH07XG4gICAgfVxuXG4gICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgY2FzZSBcIm9iamVjdFwiOiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzOiBKc29uT2JqZWN0ID0gaXNKc29uT2JqZWN0KG5vZGUucHJvcGVydGllcykgPyBub2RlLnByb3BlcnRpZXMgOiB7fTtcblxuICAgICAgY29uc3QgcmVxdWlyZWQgPSBBcnJheS5pc0FycmF5KG5vZGUucmVxdWlyZWQpXG4gICAgICAgID8gbm9kZS5yZXF1aXJlZC5mbGF0TWFwKChrZXkpID0+IHouc3RyaW5nKCkuc2FmZVBhcnNlKGtleSkuZGF0YSA/PyBbXSlcbiAgICAgICAgOiBbXTtcblxuICAgICAgY29uc3QgZW50cmllczogQXJyYXk8W3N0cmluZywgSnNvblZhbHVlXT4gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgcmVxdWlyZWQpIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBleGFtcGxlVmFsdWVGb3JTY2hlbWEocHJvcGVydGllc1trZXldKTtcblxuICAgICAgICBpZiAoIWNoaWxkLm9rKSByZXR1cm4geyBvazogZmFsc2UgfTtcbiAgICAgICAgZW50cmllcy5wdXNoKFtrZXksIGNoaWxkLnZhbHVlXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpIH07XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSB9O1xuICB9XG59XG5cbi8vIGVudmVsb3BlIOqzhOyVvSDrrLjqtazripQgYnVpbGRUb29sQ2FsbFNjaGVtYSDsnZggZGVzY3JpcHRpb24g65Ok6rO8IOqwmeydgCDtkZztmITsnYQg7JO064ukXG4vLyAoXCJEbyBub3QgaW52b2tlIC4uLiBhcyBuYXRpdmUgQ2xhdWRlIENvZGUgdG9vbHNcIiDrk7EpIOKAlCDrqqjrjbjsnbQgc3RydWN0dXJlZC/tlITroaztlITtirhcbi8vIOyWtOuKkCDslYjrgrTrpbwg67Cb7JWE64+EIOqwmeydgCDqt5zsuZnsnYQg7J296rKMIO2VnOuLpC5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJUb29sRW52ZWxvcGVQcm9tcHQodG9vbHM6IFFncmlkVG9vbFtdLCBqc29uU2NoZW1hPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgeyB0b29sQ2FsbEV4YW1wbGUsIHRleHRBbnN3ZXJFeGFtcGxlIH0gPSBidWlsZEVudmVsb3BlRXhhbXBsZXModG9vbHMpO1xuXG4gIGNvbnN0IHRvb2xMaXN0ID0gdG9vbHNcbiAgICAubWFwKCh0b29sKSA9PiB7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRvb2wuZGVzY3JpcHRpb24gPyBgIOKAlCAke3Rvb2wuZGVzY3JpcHRpb259YCA6IFwiXCI7XG5cbiAgICAgIHJldHVybiBgLSAke3Rvb2wubmFtZX0ke2Rlc2NyaXB0aW9ufVxcbiAgaW5wdXRTY2hlbWE6ICR7SlNPTi5zdHJpbmdpZnkodG9vbC5pbnB1dFNjaGVtYSl9YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIC8vIOyYiOyLnOqwgCByYXctSlNPTi1vbmx5IOq3nOy5meydhCDsiqTsiqTroZwg7Ja06riw66m0IOyViCDrkJzri6Q6IGpzb24gYW5zd2VyIOuKlCDsiqTtgqTrp4gg7KKF7IaN7J206528XG4gIC8vIOycoO2aqO2VnCDrpqzthLDrn7Qg7JiI7Iuc66W8IOunjOuTpCDsiJgg7JeG7Jy866+A66GcIOyYiOyLnCDsl4bsnbQg7ZSE66Gc7KaI66Gc66eMIOyEnOyIoO2VnOuLpCAo7J6Q66as7ZGc7Iuc7J6Q6rCAXG4gIC8vIOyEnuyduCDruYQgSlNPTiDsmIjsi5zrpbwg66qo64247J20IOq3uOuMgOuhnCDrsqDrgbzripQg6rKDIOuwqeyngCkuXG4gIGNvbnN0IGFuc3dlclZhcmlhbnQgPVxuICAgIGpzb25TY2hlbWEgPT09IHVuZGVmaW5lZFxuICAgICAgPyBbXG4gICAgICAgICAgXCIyLiBGaW5hbCBhbnN3ZXIg4oCUIHVzZSBvbmx5IHdoZW4gbm8gZnVydGhlciBjbGllbnQgdG9vbCByZXN1bHQgaXMgbmVlZGVkOlwiLFxuICAgICAgICAgIHRleHRBbnN3ZXJFeGFtcGxlLFxuICAgICAgICAgICctIFwidG9vbENhbGxzXCIgbXVzdCBiZSBudWxsLicsXG4gICAgICAgICAgJy0gXCJhbnN3ZXJcIiBtdXN0IGJlIGEgcGxhaW4gc3RyaW5nIHdpdGggeW91ciBmaW5hbCBhbnN3ZXIgKG5vdCBudWxsKS4nLFxuICAgICAgICBdXG4gICAgICA6IFtcbiAgICAgICAgICBcIjIuIEZpbmFsIGFuc3dlciDigJQgdXNlIG9ubHkgd2hlbiBubyBmdXJ0aGVyIGNsaWVudCB0b29sIHJlc3VsdCBpcyBuZWVkZWQ6XCIsXG4gICAgICAgICAgJy0gU2V0IFwiYWN0aW9uXCIgdG8gXCJhbnN3ZXJcIiBhbmQgXCJ0b29sQ2FsbHNcIiB0byBudWxsLicsXG4gICAgICAgICAgJy0gXCJhbnN3ZXJcIiBtdXN0IGJlIGEgSlNPTiB2YWx1ZSAobm90IG51bGwsIGFuZCBub3QgYSBzdHJpbmcgb2YgSlNPTikgdGhhdCBjb25mb3JtcyB0byB0aGUgSlNPTiBTY2hlbWEgYmVsb3cuJyxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICAgIFwiPGFuc3dlci1qc29uLXNjaGVtYT5cIixcbiAgICAgICAgICBqc29uU2NoZW1hLFxuICAgICAgICAgIFwiPC9hbnN3ZXItanNvbi1zY2hlbWE+XCIsXG4gICAgICAgIF07XG5cbiAgLy8g7JiI7IucIOyDneyEseq4sOqwgCDri6Tro6jsp4Ag66q77ZWY64qUIGlucHV0U2NoZW1hKGZhaWwtY2xvc2VkKeuptCDqtazsobAg7ISc7Iig66GcIOuMgOyytO2VnOuLpCDigJRcbiAgLy8g7Iqk7YKk66eI66W8IOychOuwmO2VoCDsiJgg7J6I64qUIOyYiOyLnOulvCDsi6PripQg6rKD67O064ukIOyYiOyLnOqwgCDsl4bripQg7Y647J20IOyViOyghO2VmOuLpC5cbiAgY29uc3QgdG9vbENhbGxWYXJpYW50ID0gW1xuICAgIHRvb2xDYWxsRXhhbXBsZSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IFwiMS4gUmVxdWVzdCBjbGllbnQtc2lkZSB0b29sIGV4ZWN1dGlvbiwgZm9yIGV4YW1wbGU6XCJcbiAgICAgIDogXCIxLiBSZXF1ZXN0IGNsaWVudC1zaWRlIHRvb2wgZXhlY3V0aW9uOlwiLFxuICAgIC4uLih0b29sQ2FsbEV4YW1wbGUgIT09IHVuZGVmaW5lZFxuICAgICAgPyBbdG9vbENhbGxFeGFtcGxlXVxuICAgICAgOiBbXG4gICAgICAgICAgJy0gU2V0IFwiYWN0aW9uXCIgdG8gXCJ0b29sX2NhbGxcIiBhbmQgXCJhbnN3ZXJcIiB0byBudWxsLicsXG4gICAgICAgICAgJy0gXCJ0b29sQ2FsbHNcIiBpcyBhbiBhcnJheSBvZiBvYmplY3RzLCBlYWNoIHtcInRvb2xOYW1lXCI6IC4uLiwgXCJhcmdzXCI6IC4uLn0uJyxcbiAgICAgICAgXSksXG4gICAgJy0gXCJ0b29sQ2FsbHNcIiBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGVudHJ5LicsXG4gICAgJy0gXCJ0b29sTmFtZVwiIG11c3QgYmUgb25lIG9mIHRoZSBjbGllbnQgdG9vbCBuYW1lcyBsaXN0ZWQgYmVsb3cuJyxcbiAgICAnLSBcImFyZ3NcIiBtdXN0IGJlIHRoZSB0b29sIGFyZ3VtZW50cyBlbmNvZGVkIGFzIGEgSlNPTiBzdHJpbmcgKG5vdCBhbiBvYmplY3QpLCBjb25mb3JtaW5nIHRvIHRoYXQgdG9vbFxcJ3MgaW5wdXRTY2hlbWEuJyxcbiAgICAnLSBcImFuc3dlclwiIG11c3QgYmUgbnVsbC4nLFxuICBdO1xuXG4gIHJldHVybiBbXG4gICAgXCIjIyBDbGllbnQgVG9vbCBQcm90b2NvbFwiLFxuICAgIFwiXCIsXG4gICAgXCJUaGUgY2xpZW50LXNpZGUgdG9vbHMgbGlzdGVkIGJlbG93IGFyZSBleGVjdXRlZCBieSB0aGUgY2xpZW50LCB3aGljaCByZXR1cm5zIGVhY2ggcmVzdWx0XCIsXG4gICAgXCJpbiBhIGZvbGxvdy11cCB0dXJuLiBEbyBub3QgaW52b2tlIHRoZW0gYXMgbmF0aXZlIENsYXVkZSBDb2RlIHRvb2xzLlwiLFxuICAgIFwiXCIsXG4gICAgJ1lvdXIgZW50aXJlIHJlcGx5IG11c3QgYmUgYSBzaW5nbGUgSlNPTiBvYmplY3Qgb2YgdGhlIGZvcm0ge1wicmVzdWx0XCI6IC4uLn0g4oCUJyxcbiAgICBcInJhdyBKU09OIG9ubHksIG5vIGNvZGUgZmVuY2VzLCBubyBwcm9zZSBiZWZvcmUgb3IgYWZ0ZXIgdGhlIEpTT04uXCIsXG4gICAgJ1RoZSBcInJlc3VsdFwiIHZhbHVlIGlzIGV4YWN0bHkgb25lIG9mIHRoZSB0d28gdmFyaWFudHM6JyxcbiAgICBcIlwiLFxuICAgIC4uLnRvb2xDYWxsVmFyaWFudCxcbiAgICBcIlwiLFxuICAgIC4uLmFuc3dlclZhcmlhbnQsXG4gICAgXCJcIixcbiAgICBcIkF2YWlsYWJsZSBjbGllbnQgdG9vbHM6XCIsXG4gICAgdG9vbExpc3QsXG4gIF0uam9pbihcIlxcblwiKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdDQSxTQUFnQixnQ0FDZCxRQUNBLE9BQ29CO0NBQ3BCLE1BQU0sV0FBVywyQkFBMkIsS0FBSztDQUVqRCxJQUFJLGFBQWEsUUFBVyxPQUFPO0NBRW5DLE9BQU8sU0FBUyxHQUFHLE9BQU8sTUFBTSxhQUFhO0FBQy9DOztBQUdBLFNBQWdCLDJCQUNkLE9BQ29CO0NBQ3BCLElBQUksTUFBTSxPQUFPLFFBQ2YsT0FBTyx5QkFBeUIsTUFBTSxPQUFPLE1BQU0sVUFBVTtDQUcvRCxJQUFJLE1BQU0sZUFBZSxRQUN2QixPQUFPLHlCQUF5QixNQUFNLFVBQVU7QUFJcEQ7QUFHQSxTQUFnQix5QkFBeUIsWUFBNEI7Q0FDbkUsT0FBTztFQUNMO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQUNGLENBQUMsQ0FBQyxLQUFLLElBQUk7QUFDYjtBQWdCQSxTQUFnQixzQkFBc0IsT0FBc0M7Q0FDMUUsTUFBTSxZQUFZLE1BQU07Q0FDeEIsTUFBTSxPQUFPLG1CQUFtQixTQUFTO0NBRXpDLE1BQU0sV0FBNkIsRUFDakMsbUJBQW1CLEtBQUssVUFBVSxFQUNoQyxRQUFRO0VBQUUsUUFBUTtFQUFVLFFBQVE7RUFBcUIsV0FBVztDQUFLLEVBQzNFLENBQUMsRUFDSDtDQUVBLElBQUksS0FBSyxJQUNQLFNBQVMsa0JBQWtCLEtBQUssVUFBVSxFQUN4QyxRQUFRO0VBQ04sUUFBUTtFQUNSLFFBQVE7RUFDUixXQUFXLENBQUM7R0FBRSxVQUFVLFdBQVcsUUFBUTtHQUFZLE1BQU0sS0FBSyxVQUFVLEtBQUssS0FBSztFQUFFLENBQUM7Q0FDM0YsRUFDRixDQUFDO0NBR0gsT0FBTztBQUNU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
|
|
@@ -37,4 +37,4 @@ function getSlackUserMap(readSetting = getSetting) {
|
|
|
37
37
|
//#endregion
|
|
38
38
|
export { getSlackUserMap, mentionFor, ownerOf, parseSlackUserMap };
|
|
39
39
|
|
|
40
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhY2stdXNlci1tYXAuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3NsYWNrLXVzZXItbWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog7Yag7YGwIOyGjOycoOyekCDihpIgU2xhY2sg7IKs7Jqp7J6QIOupmOyFmC5cbiAqXG4gKiBTbGFjayDtkZzsi5wg7J2066aE6rO8IO2GoO2BsOuqheydtCDsnpDso7wg7Ja06riL64KYKGhhemXihpJoYXplLmxlZSwgYnllb25nanVu4oaScG90YWRvcykgYHVzZXJzLmxpc3RgXG4gKiDsnpDrj5kg66ek7Lmt7J2AIOyhsOyaqe2eiCDsi6TtjKjtlZzri6QuIOupmOyFmOydtCDruaDsp4DrqbQg7JWM66a87J20IOqwnOyduOyXkOqyjCDri7/sp4Ag7JWK7JWEIOuqqeyggSDsnpDssrTqsIBcbiAqIOyCrOudvOyngOuvgOuhnCBgU0xBQ0tfVVNFUl9NQVBgIOuqheyLnCDrp6TtlZHrp4wg7JO064ukLlxuICpcbiAqIOqzteyaqSDqs4TsoJUoYnlzdWNvLCBkZXYtY29tbW9uIOuTsSnsnYAg66ek7ZWR7JeQIOuEo+yngCDslYrripTri6Qg4oCUIOupmOyFmCDsl4bsnbQg7J2066aE66eMIOuCmOqwgOuKlCDqsoPsnbRcbiAqIOunnuuKlCDrj5nsnpHsnbTri6QuXG4gKi9cblxuaW1wb3J0IHsgZ2V0U2V0dGluZyB9IGZyb20gXCIuLi9zZXR0aW5nL3NldHRpbmcuc3RvcmVcIjtcblxuLyoqIGDthqDtgbDrqoU6U2xhY2tVc2VySWRgIOuqqeuhneydhCDtjIzsi7HtlZzri6QuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTbGFja1VzZXJNYXAocmF3OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBNYXA8c3RyaW5nLCBzdHJpbmc+
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhY2stdXNlci1tYXAuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3NsYWNrLXVzZXItbWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog7Yag7YGwIOyGjOycoOyekCDihpIgU2xhY2sg7IKs7Jqp7J6QIOupmOyFmC5cbiAqXG4gKiBTbGFjayDtkZzsi5wg7J2066aE6rO8IO2GoO2BsOuqheydtCDsnpDso7wg7Ja06riL64KYKGhhemXihpJoYXplLmxlZSwgYnllb25nanVu4oaScG90YWRvcykgYHVzZXJzLmxpc3RgXG4gKiDsnpDrj5kg66ek7Lmt7J2AIOyhsOyaqe2eiCDsi6TtjKjtlZzri6QuIOupmOyFmOydtCDruaDsp4DrqbQg7JWM66a87J20IOqwnOyduOyXkOqyjCDri7/sp4Ag7JWK7JWEIOuqqeyggSDsnpDssrTqsIBcbiAqIOyCrOudvOyngOuvgOuhnCBgU0xBQ0tfVVNFUl9NQVBgIOuqheyLnCDrp6TtlZHrp4wg7JO064ukLlxuICpcbiAqIOqzteyaqSDqs4TsoJUoYnlzdWNvLCBkZXYtY29tbW9uIOuTsSnsnYAg66ek7ZWR7JeQIOuEo+yngCDslYrripTri6Qg4oCUIOupmOyFmCDsl4bsnbQg7J2066aE66eMIOuCmOqwgOuKlCDqsoPsnbRcbiAqIOunnuuKlCDrj5nsnpHsnbTri6QuXG4gKi9cblxuaW1wb3J0IHsgZ2V0U2V0dGluZyB9IGZyb20gXCIuLi9zZXR0aW5nL3NldHRpbmcuc3RvcmVcIjtcblxuLyoqIGDthqDtgbDrqoU6U2xhY2tVc2VySWRgIOuqqeuhneydhCDtjIzsi7HtlZzri6QuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTbGFja1VzZXJNYXAocmF3OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICBpZiAoIXJhdykgcmV0dXJuIG1hcDtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJhdy5zcGxpdChcIixcIikpIHtcbiAgICBjb25zdCBbbmFtZSwgdXNlcklkXSA9IGVudHJ5LnNwbGl0KFwiOlwiKS5tYXAoKHMpID0+IHMudHJpbSgpKTtcblxuICAgIGlmIChuYW1lICYmIHVzZXJJZCkgbWFwLnNldChuYW1lLCB1c2VySWQpO1xuICB9XG5cbiAgcmV0dXJuIG1hcDtcbn1cblxuLyoqIGBhbnRocm9waWMveWRzYCDihpIgYHlkc2AuIHByb3ZpZGVyIHByZWZpeCDsl4bsnbQg7KCA7J6l65CcIOydtOumhOuPhCDqt7jrjIDroZwg67Cb64qU64ukLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG93bmVyT2YodG9rZW5OYW1lOiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgaWYgKCF0b2tlbk5hbWUpIHJldHVybiBcIlwiO1xuICBjb25zdCBzbGFzaCA9IHRva2VuTmFtZS5pbmRleE9mKFwiL1wiKTtcblxuICByZXR1cm4gc2xhc2ggPT09IC0xID8gdG9rZW5OYW1lIDogdG9rZW5OYW1lLnNsaWNlKHNsYXNoICsgMSk7XG59XG5cbi8qKiDrp6TtlZHsnbQg7J6I7Jy866m0IGA8QFUuLi4+YCwg7JeG7Jy866m0IOu5iCDrrLjsnpDsl7QuIO2YuOy2nOu2gOqwgCDrqZjshZgg7Jyg66y066GcIOusuOq1rOulvCDqs6Drpbjri6QuICovXG5leHBvcnQgZnVuY3Rpb24gbWVudGlvbkZvcih0b2tlbk5hbWU6IHN0cmluZyB8IG51bGwsIHVzZXJNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICBjb25zdCB1c2VySWQgPSB1c2VyTWFwLmdldChvd25lck9mKHRva2VuTmFtZSkpO1xuXG4gIHJldHVybiB1c2VySWQgPyBgPEAke3VzZXJJZH0+YCA6IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbGFja1VzZXJNYXAocmVhZFNldHRpbmc6IHR5cGVvZiBnZXRTZXR0aW5nID0gZ2V0U2V0dGluZyk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4gcGFyc2VTbGFja1VzZXJNYXAocmVhZFNldHRpbmcoXCJzbGFjay51c2VyTWFwXCIsIFwiU0xBQ0tfVVNFUl9NQVBcIikpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBY0EsU0FBZ0Isa0JBQWtCLEtBQThDO0NBQzlFLE1BQU0sc0JBQU0sSUFBSSxJQUFvQjtDQUVwQyxJQUFJLENBQUMsS0FBSyxPQUFPO0NBRWpCLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxHQUFHLEdBQUc7RUFDbEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUUsS0FBSyxDQUFDO0VBRTNELElBQUksUUFBUSxRQUFRLElBQUksSUFBSSxNQUFNLE1BQU07Q0FDMUM7Q0FFQSxPQUFPO0FBQ1Q7O0FBR0EsU0FBZ0IsUUFBUSxXQUFrQztDQUN4RCxJQUFJLENBQUMsV0FBVyxPQUFPO0NBQ3ZCLE1BQU0sUUFBUSxVQUFVLFFBQVEsR0FBRztDQUVuQyxPQUFPLFVBQVUsS0FBSyxZQUFZLFVBQVUsTUFBTSxRQUFRLENBQUM7QUFDN0Q7O0FBR0EsU0FBZ0IsV0FBVyxXQUEwQixTQUFzQztDQUN6RixNQUFNLFNBQVMsUUFBUSxJQUFJLFFBQVEsU0FBUyxDQUFDO0NBRTdDLE9BQU8sU0FBUyxLQUFLLE9BQU8sS0FBSztBQUNuQztBQUVBLFNBQWdCLGdCQUFnQixjQUFpQyxZQUFpQztDQUNoRyxPQUFPLGtCQUFrQixZQUFZLGlCQUFpQixnQkFBZ0IsQ0FBQztBQUN6RSJ9
|
|
@@ -56,4 +56,4 @@ function notifyTokenAdded(name, provider) {
|
|
|
56
56
|
//#endregion
|
|
57
57
|
export { deactivateAuthDeadToken, notifyTokenAdded };
|
|
58
58
|
|
|
59
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tZGVhdGguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3Rva2VuLWRlYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog7IS47IWYIOunjOujjChhdXRoLWRlYWQpIO2GoO2BsOydmCDrnbzsmrDtjIUg7KCc7Jm4IOyngOygkC5cbiAqXG4gKiByZWZyZXNoIOqwgCDsnqzroZzqt7jsnbgg7Jm4IOuzteq1rCDrtojqsIDtlZwg7Iuk7Yyo66W8IOuwmO2ZmO2VnCDsiJzqsITsl5Drp4wg7Zi47Lac65Cc64ukLiDsi5zrj4Tsl5Ag7IKs7Jqp7ZWcXG4gKiBjcmVkZW50aWFscyDqsIAgREIg7JmAIOqwmeydhCDrlYzrp4wgcmVhdXRoX3JlcXVpcmVkIOulvCDquLDroZ3tlZjqs6AsIOq3uCDquLDroZ3snYQg7J206ri0IO2UhOuhnOyEuOyKpOunjFxuICogU2xhY2sg7JWM66a87J2EIOuztOuCuOuLpCDigJQg6rO17JygIERCIOulvCDsk7DripQg7J247Iqk7YS07Iqk6rCAIOuqh+ydtOuToCDsgqzqsbTri7kg7JWM66a87J2AIDHqsbTsnbTri6QuXG4gKi9cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5cbmltcG9ydCB7IG5vdGlmeVNsYWNrLCBTTEFDS19DT0xPUiB9IGZyb20gXCIuLi8uLi91dGlscy9zbGFjay1ub3RpZnlcIjtcbmltcG9ydCB7IHR5cGUgVG9rZW5TdWJzZXRBIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IFRva2VuTW9kZWwgfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4ubW9kZWxcIjtcbmltcG9ydCB7IGdldFNsYWNrVXNlck1hcCwgbWVudGlvbkZvciB9IGZyb20gXCIuL3NsYWNrLXVzZXItbWFwXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJxZ3JpZFwiLCBcInRva2VuLWRlYXRoXCJdKTtcblxudHlwZSBEZWFkVG9rZW5SZWYgPSBQaWNrPFRva2VuU3Vic2V0QSwgXCJpZFwiIHwgXCJuYW1lXCIgfCBcInByb3ZpZGVyXCIgfCBcImNyZWRlbnRpYWxzXCI+O1xuXG4vKipcbiAqIEBwYXJhbSByZWFzb25Db2RlIGBwcm92aWRlcjpjb2RlYCDtmJXtg5zsnZgg64K067aAIOy9lOuTnC4gcHJvdmlkZXIg7J2R64u1IOuzuOusuOyXkOuKlCDqs4TsoJUg7J2066mU7J287J2064KYXG4gKiAgIO2GoO2BsCDsobDqsIHsnbQg7ISe7J28IOyImCDsnojslrQgcmF3IOuplOyLnOyngOulvCDqt7jrjIDroZwg7JWM66a87JeQIOyLo+
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tZGVhdGguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3Rva2VuLWRlYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog7IS47IWYIOunjOujjChhdXRoLWRlYWQpIO2GoO2BsOydmCDrnbzsmrDtjIUg7KCc7Jm4IOyngOygkC5cbiAqXG4gKiByZWZyZXNoIOqwgCDsnqzroZzqt7jsnbgg7Jm4IOuzteq1rCDrtojqsIDtlZwg7Iuk7Yyo66W8IOuwmO2ZmO2VnCDsiJzqsITsl5Drp4wg7Zi47Lac65Cc64ukLiDsi5zrj4Tsl5Ag7IKs7Jqp7ZWcXG4gKiBjcmVkZW50aWFscyDqsIAgREIg7JmAIOqwmeydhCDrlYzrp4wgcmVhdXRoX3JlcXVpcmVkIOulvCDquLDroZ3tlZjqs6AsIOq3uCDquLDroZ3snYQg7J206ri0IO2UhOuhnOyEuOyKpOunjFxuICogU2xhY2sg7JWM66a87J2EIOuztOuCuOuLpCDigJQg6rO17JygIERCIOulvCDsk7DripQg7J247Iqk7YS07Iqk6rCAIOuqh+ydtOuToCDsgqzqsbTri7kg7JWM66a87J2AIDHqsbTsnbTri6QuXG4gKi9cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5cbmltcG9ydCB7IG5vdGlmeVNsYWNrLCBTTEFDS19DT0xPUiB9IGZyb20gXCIuLi8uLi91dGlscy9zbGFjay1ub3RpZnlcIjtcbmltcG9ydCB7IHR5cGUgVG9rZW5TdWJzZXRBIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IFRva2VuTW9kZWwgfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4ubW9kZWxcIjtcbmltcG9ydCB7IGdldFNsYWNrVXNlck1hcCwgbWVudGlvbkZvciB9IGZyb20gXCIuL3NsYWNrLXVzZXItbWFwXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJxZ3JpZFwiLCBcInRva2VuLWRlYXRoXCJdKTtcblxudHlwZSBEZWFkVG9rZW5SZWYgPSBQaWNrPFRva2VuU3Vic2V0QSwgXCJpZFwiIHwgXCJuYW1lXCIgfCBcInByb3ZpZGVyXCIgfCBcImNyZWRlbnRpYWxzXCI+O1xuXG4vKipcbiAqIEBwYXJhbSByZWFzb25Db2RlIGBwcm92aWRlcjpjb2RlYCDtmJXtg5zsnZgg64K067aAIOy9lOuTnC4gcHJvdmlkZXIg7J2R64u1IOuzuOusuOyXkOuKlCDqs4TsoJUg7J2066mU7J287J2064KYXG4gKiAgIO2GoO2BsCDsobDqsIHsnbQg7ISe7J28IOyImCDsnojslrQgcmF3IOuplOyLnOyngOulvCDqt7jrjIDroZwg7JWM66a87JeQIOyLo+yngCDslYrripTri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWFjdGl2YXRlQXV0aERlYWRUb2tlbihcbiAgdG9rZW46IERlYWRUb2tlblJlZixcbiAgcmVhc29uQ29kZTogc3RyaW5nLFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgbWFya2VkLCB3YXNMYXN0QWN0aXZlLCBzdGFsZUNyZWRlbnRpYWxzIH0gPSBhd2FpdCBUb2tlbk1vZGVsLm1hcmtSZWF1dGhSZXF1aXJlZChcbiAgICB0b2tlbi5pZCxcbiAgICB0b2tlbi5jcmVkZW50aWFscyxcbiAgKTtcblxuICBpZiAoc3RhbGVDcmVkZW50aWFscykge1xuICAgIGxvZ2dlci5pbmZvKFxuICAgICAgYHNraXBwaW5nIGF1dGgtZGVhdGggZm9yICR7dG9rZW4ubmFtZX0oaWQ9JHt0b2tlbi5pZH0pOiBjcmVkZW50aWFscyByb3RhdGVkIHNpbmNlIHRoaXMgYXR0ZW1wdGAsXG4gICAgKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghbWFya2VkKSByZXR1cm4gZmFsc2U7XG5cbiAgbG9nZ2VyLndhcm4oYHRva2VuIHJlcXVpcmVzIHJlLWxvZ2luOiAke3Rva2VuLm5hbWV9KGlkPSR7dG9rZW4uaWR9KSByZWFzb249JHtyZWFzb25Db2RlfWApO1xuICAvLyDrp4zro4wg7KeB7ZuE6rCAIOyerOuhnOq3uOyduO2VmOq4sCDqsIDsnqUg7KKL7J2AIO2DgOydtOuwjeydtOuLpC4g7IaM7Jyg7J6Q66W8IOupmOyFmO2VtCDqt7gg7Iic6rCEIOuLueyCrOyekOyXkOqyjFxuICAvLyDqvYLripTri6Qg4oCUIOuLpOydtOygnOyKpO2KuOulvCDquLDri6TrpqzrqbQg64uk7J2MIOyjvOq4sOq5jOyngCDthqDtgbDsnbQg67mg7KeEIOyxhOuhnCDrgqjripTri6QuXG4gIGNvbnN0IG1lbnRpb24gPSBtZW50aW9uRm9yKHRva2VuLm5hbWUsIGdldFNsYWNrVXNlck1hcCgpKTtcbiAgdm9pZCBub3RpZnlTbGFjayh7XG4gICAgdGl0bGU6IFwi7IS47IWYIOunjOujjFwiLFxuICAgIHN1YmplY3Q6IHRva2VuLm5hbWUsXG4gICAgY29udGV4dDogW1xuICAgICAgbWVudGlvbixcbiAgICAgIHRva2VuLnByb3ZpZGVyLFxuICAgICAgcmVhc29uQ29kZSxcbiAgICAgIFwi7J6s66Gc6re47J247J20IO2VhOyalO2VqeuLiOuLpFwiLFxuICAgICAgd2FzTGFzdEFjdGl2ZSA/IFwi7IKs7JqpIOqwgOuKpe2VnCDthqDtgbDsnbQg7JeG7Iq164uI64ukXCIgOiBudWxsLFxuICAgIF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKFwiIMK3IFwiKSxcbiAgICBjb2xvcjogU0xBQ0tfQ09MT1IuYmFkLFxuICAgIHVyZ2VudDogd2FzTGFzdEFjdGl2ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiDroZzqt7jsnbjsnbQg7JmE66OM64+8IO2GoO2BsOydtCDsoIDsnqXrkJDsnYQg65WMLiDsi6Dqt5zCt+yerOuhnOq3uOyduOydhCDqsIDrpqzsp4Ag7JWK64qU64ukLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vdGlmeVRva2VuQWRkZWQobmFtZTogc3RyaW5nLCBwcm92aWRlcjogc3RyaW5nKTogdm9pZCB7XG4gIGxvZ2dlci5pbmZvKGB0b2tlbiBhZGRlZDogJHtuYW1lfSAoJHtwcm92aWRlcn0pYCk7XG4gIGNvbnN0IG1lbnRpb24gPSBtZW50aW9uRm9yKG5hbWUsIGdldFNsYWNrVXNlck1hcCgpKTtcbiAgdm9pZCBub3RpZnlTbGFjayh7XG4gICAgdGl0bGU6IFwi7Yag7YGwIOy2lOqwgFwiLFxuICAgIHN1YmplY3Q6IG5hbWUsXG4gICAgY29udGV4dDogW21lbnRpb24sIHByb3ZpZGVyLCBcIuyalOyyrSDsspjrpqzsl5Ag7IKs7Jqp65Cp64uI64ukXCJdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIMK3IFwiKSxcbiAgICBjb2xvcjogU0xBQ0tfQ09MT1IuZ29vZCxcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQWNBLE1BQU0sU0FBUyxVQUFVLENBQUMsU0FBUyxhQUFhLENBQUM7Ozs7O0FBUWpELGVBQXNCLHdCQUNwQixPQUNBLFlBQ2tCO0NBQ2xCLE1BQU0sRUFBRSxRQUFRLGVBQWUscUJBQXFCLE1BQU0sV0FBVyxtQkFDbkUsTUFBTSxJQUNOLE1BQU0sV0FDUjtDQUVBLElBQUksa0JBQWtCO0VBQ3BCLE9BQU8sS0FDTCwyQkFBMkIsTUFBTSxLQUFLLE1BQU0sTUFBTSxHQUFHLDBDQUN2RDtFQUVBLE9BQU87Q0FDVDtDQUVBLElBQUksQ0FBQyxRQUFRLE9BQU87Q0FFcEIsT0FBTyxLQUFLLDRCQUE0QixNQUFNLEtBQUssTUFBTSxNQUFNLEdBQUcsV0FBVyxZQUFZO0NBR3pGLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQztDQUN4RCxBQUFLLFlBQVk7RUFDZixPQUFPO0VBQ1AsU0FBUyxNQUFNO0VBQ2YsU0FBUztHQUNQO0dBQ0EsTUFBTTtHQUNOO0dBQ0E7R0FDQSxnQkFBZ0Isb0JBQW9CO0VBQ3RDLENBQUMsQ0FDRSxPQUFPLE9BQU8sQ0FBQyxDQUNmLEtBQUssS0FBSztFQUNiLE9BQU8sWUFBWTtFQUNuQixRQUFRO0NBQ1YsQ0FBQztDQUVELE9BQU87QUFDVDs7QUFHQSxTQUFnQixpQkFBaUIsTUFBYyxVQUF3QjtDQUNyRSxPQUFPLEtBQUssZ0JBQWdCLEtBQUssSUFBSSxTQUFTLEVBQUU7Q0FFaEQsQUFBSyxZQUFZO0VBQ2YsT0FBTztFQUNQLFNBQVM7RUFDVCxTQUFTO0dBSkssV0FBVyxNQUFNLGdCQUFnQixDQUlyQztHQUFTO0dBQVU7RUFBYyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUs7RUFDdkUsT0FBTyxZQUFZO0NBQ3JCLENBQUM7QUFDSCJ9
|