velocious 1.0.449 → 1.0.451
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/README.md +1 -1
- package/build/application.js +4 -4
- package/build/authorization/ability.js +8 -8
- package/build/authorization/base-resource.js +4 -4
- package/build/background-jobs/cron-expression.js +1 -1
- package/build/background-jobs/forked-runner-child.js +1 -1
- package/build/background-jobs/job-registry.js +1 -1
- package/build/background-jobs/job-runner.js +1 -1
- package/build/background-jobs/job.js +1 -1
- package/build/background-jobs/json-socket.js +4 -4
- package/build/background-jobs/main.js +21 -21
- package/build/background-jobs/scheduler.js +7 -7
- package/build/background-jobs/store.js +7 -7
- package/build/background-jobs/web/controller.js +2 -2
- package/build/background-jobs/worker.js +12 -12
- package/build/beacon/client.js +11 -8
- package/build/beacon/in-process-broker.js +2 -2
- package/build/beacon/in-process-client.js +2 -2
- package/build/beacon/server.js +3 -3
- package/build/cli/browser-cli.js +1 -1
- package/build/cli/commands/db/base-command.js +2 -2
- package/build/cli/index.js +2 -2
- package/build/cli/tenant-database-command-helper.js +3 -3
- package/build/cli/use-browser-cli.js +1 -1
- package/build/configuration-types.js +3 -1
- package/build/configuration.js +38 -38
- package/build/controller.js +8 -8
- package/build/current-configuration.js +1 -1
- package/build/database/annotations-async-hooks.js +2 -2
- package/build/database/annotations.js +3 -3
- package/build/database/drivers/base-column.js +1 -1
- package/build/database/drivers/base-foreign-key.js +1 -1
- package/build/database/drivers/base-table.js +1 -1
- package/build/database/drivers/base.js +10 -10
- package/build/database/drivers/mssql/index.js +1 -1
- package/build/database/drivers/mssql/table.js +1 -1
- package/build/database/drivers/mysql/index.js +3 -3
- package/build/database/drivers/mysql/query.js +1 -1
- package/build/database/drivers/mysql/table.js +1 -1
- package/build/database/drivers/pgsql/index.js +2 -2
- package/build/database/drivers/sqlite/base.js +16 -16
- package/build/database/drivers/sqlite/index.js +11 -11
- package/build/database/drivers/sqlite/index.native.js +1 -1
- package/build/database/drivers/sqlite/index.web.js +3 -3
- package/build/database/drivers/sqlite/query.js +1 -1
- package/build/database/drivers/sqlite/query.web.js +1 -1
- package/build/database/drivers/sqlite/sql/alter-table.js +2 -2
- package/build/database/drivers/sqlite/table.js +1 -1
- package/build/database/migrator/files-finder.js +1 -1
- package/build/database/migrator.js +6 -6
- package/build/database/pool/async-tracked-multi-connection.js +27 -27
- package/build/database/pool/base-methods-forward.js +4 -4
- package/build/database/pool/base.js +8 -8
- package/build/database/query/from-base.js +1 -1
- package/build/database/query/index.js +10 -10
- package/build/database/query/join-object.js +3 -3
- package/build/database/query/model-class-query.js +39 -39
- package/build/database/query/preloader/belongs-to.js +22 -22
- package/build/database/query/preloader/has-many.js +20 -20
- package/build/database/query/preloader/has-one.js +8 -8
- package/build/database/query/preloader/selection.js +3 -3
- package/build/database/query/preloader.js +8 -8
- package/build/database/query/query-data.js +9 -9
- package/build/database/query/where-model-class-hash.js +7 -7
- package/build/database/query/with-count.js +9 -9
- package/build/database/record/acts-as-list.js +15 -15
- package/build/database/record/attachments/handle.js +2 -2
- package/build/database/record/attachments/normalize-input.js +12 -12
- package/build/database/record/attachments/storage-drivers/s3.js +6 -6
- package/build/database/record/attachments/store.js +13 -13
- package/build/database/record/index.js +115 -121
- package/build/database/record/instance-relationships/base.js +11 -11
- package/build/database/record/instance-relationships/belongs-to.js +3 -3
- package/build/database/record/instance-relationships/has-many.js +8 -8
- package/build/database/record/instance-relationships/has-one.js +7 -7
- package/build/database/record/relationships/base.js +2 -2
- package/build/database/record/state-machine.js +7 -7
- package/build/database/record/validators/presence.js +1 -1
- package/build/database/record/validators/uniqueness.js +5 -5
- package/build/database/table-data/index.js +4 -4
- package/build/environment-handlers/base.js +2 -2
- package/build/environment-handlers/browser.js +7 -7
- package/build/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
- package/build/environment-handlers/node/cli/commands/console.js +4 -4
- package/build/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
- package/build/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
- package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +836 -60
- package/build/environment-handlers/node.js +6 -6
- package/build/frontend-model-controller.js +81 -82
- package/build/frontend-model-resource/base-resource.js +78 -115
- package/build/frontend-models/base.js +162 -149
- package/build/frontend-models/clear-pending-debounced-callback.js +1 -1
- package/build/frontend-models/event-hook-models.js +2 -2
- package/build/frontend-models/outgoing-event-buffer.js +2 -2
- package/build/frontend-models/preloader.js +5 -5
- package/build/frontend-models/query.js +43 -38
- package/build/frontend-models/resource-definition.js +6 -6
- package/build/frontend-models/transport-serialization.js +11 -11
- package/build/frontend-models/use-destroyed-event.js +10 -10
- package/build/frontend-models/use-model-class-event.js +11 -11
- package/build/frontend-models/use-updated-event.js +11 -11
- package/build/frontend-models/websocket-channel.js +26 -17
- package/build/frontend-models/websocket-publishers.js +9 -9
- package/build/http-client/response.js +2 -2
- package/build/http-server/client/index.js +8 -8
- package/build/http-server/client/params-to-object.js +10 -10
- package/build/http-server/client/request-buffer/form-data-part.js +2 -2
- package/build/http-server/client/request-buffer/index.js +8 -8
- package/build/http-server/client/request-parser.js +3 -3
- package/build/http-server/client/request-runner.js +6 -6
- package/build/http-server/client/request-timing.js +5 -5
- package/build/http-server/client/request.js +1 -1
- package/build/http-server/client/response.js +5 -5
- package/build/http-server/client/websocket-request.js +4 -4
- package/build/http-server/client/websocket-session.js +18 -18
- package/build/http-server/development-reloader.js +5 -5
- package/build/http-server/index.js +12 -12
- package/build/http-server/remote-address.js +4 -4
- package/build/http-server/server-client.js +3 -3
- package/build/http-server/server-lock.js +4 -4
- package/build/http-server/websocket-channel-subscribers.js +3 -3
- package/build/http-server/websocket-channel.js +1 -1
- package/build/http-server/websocket-connection.js +1 -1
- package/build/http-server/websocket-event-log-store.js +6 -6
- package/build/http-server/websocket-events-host.js +2 -2
- package/build/http-server/worker-handler/in-process.js +7 -7
- package/build/http-server/worker-handler/index.js +4 -4
- package/build/http-server/worker-handler/worker-thread.js +3 -3
- package/build/logger/outputs/array-output.js +3 -3
- package/build/logger/outputs/console-output.js +1 -1
- package/build/logger/outputs/file-output.js +4 -4
- package/build/logger/outputs/stdout-output.js +1 -1
- package/build/logger.js +10 -10
- package/build/mailer/backends/smtp.js +3 -3
- package/build/mailer/base.js +8 -8
- package/build/mailer/delivery.js +4 -4
- package/build/plugins/sqljs-wasm-route-controller.js +1 -1
- package/build/routes/base-route.js +6 -6
- package/build/routes/basic-route.js +1 -1
- package/build/routes/hooks/frontend-model-command-route-hook.js +1 -1
- package/build/routes/index.js +1 -1
- package/build/routes/plugin-routes.js +1 -1
- package/build/routes/resolver.js +11 -11
- package/build/routes/resource-route.js +1 -1
- package/build/src/application.d.ts +3 -3
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +5 -5
- package/build/src/authorization/ability.d.ts +7 -7
- package/build/src/authorization/ability.d.ts.map +1 -1
- package/build/src/authorization/ability.js +9 -9
- package/build/src/authorization/base-resource.d.ts +1 -1
- package/build/src/authorization/base-resource.d.ts.map +1 -1
- package/build/src/authorization/base-resource.js +5 -5
- package/build/src/background-jobs/cron-expression.js +2 -2
- package/build/src/background-jobs/forked-runner-child.js +2 -2
- package/build/src/background-jobs/job-registry.d.ts +1 -1
- package/build/src/background-jobs/job-registry.d.ts.map +1 -1
- package/build/src/background-jobs/job-registry.js +2 -2
- package/build/src/background-jobs/job-runner.js +2 -2
- package/build/src/background-jobs/job.js +2 -2
- package/build/src/background-jobs/json-socket.d.ts +4 -4
- package/build/src/background-jobs/json-socket.d.ts.map +1 -1
- package/build/src/background-jobs/json-socket.js +5 -5
- package/build/src/background-jobs/main.d.ts +18 -18
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +22 -22
- package/build/src/background-jobs/scheduler.d.ts +5 -5
- package/build/src/background-jobs/scheduler.d.ts.map +1 -1
- package/build/src/background-jobs/scheduler.js +8 -8
- package/build/src/background-jobs/store.js +8 -8
- package/build/src/background-jobs/web/controller.js +3 -3
- package/build/src/background-jobs/worker.d.ts +6 -6
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +13 -13
- package/build/src/beacon/client.d.ts +4 -4
- package/build/src/beacon/client.d.ts.map +1 -1
- package/build/src/beacon/client.js +12 -9
- package/build/src/beacon/in-process-broker.d.ts.map +1 -1
- package/build/src/beacon/in-process-broker.js +3 -3
- package/build/src/beacon/in-process-client.d.ts +1 -1
- package/build/src/beacon/in-process-client.d.ts.map +1 -1
- package/build/src/beacon/in-process-client.js +3 -3
- package/build/src/beacon/server.d.ts +2 -2
- package/build/src/beacon/server.d.ts.map +1 -1
- package/build/src/beacon/server.js +4 -4
- package/build/src/cli/browser-cli.js +2 -2
- package/build/src/cli/commands/db/base-command.d.ts +2 -2
- package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
- package/build/src/cli/commands/db/base-command.js +3 -3
- package/build/src/cli/index.js +3 -3
- package/build/src/cli/tenant-database-command-helper.d.ts +1 -1
- package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
- package/build/src/cli/tenant-database-command-helper.js +4 -4
- package/build/src/cli/use-browser-cli.js +2 -2
- package/build/src/configuration-types.d.ts +12 -2
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +4 -2
- package/build/src/configuration.d.ts +14 -14
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +39 -39
- package/build/src/controller.js +10 -10
- package/build/src/current-configuration.js +2 -2
- package/build/src/database/annotations-async-hooks.js +3 -3
- package/build/src/database/annotations.d.ts.map +1 -1
- package/build/src/database/annotations.js +4 -4
- package/build/src/database/drivers/base-column.d.ts +1 -1
- package/build/src/database/drivers/base-column.d.ts.map +1 -1
- package/build/src/database/drivers/base-column.js +2 -2
- package/build/src/database/drivers/base-foreign-key.d.ts +1 -1
- package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
- package/build/src/database/drivers/base-foreign-key.js +2 -2
- package/build/src/database/drivers/base-table.d.ts +1 -1
- package/build/src/database/drivers/base-table.d.ts.map +1 -1
- package/build/src/database/drivers/base-table.js +2 -2
- package/build/src/database/drivers/base.d.ts +6 -6
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +11 -11
- package/build/src/database/drivers/mssql/index.js +2 -2
- package/build/src/database/drivers/mssql/table.js +2 -2
- package/build/src/database/drivers/mysql/index.js +4 -4
- package/build/src/database/drivers/mysql/query.js +2 -2
- package/build/src/database/drivers/mysql/table.js +2 -2
- package/build/src/database/drivers/pgsql/index.js +3 -3
- package/build/src/database/drivers/sqlite/base.d.ts +3 -3
- package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.js +17 -17
- package/build/src/database/drivers/sqlite/index.d.ts +4 -4
- package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.js +12 -12
- package/build/src/database/drivers/sqlite/index.native.js +2 -2
- package/build/src/database/drivers/sqlite/index.web.d.ts +2 -2
- package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.web.js +4 -4
- package/build/src/database/drivers/sqlite/query.js +2 -2
- package/build/src/database/drivers/sqlite/query.web.js +2 -2
- package/build/src/database/drivers/sqlite/sql/alter-table.js +3 -3
- package/build/src/database/drivers/sqlite/table.js +2 -2
- package/build/src/database/migrator/files-finder.js +2 -2
- package/build/src/database/migrator.d.ts +1 -1
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/migrator.js +7 -7
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +9 -9
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +28 -28
- package/build/src/database/pool/base-methods-forward.js +7 -7
- package/build/src/database/pool/base.d.ts +1 -1
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +9 -9
- package/build/src/database/query/from-base.d.ts +1 -1
- package/build/src/database/query/from-base.d.ts.map +1 -1
- package/build/src/database/query/from-base.js +2 -2
- package/build/src/database/query/index.d.ts +4 -4
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +11 -11
- package/build/src/database/query/join-object.js +4 -4
- package/build/src/database/query/model-class-query.d.ts +4 -4
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +40 -40
- package/build/src/database/query/preloader/belongs-to.js +23 -23
- package/build/src/database/query/preloader/has-many.js +21 -21
- package/build/src/database/query/preloader/has-one.js +9 -9
- package/build/src/database/query/preloader/selection.js +4 -4
- package/build/src/database/query/preloader.js +9 -9
- package/build/src/database/query/query-data.js +10 -10
- package/build/src/database/query/where-model-class-hash.js +8 -8
- package/build/src/database/query/with-count.js +10 -10
- package/build/src/database/record/acts-as-list.js +20 -20
- package/build/src/database/record/attachments/handle.d.ts +1 -1
- package/build/src/database/record/attachments/handle.d.ts.map +1 -1
- package/build/src/database/record/attachments/handle.js +3 -3
- package/build/src/database/record/attachments/normalize-input.js +15 -15
- package/build/src/database/record/attachments/storage-drivers/s3.js +7 -7
- package/build/src/database/record/attachments/store.d.ts +2 -2
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +14 -14
- package/build/src/database/record/index.d.ts +18 -25
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +135 -141
- package/build/src/database/record/instance-relationships/base.d.ts +3 -3
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +13 -13
- package/build/src/database/record/instance-relationships/belongs-to.js +4 -4
- package/build/src/database/record/instance-relationships/has-many.js +9 -9
- package/build/src/database/record/instance-relationships/has-one.d.ts +1 -1
- package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-one.js +8 -8
- package/build/src/database/record/relationships/base.js +4 -4
- package/build/src/database/record/state-machine.js +8 -8
- package/build/src/database/record/validators/presence.js +2 -2
- package/build/src/database/record/validators/uniqueness.js +6 -6
- package/build/src/database/table-data/index.d.ts +4 -4
- package/build/src/database/table-data/index.d.ts.map +1 -1
- package/build/src/database/table-data/index.js +5 -5
- package/build/src/environment-handlers/base.js +3 -3
- package/build/src/environment-handlers/browser.d.ts +3 -3
- package/build/src/environment-handlers/browser.d.ts.map +1 -1
- package/build/src/environment-handlers/browser.js +8 -8
- package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/console.js +5 -5
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +4 -4
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +285 -12
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +712 -61
- package/build/src/environment-handlers/node.d.ts +2 -2
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +7 -7
- package/build/src/frontend-model-controller.d.ts +5 -6
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +88 -89
- package/build/src/frontend-model-resource/base-resource.d.ts +36 -27
- package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
- package/build/src/frontend-model-resource/base-resource.js +67 -120
- package/build/src/frontend-models/base.d.ts +67 -59
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +171 -158
- package/build/src/frontend-models/clear-pending-debounced-callback.js +2 -2
- package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
- package/build/src/frontend-models/event-hook-models.js +3 -3
- package/build/src/frontend-models/outgoing-event-buffer.d.ts +1 -1
- package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
- package/build/src/frontend-models/outgoing-event-buffer.js +3 -3
- package/build/src/frontend-models/preloader.js +6 -6
- package/build/src/frontend-models/query.d.ts +16 -8
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +43 -39
- package/build/src/frontend-models/resource-definition.js +7 -7
- package/build/src/frontend-models/transport-serialization.js +12 -12
- package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-destroyed-event.js +11 -11
- package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-model-class-event.js +12 -12
- package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-updated-event.js +12 -12
- package/build/src/frontend-models/websocket-channel.d.ts +6 -1
- package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-channel.js +26 -18
- package/build/src/frontend-models/websocket-publishers.js +11 -11
- package/build/src/http-client/response.d.ts +2 -2
- package/build/src/http-client/response.d.ts.map +1 -1
- package/build/src/http-client/response.js +3 -3
- package/build/src/http-server/client/index.d.ts +1 -1
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +9 -9
- package/build/src/http-server/client/params-to-object.js +11 -11
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts +2 -2
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/form-data-part.js +3 -3
- package/build/src/http-server/client/request-buffer/index.d.ts +4 -4
- package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/index.js +9 -9
- package/build/src/http-server/client/request-parser.d.ts +1 -1
- package/build/src/http-server/client/request-parser.d.ts.map +1 -1
- package/build/src/http-server/client/request-parser.js +4 -4
- package/build/src/http-server/client/request-runner.js +7 -7
- package/build/src/http-server/client/request-timing.d.ts +5 -5
- package/build/src/http-server/client/request-timing.d.ts.map +1 -1
- package/build/src/http-server/client/request-timing.js +6 -6
- package/build/src/http-server/client/request.js +2 -2
- package/build/src/http-server/client/response.d.ts +3 -3
- package/build/src/http-server/client/response.d.ts.map +1 -1
- package/build/src/http-server/client/response.js +6 -6
- package/build/src/http-server/client/websocket-request.d.ts +3 -3
- package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-request.js +5 -5
- package/build/src/http-server/client/websocket-session.d.ts +6 -6
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +19 -19
- package/build/src/http-server/development-reloader.d.ts +3 -3
- package/build/src/http-server/development-reloader.d.ts.map +1 -1
- package/build/src/http-server/development-reloader.js +6 -6
- package/build/src/http-server/index.d.ts +7 -7
- package/build/src/http-server/index.d.ts.map +1 -1
- package/build/src/http-server/index.js +13 -13
- package/build/src/http-server/remote-address.js +6 -6
- package/build/src/http-server/server-client.js +4 -4
- package/build/src/http-server/server-lock.js +5 -5
- package/build/src/http-server/websocket-channel-subscribers.d.ts +1 -1
- package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel-subscribers.js +4 -4
- package/build/src/http-server/websocket-channel.d.ts +1 -1
- package/build/src/http-server/websocket-channel.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel.js +2 -2
- package/build/src/http-server/websocket-connection.d.ts +1 -1
- package/build/src/http-server/websocket-connection.d.ts.map +1 -1
- package/build/src/http-server/websocket-connection.js +2 -2
- package/build/src/http-server/websocket-event-log-store.d.ts +1 -1
- package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
- package/build/src/http-server/websocket-event-log-store.js +7 -7
- package/build/src/http-server/websocket-events-host.d.ts +1 -1
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +3 -3
- package/build/src/http-server/worker-handler/in-process.d.ts +3 -3
- package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/in-process.js +9 -9
- package/build/src/http-server/worker-handler/index.d.ts +4 -4
- package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/index.js +5 -5
- package/build/src/http-server/worker-handler/worker-thread.d.ts +2 -2
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +4 -4
- package/build/src/logger/outputs/array-output.d.ts +3 -3
- package/build/src/logger/outputs/array-output.d.ts.map +1 -1
- package/build/src/logger/outputs/array-output.js +4 -4
- package/build/src/logger/outputs/console-output.d.ts +1 -1
- package/build/src/logger/outputs/console-output.d.ts.map +1 -1
- package/build/src/logger/outputs/console-output.js +2 -2
- package/build/src/logger/outputs/file-output.d.ts +4 -4
- package/build/src/logger/outputs/file-output.d.ts.map +1 -1
- package/build/src/logger/outputs/file-output.js +5 -5
- package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
- package/build/src/logger/outputs/stdout-output.js +2 -2
- package/build/src/logger.d.ts.map +1 -1
- package/build/src/logger.js +11 -11
- package/build/src/mailer/backends/smtp.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.js +5 -5
- package/build/src/mailer/base.js +11 -11
- package/build/src/mailer/delivery.d.ts +3 -3
- package/build/src/mailer/delivery.d.ts.map +1 -1
- package/build/src/mailer/delivery.js +5 -5
- package/build/src/plugins/sqljs-wasm-route-controller.js +2 -2
- package/build/src/routes/base-route.d.ts +6 -6
- package/build/src/routes/base-route.d.ts.map +1 -1
- package/build/src/routes/base-route.js +7 -7
- package/build/src/routes/basic-route.js +2 -2
- package/build/src/routes/hooks/frontend-model-command-route-hook.js +2 -2
- package/build/src/routes/index.js +2 -2
- package/build/src/routes/plugin-routes.js +2 -2
- package/build/src/routes/resolver.d.ts +1 -1
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +13 -13
- package/build/src/routes/resource-route.d.ts +1 -1
- package/build/src/routes/resource-route.d.ts.map +1 -1
- package/build/src/routes/resource-route.js +2 -2
- package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
- package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +8 -8
- package/build/src/testing/expect-utils.js +13 -13
- package/build/src/testing/expect.d.ts +1 -1
- package/build/src/testing/expect.d.ts.map +1 -1
- package/build/src/testing/expect.js +9 -9
- package/build/src/testing/test-files-finder.d.ts +8 -8
- package/build/src/testing/test-files-finder.d.ts.map +1 -1
- package/build/src/testing/test-files-finder.js +9 -9
- package/build/src/testing/test-filter-parser.js +3 -3
- package/build/src/testing/test-runner.d.ts +2 -2
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +17 -17
- package/build/src/testing/test-suite-splitter.js +2 -2
- package/build/src/testing/test.d.ts +2 -2
- package/build/src/testing/test.d.ts.map +1 -1
- package/build/src/testing/test.js +16 -16
- package/build/src/utils/backtrace-cleaner.d.ts +1 -1
- package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
- package/build/src/utils/backtrace-cleaner.js +2 -2
- package/build/src/utils/format-value.js +2 -2
- package/build/src/utils/model-scope.js +2 -2
- package/build/src/utils/ransack.js +27 -27
- package/build/src/utils/with-tracked-stack-async-hooks.js +8 -8
- package/build/src/utils/with-tracked-stack.js +4 -4
- package/build/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
- package/build/testing/expect-utils.js +11 -11
- package/build/testing/expect.js +7 -7
- package/build/testing/test-files-finder.js +8 -8
- package/build/testing/test-filter-parser.js +2 -2
- package/build/testing/test-runner.js +16 -16
- package/build/testing/test-suite-splitter.js +1 -1
- package/build/testing/test.js +15 -15
- package/build/utils/backtrace-cleaner.js +1 -1
- package/build/utils/format-value.js +1 -1
- package/build/utils/model-scope.js +1 -1
- package/build/utils/ransack.js +26 -26
- package/build/utils/with-tracked-stack-async-hooks.js +7 -7
- package/build/utils/with-tracked-stack.js +3 -3
- package/package.json +2 -1
- package/src/application.js +4 -4
- package/src/authorization/ability.js +8 -8
- package/src/authorization/base-resource.js +4 -4
- package/src/background-jobs/cron-expression.js +1 -1
- package/src/background-jobs/forked-runner-child.js +1 -1
- package/src/background-jobs/job-registry.js +1 -1
- package/src/background-jobs/job-runner.js +1 -1
- package/src/background-jobs/job.js +1 -1
- package/src/background-jobs/json-socket.js +4 -4
- package/src/background-jobs/main.js +21 -21
- package/src/background-jobs/scheduler.js +7 -7
- package/src/background-jobs/store.js +7 -7
- package/src/background-jobs/web/controller.js +2 -2
- package/src/background-jobs/worker.js +12 -12
- package/src/beacon/client.js +11 -8
- package/src/beacon/in-process-broker.js +2 -2
- package/src/beacon/in-process-client.js +2 -2
- package/src/beacon/server.js +3 -3
- package/src/cli/browser-cli.js +1 -1
- package/src/cli/commands/db/base-command.js +2 -2
- package/src/cli/index.js +2 -2
- package/src/cli/tenant-database-command-helper.js +3 -3
- package/src/cli/use-browser-cli.js +1 -1
- package/src/configuration-types.js +3 -1
- package/src/configuration.js +38 -38
- package/src/controller.js +8 -8
- package/src/current-configuration.js +1 -1
- package/src/database/annotations-async-hooks.js +2 -2
- package/src/database/annotations.js +3 -3
- package/src/database/drivers/base-column.js +1 -1
- package/src/database/drivers/base-foreign-key.js +1 -1
- package/src/database/drivers/base-table.js +1 -1
- package/src/database/drivers/base.js +10 -10
- package/src/database/drivers/mssql/index.js +1 -1
- package/src/database/drivers/mssql/table.js +1 -1
- package/src/database/drivers/mysql/index.js +3 -3
- package/src/database/drivers/mysql/query.js +1 -1
- package/src/database/drivers/mysql/table.js +1 -1
- package/src/database/drivers/pgsql/index.js +2 -2
- package/src/database/drivers/sqlite/base.js +16 -16
- package/src/database/drivers/sqlite/index.js +11 -11
- package/src/database/drivers/sqlite/index.native.js +1 -1
- package/src/database/drivers/sqlite/index.web.js +3 -3
- package/src/database/drivers/sqlite/query.js +1 -1
- package/src/database/drivers/sqlite/query.web.js +1 -1
- package/src/database/drivers/sqlite/sql/alter-table.js +2 -2
- package/src/database/drivers/sqlite/table.js +1 -1
- package/src/database/migrator/files-finder.js +1 -1
- package/src/database/migrator.js +6 -6
- package/src/database/pool/async-tracked-multi-connection.js +27 -27
- package/src/database/pool/base-methods-forward.js +4 -4
- package/src/database/pool/base.js +8 -8
- package/src/database/query/from-base.js +1 -1
- package/src/database/query/index.js +10 -10
- package/src/database/query/join-object.js +3 -3
- package/src/database/query/model-class-query.js +39 -39
- package/src/database/query/preloader/belongs-to.js +22 -22
- package/src/database/query/preloader/has-many.js +20 -20
- package/src/database/query/preloader/has-one.js +8 -8
- package/src/database/query/preloader/selection.js +3 -3
- package/src/database/query/preloader.js +8 -8
- package/src/database/query/query-data.js +9 -9
- package/src/database/query/where-model-class-hash.js +7 -7
- package/src/database/query/with-count.js +9 -9
- package/src/database/record/acts-as-list.js +15 -15
- package/src/database/record/attachments/handle.js +2 -2
- package/src/database/record/attachments/normalize-input.js +12 -12
- package/src/database/record/attachments/storage-drivers/s3.js +6 -6
- package/src/database/record/attachments/store.js +13 -13
- package/src/database/record/index.js +115 -121
- package/src/database/record/instance-relationships/base.js +11 -11
- package/src/database/record/instance-relationships/belongs-to.js +3 -3
- package/src/database/record/instance-relationships/has-many.js +8 -8
- package/src/database/record/instance-relationships/has-one.js +7 -7
- package/src/database/record/relationships/base.js +2 -2
- package/src/database/record/state-machine.js +7 -7
- package/src/database/record/validators/presence.js +1 -1
- package/src/database/record/validators/uniqueness.js +5 -5
- package/src/database/table-data/index.js +4 -4
- package/src/environment-handlers/base.js +2 -2
- package/src/environment-handlers/browser.js +7 -7
- package/src/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
- package/src/environment-handlers/node/cli/commands/console.js +4 -4
- package/src/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
- package/src/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
- package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +836 -60
- package/src/environment-handlers/node.js +6 -6
- package/src/frontend-model-controller.js +81 -82
- package/src/frontend-model-resource/base-resource.js +78 -115
- package/src/frontend-models/base.js +162 -149
- package/src/frontend-models/clear-pending-debounced-callback.js +1 -1
- package/src/frontend-models/event-hook-models.js +2 -2
- package/src/frontend-models/outgoing-event-buffer.js +2 -2
- package/src/frontend-models/preloader.js +5 -5
- package/src/frontend-models/query.js +43 -38
- package/src/frontend-models/resource-definition.js +6 -6
- package/src/frontend-models/transport-serialization.js +11 -11
- package/src/frontend-models/use-destroyed-event.js +10 -10
- package/src/frontend-models/use-model-class-event.js +11 -11
- package/src/frontend-models/use-updated-event.js +11 -11
- package/src/frontend-models/websocket-channel.js +26 -17
- package/src/frontend-models/websocket-publishers.js +9 -9
- package/src/http-client/response.js +2 -2
- package/src/http-server/client/index.js +8 -8
- package/src/http-server/client/params-to-object.js +10 -10
- package/src/http-server/client/request-buffer/form-data-part.js +2 -2
- package/src/http-server/client/request-buffer/index.js +8 -8
- package/src/http-server/client/request-parser.js +3 -3
- package/src/http-server/client/request-runner.js +6 -6
- package/src/http-server/client/request-timing.js +5 -5
- package/src/http-server/client/request.js +1 -1
- package/src/http-server/client/response.js +5 -5
- package/src/http-server/client/websocket-request.js +4 -4
- package/src/http-server/client/websocket-session.js +18 -18
- package/src/http-server/development-reloader.js +5 -5
- package/src/http-server/index.js +12 -12
- package/src/http-server/remote-address.js +4 -4
- package/src/http-server/server-client.js +3 -3
- package/src/http-server/server-lock.js +4 -4
- package/src/http-server/websocket-channel-subscribers.js +3 -3
- package/src/http-server/websocket-channel.js +1 -1
- package/src/http-server/websocket-connection.js +1 -1
- package/src/http-server/websocket-event-log-store.js +6 -6
- package/src/http-server/websocket-events-host.js +2 -2
- package/src/http-server/worker-handler/in-process.js +7 -7
- package/src/http-server/worker-handler/index.js +4 -4
- package/src/http-server/worker-handler/worker-thread.js +3 -3
- package/src/logger/outputs/array-output.js +3 -3
- package/src/logger/outputs/console-output.js +1 -1
- package/src/logger/outputs/file-output.js +4 -4
- package/src/logger/outputs/stdout-output.js +1 -1
- package/src/logger.js +10 -10
- package/src/mailer/backends/smtp.js +3 -3
- package/src/mailer/base.js +8 -8
- package/src/mailer/delivery.js +4 -4
- package/src/plugins/sqljs-wasm-route-controller.js +1 -1
- package/src/routes/base-route.js +6 -6
- package/src/routes/basic-route.js +1 -1
- package/src/routes/hooks/frontend-model-command-route-hook.js +1 -1
- package/src/routes/index.js +1 -1
- package/src/routes/plugin-routes.js +1 -1
- package/src/routes/resolver.js +11 -11
- package/src/routes/resource-route.js +1 -1
- package/src/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
- package/src/testing/expect-utils.js +11 -11
- package/src/testing/expect.js +7 -7
- package/src/testing/test-files-finder.js +8 -8
- package/src/testing/test-filter-parser.js +2 -2
- package/src/testing/test-runner.js +16 -16
- package/src/testing/test-suite-splitter.js +1 -1
- package/src/testing/test.js +15 -15
- package/src/utils/backtrace-cleaner.js +1 -1
- package/src/utils/format-value.js +1 -1
- package/src/utils/model-scope.js +1 -1
- package/src/utils/ransack.js +26 -26
- package/src/utils/with-tracked-stack-async-hooks.js +7 -7
- package/src/utils/with-tracked-stack.js +3 -3
|
@@ -50,7 +50,7 @@ export default class VelociousHttpServerWebsocketEventLogStore {
|
|
|
50
50
|
this._readyPromise = null;
|
|
51
51
|
/**
|
|
52
52
|
* Narrows the runtime value to the documented type.
|
|
53
|
-
|
|
53
|
+
* @type {Map<string, number>} */
|
|
54
54
|
this._interestedChannels = new Map();
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
@@ -199,7 +199,7 @@ export default class VelociousHttpServerWebsocketEventLogStore {
|
|
|
199
199
|
.results();
|
|
200
200
|
const row = /**
|
|
201
201
|
* Narrows the runtime value to the documented type.
|
|
202
|
-
|
|
202
|
+
* @type {Record<string, ?> | undefined} */ (rows[0]);
|
|
203
203
|
if (!row)
|
|
204
204
|
return null;
|
|
205
205
|
return Number(row.sequence);
|
|
@@ -227,7 +227,7 @@ export default class VelociousHttpServerWebsocketEventLogStore {
|
|
|
227
227
|
}
|
|
228
228
|
const rows = /**
|
|
229
229
|
* Narrows the runtime value to the documented type.
|
|
230
|
-
|
|
230
|
+
* @type {WebsocketEventRow[]} */ (await query.results());
|
|
231
231
|
return rows.map((row) => this._normalizeEventRow(row));
|
|
232
232
|
});
|
|
233
233
|
}
|
|
@@ -243,14 +243,14 @@ export default class VelociousHttpServerWebsocketEventLogStore {
|
|
|
243
243
|
await this._withDb(async (db) => {
|
|
244
244
|
const expiredEventRows = /**
|
|
245
245
|
* Narrows the runtime value to the documented type.
|
|
246
|
-
|
|
246
|
+
* @type {Array<{id: string}>} */ (await db
|
|
247
247
|
.newQuery()
|
|
248
248
|
.from(EVENTS_TABLE)
|
|
249
249
|
.where(`created_at <= ${db.quote(cutoff)}`)
|
|
250
250
|
.results());
|
|
251
251
|
const expiredReplayChannelRows = /**
|
|
252
252
|
* Narrows the runtime value to the documented type.
|
|
253
|
-
|
|
253
|
+
* @type {WebsocketReplayChannelRow[]} */ (await db
|
|
254
254
|
.newQuery()
|
|
255
255
|
.from(REPLAY_CHANNELS_TABLE)
|
|
256
256
|
.where(`interested_until <= ${db.quote(now)}`)
|
|
@@ -318,7 +318,7 @@ export default class VelociousHttpServerWebsocketEventLogStore {
|
|
|
318
318
|
async _getEventById({ channel, db, id }) {
|
|
319
319
|
const rows = /**
|
|
320
320
|
* Narrows the runtime value to the documented type.
|
|
321
|
-
|
|
321
|
+
* @type {WebsocketEventRow[]} */ (await db
|
|
322
322
|
.newQuery()
|
|
323
323
|
.from(EVENTS_TABLE)
|
|
324
324
|
.where({ channel, id })
|
|
@@ -376,4 +376,4 @@ export default class VelociousHttpServerWebsocketEventLogStore {
|
|
|
376
376
|
});
|
|
377
377
|
}
|
|
378
378
|
}
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWV2ZW50LWxvZy1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9odHRwLXNlcnZlci93ZWJzb2NrZXQtZXZlbnQtbG9nLXN0b3JlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ2pDLE9BQU8sU0FBUyxNQUFNLGlDQUFpQyxDQUFBO0FBQ3ZELE9BQU8sTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUVqQyxNQUFNLFlBQVksR0FBRywwQkFBMEIsQ0FBQTtBQUMvQyxNQUFNLHFCQUFxQixHQUFHLDJCQUEyQixDQUFBO0FBQ3pELE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7QUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUU1Qjs7Ozs7Ozs7R0FRRztBQUVIOzs7O0dBSUc7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNDQUFzQyxDQUFDLGFBQWE7SUFDbEUsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUVyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxLQUFLLEdBQUcsSUFBSSx5Q0FBeUMsQ0FBQyxFQUFDLGFBQWEsRUFBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8seUNBQXlDO0lBQzVEOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEdBQUcsU0FBUyxFQUFFLFdBQVcsR0FBRyxvQkFBb0IsRUFBQztRQUM3RixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtR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T0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsRUFBQyxJQUFJLEVBQUUsMkJBQTJCLEVBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDbkcsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1lBRXZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUE7WUFFdkcsT0FBTyxNQUFNLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMzQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge3JhbmRvbVVVSUR9IGZyb20gXCJjcnlwdG9cIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vZGF0YWJhc2UvdGFibGUtZGF0YS9pbmRleC5qc1wiXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9sb2dnZXIuanNcIlxuXG5jb25zdCBFVkVOVFNfVEFCTEUgPSBcIndlYnNvY2tldF9jaGFubmVsX2V2ZW50c1wiXG5jb25zdCBSRVBMQVlfQ0hBTk5FTFNfVEFCTEUgPSBcIndlYnNvY2tldF9yZXBsYXlfY2hhbm5lbHNcIlxuY29uc3QgREVGQVVMVF9SRVRFTlRJT05fTVMgPSAxMCAqIDYwICogMTAwMFxuY29uc3Qgc3RvcmVzID0gbmV3IFdlYWtNYXAoKVxuXG4vKipcbiAqIFdlYnNvY2tldEV2ZW50Um93IHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBXZWJzb2NrZXRFdmVudFJvd1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gKiBAcHJvcGVydHkge0RhdGUgfCBzdHJpbmd9IGNyZWF0ZWRfYXQgLSBDcmVhdGlvbiB0aW1lLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkIC0gRXZlbnQgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGF5bG9hZF9qc29uIC0gU2VyaWFsaXplZCBwYXlsb2FkLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBzdHJpbmd9IHNlcXVlbmNlIC0gU2VxdWVuY2UgbnVtYmVyLlxuICovXG5cbi8qKlxuICogV2Vic29ja2V0UmVwbGF5Q2hhbm5lbFJvdyB0eXBlLlxuICogQHR5cGVkZWYge29iamVjdH0gV2Vic29ja2V0UmVwbGF5Q2hhbm5lbFJvd1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gKi9cblxuLyoqXG4gKiBSdW5zIHRoZSB3ZWJzb2NrZXRFdmVudExvZ1N0b3JlRm9yQ29uZmlndXJhdGlvbiBoZWxwZXIuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7VmVsb2Npb3VzSHR0cFNlcnZlcldlYnNvY2tldEV2ZW50TG9nU3RvcmV9IC0gU2hhcmVkIHN0b3JlIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2Vic29ja2V0RXZlbnRMb2dTdG9yZUZvckNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikge1xuICBsZXQgc3RvcmUgPSBzdG9yZXMuZ2V0KGNvbmZpZ3VyYXRpb24pXG5cbiAgaWYgKCFzdG9yZSkge1xuICAgIHN0b3JlID0gbmV3IFZlbG9jaW91c0h0dHBTZXJ2ZXJXZWJzb2NrZXRFdmVudExvZ1N0b3JlKHtjb25maWd1cmF0aW9ufSlcbiAgICBzdG9yZXMuc2V0KGNvbmZpZ3VyYXRpb24sIHN0b3JlKVxuICB9XG5cbiAgcmV0dXJuIHN0b3JlXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJXZWJzb2NrZXRFdmVudExvZ1N0b3JlIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5kYXRhYmFzZUlkZW50aWZpZXJdIC0gRGF0YWJhc2UgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLnJldGVudGlvbk1zXSAtIEV2ZW50IHJldGVudGlvbiBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgZGF0YWJhc2VJZGVudGlmaWVyID0gXCJkZWZhdWx0XCIsIHJldGVudGlvbk1zID0gREVGQVVMVF9SRVRFTlRJT05fTVN9KSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMuZGF0YWJhc2VJZGVudGlmaWVyID0gZGF0YWJhc2VJZGVudGlmaWVyXG4gICAgdGhpcy5yZXRlbnRpb25NcyA9IHJldGVudGlvbk1zXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gICAgdGhpcy5faXNSZWFkeSA9IGZhbHNlXG4gICAgdGhpcy5fcmVhZHlQcm9taXNlID0gbnVsbFxuICAgIC8qKlxuICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgIEB0eXBlIHtNYXA8c3RyaW5nLCBudW1iZXI+fSAqL1xuICAgIHRoaXMuX2ludGVyZXN0ZWRDaGFubmVscyA9IG5ldyBNYXAoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZW5zdXJlIHJlYWR5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHJlYWR5LlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlUmVhZHkoKSB7XG4gICAgaWYgKGF3YWl0IHRoaXMuX3NjaGVtYVJlYWR5KCkpIHJldHVyblxuXG4gICAgaWYgKHRoaXMuX3JlYWR5UHJvbWlzZSkgcmV0dXJuIGF3YWl0IHRoaXMuX3JlYWR5UHJvbWlzZVxuXG4gICAgdGhpcy5fcmVhZHlQcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZXRDdXJyZW50KClcbiAgICAgIGF3YWl0IHRoaXMuX2Vuc3VyZVNjaGVtYSgpXG4gICAgICB0aGlzLl9pc1JlYWR5ID0gdHJ1ZVxuICAgIH0pKClcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWFkeVByb21pc2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKCF0aGlzLl9pc1JlYWR5KSB7XG4gICAgICAgIHRoaXMuX3JlYWR5UHJvbWlzZSA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmUtdmFsaWRhdGVzIGNhY2hlZCBzY2hlbWEgcmVhZGluZXNzIGJlY2F1c2UgdHJhbnNhY3Rpb25hbCBEREwgY2FuIHJvbGwgdGhlIHRhYmxlcyBiYWNrLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIHRoZSBjYWNoZWQgcmVhZHkgc3RhdGUgaXMgc3RpbGwgdmFsaWQuXG4gICAqL1xuICBhc3luYyBfc2NoZW1hUmVhZHkoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1JlYWR5KSByZXR1cm4gZmFsc2VcbiAgICBpZiAoYXdhaXQgdGhpcy5fc2NoZW1hUHJlc2VudCgpKSByZXR1cm4gdHJ1ZVxuXG4gICAgdGhpcy5faXNSZWFkeSA9IGZhbHNlXG4gICAgdGhpcy5fcmVhZHlQcm9taXNlID0gbnVsbFxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzY2hlbWEgcHJlc2VudC5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gV2hldGhlciBib3RoIGV2ZW50LWxvZyB0YWJsZXMgcGh5c2ljYWxseSBleGlzdC5cbiAgICovXG4gIGFzeW5jIF9zY2hlbWFQcmVzZW50KCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl93aXRoRGIoYXN5bmMgKGRiKSA9PlxuICAgICAgYXdhaXQgZGIudGFibGVFeGlzdHMoRVZFTlRTX1RBQkxFKSAmJiBhd2FpdCBkYi50YWJsZUV4aXN0cyhSRVBMQVlfQ0hBTk5FTFNfVEFCTEUpXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYXBwZW5kIGV2ZW50LlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEBwYXJhbSB7P30gYXJncy5wYXlsb2FkIC0gRXZlbnQgcGF5bG9hZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8e2NoYW5uZWw6IHN0cmluZywgY3JlYXRlZEF0OiBzdHJpbmcsIGlkOiBzdHJpbmcsIHBheWxvYWQ6ID99Pn0gLSBQZXJzaXN0ZWQgZXZlbnQgcm93LlxuICAgKi9cbiAgYXN5bmMgYXBwZW5kRXZlbnQoe2NoYW5uZWwsIHBheWxvYWR9KSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVSZWFkeSgpXG5cbiAgICBjb25zdCBpZCA9IHJhbmRvbVVVSUQoKVxuICAgIGNvbnN0IGNyZWF0ZWRBdCA9IG5ldyBEYXRlKClcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLl93aXRoRGIoYXN5bmMgKGRiKSA9PiB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoe1xuICAgICAgICB0YWJsZU5hbWU6IEVWRU5UU19UQUJMRSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgY3JlYXRlZF9hdDogY3JlYXRlZEF0LFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHBheWxvYWRfanNvbjogSlNPTi5zdHJpbmdpZnkocGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVybiB7Y2hhbm5lbCwgY3JlYXRlZEF0OiBjcmVhdGVkQXQudG9JU09TdHJpbmcoKSwgaWQsIHBheWxvYWR9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG1hcmsgY2hhbm5lbCBpbnRlcmVzdGVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiB0aGUgY2hhbm5lbCBpbnRlcmVzdCB3YXMgcGVyc2lzdGVkLlxuICAgKi9cbiAgYXN5bmMgbWFya0NoYW5uZWxJbnRlcmVzdGVkKGNoYW5uZWwpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVJlYWR5KClcblxuICAgIGNvbnN0IGludGVyZXN0ZWRVbnRpbCA9IG5ldyBEYXRlKERhdGUubm93KCkgKyB0aGlzLnJldGVudGlvbk1zKVxuXG4gICAgdGhpcy5faW50ZXJlc3RlZENoYW5uZWxzLnNldChjaGFubmVsLCBpbnRlcmVzdGVkVW50aWwuZ2V0VGltZSgpKVxuXG4gICAgYXdhaXQgdGhpcy5fd2l0aERiKGFzeW5jIChkYikgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5fdXBzZXJ0UmVwbGF5Q2hhbm5lbEludGVyZXN0KGRiLCB7Y2hhbm5lbCwgaW50ZXJlc3RlZFVudGlsfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2hvdWxkIHBlcnNpc3QgY2hhbm5lbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFdoZXRoZXIgdGhlIGNoYW5uZWwgc2hvdWxkIGJlIHBlcnNpc3RlZCBmb3IgcmVwbGF5LlxuICAgKi9cbiAgYXN5bmMgc2hvdWxkUGVyc2lzdENoYW5uZWwoY2hhbm5lbCkge1xuICAgIGlmICh0aGlzLl9jaGFubmVsSW50ZXJlc3RDYWNoZWQoY2hhbm5lbCkpIHJldHVybiB0cnVlXG4gICAgaWYgKHRoaXMuX2ludGVyZXN0ZWRDaGFubmVscy5zaXplID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dpdGhEYihhc3luYyAoZGIpID0+IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBhd2FpdCBkYlxuICAgICAgICAubmV3UXVlcnkoKVxuICAgICAgICAuZnJvbShSRVBMQVlfQ0hBTk5FTFNfVEFCTEUpXG4gICAgICAgIC53aGVyZSh7Y2hhbm5lbH0pXG4gICAgICAgIC53aGVyZShgaW50ZXJlc3RlZF91bnRpbCA+ICR7ZGIucXVvdGUobmV3IERhdGUoKSl9YClcbiAgICAgICAgLmxpbWl0KDEpXG4gICAgICAgIC5yZXN1bHRzKClcblxuICAgICAgcmV0dXJuIHJvd3MubGVuZ3RoID4gMFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjaGFubmVsIGludGVyZXN0IGNhY2hlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgbWVtb3J5IGNhY2hlIHN0aWxsIG1hcmtzIHRoZSBjaGFubmVsIGludGVyZXN0ZWQuXG4gICAqL1xuICBfY2hhbm5lbEludGVyZXN0Q2FjaGVkKGNoYW5uZWwpIHtcbiAgICBjb25zdCBpbnRlcmVzdGVkVW50aWwgPSB0aGlzLl9pbnRlcmVzdGVkQ2hhbm5lbHMuZ2V0KGNoYW5uZWwpXG5cbiAgICBpZiAoIWludGVyZXN0ZWRVbnRpbCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGludGVyZXN0ZWRVbnRpbCA+IERhdGUubm93KCkpIHJldHVybiB0cnVlXG5cbiAgICB0aGlzLl9pbnRlcmVzdGVkQ2hhbm5lbHMuZGVsZXRlKGNoYW5uZWwpXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBldmVudCBieSBpZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5pZCAtIEV2ZW50IGlkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7Y2hhbm5lbDogc3RyaW5nLCBjcmVhdGVkQXQ6IHN0cmluZywgaWQ6IHN0cmluZywgcGF5bG9hZDogPywgc2VxdWVuY2U6IG51bWJlcn0gfCBudWxsPn0gLSBFdmVudCByb3cgb3IgbnVsbC5cbiAgICovXG4gIGFzeW5jIGdldEV2ZW50QnlJZCh7Y2hhbm5lbCwgaWR9KSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVSZWFkeSgpXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2l0aERiKGFzeW5jIChkYikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2dldEV2ZW50QnlJZCh7Y2hhbm5lbCwgZGIsIGlkfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbGF0ZXN0IHNlcXVlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyIHwgbnVsbD59IC0gTGF0ZXN0IGNoYW5uZWwgc2VxdWVuY2UuXG4gICAqL1xuICBhc3luYyBsYXRlc3RTZXF1ZW5jZShjaGFubmVsKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVSZWFkeSgpXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2l0aERiKGFzeW5jIChkYikgPT4ge1xuICAgICAgY29uc3Qgcm93cyA9IGF3YWl0IGRiXG4gICAgICAgIC5uZXdRdWVyeSgpXG4gICAgICAgIC5mcm9tKEVWRU5UU19UQUJMRSlcbiAgICAgICAgLndoZXJlKHtjaGFubmVsfSlcbiAgICAgICAgLm9yZGVyKFwic2VxdWVuY2UgREVTQ1wiKVxuICAgICAgICAubGltaXQoMSlcbiAgICAgICAgLnJlc3VsdHMoKVxuICAgICAgY29uc3Qgcm93ID0gLyoqXG4gICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCA/PiB8IHVuZGVmaW5lZH0gKi8gKHJvd3NbMF0pXG5cbiAgICAgIGlmICghcm93KSByZXR1cm4gbnVsbFxuXG4gICAgICByZXR1cm4gTnVtYmVyKHJvdy5zZXF1ZW5jZSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGV2ZW50cyBhZnRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy5zZXF1ZW5jZSAtIExvd2VyIGJvdW5kIHNlcXVlbmNlLlxuICAgKiBAcGFyYW0ge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFthcmdzLnVwVG9TZXF1ZW5jZV0gLSBJbmNsdXNpdmUgY2VpbGluZyBzZXF1ZW5jZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8e2NoYW5uZWw6IHN0cmluZywgY3JlYXRlZEF0OiBzdHJpbmcsIGlkOiBzdHJpbmcsIHBheWxvYWQ6ID8sIHNlcXVlbmNlOiBudW1iZXJ9Pj59IC0gT3JkZXJlZCBldmVudHMuXG4gICAqL1xuICBhc3luYyBnZXRFdmVudHNBZnRlcih7Y2hhbm5lbCwgc2VxdWVuY2UsIHVwVG9TZXF1ZW5jZX0pIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVJlYWR5KClcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLl93aXRoRGIoYXN5bmMgKGRiKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IGRiXG4gICAgICAgIC5uZXdRdWVyeSgpXG4gICAgICAgIC5mcm9tKEVWRU5UU19UQUJMRSlcbiAgICAgICAgLndoZXJlKHtjaGFubmVsfSlcbiAgICAgICAgLndoZXJlKGBzZXF1ZW5jZSA+ICR7ZGIucXVvdGUoc2VxdWVuY2UpfWApXG4gICAgICAgIC5vcmRlcihcInNlcXVlbmNlIEFTQ1wiKVxuXG4gICAgICBpZiAodHlwZW9mIHVwVG9TZXF1ZW5jZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBxdWVyeS53aGVyZShgc2VxdWVuY2UgPD0gJHtkYi5xdW90ZSh1cFRvU2VxdWVuY2UpfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJvd3MgPSAvKipcbiAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICBAdHlwZSB7V2Vic29ja2V0RXZlbnRSb3dbXX0gKi8gKGF3YWl0IHF1ZXJ5LnJlc3VsdHMoKSlcblxuICAgICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IHRoaXMuX25vcm1hbGl6ZUV2ZW50Um93KHJvdykpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNsZWFudXAgZXhwaXJlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IFthcmdzXSAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7RGF0ZX0gW2FyZ3Mubm93XSAtIENsZWFudXAgcmVmZXJlbmNlIHRpbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY2xlYW51cCBjb21wbGV0ZXMuXG4gICAqL1xuICBhc3luYyBjbGVhbnVwRXhwaXJlZCh7bm93ID0gbmV3IERhdGUoKX0gPSB7fSkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuXG4gICAgY29uc3QgY3V0b2ZmID0gbmV3IERhdGUobm93LmdldFRpbWUoKSAtIHRoaXMucmV0ZW50aW9uTXMpXG5cbiAgICBhd2FpdCB0aGlzLl93aXRoRGIoYXN5bmMgKGRiKSA9PiB7XG4gICAgICBjb25zdCBleHBpcmVkRXZlbnRSb3dzID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUge0FycmF5PHtpZDogc3RyaW5nfT59ICovIChhd2FpdCBkYlxuICAgICAgICAubmV3UXVlcnkoKVxuICAgICAgICAuZnJvbShFVkVOVFNfVEFCTEUpXG4gICAgICAgIC53aGVyZShgY3JlYXRlZF9hdCA8PSAke2RiLnF1b3RlKGN1dG9mZil9YClcbiAgICAgICAgLnJlc3VsdHMoKSlcbiAgICAgIGNvbnN0IGV4cGlyZWRSZXBsYXlDaGFubmVsUm93cyA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7V2Vic29ja2V0UmVwbGF5Q2hhbm5lbFJvd1tdfSAqLyAoYXdhaXQgZGJcbiAgICAgICAgLm5ld1F1ZXJ5KClcbiAgICAgICAgLmZyb20oUkVQTEFZX0NIQU5ORUxTX1RBQkxFKVxuICAgICAgICAud2hlcmUoYGludGVyZXN0ZWRfdW50aWwgPD0gJHtkYi5xdW90ZShub3cpfWApXG4gICAgICAgIC5yZXN1bHRzKCkpXG5cbiAgICAgIGZvciAoY29uc3QgZXhwaXJlZEV2ZW50Um93IG9mIGV4cGlyZWRFdmVudFJvd3MpIHtcbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlKHtcbiAgICAgICAgICB0YWJsZU5hbWU6IEVWRU5UU19UQUJMRSxcbiAgICAgICAgICBjb25kaXRpb25zOiB7aWQ6IGV4cGlyZWRFdmVudFJvdy5pZH1cbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBleHBpcmVkUmVwbGF5Q2hhbm5lbFJvdyBvZiBleHBpcmVkUmVwbGF5Q2hhbm5lbFJvd3MpIHtcbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlKHtcbiAgICAgICAgICB0YWJsZU5hbWU6IFJFUExBWV9DSEFOTkVMU19UQUJMRSxcbiAgICAgICAgICBjb25kaXRpb25zOiB7Y2hhbm5lbDogZXhwaXJlZFJlcGxheUNoYW5uZWxSb3cuY2hhbm5lbH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgX2Vuc3VyZVNjaGVtYSgpIHtcbiAgICBhd2FpdCB0aGlzLl93aXRoRGIoYXN5bmMgKGRiKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLl9lbnN1cmVFdmVudHNUYWJsZShkYilcbiAgICAgIGF3YWl0IHRoaXMuX2Vuc3VyZVJlcGxheUNoYW5uZWxzVGFibGUoZGIpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGVuc3VyZSBldmVudHMgdGFibGUuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGRiIC0gRGF0YWJhc2UgY29ubmVjdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIF9lbnN1cmVFdmVudHNUYWJsZShkYikge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXCJBcHBseWluZyB3ZWJzb2NrZXQgZXZlbnQtbG9nIHNjaGVtYVwiKVxuXG4gICAgaWYgKGF3YWl0IGRiLnRhYmxlRXhpc3RzKEVWRU5UU19UQUJMRSkpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJXZWJzb2NrZXQgZXZlbnQtbG9nIHRhYmxlIGFscmVhZHkgZXhpc3RzIC0gc2tpcHBpbmcgY3JlYXRlXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBldmVudFRhYmxlID0gbmV3IFRhYmxlRGF0YShFVkVOVFNfVEFCTEUsIHtpZk5vdEV4aXN0czogdHJ1ZX0pXG5cbiAgICBldmVudFRhYmxlLmludGVnZXIoXCJzZXF1ZW5jZVwiLCB7YXV0b0luY3JlbWVudDogdHJ1ZSwgbnVsbDogZmFsc2UsIHByaW1hcnlLZXk6IHRydWV9KVxuICAgIGV2ZW50VGFibGUuc3RyaW5nKFwiaWRcIiwge2luZGV4OiB0cnVlLCBudWxsOiBmYWxzZX0pXG4gICAgZXZlbnRUYWJsZS5zdHJpbmcoXCJjaGFubmVsXCIsIHtpbmRleDogdHJ1ZSwgbnVsbDogZmFsc2V9KVxuICAgIGV2ZW50VGFibGUudGV4dChcInBheWxvYWRfanNvblwiLCB7bnVsbDogZmFsc2V9KVxuICAgIGV2ZW50VGFibGUuZGF0ZXRpbWUoXCJjcmVhdGVkX2F0XCIsIHtpbmRleDogdHJ1ZSwgbnVsbDogZmFsc2V9KVxuXG4gICAgYXdhaXQgZGIuY3JlYXRlVGFibGUoZXZlbnRUYWJsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGVuc3VyZSByZXBsYXkgY2hhbm5lbHMgdGFibGUuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGRiIC0gRGF0YWJhc2UgY29ubmVjdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIF9lbnN1cmVSZXBsYXlDaGFubmVsc1RhYmxlKGRiKSB7XG4gICAgaWYgKGF3YWl0IGRiLnRhYmxlRXhpc3RzKFJFUExBWV9DSEFOTkVMU19UQUJMRSkpIHJldHVyblxuXG4gICAgY29uc3QgcmVwbGF5Q2hhbm5lbFRhYmxlID0gbmV3IFRhYmxlRGF0YShSRVBMQVlfQ0hBTk5FTFNfVEFCTEUsIHtpZk5vdEV4aXN0czogdHJ1ZX0pXG5cbiAgICByZXBsYXlDaGFubmVsVGFibGUuc3RyaW5nKFwiY2hhbm5lbFwiLCB7bnVsbDogZmFsc2UsIHByaW1hcnlLZXk6IHRydWV9KVxuICAgIHJlcGxheUNoYW5uZWxUYWJsZS5kYXRldGltZShcImludGVyZXN0ZWRfdW50aWxcIiwge2luZGV4OiB0cnVlLCBudWxsOiBmYWxzZX0pXG5cbiAgICBhd2FpdCBkYi5jcmVhdGVUYWJsZShyZXBsYXlDaGFubmVsVGFibGUpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgZXZlbnQgYnkgaWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kYiAtIERhdGFiYXNlIGNvbm5lY3Rpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmlkIC0gRXZlbnQgaWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtjaGFubmVsOiBzdHJpbmcsIGNyZWF0ZWRBdDogc3RyaW5nLCBpZDogc3RyaW5nLCBwYXlsb2FkOiA/LCBzZXF1ZW5jZTogbnVtYmVyfSB8IG51bGw+fSAtIEV2ZW50IHJvdyBvciBudWxsLlxuICAgKi9cbiAgYXN5bmMgX2dldEV2ZW50QnlJZCh7Y2hhbm5lbCwgZGIsIGlkfSkge1xuICAgIGNvbnN0IHJvd3MgPSAvKipcbiAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgIEB0eXBlIHtXZWJzb2NrZXRFdmVudFJvd1tdfSAqLyAoYXdhaXQgZGJcbiAgICAgIC5uZXdRdWVyeSgpXG4gICAgICAuZnJvbShFVkVOVFNfVEFCTEUpXG4gICAgICAud2hlcmUoe2NoYW5uZWwsIGlkfSlcbiAgICAgIC5saW1pdCgxKVxuICAgICAgLnJlc3VsdHMoKSlcblxuICAgIGlmICghcm93c1swXSkgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiB0aGlzLl9ub3JtYWxpemVFdmVudFJvdyhyb3dzWzBdKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbm9ybWFsaXplIGV2ZW50IHJvdy5cbiAgICogQHBhcmFtIHtXZWJzb2NrZXRFdmVudFJvd30gcm93IC0gUmF3IHJvdy5cbiAgICogQHJldHVybnMge3tjaGFubmVsOiBzdHJpbmcsIGNyZWF0ZWRBdDogc3RyaW5nLCBpZDogc3RyaW5nLCBwYXlsb2FkOiA/LCBzZXF1ZW5jZTogbnVtYmVyfX0gLSBOb3JtYWxpemVkIHJvdy5cbiAgICovXG4gIF9ub3JtYWxpemVFdmVudFJvdyhyb3cpIHtcbiAgICBjb25zdCBjcmVhdGVkQXRWYWx1ZSA9IHJvdy5jcmVhdGVkX2F0XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2hhbm5lbDogcm93LmNoYW5uZWwsXG4gICAgICBjcmVhdGVkQXQ6IGNyZWF0ZWRBdFZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGNyZWF0ZWRBdFZhbHVlLnRvSVNPU3RyaW5nKCkgOiBuZXcgRGF0ZShjcmVhdGVkQXRWYWx1ZSkudG9JU09TdHJpbmcoKSxcbiAgICAgIGlkOiByb3cuaWQsXG4gICAgICBwYXlsb2FkOiBKU09OLnBhcnNlKHJvdy5wYXlsb2FkX2pzb24pLFxuICAgICAgc2VxdWVuY2U6IE51bWJlcihyb3cuc2VxdWVuY2UpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdXBzZXJ0IHJlcGxheSBjaGFubmVsIGludGVyZXN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBkYiAtIERhdGFiYXNlIGNvbm5lY3Rpb24uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHtEYXRlfSBhcmdzLmludGVyZXN0ZWRVbnRpbCAtIFJldGVudGlvbiBkZWFkbGluZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiB0aGUgcmVwbGF5LWNoYW5uZWwgcm93IHdhcyB1cHNlcnRlZC5cbiAgICovXG4gIGFzeW5jIF91cHNlcnRSZXBsYXlDaGFubmVsSW50ZXJlc3QoZGIsIHtjaGFubmVsLCBpbnRlcmVzdGVkVW50aWx9KSB7XG4gICAgYXdhaXQgZGIudXBzZXJ0KHtcbiAgICAgIGNvbmZsaWN0Q29sdW1uczogW1wiY2hhbm5lbFwiXSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgaW50ZXJlc3RlZF91bnRpbDogaW50ZXJlc3RlZFVudGlsXG4gICAgICB9LFxuICAgICAgdGFibGVOYW1lOiBSRVBMQVlfQ0hBTk5FTFNfVEFCTEUsXG4gICAgICB1cGRhdGVDb2x1bW5zOiBbXCJpbnRlcmVzdGVkX3VudGlsXCJdXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHdpdGggZGIuXG4gICAqIEBwYXJhbSB7KGRiOiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdCkgPT4gUHJvbWlzZTw/Pn0gY2FsbGJhY2sgLSBDYWxsYmFjay5cbiAgICogQHJldHVybnMge1Byb21pc2U8Pz59IC0gQ2FsbGJhY2sgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgX3dpdGhEYihjYWxsYmFjaykge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb24uZW5zdXJlQ29ubmVjdGlvbnMoe25hbWU6IFwiV2Vic29ja2V0IGV2ZW50IGxvZyBzdG9yZVwifSwgYXN5bmMgKGRicykgPT4ge1xuICAgICAgY29uc3QgZGIgPSBkYnNbdGhpcy5kYXRhYmFzZUlkZW50aWZpZXJdXG5cbiAgICAgIGlmICghZGIpIHRocm93IG5ldyBFcnJvcihgTm8gZGF0YWJhc2UgY29ubmVjdGlvbiBhdmFpbGFibGUgZm9yIGlkZW50aWZpZXI6ICR7dGhpcy5kYXRhYmFzZUlkZW50aWZpZXJ9YClcblxuICAgICAgcmV0dXJuIGF3YWl0IGNhbGxiYWNrKGRiKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWV2ZW50LWxvZy1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9odHRwLXNlcnZlci93ZWJzb2NrZXQtZXZlbnQtbG9nLXN0b3JlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ2pDLE9BQU8sU0FBUyxNQUFNLGlDQUFpQyxDQUFBO0FBQ3ZELE9BQU8sTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUVqQyxNQUFNLFlBQVksR0FBRywwQkFBMEIsQ0FBQTtBQUMvQyxNQUFNLHFCQUFxQixHQUFHLDJCQUEyQixDQUFBO0FBQ3pELE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7QUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUU1Qjs7Ozs7Ozs7R0FRRztBQUVIOzs7O0dBSUc7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNDQUFzQyxDQUFDLGFBQWE7SUFDbEUsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUVyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxLQUFLLEdBQUcsSUFBSSx5Q0FBeUMsQ0FBQyxFQUFDLGFBQWEsRUFBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8seUNBQXlDO0lBQzVEOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEdBQUcsU0FBUyxFQUFFLFdBQVcsR0FBRyxvQkFBb0IsRUFBQztRQUM3RixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtR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T0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsRUFBQyxJQUFJLEVBQUUsMkJBQTJCLEVBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDbkcsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1lBRXZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUE7WUFFdkcsT0FBTyxNQUFNLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMzQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge3JhbmRvbVVVSUR9IGZyb20gXCJjcnlwdG9cIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vZGF0YWJhc2UvdGFibGUtZGF0YS9pbmRleC5qc1wiXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9sb2dnZXIuanNcIlxuXG5jb25zdCBFVkVOVFNfVEFCTEUgPSBcIndlYnNvY2tldF9jaGFubmVsX2V2ZW50c1wiXG5jb25zdCBSRVBMQVlfQ0hBTk5FTFNfVEFCTEUgPSBcIndlYnNvY2tldF9yZXBsYXlfY2hhbm5lbHNcIlxuY29uc3QgREVGQVVMVF9SRVRFTlRJT05fTVMgPSAxMCAqIDYwICogMTAwMFxuY29uc3Qgc3RvcmVzID0gbmV3IFdlYWtNYXAoKVxuXG4vKipcbiAqIFdlYnNvY2tldEV2ZW50Um93IHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBXZWJzb2NrZXRFdmVudFJvd1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gKiBAcHJvcGVydHkge0RhdGUgfCBzdHJpbmd9IGNyZWF0ZWRfYXQgLSBDcmVhdGlvbiB0aW1lLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkIC0gRXZlbnQgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGF5bG9hZF9qc29uIC0gU2VyaWFsaXplZCBwYXlsb2FkLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBzdHJpbmd9IHNlcXVlbmNlIC0gU2VxdWVuY2UgbnVtYmVyLlxuICovXG5cbi8qKlxuICogV2Vic29ja2V0UmVwbGF5Q2hhbm5lbFJvdyB0eXBlLlxuICogQHR5cGVkZWYge29iamVjdH0gV2Vic29ja2V0UmVwbGF5Q2hhbm5lbFJvd1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gKi9cblxuLyoqXG4gKiBSdW5zIHRoZSB3ZWJzb2NrZXRFdmVudExvZ1N0b3JlRm9yQ29uZmlndXJhdGlvbiBoZWxwZXIuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7VmVsb2Npb3VzSHR0cFNlcnZlcldlYnNvY2tldEV2ZW50TG9nU3RvcmV9IC0gU2hhcmVkIHN0b3JlIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2Vic29ja2V0RXZlbnRMb2dTdG9yZUZvckNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikge1xuICBsZXQgc3RvcmUgPSBzdG9yZXMuZ2V0KGNvbmZpZ3VyYXRpb24pXG5cbiAgaWYgKCFzdG9yZSkge1xuICAgIHN0b3JlID0gbmV3IFZlbG9jaW91c0h0dHBTZXJ2ZXJXZWJzb2NrZXRFdmVudExvZ1N0b3JlKHtjb25maWd1cmF0aW9ufSlcbiAgICBzdG9yZXMuc2V0KGNvbmZpZ3VyYXRpb24sIHN0b3JlKVxuICB9XG5cbiAgcmV0dXJuIHN0b3JlXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJXZWJzb2NrZXRFdmVudExvZ1N0b3JlIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5kYXRhYmFzZUlkZW50aWZpZXJdIC0gRGF0YWJhc2UgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLnJldGVudGlvbk1zXSAtIEV2ZW50IHJldGVudGlvbiBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgZGF0YWJhc2VJZGVudGlmaWVyID0gXCJkZWZhdWx0XCIsIHJldGVudGlvbk1zID0gREVGQVVMVF9SRVRFTlRJT05fTVN9KSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMuZGF0YWJhc2VJZGVudGlmaWVyID0gZGF0YWJhc2VJZGVudGlmaWVyXG4gICAgdGhpcy5yZXRlbnRpb25NcyA9IHJldGVudGlvbk1zXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gICAgdGhpcy5faXNSZWFkeSA9IGZhbHNlXG4gICAgdGhpcy5fcmVhZHlQcm9taXNlID0gbnVsbFxuICAgIC8qKlxuICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgKiBAdHlwZSB7TWFwPHN0cmluZywgbnVtYmVyPn0gKi9cbiAgICB0aGlzLl9pbnRlcmVzdGVkQ2hhbm5lbHMgPSBuZXcgTWFwKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGVuc3VyZSByZWFkeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiByZWFkeS5cbiAgICovXG4gIGFzeW5jIGVuc3VyZVJlYWR5KCkge1xuICAgIGlmIChhd2FpdCB0aGlzLl9zY2hlbWFSZWFkeSgpKSByZXR1cm5cblxuICAgIGlmICh0aGlzLl9yZWFkeVByb21pc2UpIHJldHVybiBhd2FpdCB0aGlzLl9yZWFkeVByb21pc2VcblxuICAgIHRoaXMuX3JlYWR5UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0Q3VycmVudCgpXG4gICAgICBhd2FpdCB0aGlzLl9lbnN1cmVTY2hlbWEoKVxuICAgICAgdGhpcy5faXNSZWFkeSA9IHRydWVcbiAgICB9KSgpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fcmVhZHlQcm9taXNlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICghdGhpcy5faXNSZWFkeSkge1xuICAgICAgICB0aGlzLl9yZWFkeVByb21pc2UgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlLXZhbGlkYXRlcyBjYWNoZWQgc2NoZW1hIHJlYWRpbmVzcyBiZWNhdXNlIHRyYW5zYWN0aW9uYWwgRERMIGNhbiByb2xsIHRoZSB0YWJsZXMgYmFjay5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gV2hldGhlciB0aGUgY2FjaGVkIHJlYWR5IHN0YXRlIGlzIHN0aWxsIHZhbGlkLlxuICAgKi9cbiAgYXN5bmMgX3NjaGVtYVJlYWR5KCkge1xuICAgIGlmICghdGhpcy5faXNSZWFkeSkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGF3YWl0IHRoaXMuX3NjaGVtYVByZXNlbnQoKSkgcmV0dXJuIHRydWVcblxuICAgIHRoaXMuX2lzUmVhZHkgPSBmYWxzZVxuICAgIHRoaXMuX3JlYWR5UHJvbWlzZSA9IG51bGxcblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2NoZW1hIHByZXNlbnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFdoZXRoZXIgYm90aCBldmVudC1sb2cgdGFibGVzIHBoeXNpY2FsbHkgZXhpc3QuXG4gICAqL1xuICBhc3luYyBfc2NoZW1hUHJlc2VudCgpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2l0aERiKGFzeW5jIChkYikgPT5cbiAgICAgIGF3YWl0IGRiLnRhYmxlRXhpc3RzKEVWRU5UU19UQUJMRSkgJiYgYXdhaXQgZGIudGFibGVFeGlzdHMoUkVQTEFZX0NIQU5ORUxTX1RBQkxFKVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFwcGVuZCBldmVudC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0gez99IGFyZ3MucGF5bG9hZCAtIEV2ZW50IHBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtjaGFubmVsOiBzdHJpbmcsIGNyZWF0ZWRBdDogc3RyaW5nLCBpZDogc3RyaW5nLCBwYXlsb2FkOiA/fT59IC0gUGVyc2lzdGVkIGV2ZW50IHJvdy5cbiAgICovXG4gIGFzeW5jIGFwcGVuZEV2ZW50KHtjaGFubmVsLCBwYXlsb2FkfSkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuXG4gICAgY29uc3QgaWQgPSByYW5kb21VVUlEKClcbiAgICBjb25zdCBjcmVhdGVkQXQgPSBuZXcgRGF0ZSgpXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2l0aERiKGFzeW5jIChkYikgPT4ge1xuICAgICAgYXdhaXQgZGIuaW5zZXJ0KHtcbiAgICAgICAgdGFibGVOYW1lOiBFVkVOVFNfVEFCTEUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IGNyZWF0ZWRBdCxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBwYXlsb2FkX2pzb246IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4ge2NoYW5uZWwsIGNyZWF0ZWRBdDogY3JlYXRlZEF0LnRvSVNPU3RyaW5nKCksIGlkLCBwYXlsb2FkfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBtYXJrIGNoYW5uZWwgaW50ZXJlc3RlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gdGhlIGNoYW5uZWwgaW50ZXJlc3Qgd2FzIHBlcnNpc3RlZC5cbiAgICovXG4gIGFzeW5jIG1hcmtDaGFubmVsSW50ZXJlc3RlZChjaGFubmVsKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVSZWFkeSgpXG5cbiAgICBjb25zdCBpbnRlcmVzdGVkVW50aWwgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgdGhpcy5yZXRlbnRpb25NcylcblxuICAgIHRoaXMuX2ludGVyZXN0ZWRDaGFubmVscy5zZXQoY2hhbm5lbCwgaW50ZXJlc3RlZFVudGlsLmdldFRpbWUoKSlcblxuICAgIGF3YWl0IHRoaXMuX3dpdGhEYihhc3luYyAoZGIpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuX3Vwc2VydFJlcGxheUNoYW5uZWxJbnRlcmVzdChkYiwge2NoYW5uZWwsIGludGVyZXN0ZWRVbnRpbH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNob3VsZCBwZXJzaXN0IGNoYW5uZWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIHRoZSBjaGFubmVsIHNob3VsZCBiZSBwZXJzaXN0ZWQgZm9yIHJlcGxheS5cbiAgICovXG4gIGFzeW5jIHNob3VsZFBlcnNpc3RDaGFubmVsKGNoYW5uZWwpIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbEludGVyZXN0Q2FjaGVkKGNoYW5uZWwpKSByZXR1cm4gdHJ1ZVxuICAgIGlmICh0aGlzLl9pbnRlcmVzdGVkQ2hhbm5lbHMuc2l6ZSA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICBhd2FpdCB0aGlzLmVuc3VyZVJlYWR5KClcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLl93aXRoRGIoYXN5bmMgKGRiKSA9PiB7XG4gICAgICBjb25zdCByb3dzID0gYXdhaXQgZGJcbiAgICAgICAgLm5ld1F1ZXJ5KClcbiAgICAgICAgLmZyb20oUkVQTEFZX0NIQU5ORUxTX1RBQkxFKVxuICAgICAgICAud2hlcmUoe2NoYW5uZWx9KVxuICAgICAgICAud2hlcmUoYGludGVyZXN0ZWRfdW50aWwgPiAke2RiLnF1b3RlKG5ldyBEYXRlKCkpfWApXG4gICAgICAgIC5saW1pdCgxKVxuICAgICAgICAucmVzdWx0cygpXG5cbiAgICAgIHJldHVybiByb3dzLmxlbmd0aCA+IDBcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY2hhbm5lbCBpbnRlcmVzdCBjYWNoZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIG1lbW9yeSBjYWNoZSBzdGlsbCBtYXJrcyB0aGUgY2hhbm5lbCBpbnRlcmVzdGVkLlxuICAgKi9cbiAgX2NoYW5uZWxJbnRlcmVzdENhY2hlZChjaGFubmVsKSB7XG4gICAgY29uc3QgaW50ZXJlc3RlZFVudGlsID0gdGhpcy5faW50ZXJlc3RlZENoYW5uZWxzLmdldChjaGFubmVsKVxuXG4gICAgaWYgKCFpbnRlcmVzdGVkVW50aWwpIHJldHVybiBmYWxzZVxuICAgIGlmIChpbnRlcmVzdGVkVW50aWwgPiBEYXRlLm5vdygpKSByZXR1cm4gdHJ1ZVxuXG4gICAgdGhpcy5faW50ZXJlc3RlZENoYW5uZWxzLmRlbGV0ZShjaGFubmVsKVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgZXZlbnQgYnkgaWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuaWQgLSBFdmVudCBpZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8e2NoYW5uZWw6IHN0cmluZywgY3JlYXRlZEF0OiBzdHJpbmcsIGlkOiBzdHJpbmcsIHBheWxvYWQ6ID8sIHNlcXVlbmNlOiBudW1iZXJ9IHwgbnVsbD59IC0gRXZlbnQgcm93IG9yIG51bGwuXG4gICAqL1xuICBhc3luYyBnZXRFdmVudEJ5SWQoe2NoYW5uZWwsIGlkfSkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dpdGhEYihhc3luYyAoZGIpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9nZXRFdmVudEJ5SWQoe2NoYW5uZWwsIGRiLCBpZH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGxhdGVzdCBzZXF1ZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlciB8IG51bGw+fSAtIExhdGVzdCBjaGFubmVsIHNlcXVlbmNlLlxuICAgKi9cbiAgYXN5bmMgbGF0ZXN0U2VxdWVuY2UoY2hhbm5lbCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dpdGhEYihhc3luYyAoZGIpID0+IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBhd2FpdCBkYlxuICAgICAgICAubmV3UXVlcnkoKVxuICAgICAgICAuZnJvbShFVkVOVFNfVEFCTEUpXG4gICAgICAgIC53aGVyZSh7Y2hhbm5lbH0pXG4gICAgICAgIC5vcmRlcihcInNlcXVlbmNlIERFU0NcIilcbiAgICAgICAgLmxpbWl0KDEpXG4gICAgICAgIC5yZXN1bHRzKClcbiAgICAgIGNvbnN0IHJvdyA9IC8qKlxuICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsID8+IHwgdW5kZWZpbmVkfSAqLyAocm93c1swXSlcblxuICAgICAgaWYgKCFyb3cpIHJldHVybiBudWxsXG5cbiAgICAgIHJldHVybiBOdW1iZXIocm93LnNlcXVlbmNlKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgZXZlbnRzIGFmdGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLnNlcXVlbmNlIC0gTG93ZXIgYm91bmQgc2VxdWVuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2FyZ3MudXBUb1NlcXVlbmNlXSAtIEluY2x1c2l2ZSBjZWlsaW5nIHNlcXVlbmNlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTx7Y2hhbm5lbDogc3RyaW5nLCBjcmVhdGVkQXQ6IHN0cmluZywgaWQ6IHN0cmluZywgcGF5bG9hZDogPywgc2VxdWVuY2U6IG51bWJlcn0+Pn0gLSBPcmRlcmVkIGV2ZW50cy5cbiAgICovXG4gIGFzeW5jIGdldEV2ZW50c0FmdGVyKHtjaGFubmVsLCBzZXF1ZW5jZSwgdXBUb1NlcXVlbmNlfSkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dpdGhEYihhc3luYyAoZGIpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gZGJcbiAgICAgICAgLm5ld1F1ZXJ5KClcbiAgICAgICAgLmZyb20oRVZFTlRTX1RBQkxFKVxuICAgICAgICAud2hlcmUoe2NoYW5uZWx9KVxuICAgICAgICAud2hlcmUoYHNlcXVlbmNlID4gJHtkYi5xdW90ZShzZXF1ZW5jZSl9YClcbiAgICAgICAgLm9yZGVyKFwic2VxdWVuY2UgQVNDXCIpXG5cbiAgICAgIGlmICh0eXBlb2YgdXBUb1NlcXVlbmNlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHF1ZXJ5LndoZXJlKGBzZXF1ZW5jZSA8PSAke2RiLnF1b3RlKHVwVG9TZXF1ZW5jZSl9YClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgcm93cyA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7V2Vic29ja2V0RXZlbnRSb3dbXX0gKi8gKGF3YWl0IHF1ZXJ5LnJlc3VsdHMoKSlcblxuICAgICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IHRoaXMuX25vcm1hbGl6ZUV2ZW50Um93KHJvdykpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNsZWFudXAgZXhwaXJlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IFthcmdzXSAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7RGF0ZX0gW2FyZ3Mubm93XSAtIENsZWFudXAgcmVmZXJlbmNlIHRpbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY2xlYW51cCBjb21wbGV0ZXMuXG4gICAqL1xuICBhc3luYyBjbGVhbnVwRXhwaXJlZCh7bm93ID0gbmV3IERhdGUoKX0gPSB7fSkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuXG4gICAgY29uc3QgY3V0b2ZmID0gbmV3IERhdGUobm93LmdldFRpbWUoKSAtIHRoaXMucmV0ZW50aW9uTXMpXG5cbiAgICBhd2FpdCB0aGlzLl93aXRoRGIoYXN5bmMgKGRiKSA9PiB7XG4gICAgICBjb25zdCBleHBpcmVkRXZlbnRSb3dzID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHtBcnJheTx7aWQ6IHN0cmluZ30+fSAqLyAoYXdhaXQgZGJcbiAgICAgICAgLm5ld1F1ZXJ5KClcbiAgICAgICAgLmZyb20oRVZFTlRTX1RBQkxFKVxuICAgICAgICAud2hlcmUoYGNyZWF0ZWRfYXQgPD0gJHtkYi5xdW90ZShjdXRvZmYpfWApXG4gICAgICAgIC5yZXN1bHRzKCkpXG4gICAgICBjb25zdCBleHBpcmVkUmVwbGF5Q2hhbm5lbFJvd3MgPSAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHtXZWJzb2NrZXRSZXBsYXlDaGFubmVsUm93W119ICovIChhd2FpdCBkYlxuICAgICAgICAubmV3UXVlcnkoKVxuICAgICAgICAuZnJvbShSRVBMQVlfQ0hBTk5FTFNfVEFCTEUpXG4gICAgICAgIC53aGVyZShgaW50ZXJlc3RlZF91bnRpbCA8PSAke2RiLnF1b3RlKG5vdyl9YClcbiAgICAgICAgLnJlc3VsdHMoKSlcblxuICAgICAgZm9yIChjb25zdCBleHBpcmVkRXZlbnRSb3cgb2YgZXhwaXJlZEV2ZW50Um93cykge1xuICAgICAgICBhd2FpdCBkYi5kZWxldGUoe1xuICAgICAgICAgIHRhYmxlTmFtZTogRVZFTlRTX1RBQkxFLFxuICAgICAgICAgIGNvbmRpdGlvbnM6IHtpZDogZXhwaXJlZEV2ZW50Um93LmlkfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGV4cGlyZWRSZXBsYXlDaGFubmVsUm93IG9mIGV4cGlyZWRSZXBsYXlDaGFubmVsUm93cykge1xuICAgICAgICBhd2FpdCBkYi5kZWxldGUoe1xuICAgICAgICAgIHRhYmxlTmFtZTogUkVQTEFZX0NIQU5ORUxTX1RBQkxFLFxuICAgICAgICAgIGNvbmRpdGlvbnM6IHtjaGFubmVsOiBleHBpcmVkUmVwbGF5Q2hhbm5lbFJvdy5jaGFubmVsfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBfZW5zdXJlU2NoZW1hKCkge1xuICAgIGF3YWl0IHRoaXMuX3dpdGhEYihhc3luYyAoZGIpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuX2Vuc3VyZUV2ZW50c1RhYmxlKGRiKVxuICAgICAgYXdhaXQgdGhpcy5fZW5zdXJlUmVwbGF5Q2hhbm5lbHNUYWJsZShkYilcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZW5zdXJlIGV2ZW50cyB0YWJsZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gZGIgLSBEYXRhYmFzZSBjb25uZWN0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgX2Vuc3VyZUV2ZW50c1RhYmxlKGRiKSB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbyhcIkFwcGx5aW5nIHdlYnNvY2tldCBldmVudC1sb2cgc2NoZW1hXCIpXG5cbiAgICBpZiAoYXdhaXQgZGIudGFibGVFeGlzdHMoRVZFTlRTX1RBQkxFKSkge1xuICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcIldlYnNvY2tldCBldmVudC1sb2cgdGFibGUgYWxyZWFkeSBleGlzdHMgLSBza2lwcGluZyBjcmVhdGVcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50VGFibGUgPSBuZXcgVGFibGVEYXRhKEVWRU5UU19UQUJMRSwge2lmTm90RXhpc3RzOiB0cnVlfSlcblxuICAgIGV2ZW50VGFibGUuaW50ZWdlcihcInNlcXVlbmNlXCIsIHthdXRvSW5jcmVtZW50OiB0cnVlLCBudWxsOiBmYWxzZSwgcHJpbWFyeUtleTogdHJ1ZX0pXG4gICAgZXZlbnRUYWJsZS5zdHJpbmcoXCJpZFwiLCB7aW5kZXg6IHRydWUsIG51bGw6IGZhbHNlfSlcbiAgICBldmVudFRhYmxlLnN0cmluZyhcImNoYW5uZWxcIiwge2luZGV4OiB0cnVlLCBudWxsOiBmYWxzZX0pXG4gICAgZXZlbnRUYWJsZS50ZXh0KFwicGF5bG9hZF9qc29uXCIsIHtudWxsOiBmYWxzZX0pXG4gICAgZXZlbnRUYWJsZS5kYXRldGltZShcImNyZWF0ZWRfYXRcIiwge2luZGV4OiB0cnVlLCBudWxsOiBmYWxzZX0pXG5cbiAgICBhd2FpdCBkYi5jcmVhdGVUYWJsZShldmVudFRhYmxlKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZW5zdXJlIHJlcGxheSBjaGFubmVscyB0YWJsZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gZGIgLSBEYXRhYmFzZSBjb25uZWN0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgX2Vuc3VyZVJlcGxheUNoYW5uZWxzVGFibGUoZGIpIHtcbiAgICBpZiAoYXdhaXQgZGIudGFibGVFeGlzdHMoUkVQTEFZX0NIQU5ORUxTX1RBQkxFKSkgcmV0dXJuXG5cbiAgICBjb25zdCByZXBsYXlDaGFubmVsVGFibGUgPSBuZXcgVGFibGVEYXRhKFJFUExBWV9DSEFOTkVMU19UQUJMRSwge2lmTm90RXhpc3RzOiB0cnVlfSlcblxuICAgIHJlcGxheUNoYW5uZWxUYWJsZS5zdHJpbmcoXCJjaGFubmVsXCIsIHtudWxsOiBmYWxzZSwgcHJpbWFyeUtleTogdHJ1ZX0pXG4gICAgcmVwbGF5Q2hhbm5lbFRhYmxlLmRhdGV0aW1lKFwiaW50ZXJlc3RlZF91bnRpbFwiLCB7aW5kZXg6IHRydWUsIG51bGw6IGZhbHNlfSlcblxuICAgIGF3YWl0IGRiLmNyZWF0ZVRhYmxlKHJlcGxheUNoYW5uZWxUYWJsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBldmVudCBieSBpZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLmRiIC0gRGF0YWJhc2UgY29ubmVjdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuaWQgLSBFdmVudCBpZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8e2NoYW5uZWw6IHN0cmluZywgY3JlYXRlZEF0OiBzdHJpbmcsIGlkOiBzdHJpbmcsIHBheWxvYWQ6ID8sIHNlcXVlbmNlOiBudW1iZXJ9IHwgbnVsbD59IC0gRXZlbnQgcm93IG9yIG51bGwuXG4gICAqL1xuICBhc3luYyBfZ2V0RXZlbnRCeUlkKHtjaGFubmVsLCBkYiwgaWR9KSB7XG4gICAgY29uc3Qgcm93cyA9IC8qKlxuICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAqIEB0eXBlIHtXZWJzb2NrZXRFdmVudFJvd1tdfSAqLyAoYXdhaXQgZGJcbiAgICAgIC5uZXdRdWVyeSgpXG4gICAgICAuZnJvbShFVkVOVFNfVEFCTEUpXG4gICAgICAud2hlcmUoe2NoYW5uZWwsIGlkfSlcbiAgICAgIC5saW1pdCgxKVxuICAgICAgLnJlc3VsdHMoKSlcblxuICAgIGlmICghcm93c1swXSkgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiB0aGlzLl9ub3JtYWxpemVFdmVudFJvdyhyb3dzWzBdKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbm9ybWFsaXplIGV2ZW50IHJvdy5cbiAgICogQHBhcmFtIHtXZWJzb2NrZXRFdmVudFJvd30gcm93IC0gUmF3IHJvdy5cbiAgICogQHJldHVybnMge3tjaGFubmVsOiBzdHJpbmcsIGNyZWF0ZWRBdDogc3RyaW5nLCBpZDogc3RyaW5nLCBwYXlsb2FkOiA/LCBzZXF1ZW5jZTogbnVtYmVyfX0gLSBOb3JtYWxpemVkIHJvdy5cbiAgICovXG4gIF9ub3JtYWxpemVFdmVudFJvdyhyb3cpIHtcbiAgICBjb25zdCBjcmVhdGVkQXRWYWx1ZSA9IHJvdy5jcmVhdGVkX2F0XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2hhbm5lbDogcm93LmNoYW5uZWwsXG4gICAgICBjcmVhdGVkQXQ6IGNyZWF0ZWRBdFZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGNyZWF0ZWRBdFZhbHVlLnRvSVNPU3RyaW5nKCkgOiBuZXcgRGF0ZShjcmVhdGVkQXRWYWx1ZSkudG9JU09TdHJpbmcoKSxcbiAgICAgIGlkOiByb3cuaWQsXG4gICAgICBwYXlsb2FkOiBKU09OLnBhcnNlKHJvdy5wYXlsb2FkX2pzb24pLFxuICAgICAgc2VxdWVuY2U6IE51bWJlcihyb3cuc2VxdWVuY2UpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdXBzZXJ0IHJlcGxheSBjaGFubmVsIGludGVyZXN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBkYiAtIERhdGFiYXNlIGNvbm5lY3Rpb24uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHtEYXRlfSBhcmdzLmludGVyZXN0ZWRVbnRpbCAtIFJldGVudGlvbiBkZWFkbGluZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiB0aGUgcmVwbGF5LWNoYW5uZWwgcm93IHdhcyB1cHNlcnRlZC5cbiAgICovXG4gIGFzeW5jIF91cHNlcnRSZXBsYXlDaGFubmVsSW50ZXJlc3QoZGIsIHtjaGFubmVsLCBpbnRlcmVzdGVkVW50aWx9KSB7XG4gICAgYXdhaXQgZGIudXBzZXJ0KHtcbiAgICAgIGNvbmZsaWN0Q29sdW1uczogW1wiY2hhbm5lbFwiXSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgaW50ZXJlc3RlZF91bnRpbDogaW50ZXJlc3RlZFVudGlsXG4gICAgICB9LFxuICAgICAgdGFibGVOYW1lOiBSRVBMQVlfQ0hBTk5FTFNfVEFCTEUsXG4gICAgICB1cGRhdGVDb2x1bW5zOiBbXCJpbnRlcmVzdGVkX3VudGlsXCJdXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHdpdGggZGIuXG4gICAqIEBwYXJhbSB7KGRiOiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdCkgPT4gUHJvbWlzZTw/Pn0gY2FsbGJhY2sgLSBDYWxsYmFjay5cbiAgICogQHJldHVybnMge1Byb21pc2U8Pz59IC0gQ2FsbGJhY2sgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgX3dpdGhEYihjYWxsYmFjaykge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb24uZW5zdXJlQ29ubmVjdGlvbnMoe25hbWU6IFwiV2Vic29ja2V0IGV2ZW50IGxvZyBzdG9yZVwifSwgYXN5bmMgKGRicykgPT4ge1xuICAgICAgY29uc3QgZGIgPSBkYnNbdGhpcy5kYXRhYmFzZUlkZW50aWZpZXJdXG5cbiAgICAgIGlmICghZGIpIHRocm93IG5ldyBFcnJvcihgTm8gZGF0YWJhc2UgY29ubmVjdGlvbiBhdmFpbGFibGUgZm9yIGlkZW50aWZpZXI6ICR7dGhpcy5kYXRhYmFzZUlkZW50aWZpZXJ9YClcblxuICAgICAgcmV0dXJuIGF3YWl0IGNhbGxiYWNrKGRiKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export class VelociousHttpServerWebsocketEventsHost {
|
|
2
2
|
/**
|
|
3
3
|
* Narrows the runtime value to the documented type.
|
|
4
|
-
|
|
4
|
+
* @type {Set<import("./worker-handler/index.js").default>} */
|
|
5
5
|
handlers: Set<import("./worker-handler/index.js").default>;
|
|
6
6
|
publishQueue: Promise<void>;
|
|
7
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-events-host.d.ts","sourceRoot":"","sources":["../../../src/http-server/websocket-events-host.js"],"names":[],"mappings":"AAIA;IAEI;;
|
|
1
|
+
{"version":3,"file":"websocket-events-host.d.ts","sourceRoot":"","sources":["../../../src/http-server/websocket-events-host.js"],"names":[],"mappings":"AAIA;IAEI;;kEAE8D;IAC9D,UADU,GAAG,CAAC,OAAO,2BAA2B,EAAE,OAAO,CAAC,CACjC;IACzB,4BAAqC;IAGvC;;;;;;;OAOG;IACH,0BAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,kBAHW,OAAO,2BAA2B,EAAE,OAAO,GACzC,MAAM,IAAI,CAMtB;IAED;;;;;OAKG;IACH,uBAJW,MAAM,GAAG,MAAM,eACf,OAAC,GACC,IAAI,CAuBhB;IAED;;;;;;;;;OASG;IACH,gDALG;QAAqB,OAAO,EAApB,MAAM;QACkB,eAAe,EAAvC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;QACT,IAAI,EAAZ,OAAC;KACT,GAAU,IAAI,CAoBhB;IAED;;;;;OAKG;IACH,wBAJW,MAAM,OAAO,CAAC,IAAI,CAAC,gBACnB,MAAM,GACJ,IAAI,CAkBhB;IAED;;;;;;OAMG;IACH,2CAJG;QAAgB,IAAI,EAAZ,OAAC;QACY,OAAO,EAApB,MAAM;KACd,GAAU,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC,CAI3D;IAED;;;;;;OAMG;IACH,4CAJG;QAAqB,OAAO,EAApB,MAAM;QACE,OAAO,EAAf,OAAC;KACT,GAAU,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC,CAI3D;IAED;;;;;;OAMG;IACH,mDAJG;QAAqB,OAAO,EAApB,MAAM;QACE,OAAO,EAAf,OAAC;KACT,GAAU,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC,CAkB3D;CACF;;AAED,0EAAwE"}
|
|
@@ -4,7 +4,7 @@ export class VelociousHttpServerWebsocketEventsHost {
|
|
|
4
4
|
constructor() {
|
|
5
5
|
/**
|
|
6
6
|
* Narrows the runtime value to the documented type.
|
|
7
|
-
|
|
7
|
+
* @type {Set<import("./worker-handler/index.js").default>} */
|
|
8
8
|
this.handlers = new Set();
|
|
9
9
|
this.publishQueue = Promise.resolve();
|
|
10
10
|
}
|
|
@@ -39,7 +39,7 @@ export class VelociousHttpServerWebsocketEventsHost {
|
|
|
39
39
|
? { channel: channelOrArgs, payload: payloadArg }
|
|
40
40
|
: /**
|
|
41
41
|
* Narrows the runtime value to the documented type.
|
|
42
|
-
|
|
42
|
+
* @type {{channel: string, payload: ?}} */
|
|
43
43
|
(channelOrArgs);
|
|
44
44
|
const channel = publishArgs.channel;
|
|
45
45
|
const payload = publishArgs.payload;
|
|
@@ -148,4 +148,4 @@ export class VelociousHttpServerWebsocketEventsHost {
|
|
|
148
148
|
}
|
|
149
149
|
const websocketEventsHost = new VelociousHttpServerWebsocketEventsHost();
|
|
150
150
|
export default websocketEventsHost;
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWV2ZW50cy1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2h0dHAtc2VydmVyL3dlYnNvY2tldC1ldmVudHMtaG9zdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sZ0NBQWdDLENBQUE7QUFFckYsTUFBTSxPQUFPLHNDQUFzQztJQUNqRDtRQUNFOztxRUFFNkQ7UUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQjtRQUMxQixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUE7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsT0FBTztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRTFCLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVO1FBQy9CLE1BQU0sV0FBVyxHQUFHLE9BQU8sYUFBYSxLQUFLLFFBQVE7WUFDbkQsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDO1lBQy9DLENBQUMsQ0FBQzs7d0RBRTBDO2dCQUFDLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDOUQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFBO1FBRW5DLElBQUksQ0FBQyxhQUFhLENB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RW5ELElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRXhDLE1BQU0sc0JBQXNCLEdBQUcsc0NBQXNDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzVGLE1BQU0sYUFBYSxHQUFHLE1BQU0sc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFaEYsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUUvQixNQUFNLGNBQWMsR0FBRyxNQUFNLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFBO1FBRW5GLE9BQU87WUFDTCxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVM7WUFDbkMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFO1NBQ3RCLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLG1CQUFtQixHQUFHLElBQUksc0NBQXNDLEVBQUUsQ0FBQTtBQUV4RSxlQUFlLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7d2Vic29ja2V0RXZlbnRMb2dTdG9yZUZvckNvbmZpZ3VyYXRpb259IGZyb20gXCIuL3dlYnNvY2tldC1ldmVudC1sb2ctc3RvcmUuanNcIlxuXG5leHBvcnQgY2xhc3MgVmVsb2Npb3VzSHR0cFNlcnZlcldlYnNvY2tldEV2ZW50c0hvc3Qge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICBAdHlwZSB7U2V0PGltcG9ydChcIi4vd29ya2VyLWhhbmRsZXIvaW5kZXguanNcIikuZGVmYXVsdD59ICovXG4gICAgdGhpcy5oYW5kbGVycyA9IG5ldyBTZXQoKVxuICAgIHRoaXMucHVibGlzaFF1ZXVlID0gUHJvbWlzZS5yZXNvbHZlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIHBlbmRpbmcgcHVibGlzaC9icm9hZGNhc3RcbiAgICogb3BlcmF0aW9ucyBoYXZlIGNvbXBsZXRlZCAoaW5jbHVkaW5nIGV2ZW50LWxvZyBwZXJzaXN0ZW5jZSkuIFVzZWZ1bFxuICAgKiB3aGVuIGEgcmVxdWVzdCBoYW5kbGVyIG5lZWRzIHRvIGd1YXJhbnRlZSBpdHMgYnJvYWRjYXN0IGlzIHBlcnNpc3RlZFxuICAgKiBiZWZvcmUgcmVzcG9uZGluZyDigJQgd2l0aG91dCB0aGlzLCB0aGUgSFRUUCByZXNwb25zZSBjYW4gcmV0dXJuIGJlZm9yZVxuICAgKiB0aGUgYXN5bmMgZXZlbnQtbG9nIHdyaXRlIGZpbmlzaGVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGF3YWl0UGVuZGluZ0Jyb2FkY2FzdHMoKSB7XG4gICAgYXdhaXQgdGhpcy5wdWJsaXNoUXVldWVcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlZ2lzdGVyLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vd29ya2VyLWhhbmRsZXIvaW5kZXguanNcIikuZGVmYXVsdH0gaGFuZGxlciAtIEhhbmRsZXIgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHsoKSA9PiB2b2lkfSAtIFRoZSByZWdpc3Rlci5cbiAgICovXG4gIHJlZ2lzdGVyKGhhbmRsZXIpIHtcbiAgICB0aGlzLmhhbmRsZXJzLmFkZChoYW5kbGVyKVxuXG4gICAgcmV0dXJuICgpID0+IHRoaXMuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBwdWJsaXNoLlxuICAgKiBAcGFyYW0ge29iamVjdCB8IHN0cmluZ30gY2hhbm5lbE9yQXJncyAtIENoYW5uZWwgbmFtZSBvciBvcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHs/fSBbcGF5bG9hZEFyZ10gLSBQYXlsb2FkIGRhdGEgd2hlbiBjaGFubmVsIGlzIHBhc3NlZCBzZXBhcmF0ZWx5LlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBwdWJsaXNoKGNoYW5uZWxPckFyZ3MsIHBheWxvYWRBcmcpIHtcbiAgICBjb25zdCBwdWJsaXNoQXJncyA9IHR5cGVvZiBjaGFubmVsT3JBcmdzID09PSBcInN0cmluZ1wiXG4gICAgICA/IHtjaGFubmVsOiBjaGFubmVsT3JBcmdzLCBwYXlsb2FkOiBwYXlsb2FkQXJnfVxuICAgICAgOiAvKipcbiAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgIEB0eXBlIHt7Y2hhbm5lbDogc3RyaW5nLCBwYXlsb2FkOiA/fX0gKi8gKGNoYW5uZWxPckFyZ3MpXG4gICAgY29uc3QgY2hhbm5lbCA9IHB1Ymxpc2hBcmdzLmNoYW5uZWxcbiAgICBjb25zdCBwYXlsb2FkID0gcHVibGlzaEFyZ3MucGF5bG9hZFxuXG4gICAgdGhpcy5fcXVldWVQdWJsaXNoKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHBlcnNpc3RlZEV2ZW50ID0gYXdhaXQgdGhpcy5fcGVyc2lzdEV2ZW50SWZOZWVkZWQoe2NoYW5uZWwsIHBheWxvYWR9KVxuXG4gICAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgdGhpcy5oYW5kbGVycykge1xuICAgICAgICBoYW5kbGVyLmRpc3BhdGNoV2Vic29ja2V0RXZlbnQoe1xuICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgY3JlYXRlZEF0OiBwZXJzaXN0ZWRFdmVudD8uY3JlYXRlZEF0LFxuICAgICAgICAgIGV2ZW50SWQ6IHBlcnNpc3RlZEV2ZW50Py5pZCxcbiAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSwgXCJGYWlsZWQgdG8gcHVibGlzaCB3ZWJzb2NrZXQgZXZlbnRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBGYW4gYSBWMiBjaGFubmVsIGJyb2FkY2FzdCBvdXQgdG8gZXZlcnkgcmVnaXN0ZXJlZCB3b3JrZXIgaGFuZGxlci5cbiAgICogUGVyc2lzdHMgdGhlIGV2ZW50IHRvIHRoZSBldmVudC1sb2cgc3RvcmUgKGlmIHRoZSBjaGFubmVsIGlzIG1hcmtlZFxuICAgKiBpbnRlcmVzdGVkKSBzbyBjbGllbnRzIGNhbiByZXN1bWUgZnJvbSBhIGBsYXN0RXZlbnRJZGAgY2hlY2twb2ludC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gYXJncy5icm9hZGNhc3RQYXJhbXMgLSBSb3V0aW5nIGZpbHRlciBwYXJhbXMuXG4gICAqIEBwYXJhbSB7P30gYXJncy5ib2R5IC0gTWVzc2FnZSBib2R5LlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGJyb2FkY2FzdFYyKHtib2R5LCBicm9hZGNhc3RQYXJhbXMsIGNoYW5uZWx9KSB7XG4gICAgLy8gQ2hhaW4gb250byBwdWJsaXNoUXVldWUgc28gcGVyc2lzdGVuY2UgY29tcGxldGVzIGJlZm9yZVxuICAgIC8vIHRoZSBuZXh0IGJyb2FkY2FzdCDigJQgd2l0aG91dCB0aGlzLCBhIHN1YnNjcmliZXIgdGhhdCBjb25uZWN0c1xuICAgIC8vIGltbWVkaWF0ZWx5IGFmdGVyIGEgYnJvYWRjYXN0IGNvdWxkIG1pc3MgdGhlIGp1c3QtcGVyc2lzdGVkXG4gICAgLy8gZXZlbnQgd2hlbiByZXBsYXlpbmcgZnJvbSBsYXN0RXZlbnRJZCBvbiBhIHNsb3cgREIuXG4gICAgdGhpcy5fcXVldWVQdWJsaXNoKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHBlcnNpc3RlZEV2ZW50ID0gYXdhaXQgdGhpcy5fcGVyc2lzdFYyRXZlbnRJZk5lZWRlZCh7Ym9keSwgY2hhbm5lbH0pXG5cbiAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgICAgIGhhbmRsZXIuZGlzcGF0Y2hXZWJzb2NrZXRWMkJyb2FkY2FzdCh7XG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBicm9hZGNhc3RQYXJhbXMsXG4gICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICBldmVudElkOiBwZXJzaXN0ZWRFdmVudD8uaWQsXG4gICAgICAgICAgY3JlYXRlZEF0OiBwZXJzaXN0ZWRFdmVudD8uY3JlYXRlZEF0XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSwgXCJGYWlsZWQgdG8gcGVyc2lzdC9icm9hZGNhc3QgVjIgZXZlbnRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHF1ZXVlIHB1Ymxpc2guXG4gICAqIEBwYXJhbSB7KCkgPT4gUHJvbWlzZTx2b2lkPn0gY2FsbGJhY2sgLSBQdWJsaXNoIHdvcmsgdG8gcnVuIGluIG9yZGVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNZXNzYWdlIC0gTWVzc2FnZSBsb2dnZWQgd2hlbiBwdWJsaXNoIHdvcmsgZmFpbHMuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgX3F1ZXVlUHVibGlzaChjYWxsYmFjaywgZXJyb3JNZXNzYWdlKSB7XG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuaGFuZGxlcnMudmFsdWVzKCkubmV4dCgpLnZhbHVlXG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGhhbmRsZXI/LmNvbmZpZ3VyYXRpb25cblxuICAgIHRoaXMucHVibGlzaFF1ZXVlID0gdGhpcy5wdWJsaXNoUXVldWVcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgY29uZmlndXJhdGlvbi53aXRob3V0Q3VycmVudENvbm5lY3Rpb25Db250ZXh0cyhjYWxsYmFjaylcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCBjYWxsYmFjaygpXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yTWVzc2FnZSwgZXJyb3IpXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcGVyc2lzdCB2MiBldmVudCBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHs/fSBhcmdzLmJvZHkgLSBFdmVudCBib2R5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7Y3JlYXRlZEF0OiBzdHJpbmcsIGlkOiBzdHJpbmd9IHwgbnVsbD59XG4gICAqL1xuICBhc3luYyBfcGVyc2lzdFYyRXZlbnRJZk5lZWRlZCh7Ym9keSwgY2hhbm5lbH0pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcGVyc2lzdENoYW5uZWxFdmVudElmTmVlZGVkKHtjaGFubmVsLCBwYXlsb2FkOiBib2R5fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHBlcnNpc3QgZXZlbnQgaWYgbmVlZGVkLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0gez99IGFyZ3MucGF5bG9hZCAtIFBheWxvYWQgZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8e2NyZWF0ZWRBdDogc3RyaW5nLCBpZDogc3RyaW5nfSB8IG51bGw+fSAtIFBlcnNpc3RlZCBldmVudCBtZXRhZGF0YS5cbiAgICovXG4gIGFzeW5jIF9wZXJzaXN0RXZlbnRJZk5lZWRlZCh7Y2hhbm5lbCwgcGF5bG9hZH0pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcGVyc2lzdENoYW5uZWxFdmVudElmTmVlZGVkKHtjaGFubmVsLCBwYXlsb2FkfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHBlcnNpc3QgY2hhbm5lbCBldmVudCBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEBwYXJhbSB7P30gYXJncy5wYXlsb2FkIC0gUGF5bG9hZCBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7Y3JlYXRlZEF0OiBzdHJpbmcsIGlkOiBzdHJpbmd9IHwgbnVsbD59IC0gUGVyc2lzdGVkIGV2ZW50IG1ldGFkYXRhLlxuICAgKi9cbiAgYXN5bmMgX3BlcnNpc3RDaGFubmVsRXZlbnRJZk5lZWRlZCh7Y2hhbm5lbCwgcGF5bG9hZH0pIHtcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5oYW5kbGVycy52YWx1ZXMoKS5uZXh0KCkudmFsdWVcblxuICAgIGlmICghaGFuZGxlcj8uY29uZmlndXJhdGlvbikgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHdlYnNvY2tldEV2ZW50TG9nU3RvcmUgPSB3ZWJzb2NrZXRFdmVudExvZ1N0b3JlRm9yQ29uZmlndXJhdGlvbihoYW5kbGVyLmNvbmZpZ3VyYXRpb24pXG4gICAgY29uc3Qgc2hvdWxkUGVyc2lzdCA9IGF3YWl0IHdlYnNvY2tldEV2ZW50TG9nU3RvcmUuc2hvdWxkUGVyc2lzdENoYW5uZWwoY2hhbm5lbClcblxuICAgIGlmICghc2hvdWxkUGVyc2lzdCkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHBlcnNpc3RlZEV2ZW50ID0gYXdhaXQgd2Vic29ja2V0RXZlbnRMb2dTdG9yZS5hcHBlbmRFdmVudCh7Y2hhbm5lbCwgcGF5bG9hZH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgY3JlYXRlZEF0OiBwZXJzaXN0ZWRFdmVudC5jcmVhdGVkQXQsXG4gICAgICBpZDogcGVyc2lzdGVkRXZlbnQuaWRcbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgd2Vic29ja2V0RXZlbnRzSG9zdCA9IG5ldyBWZWxvY2lvdXNIdHRwU2VydmVyV2Vic29ja2V0RXZlbnRzSG9zdCgpXG5cbmV4cG9ydCBkZWZhdWx0IHdlYnNvY2tldEV2ZW50c0hvc3RcbiJdfQ==
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWV2ZW50cy1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2h0dHAtc2VydmVyL3dlYnNvY2tldC1ldmVudHMtaG9zdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sZ0NBQWdDLENBQUE7QUFFckYsTUFBTSxPQUFPLHNDQUFzQztJQUNqRDtRQUNFOztzRUFFOEQ7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQjtRQUMxQixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUE7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsT0FBTztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRTFCLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVO1FBQy9CLE1BQU0sV0FBVyxHQUFHLE9BQU8sYUFBYSxLQUFLLFFBQVE7WUFDbkQsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDO1lBQy9DLENBQUMsQ0FBQzs7eURBRTJDO2dCQUFDLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDL0QsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFBO1FBRW5DLElBQUksQ0FBQyxhQUFhLENB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RW5ELElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRXhDLE1BQU0sc0JBQXNCLEdBQUcsc0NBQXNDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzVGLE1BQU0sYUFBYSxHQUFHLE1BQU0sc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFaEYsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUUvQixNQUFNLGNBQWMsR0FBRyxNQUFNLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFBO1FBRW5GLE9BQU87WUFDTCxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVM7WUFDbkMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFO1NBQ3RCLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLG1CQUFtQixHQUFHLElBQUksc0NBQXNDLEVBQUUsQ0FBQTtBQUV4RSxlQUFlLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7d2Vic29ja2V0RXZlbnRMb2dTdG9yZUZvckNvbmZpZ3VyYXRpb259IGZyb20gXCIuL3dlYnNvY2tldC1ldmVudC1sb2ctc3RvcmUuanNcIlxuXG5leHBvcnQgY2xhc3MgVmVsb2Npb3VzSHR0cFNlcnZlcldlYnNvY2tldEV2ZW50c0hvc3Qge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICogQHR5cGUge1NldDxpbXBvcnQoXCIuL3dvcmtlci1oYW5kbGVyL2luZGV4LmpzXCIpLmRlZmF1bHQ+fSAqL1xuICAgIHRoaXMuaGFuZGxlcnMgPSBuZXcgU2V0KClcbiAgICB0aGlzLnB1Ymxpc2hRdWV1ZSA9IFByb21pc2UucmVzb2x2ZSgpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGFsbCBwZW5kaW5nIHB1Ymxpc2gvYnJvYWRjYXN0XG4gICAqIG9wZXJhdGlvbnMgaGF2ZSBjb21wbGV0ZWQgKGluY2x1ZGluZyBldmVudC1sb2cgcGVyc2lzdGVuY2UpLiBVc2VmdWxcbiAgICogd2hlbiBhIHJlcXVlc3QgaGFuZGxlciBuZWVkcyB0byBndWFyYW50ZWUgaXRzIGJyb2FkY2FzdCBpcyBwZXJzaXN0ZWRcbiAgICogYmVmb3JlIHJlc3BvbmRpbmcg4oCUIHdpdGhvdXQgdGhpcywgdGhlIEhUVFAgcmVzcG9uc2UgY2FuIHJldHVybiBiZWZvcmVcbiAgICogdGhlIGFzeW5jIGV2ZW50LWxvZyB3cml0ZSBmaW5pc2hlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBhd2FpdFBlbmRpbmdCcm9hZGNhc3RzKCkge1xuICAgIGF3YWl0IHRoaXMucHVibGlzaFF1ZXVlXG4gIH1cblxuICAvKipcbiAgICogUnVucyByZWdpc3Rlci5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3dvcmtlci1oYW5kbGVyL2luZGV4LmpzXCIpLmRlZmF1bHR9IGhhbmRsZXIgLSBIYW5kbGVyIGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7KCkgPT4gdm9pZH0gLSBUaGUgcmVnaXN0ZXIuXG4gICAqL1xuICByZWdpc3RlcihoYW5kbGVyKSB7XG4gICAgdGhpcy5oYW5kbGVycy5hZGQoaGFuZGxlcilcblxuICAgIHJldHVybiAoKSA9PiB0aGlzLmhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcHVibGlzaC5cbiAgICogQHBhcmFtIHtvYmplY3QgfCBzdHJpbmd9IGNoYW5uZWxPckFyZ3MgLSBDaGFubmVsIG5hbWUgb3Igb3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7P30gW3BheWxvYWRBcmddIC0gUGF5bG9hZCBkYXRhIHdoZW4gY2hhbm5lbCBpcyBwYXNzZWQgc2VwYXJhdGVseS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgcHVibGlzaChjaGFubmVsT3JBcmdzLCBwYXlsb2FkQXJnKSB7XG4gICAgY29uc3QgcHVibGlzaEFyZ3MgPSB0eXBlb2YgY2hhbm5lbE9yQXJncyA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyB7Y2hhbm5lbDogY2hhbm5lbE9yQXJncywgcGF5bG9hZDogcGF5bG9hZEFyZ31cbiAgICAgIDogLyoqXG4gICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICogQHR5cGUge3tjaGFubmVsOiBzdHJpbmcsIHBheWxvYWQ6ID99fSAqLyAoY2hhbm5lbE9yQXJncylcbiAgICBjb25zdCBjaGFubmVsID0gcHVibGlzaEFyZ3MuY2hhbm5lbFxuICAgIGNvbnN0IHBheWxvYWQgPSBwdWJsaXNoQXJncy5wYXlsb2FkXG5cbiAgICB0aGlzLl9xdWV1ZVB1Ymxpc2goYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGVyc2lzdGVkRXZlbnQgPSBhd2FpdCB0aGlzLl9wZXJzaXN0RXZlbnRJZk5lZWRlZCh7Y2hhbm5lbCwgcGF5bG9hZH0pXG5cbiAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgICAgIGhhbmRsZXIuZGlzcGF0Y2hXZWJzb2NrZXRFdmVudCh7XG4gICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICBjcmVhdGVkQXQ6IHBlcnNpc3RlZEV2ZW50Py5jcmVhdGVkQXQsXG4gICAgICAgICAgZXZlbnRJZDogcGVyc2lzdGVkRXZlbnQ/LmlkLFxuICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LCBcIkZhaWxlZCB0byBwdWJsaXNoIHdlYnNvY2tldCBldmVudFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEZhbiBhIFYyIGNoYW5uZWwgYnJvYWRjYXN0IG91dCB0byBldmVyeSByZWdpc3RlcmVkIHdvcmtlciBoYW5kbGVyLlxuICAgKiBQZXJzaXN0cyB0aGUgZXZlbnQgdG8gdGhlIGV2ZW50LWxvZyBzdG9yZSAoaWYgdGhlIGNoYW5uZWwgaXMgbWFya2VkXG4gICAqIGludGVyZXN0ZWQpIHNvIGNsaWVudHMgY2FuIHJlc3VtZSBmcm9tIGEgYGxhc3RFdmVudElkYCBjaGVja3BvaW50LlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+fSBhcmdzLmJyb2FkY2FzdFBhcmFtcyAtIFJvdXRpbmcgZmlsdGVyIHBhcmFtcy5cbiAgICogQHBhcmFtIHs/fSBhcmdzLmJvZHkgLSBNZXNzYWdlIGJvZHkuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYnJvYWRjYXN0VjIoe2JvZHksIGJyb2FkY2FzdFBhcmFtcywgY2hhbm5lbH0pIHtcbiAgICAvLyBDaGFpbiBvbnRvIHB1Ymxpc2hRdWV1ZSBzbyBwZXJzaXN0ZW5jZSBjb21wbGV0ZXMgYmVmb3JlXG4gICAgLy8gdGhlIG5leHQgYnJvYWRjYXN0IOKAlCB3aXRob3V0IHRoaXMsIGEgc3Vic2NyaWJlciB0aGF0IGNvbm5lY3RzXG4gICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgYSBicm9hZGNhc3QgY291bGQgbWlzcyB0aGUganVzdC1wZXJzaXN0ZWRcbiAgICAvLyBldmVudCB3aGVuIHJlcGxheWluZyBmcm9tIGxhc3RFdmVudElkIG9uIGEgc2xvdyBEQi5cbiAgICB0aGlzLl9xdWV1ZVB1Ymxpc2goYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGVyc2lzdGVkRXZlbnQgPSBhd2FpdCB0aGlzLl9wZXJzaXN0VjJFdmVudElmTmVlZGVkKHtib2R5LCBjaGFubmVsfSlcblxuICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgICAgaGFuZGxlci5kaXNwYXRjaFdlYnNvY2tldFYyQnJvYWRjYXN0KHtcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGJyb2FkY2FzdFBhcmFtcyxcbiAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgIGV2ZW50SWQ6IHBlcnNpc3RlZEV2ZW50Py5pZCxcbiAgICAgICAgICBjcmVhdGVkQXQ6IHBlcnNpc3RlZEV2ZW50Py5jcmVhdGVkQXRcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LCBcIkZhaWxlZCB0byBwZXJzaXN0L2Jyb2FkY2FzdCBWMiBldmVudFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcXVldWUgcHVibGlzaC5cbiAgICogQHBhcmFtIHsoKSA9PiBQcm9taXNlPHZvaWQ+fSBjYWxsYmFjayAtIFB1Ymxpc2ggd29yayB0byBydW4gaW4gb3JkZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvck1lc3NhZ2UgLSBNZXNzYWdlIGxvZ2dlZCB3aGVuIHB1Ymxpc2ggd29yayBmYWlscy5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBfcXVldWVQdWJsaXNoKGNhbGxiYWNrLCBlcnJvck1lc3NhZ2UpIHtcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5oYW5kbGVycy52YWx1ZXMoKS5uZXh0KCkudmFsdWVcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gaGFuZGxlcj8uY29uZmlndXJhdGlvblxuXG4gICAgdGhpcy5wdWJsaXNoUXVldWUgPSB0aGlzLnB1Ymxpc2hRdWV1ZVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbikge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBjb25maWd1cmF0aW9uLndpdGhvdXRDdXJyZW50Q29ubmVjdGlvbkNvbnRleHRzKGNhbGxiYWNrKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGNhbGxiYWNrKClcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JNZXNzYWdlLCBlcnJvcilcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBwZXJzaXN0IHYyIGV2ZW50IGlmIG5lZWRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0gez99IGFyZ3MuYm9keSAtIEV2ZW50IGJvZHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtjcmVhdGVkQXQ6IHN0cmluZywgaWQ6IHN0cmluZ30gfCBudWxsPn1cbiAgICovXG4gIGFzeW5jIF9wZXJzaXN0VjJFdmVudElmTmVlZGVkKHtib2R5LCBjaGFubmVsfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9wZXJzaXN0Q2hhbm5lbEV2ZW50SWZOZWVkZWQoe2NoYW5uZWwsIHBheWxvYWQ6IGJvZHl9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcGVyc2lzdCBldmVudCBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEBwYXJhbSB7P30gYXJncy5wYXlsb2FkIC0gUGF5bG9hZCBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7Y3JlYXRlZEF0OiBzdHJpbmcsIGlkOiBzdHJpbmd9IHwgbnVsbD59IC0gUGVyc2lzdGVkIGV2ZW50IG1ldGFkYXRhLlxuICAgKi9cbiAgYXN5bmMgX3BlcnNpc3RFdmVudElmTmVlZGVkKHtjaGFubmVsLCBwYXlsb2FkfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9wZXJzaXN0Q2hhbm5lbEV2ZW50SWZOZWVkZWQoe2NoYW5uZWwsIHBheWxvYWR9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcGVyc2lzdCBjaGFubmVsIGV2ZW50IGlmIG5lZWRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHs/fSBhcmdzLnBheWxvYWQgLSBQYXlsb2FkIGRhdGEuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtjcmVhdGVkQXQ6IHN0cmluZywgaWQ6IHN0cmluZ30gfCBudWxsPn0gLSBQZXJzaXN0ZWQgZXZlbnQgbWV0YWRhdGEuXG4gICAqL1xuICBhc3luYyBfcGVyc2lzdENoYW5uZWxFdmVudElmTmVlZGVkKHtjaGFubmVsLCBwYXlsb2FkfSkge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmhhbmRsZXJzLnZhbHVlcygpLm5leHQoKS52YWx1ZVxuXG4gICAgaWYgKCFoYW5kbGVyPy5jb25maWd1cmF0aW9uKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3Qgd2Vic29ja2V0RXZlbnRMb2dTdG9yZSA9IHdlYnNvY2tldEV2ZW50TG9nU3RvcmVGb3JDb25maWd1cmF0aW9uKGhhbmRsZXIuY29uZmlndXJhdGlvbilcbiAgICBjb25zdCBzaG91bGRQZXJzaXN0ID0gYXdhaXQgd2Vic29ja2V0RXZlbnRMb2dTdG9yZS5zaG91bGRQZXJzaXN0Q2hhbm5lbChjaGFubmVsKVxuXG4gICAgaWYgKCFzaG91bGRQZXJzaXN0KSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgcGVyc2lzdGVkRXZlbnQgPSBhd2FpdCB3ZWJzb2NrZXRFdmVudExvZ1N0b3JlLmFwcGVuZEV2ZW50KHtjaGFubmVsLCBwYXlsb2FkfSlcblxuICAgIHJldHVybiB7XG4gICAgICBjcmVhdGVkQXQ6IHBlcnNpc3RlZEV2ZW50LmNyZWF0ZWRBdCxcbiAgICAgIGlkOiBwZXJzaXN0ZWRFdmVudC5pZFxuICAgIH1cbiAgfVxufVxuXG5jb25zdCB3ZWJzb2NrZXRFdmVudHNIb3N0ID0gbmV3IFZlbG9jaW91c0h0dHBTZXJ2ZXJXZWJzb2NrZXRFdmVudHNIb3N0KClcblxuZXhwb3J0IGRlZmF1bHQgd2Vic29ja2V0RXZlbnRzSG9zdFxuIl19
|
|
@@ -18,7 +18,7 @@ export default class VelociousHttpServerInProcessHandler {
|
|
|
18
18
|
configuration: import("../../configuration.js").default;
|
|
19
19
|
/**
|
|
20
20
|
* Narrows the runtime value to the documented type.
|
|
21
|
-
|
|
21
|
+
* @type {Record<number, {httpClient: Client, serverClient: import("../server-client.js").default}>} */
|
|
22
22
|
clients: Record<number, {
|
|
23
23
|
httpClient: Client;
|
|
24
24
|
serverClient: import("../server-client.js").default;
|
|
@@ -29,7 +29,7 @@ export default class VelociousHttpServerInProcessHandler {
|
|
|
29
29
|
_stopping: boolean;
|
|
30
30
|
/**
|
|
31
31
|
* Runs start.
|
|
32
|
-
|
|
32
|
+
* @returns {Promise<void>} */
|
|
33
33
|
start(): Promise<void>;
|
|
34
34
|
/**
|
|
35
35
|
* Runs add socket connection.
|
|
@@ -39,7 +39,7 @@ export default class VelociousHttpServerInProcessHandler {
|
|
|
39
39
|
addSocketConnection(serverClient: import("../server-client.js").default): void;
|
|
40
40
|
/**
|
|
41
41
|
* Runs stop.
|
|
42
|
-
|
|
42
|
+
* @returns {Promise<void>} */
|
|
43
43
|
stop(): Promise<void>;
|
|
44
44
|
/**
|
|
45
45
|
* In-process handler path for V2 channel broadcasts. No worker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-process.d.ts","sourceRoot":"","sources":["../../../../src/http-server/worker-handler/in-process.js"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH;IACE;;;;;OAKG;IACH,4CAHG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC3B,WAAW,EAAxB,MAAM;KAChB,EAeA;IAbC,wDAAkC;IAElC;;
|
|
1
|
+
{"version":3,"file":"in-process.d.ts","sourceRoot":"","sources":["../../../../src/http-server/worker-handler/in-process.js"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH;IACE;;;;;OAKG;IACH,4CAHG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC3B,WAAW,EAAxB,MAAM;KAChB,EAeA;IAbC,wDAAkC;IAElC;;2GAEuG;IACvG,SADU,MAAM,CAAC,MAAM,EAAE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAA;KAAC,CAAC,CAClF;IAEjB,eAA8B;IAC9B,oBAA8B;IAC9B,qCAEoF;IACpF,mBAAsB;IAGxB;;kCAE8B;IAC9B,SADa,OAAO,CAAC,IAAI,CAAC,CAGzB;IAED;;;;OAIG;IACH,kCAHW,OAAO,qBAAqB,EAAE,OAAO,GACnC,IAAI,CA8ChB;IAED;;kCAE8B;IAC9B,QADa,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;;;;;;;;OAUG;IACH,0EANG;QAAqB,OAAO,EAApB,MAAM;QACkB,eAAe,EAAvC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;QACT,IAAI,EAAZ,OAAC;QACa,OAAO;KAC7B,GAAU,IAAI,CAMhB;IAED;;;;;;;;OAQG;IACH,iEANG;QAAqB,OAAO,EAApB,MAAM;QACQ,SAAS;QACT,OAAO;QACb,OAAO,EAAf,OAAC;KACT,GAAU,IAAI,CAiBhB;CACF;mBAxJkB,oBAAoB;mBAEpB,iBAAiB"}
|
|
@@ -20,18 +20,18 @@ export default class VelociousHttpServerInProcessHandler {
|
|
|
20
20
|
this.configuration = configuration;
|
|
21
21
|
/**
|
|
22
22
|
* Narrows the runtime value to the documented type.
|
|
23
|
-
|
|
23
|
+
* @type {Record<number, {httpClient: Client, serverClient: import("../server-client.js").default}>} */
|
|
24
24
|
this.clients = {};
|
|
25
25
|
this.logger = new Logger(this);
|
|
26
26
|
this.workerCount = workerCount;
|
|
27
27
|
this.unregisterFromEventsHost = websocketEventsHost.register(/**
|
|
28
28
|
* Narrows the runtime value to the documented type.
|
|
29
|
-
|
|
29
|
+
* @type {?} */ (this));
|
|
30
30
|
this._stopping = false;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Runs start.
|
|
34
|
-
|
|
34
|
+
* @returns {Promise<void>} */
|
|
35
35
|
async start() {
|
|
36
36
|
await this.logger.debug(() => `In-process handler ${this.workerCount} started`);
|
|
37
37
|
}
|
|
@@ -63,12 +63,12 @@ export default class VelociousHttpServerInProcessHandler {
|
|
|
63
63
|
// to the in-process HTTP Client without needing a real worker thread.
|
|
64
64
|
const messagePortShim = /**
|
|
65
65
|
* Narrows the runtime value to the documented type.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@type {?} */({
|
|
66
|
+
* @type {import("worker_threads").Worker} */ ( /**
|
|
67
|
+
* Narrows the runtime value to the documented type.
|
|
68
|
+
* @type {?} */({
|
|
69
69
|
postMessage: (/**
|
|
70
70
|
* Narrows the runtime value to the documented type.
|
|
71
|
-
|
|
71
|
+
* @type {{command: string, chunk?: Buffer | Uint8Array | string, clientCount?: number}} */ data) => {
|
|
72
72
|
if (data.command === "clientWrite" && data.chunk) {
|
|
73
73
|
const chunk = typeof data.chunk === "string" ? Buffer.from(data.chunk) : Buffer.from(data.chunk);
|
|
74
74
|
httpClient.onWrite(chunk);
|
|
@@ -80,7 +80,7 @@ export default class VelociousHttpServerInProcessHandler {
|
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
82
|
* Runs stop.
|
|
83
|
-
|
|
83
|
+
* @returns {Promise<void>} */
|
|
84
84
|
async stop() {
|
|
85
85
|
this._stopping = true;
|
|
86
86
|
for (const { serverClient } of Object.values(this.clients)) {
|
|
@@ -134,4 +134,4 @@ export default class VelociousHttpServerInProcessHandler {
|
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9odHRwLXNlcnZlci93b3JrZXItaGFuZGxlci9pbi1wcm9jZXNzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLDBCQUEwQixNQUFNLGtDQUFrQyxDQUFBO0FBQ3pFLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sbUJBQW1CLE1BQU0sNkJBQTZCLENBQUE7QUFFN0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLG1DQUFtQztJQUN0RDs7Ozs7T0FLRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsV0FBVyxFQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBRWxDOzs4R0FFc0c7UUFDdEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDOzttRkFFYyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNuRixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUN4QixDQUFDO0lBRUQ7O2lDQUU2QjtJQUM3QixLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLElBQUksQ0FBQyxXQUFXLFVBQVUsQ0FBQyxDQUFBO0lBQ2pGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsWUFBWTtRQUM5QixNQUFNLFdBQVcsR0FBRyxZQUFZLENB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QUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsc0JBQXNCLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUM7UUFDM0QsS0FBSyxNQUFNLEVBQUMsVUFBVSxFQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUE7WUFFM0MsSUFBSSxDQUFDLE9BQU87Z0JBQUUsU0FBUTtZQUV0QixLQUFLLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFBO1FBQ2hFLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixvRUFBb0U7WUFDcEUsOERBQThEO1lBQzlELDhCQUE4QjtZQUM5QixLQUFLLDBCQUEwQixDQUFDLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQTtRQUNqSSxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBDbGllbnQgZnJvbSBcIi4uL2NsaWVudC9pbmRleC5qc1wiXG5pbXBvcnQgZGlzcGF0Y2hDaGFubmVsU3Vic2NyaWJlcnMgZnJvbSBcIi4vY2hhbm5lbC1zdWJzY3JpYmVyLWRpc3BhdGNoLmpzXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4uLy4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgd2Vic29ja2V0RXZlbnRzSG9zdCBmcm9tIFwiLi4vd2Vic29ja2V0LWV2ZW50cy1ob3N0LmpzXCJcblxuLyoqXG4gKiBJbi1wcm9jZXNzIHdvcmtlciBoYW5kbGVyIHRoYXQgcHJvY2Vzc2VzIEhUVFAgcmVxdWVzdHMgaW4gdGhlIG1haW4gdGhyZWFkXG4gKiBpbnN0ZWFkIG9mIHNwYXduaW5nIGEgV29ya2VyIHRocmVhZC4gVGhpcyBhbGxvd3MgdGhlIHRlc3QgcnVubmVyJ3MgZGF0YWJhc2VcbiAqIGNvbm5lY3Rpb24gY29udGV4dCB0byBiZSBzaGFyZWQgd2l0aCBIVFRQIHJlcXVlc3QgaGFuZGxlcnMsIHNvIG1vZGVsLWNyZWF0ZWRcbiAqIHJlY29yZHMgaW4gdGVzdHMgYXJlIHZpc2libGUgdG8gSFRUUCBlbmRwb2ludHMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJJblByb2Nlc3NIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy53b3JrZXJDb3VudCAtIFdvcmtlciBjb3VudC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCB3b3JrZXJDb3VudH0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG5cbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICBAdHlwZSB7UmVjb3JkPG51bWJlciwge2h0dHBDbGllbnQ6IENsaWVudCwgc2VydmVyQ2xpZW50OiBpbXBvcnQoXCIuLi9zZXJ2ZXItY2xpZW50LmpzXCIpLmRlZmF1bHR9Pn0gKi9cbiAgICB0aGlzLmNsaWVudHMgPSB7fVxuXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gICAgdGhpcy53b3JrZXJDb3VudCA9IHdvcmtlckNvdW50XG4gICAgdGhpcy51bnJlZ2lzdGVyRnJvbUV2ZW50c0hvc3QgPSB3ZWJzb2NrZXRFdmVudHNIb3N0LnJlZ2lzdGVyKC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUgez99ICovICh0aGlzKSlcbiAgICB0aGlzLl9zdG9wcGluZyA9IGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzdGFydC5cbiAgICBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gYEluLXByb2Nlc3MgaGFuZGxlciAke3RoaXMud29ya2VyQ291bnR9IHN0YXJ0ZWRgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWRkIHNvY2tldCBjb25uZWN0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlcnZlci1jbGllbnQuanNcIikuZGVmYXVsdH0gc2VydmVyQ2xpZW50IC0gU2VydmVyIGNsaWVudCBpbnN0YW5jZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBhZGRTb2NrZXRDb25uZWN0aW9uKHNlcnZlckNsaWVudCkge1xuICAgIGNvbnN0IGNsaWVudENvdW50ID0gc2VydmVyQ2xpZW50LmNsaWVudENvdW50XG5cbiAgICBjb25zdCBodHRwQ2xpZW50ID0gbmV3IENsaWVudCh7XG4gICAgICBjbGllbnRDb3VudCxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgIHJlbW90ZUFkZHJlc3M6IHNlcnZlckNsaWVudC5yZW1vdGVBZGRyZXNzXG4gICAgfSlcblxuICAgIGh0dHBDbGllbnQuZXZlbnRzLm9uKFwib3V0cHV0XCIsIChvdXRwdXQpID0+IHtcbiAgICAgIGlmIChvdXRwdXQgIT09IG51bGwgJiYgb3V0cHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdm9pZCBzZXJ2ZXJDbGllbnQuc2VuZChvdXRwdXQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCgpID0+IFtcIkZhaWxlZCB0byBkZWxpdmVyIGNsaWVudCBvdXRwdXRcIiwge2NsaWVudENvdW50fSwgZXJyb3JdKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBodHRwQ2xpZW50LmV2ZW50cy5vbihcImNsb3NlXCIsICgpID0+IHtcbiAgICAgIHZvaWQgc2VydmVyQ2xpZW50LmVuZCgpXG4gICAgICBkZWxldGUgdGhpcy5jbGllbnRzW2NsaWVudENvdW50XVxuICAgIH0pXG5cbiAgICB0aGlzLmNsaWVudHNbY2xpZW50Q291bnRdID0ge2h0dHBDbGllbnQsIHNlcnZlckNsaWVudH1cblxuICAgIC8vIENyZWF0ZSBhIG1lc3NhZ2UtcG9ydCBzaGltIHNvIFNlcnZlckNsaWVudC5vblNvY2tldERhdGEgY2FuIHJvdXRlIGRhdGFcbiAgICAvLyB0byB0aGUgaW4tcHJvY2VzcyBIVFRQIENsaWVudCB3aXRob3V0IG5lZWRpbmcgYSByZWFsIHdvcmtlciB0aHJlYWQuXG4gICAgY29uc3QgbWVzc2FnZVBvcnRTaGltID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUge2ltcG9ydChcIndvcmtlcl90aHJlYWRzXCIpLldvcmtlcn0gKi8gKC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUgez99ICovICh7XG4gICAgICBwb3N0TWVzc2FnZTogKC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgQHR5cGUge3tjb21tYW5kOiBzdHJpbmcsIGNodW5rPzogQnVmZmVyIHwgVWludDhBcnJheSB8IHN0cmluZywgY2xpZW50Q291bnQ/OiBudW1iZXJ9fSAqLyBkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmNvbW1hbmQgPT09IFwiY2xpZW50V3JpdGVcIiAmJiBkYXRhLmNodW5rKSB7XG4gICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jaHVuayA9PT0gXCJzdHJpbmdcIiA/IEJ1ZmZlci5mcm9tKGRhdGEuY2h1bmspIDogQnVmZmVyLmZyb20oZGF0YS5jaHVuaylcblxuICAgICAgICAgIGh0dHBDbGllbnQub25Xcml0ZShjaHVuaylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKVxuXG4gICAgc2VydmVyQ2xpZW50LnNldFdvcmtlcihtZXNzYWdlUG9ydFNoaW0pXG4gICAgc2VydmVyQ2xpZW50Lmxpc3RlbigpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzdG9wLlxuICAgIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBhc3luYyBzdG9wKCkge1xuICAgIHRoaXMuX3N0b3BwaW5nID0gdHJ1ZVxuXG4gICAgZm9yIChjb25zdCB7c2VydmVyQ2xpZW50fSBvZiBPYmplY3QudmFsdWVzKHRoaXMuY2xpZW50cykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZvaWQgc2VydmVyQ2xpZW50LmVuZCgpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFwiRmFpbGVkIHRvIGNsb3NlIGNsaWVudCBkdXJpbmcgc2h1dGRvd25cIiwgZXJyb3IpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jbGllbnRzID0ge31cbiAgICB0aGlzLnVucmVnaXN0ZXJGcm9tRXZlbnRzSG9zdD8uKClcbiAgfVxuXG4gIC8qKlxuICAgKiBJbi1wcm9jZXNzIGhhbmRsZXIgcGF0aCBmb3IgVjIgY2hhbm5lbCBicm9hZGNhc3RzLiBObyB3b3JrZXJcbiAgICogYm91bmRhcnkgdG8gY3Jvc3Mg4oCUIGRpc3BhdGNoIGRpcmVjdGx5IHRvIGFueSBtYXRjaGluZyBsaXZlXG4gICAqIHN1YnNjcmlwdGlvbnMgb24gdGhlIHNoYXJlZCBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+fSBhcmdzLmJyb2FkY2FzdFBhcmFtcyAtIFJvdXRpbmcgZmlsdGVyIHBhcmFtcy5cbiAgICogQHBhcmFtIHs/fSBhcmdzLmJvZHkgLSBNZXNzYWdlIGJvZHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5ldmVudElkXSAtIFBlcnNpc3RlZCBldmVudCBpZCBmb3IgcmVwbGF5LlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGRpc3BhdGNoV2Vic29ja2V0VjJCcm9hZGNhc3Qoe2JvZHksIGJyb2FkY2FzdFBhcmFtcywgY2hhbm5lbCwgZXZlbnRJZH0pIHtcbiAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvbikgcmV0dXJuXG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLl9icm9hZGNhc3RUb0NoYW5uZWxMb2NhbChjaGFubmVsLCBicm9hZGNhc3RQYXJhbXMsIGJvZHksIHtldmVudElkfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGRpc3BhdGNoIHdlYnNvY2tldCBldmVudC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmNyZWF0ZWRBdF0gLSBFdmVudCBjcmVhdGlvbiB0aW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuZXZlbnRJZF0gLSBFdmVudCBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0gez99IGFyZ3MucGF5bG9hZCAtIFBheWxvYWQgZGF0YS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBkaXNwYXRjaFdlYnNvY2tldEV2ZW50KHtjaGFubmVsLCBjcmVhdGVkQXQsIGV2ZW50SWQsIHBheWxvYWR9KSB7XG4gICAgZm9yIChjb25zdCB7aHR0cENsaWVudH0gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmNsaWVudHMpKSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gaHR0cENsaWVudC53ZWJzb2NrZXRTZXNzaW9uXG5cbiAgICAgIGlmICghc2Vzc2lvbikgY29udGludWVcblxuICAgICAgdm9pZCBzZXNzaW9uLnNlbmRFdmVudChjaGFubmVsLCBwYXlsb2FkLCB7Y3JlYXRlZEF0LCBldmVudElkfSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uKSB7XG4gICAgICAvLyBJc29sYXRlIHN1YnNjcmliZXIgZmFpbHVyZXMgZnJvbSBicmVha2luZyB0aGUgaW4tcHJvY2VzcyBoYW5kbGVyLFxuICAgICAgLy8gYnV0IHN0aWxsIHN1cmZhY2UgdGhlbSB0byB0aGUgZnJhbWV3b3JrIGVycm9yIGV2ZW50cyBzbyBidWdcbiAgICAgIC8vIHJlcG9ydGVycyBjYW4gcGljayB0aGVtIHVwLlxuICAgICAgdm9pZCBkaXNwYXRjaENoYW5uZWxTdWJzY3JpYmVycyh7Y2hhbm5lbCwgY29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9uLCBjcmVhdGVkQXQsIGV2ZW50SWQsIGxvZ2dlcjogdGhpcy5sb2dnZXIsIHBheWxvYWR9KVxuICAgIH1cbiAgfVxufVxuIl19
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9odHRwLXNlcnZlci93b3JrZXItaGFuZGxlci9pbi1wcm9jZXNzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLDBCQUEwQixNQUFNLGtDQUFrQyxDQUFBO0FBQ3pFLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sbUJBQW1CLE1BQU0sNkJBQTZCLENBQUE7QUFFN0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLG1DQUFtQztJQUN0RDs7Ozs7T0FLRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsV0FBVyxFQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBRWxDOzsrR0FFdUc7UUFDdkcsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDOztvRkFFZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNwRixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUN4QixDQUFDO0lBRUQ7O2tDQUU4QjtJQUM5QixLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLElBQUksQ0FBQyxXQUFXLFVBQVUsQ0FBQyxDQUFBO0lBQ2pGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsWUFBWTtRQUM5QixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFBO1FBRTVDLE1BQU0sVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDO1lBQzVCLFdBQVc7WUFDWCxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsYUFBYSxFQUFFLFlBQVksQ0FBQyxhQUFhO1NBQzFDLENBQUMsQ0FBQTtRQUVGLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3hDLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVDLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxpQ0FBaUMsRUFBRSxFQUFDLFdBQVcsRUFBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7Z0JBQ3BGLENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNqQyxLQUFLLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDbEMsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBQyxDQUFBO1FBRXRELHlFQUF5RTtRQUN6RSxzRUFBc0U7UUFDdEUsTUFBTSxlQUFlLEdBQUc7OzZFQUU2QyxDQUFDLEVBQUM7O29FQUVlLENBQUM7WUFDckYsV0FBVyxFQUFFLENBQUM7O3FIQUUyRixDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNoSCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxLQUFLLEdBQUcsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUVoRyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUMzQixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQyxDQUFBO1FBRUgsWUFBWSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUN2QyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVEOztrQ0FFOEI7SUFDOUIsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtRQUVyQixLQUFLLE1BQU0sRUFBQyxZQUFZLEVBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQztnQkFDSCxLQUFLLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUN6QixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNuRSxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ2pCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCw0QkFBNEIsQ0FBQyxFQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQztRQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFNO1FBRS9CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsc0JBQXNCLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUM7UUFDM0QsS0FBSyxNQUFNLEVBQUMsVUFBVSxFQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUE7WUFFM0MsSUFBSSxDQUFDLE9BQU87Z0JBQUUsU0FBUTtZQUV0QixLQUFLLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFBO1FBQ2hFLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixvRUFBb0U7WUFDcEUsOERBQThEO1lBQzlELDhCQUE4QjtZQUM5QixLQUFLLDBCQUEwQixDQUFDLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQTtRQUNqSSxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBDbGllbnQgZnJvbSBcIi4uL2NsaWVudC9pbmRleC5qc1wiXG5pbXBvcnQgZGlzcGF0Y2hDaGFubmVsU3Vic2NyaWJlcnMgZnJvbSBcIi4vY2hhbm5lbC1zdWJzY3JpYmVyLWRpc3BhdGNoLmpzXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4uLy4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgd2Vic29ja2V0RXZlbnRzSG9zdCBmcm9tIFwiLi4vd2Vic29ja2V0LWV2ZW50cy1ob3N0LmpzXCJcblxuLyoqXG4gKiBJbi1wcm9jZXNzIHdvcmtlciBoYW5kbGVyIHRoYXQgcHJvY2Vzc2VzIEhUVFAgcmVxdWVzdHMgaW4gdGhlIG1haW4gdGhyZWFkXG4gKiBpbnN0ZWFkIG9mIHNwYXduaW5nIGEgV29ya2VyIHRocmVhZC4gVGhpcyBhbGxvd3MgdGhlIHRlc3QgcnVubmVyJ3MgZGF0YWJhc2VcbiAqIGNvbm5lY3Rpb24gY29udGV4dCB0byBiZSBzaGFyZWQgd2l0aCBIVFRQIHJlcXVlc3QgaGFuZGxlcnMsIHNvIG1vZGVsLWNyZWF0ZWRcbiAqIHJlY29yZHMgaW4gdGVzdHMgYXJlIHZpc2libGUgdG8gSFRUUCBlbmRwb2ludHMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJJblByb2Nlc3NIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy53b3JrZXJDb3VudCAtIFdvcmtlciBjb3VudC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCB3b3JrZXJDb3VudH0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG5cbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICogQHR5cGUge1JlY29yZDxudW1iZXIsIHtodHRwQ2xpZW50OiBDbGllbnQsIHNlcnZlckNsaWVudDogaW1wb3J0KFwiLi4vc2VydmVyLWNsaWVudC5qc1wiKS5kZWZhdWx0fT59ICovXG4gICAgdGhpcy5jbGllbnRzID0ge31cblxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMud29ya2VyQ291bnQgPSB3b3JrZXJDb3VudFxuICAgIHRoaXMudW5yZWdpc3RlckZyb21FdmVudHNIb3N0ID0gd2Vic29ja2V0RXZlbnRzSG9zdC5yZWdpc3RlcigvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7P30gKi8gKHRoaXMpKVxuICAgIHRoaXMuX3N0b3BwaW5nID0gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHN0YXJ0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gYEluLXByb2Nlc3MgaGFuZGxlciAke3RoaXMud29ya2VyQ291bnR9IHN0YXJ0ZWRgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWRkIHNvY2tldCBjb25uZWN0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlcnZlci1jbGllbnQuanNcIikuZGVmYXVsdH0gc2VydmVyQ2xpZW50IC0gU2VydmVyIGNsaWVudCBpbnN0YW5jZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBhZGRTb2NrZXRDb25uZWN0aW9uKHNlcnZlckNsaWVudCkge1xuICAgIGNvbnN0IGNsaWVudENvdW50ID0gc2VydmVyQ2xpZW50LmNsaWVudENvdW50XG5cbiAgICBjb25zdCBodHRwQ2xpZW50ID0gbmV3IENsaWVudCh7XG4gICAgICBjbGllbnRDb3VudCxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgIHJlbW90ZUFkZHJlc3M6IHNlcnZlckNsaWVudC5yZW1vdGVBZGRyZXNzXG4gICAgfSlcblxuICAgIGh0dHBDbGllbnQuZXZlbnRzLm9uKFwib3V0cHV0XCIsIChvdXRwdXQpID0+IHtcbiAgICAgIGlmIChvdXRwdXQgIT09IG51bGwgJiYgb3V0cHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdm9pZCBzZXJ2ZXJDbGllbnQuc2VuZChvdXRwdXQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCgpID0+IFtcIkZhaWxlZCB0byBkZWxpdmVyIGNsaWVudCBvdXRwdXRcIiwge2NsaWVudENvdW50fSwgZXJyb3JdKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBodHRwQ2xpZW50LmV2ZW50cy5vbihcImNsb3NlXCIsICgpID0+IHtcbiAgICAgIHZvaWQgc2VydmVyQ2xpZW50LmVuZCgpXG4gICAgICBkZWxldGUgdGhpcy5jbGllbnRzW2NsaWVudENvdW50XVxuICAgIH0pXG5cbiAgICB0aGlzLmNsaWVudHNbY2xpZW50Q291bnRdID0ge2h0dHBDbGllbnQsIHNlcnZlckNsaWVudH1cblxuICAgIC8vIENyZWF0ZSBhIG1lc3NhZ2UtcG9ydCBzaGltIHNvIFNlcnZlckNsaWVudC5vblNvY2tldERhdGEgY2FuIHJvdXRlIGRhdGFcbiAgICAvLyB0byB0aGUgaW4tcHJvY2VzcyBIVFRQIENsaWVudCB3aXRob3V0IG5lZWRpbmcgYSByZWFsIHdvcmtlciB0aHJlYWQuXG4gICAgY29uc3QgbWVzc2FnZVBvcnRTaGltID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHtpbXBvcnQoXCJ3b3JrZXJfdGhyZWFkc1wiKS5Xb3JrZXJ9ICovICgvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7P30gKi8gKHtcbiAgICAgIHBvc3RNZXNzYWdlOiAoLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICogQHR5cGUge3tjb21tYW5kOiBzdHJpbmcsIGNodW5rPzogQnVmZmVyIHwgVWludDhBcnJheSB8IHN0cmluZywgY2xpZW50Q291bnQ/OiBudW1iZXJ9fSAqLyBkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmNvbW1hbmQgPT09IFwiY2xpZW50V3JpdGVcIiAmJiBkYXRhLmNodW5rKSB7XG4gICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jaHVuayA9PT0gXCJzdHJpbmdcIiA/IEJ1ZmZlci5mcm9tKGRhdGEuY2h1bmspIDogQnVmZmVyLmZyb20oZGF0YS5jaHVuaylcblxuICAgICAgICAgIGh0dHBDbGllbnQub25Xcml0ZShjaHVuaylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKVxuXG4gICAgc2VydmVyQ2xpZW50LnNldFdvcmtlcihtZXNzYWdlUG9ydFNoaW0pXG4gICAgc2VydmVyQ2xpZW50Lmxpc3RlbigpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzdG9wLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgYXN5bmMgc3RvcCgpIHtcbiAgICB0aGlzLl9zdG9wcGluZyA9IHRydWVcblxuICAgIGZvciAoY29uc3Qge3NlcnZlckNsaWVudH0gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmNsaWVudHMpKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2b2lkIHNlcnZlckNsaWVudC5lbmQoKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihcIkZhaWxlZCB0byBjbG9zZSBjbGllbnQgZHVyaW5nIHNodXRkb3duXCIsIGVycm9yKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2xpZW50cyA9IHt9XG4gICAgdGhpcy51bnJlZ2lzdGVyRnJvbUV2ZW50c0hvc3Q/LigpXG4gIH1cblxuICAvKipcbiAgICogSW4tcHJvY2VzcyBoYW5kbGVyIHBhdGggZm9yIFYyIGNoYW5uZWwgYnJvYWRjYXN0cy4gTm8gd29ya2VyXG4gICAqIGJvdW5kYXJ5IHRvIGNyb3NzIOKAlCBkaXNwYXRjaCBkaXJlY3RseSB0byBhbnkgbWF0Y2hpbmcgbGl2ZVxuICAgKiBzdWJzY3JpcHRpb25zIG9uIHRoZSBzaGFyZWQgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gYXJncy5icm9hZGNhc3RQYXJhbXMgLSBSb3V0aW5nIGZpbHRlciBwYXJhbXMuXG4gICAqIEBwYXJhbSB7P30gYXJncy5ib2R5IC0gTWVzc2FnZSBib2R5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuZXZlbnRJZF0gLSBQZXJzaXN0ZWQgZXZlbnQgaWQgZm9yIHJlcGxheS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBkaXNwYXRjaFdlYnNvY2tldFYyQnJvYWRjYXN0KHtib2R5LCBicm9hZGNhc3RQYXJhbXMsIGNoYW5uZWwsIGV2ZW50SWR9KSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb24pIHJldHVyblxuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi5fYnJvYWRjYXN0VG9DaGFubmVsTG9jYWwoY2hhbm5lbCwgYnJvYWRjYXN0UGFyYW1zLCBib2R5LCB7ZXZlbnRJZH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkaXNwYXRjaCB3ZWJzb2NrZXQgZXZlbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5jcmVhdGVkQXRdIC0gRXZlbnQgY3JlYXRpb24gdGltZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmV2ZW50SWRdIC0gRXZlbnQgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHs/fSBhcmdzLnBheWxvYWQgLSBQYXlsb2FkIGRhdGEuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZGlzcGF0Y2hXZWJzb2NrZXRFdmVudCh7Y2hhbm5lbCwgY3JlYXRlZEF0LCBldmVudElkLCBwYXlsb2FkfSkge1xuICAgIGZvciAoY29uc3Qge2h0dHBDbGllbnR9IG9mIE9iamVjdC52YWx1ZXModGhpcy5jbGllbnRzKSkge1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGh0dHBDbGllbnQud2Vic29ja2V0U2Vzc2lvblxuXG4gICAgICBpZiAoIXNlc3Npb24pIGNvbnRpbnVlXG5cbiAgICAgIHZvaWQgc2Vzc2lvbi5zZW5kRXZlbnQoY2hhbm5lbCwgcGF5bG9hZCwge2NyZWF0ZWRBdCwgZXZlbnRJZH0pXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbikge1xuICAgICAgLy8gSXNvbGF0ZSBzdWJzY3JpYmVyIGZhaWx1cmVzIGZyb20gYnJlYWtpbmcgdGhlIGluLXByb2Nlc3MgaGFuZGxlcixcbiAgICAgIC8vIGJ1dCBzdGlsbCBzdXJmYWNlIHRoZW0gdG8gdGhlIGZyYW1ld29yayBlcnJvciBldmVudHMgc28gYnVnXG4gICAgICAvLyByZXBvcnRlcnMgY2FuIHBpY2sgdGhlbSB1cC5cbiAgICAgIHZvaWQgZGlzcGF0Y2hDaGFubmVsU3Vic2NyaWJlcnMoe2NoYW5uZWwsIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbiwgY3JlYXRlZEF0LCBldmVudElkLCBsb2dnZXI6IHRoaXMubG9nZ2VyLCBwYXlsb2FkfSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -12,7 +12,7 @@ export default class VelociousHttpServerWorker {
|
|
|
12
12
|
configuration: import("../../configuration.js").default;
|
|
13
13
|
/**
|
|
14
14
|
* Narrows the runtime value to the documented type.
|
|
15
|
-
|
|
15
|
+
* @type {Record<number, import("../server-client.js").default>} */
|
|
16
16
|
clients: Record<number, import("../server-client.js").default>;
|
|
17
17
|
logger: Logger;
|
|
18
18
|
workerCount: number;
|
|
@@ -21,7 +21,7 @@ export default class VelociousHttpServerWorker {
|
|
|
21
21
|
_debugRequestId: number;
|
|
22
22
|
/**
|
|
23
23
|
* Narrows the runtime value to the documented type.
|
|
24
|
-
|
|
24
|
+
* @type {Map<number, {resolve: (snapshot: Record<string, ?>) => void}>} */
|
|
25
25
|
_debugSnapshotRequests: Map<number, {
|
|
26
26
|
resolve: (snapshot: Record<string, unknown>) => void;
|
|
27
27
|
}>;
|
|
@@ -123,12 +123,12 @@ export default class VelociousHttpServerWorker {
|
|
|
123
123
|
}): void;
|
|
124
124
|
/**
|
|
125
125
|
* Runs register with events host.
|
|
126
|
-
|
|
126
|
+
* @returns {void} */
|
|
127
127
|
registerWithEventsHost(): void;
|
|
128
128
|
unregisterFromEventsHost: (() => void) | null | undefined;
|
|
129
129
|
/**
|
|
130
130
|
* Runs unregister from events host if needed.
|
|
131
|
-
|
|
131
|
+
* @returns {void} */
|
|
132
132
|
unregisterFromEventsHostIfNeeded(): void;
|
|
133
133
|
}
|
|
134
134
|
import Logger from "../../logger.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http-server/worker-handler/index.js"],"names":[],"mappings":"AAoCA;IACE;;;;;OAKG;IACH,4CAHG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC3B,WAAW,EAAxB,MAAM;KAChB,EAkBA;IAhBC,wDAAkC;IAElC;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http-server/worker-handler/index.js"],"names":[],"mappings":"AAoCA;IACE;;;;;OAKG;IACH,4CAHG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC3B,WAAW,EAAxB,MAAM;KAChB,EAkBA;IAhBC,wDAAkC;IAElC;;uEAEmE;IACnE,SADU,MAAM,CAAC,MAAM,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAC9C;IAEjB,eAA8B;IAC9B,oBAA8B;IAC9B,uBAA0B;IAC1B,mBAAsB;IACtB,wBAAwB;IACxB;;+EAE2E;IAC3E,wBADU,GAAG,CAAC,MAAM,EAAE;QAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,IAAI,CAAA;KAAC,CAAC,CAChC;IAGzC,sBAKC;IAHG,2DAA8B;IAKlC,8BAgBC;IAXC,2BAOE;IAMJ;;;;OAIG;IACH,4BAHW,OAAO,qBAAqB,EAAE,OAAO,GACnC,IAAI,CAYhB;IAED;;;OAGG;IACH,gBAAiB,OAFN,OAEW,WAIrB;IAED;;;;OAIG;IACH,eAAgB,MAHL,MAGS,KAFP,IAAI,CAmBhB;IAhBC,gCAAsB;IAetB,6EAAwB;IAG1B;;;OAGG;IACH,oBAFa,IAAI,CAahB;IAED;;;;;;;;;;;;;OAaG;IACH,kBAAmB,MAXhB;QAAqB,OAAO,EAApB,MAAM;QACQ,WAAW;QACE,MAAM;QACnB,OAAO;QACP,SAAS;QACE,QAAQ;QACxB,OAAO,GAAhB,OAAC;QACwB,eAAe;QAC/B,IAAI,GAAb,OAAC;KAGW,KAFV,IAAI,CAyFhB;IAED;;;OAGG;IACH,oBAFa,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,CAiCtC;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAiBzB;IAED;;;;;;;;OAQG;IACH,iEANG;QAAqB,OAAO,EAApB,MAAM;QACQ,SAAS;QACT,OAAO;QACb,OAAO,EAAf,OAAC;KACT,GAAU,IAAI,CAQhB;IAED;;;;;;;;;;OAUG;IACH,qFAPG;QAAqB,OAAO,EAApB,MAAM;QACkB,eAAe,EAAvC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;QACT,IAAI,EAAZ,OAAC;QACa,OAAO;QACP,SAAS;KAC/B,GAAU,IAAI,CAOhB;IAED;;yBAEqB;IACrB,0BADa,IAAI,CAKhB;IADC,0DAAkE;IAGpE;;yBAEqB;IACrB,oCADa,IAAI,CAMhB;CACF;mBA/WkB,iBAAiB;uBACf,gBAAgB"}
|