@aerokit/sdk 12.80.0 → 12.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/bpm/deployer.js +1 -1
- package/dist/cjs/bpm/index.js +1 -1
- package/dist/cjs/bpm/process.js +1 -1
- package/dist/cjs/bpm/tasks.js +1 -1
- package/dist/cjs/bpm/tracer.js +1 -1
- package/dist/cjs/bpm/values.js +1 -1
- package/dist/cjs/cache/cache.js +1 -1
- package/dist/cjs/cache/index.js +1 -1
- package/dist/cjs/cms/cmis.js +1 -1
- package/dist/cjs/cms/index.js +1 -1
- package/dist/cjs/component/decorators.js +1 -1
- package/dist/cjs/component/index.js +1 -1
- package/dist/cjs/core/configurations.js +1 -1
- package/dist/cjs/core/context.js +1 -1
- package/dist/cjs/core/env.js +1 -1
- package/dist/cjs/core/globals.js +1 -1
- package/dist/cjs/core/index.js +1 -1
- package/dist/cjs/db/dao.js +1 -1
- package/dist/cjs/db/database.js +1 -1
- package/dist/cjs/db/decorators.js +1 -1
- package/dist/cjs/db/index.js +1 -1
- package/dist/cjs/db/insert.js +1 -1
- package/dist/cjs/db/orm.js +1 -1
- package/dist/cjs/db/ormstatements.js +1 -1
- package/dist/cjs/db/procedure.js +1 -1
- package/dist/cjs/db/query.js +1 -1
- package/dist/cjs/db/repository.js +1 -1
- package/dist/cjs/db/sequence.js +1 -1
- package/dist/cjs/db/sql.js +1 -1
- package/dist/cjs/db/store.js +1 -1
- package/dist/cjs/db/translator.js +1 -1
- package/dist/cjs/db/update.js +1 -1
- package/dist/cjs/etcd/client.js +1 -1
- package/dist/cjs/etcd/index.js +1 -1
- package/dist/cjs/extensions/decorators.js +1 -1
- package/dist/cjs/extensions/extensions.js +1 -1
- package/dist/cjs/extensions/index.js +1 -1
- package/dist/cjs/git/client.js +1 -1
- package/dist/cjs/git/index.js +1 -1
- package/dist/cjs/http/client-async.js +1 -1
- package/dist/cjs/http/client.js +1 -1
- package/dist/cjs/http/decorators.js +1 -1
- package/dist/cjs/http/errors/ForbiddenError.js +1 -1
- package/dist/cjs/http/errors/ValidationError.js +1 -1
- package/dist/cjs/http/errors.js +1 -1
- package/dist/cjs/http/index.js +1 -1
- package/dist/cjs/http/request.js +1 -1
- package/dist/cjs/http/response.js +1 -1
- package/dist/cjs/http/rs/resource-http-controller.js +1 -1
- package/dist/cjs/http/rs/resource-mappings.js +1 -1
- package/dist/cjs/http/rs/resource-method.js +1 -1
- package/dist/cjs/http/rs/resource.js +1 -1
- package/dist/cjs/http/rs.js +1 -1
- package/dist/cjs/http/session.js +1 -1
- package/dist/cjs/http/upload.js +1 -1
- package/dist/cjs/http/utils.js +1 -1
- package/dist/cjs/indexing/index.js +1 -1
- package/dist/cjs/indexing/searcher.js +1 -1
- package/dist/cjs/indexing/writer.js +1 -1
- package/dist/cjs/integrations/index.js +1 -1
- package/dist/cjs/integrations/integrations.js +1 -1
- package/dist/cjs/io/bytes.js +1 -1
- package/dist/cjs/io/files.js +1 -1
- package/dist/cjs/io/image.js +1 -1
- package/dist/cjs/io/index.js +1 -1
- package/dist/cjs/io/streams.js +1 -1
- package/dist/cjs/io/zip.js +1 -1
- package/dist/cjs/job/decorators.js +1 -1
- package/dist/cjs/job/index.js +1 -1
- package/dist/cjs/job/scheduler.js +1 -1
- package/dist/cjs/junit/index.js +1 -1
- package/dist/cjs/junit/junit.js +1 -1
- package/dist/cjs/kafka/consumer.js +1 -1
- package/dist/cjs/kafka/index.js +1 -1
- package/dist/cjs/kafka/producer.js +1 -1
- package/dist/cjs/log/index.js +1 -1
- package/dist/cjs/log/logging.js +1 -1
- package/dist/cjs/mail/client.js +1 -1
- package/dist/cjs/mail/index.js +1 -1
- package/dist/cjs/messaging/consumer.js +1 -1
- package/dist/cjs/messaging/decorators.js +1 -1
- package/dist/cjs/messaging/index.js +1 -1
- package/dist/cjs/messaging/producer.js +1 -1
- package/dist/cjs/mongodb/client.js +1 -1
- package/dist/cjs/mongodb/dao.js +1 -1
- package/dist/cjs/mongodb/index.js +1 -1
- package/dist/cjs/net/decorators.js +1 -1
- package/dist/cjs/net/index.js +1 -1
- package/dist/cjs/net/soap.js +1 -1
- package/dist/cjs/net/websockets.js +1 -1
- package/dist/cjs/pdf/index.js +1 -1
- package/dist/cjs/pdf/pdf.js +3 -3
- package/dist/cjs/platform/command.js +1 -1
- package/dist/cjs/platform/engines.js +1 -1
- package/dist/cjs/platform/index.js +1 -1
- package/dist/cjs/platform/lifecycle.js +1 -1
- package/dist/cjs/platform/os.js +1 -1
- package/dist/cjs/platform/problems.js +1 -1
- package/dist/cjs/platform/registry.js +1 -1
- package/dist/cjs/platform/repository.js +1 -1
- package/dist/cjs/platform/workspace.js +1 -1
- package/dist/cjs/qldb/index.js +1 -1
- package/dist/cjs/qldb/qldb.js +1 -1
- package/dist/cjs/rabbitmq/consumer.js +1 -1
- package/dist/cjs/rabbitmq/index.js +1 -1
- package/dist/cjs/rabbitmq/producer.js +1 -1
- package/dist/cjs/redis/client.js +1 -1
- package/dist/cjs/redis/index.js +1 -1
- package/dist/cjs/security/decorators.js +1 -1
- package/dist/cjs/security/index.js +1 -1
- package/dist/cjs/security/oauth.js +1 -1
- package/dist/cjs/security/user.js +1 -1
- package/dist/cjs/template/engines.js +1 -1
- package/dist/cjs/template/index.js +1 -1
- package/dist/cjs/utils/alphanumeric.js +2 -2
- package/dist/cjs/utils/base64.js +1 -1
- package/dist/cjs/utils/converter.js +1 -1
- package/dist/cjs/utils/digest.js +1 -1
- package/dist/cjs/utils/escape.js +1 -1
- package/dist/cjs/utils/hex.js +1 -1
- package/dist/cjs/utils/index.js +1 -1
- package/dist/cjs/utils/jsonpath.js +1 -1
- package/dist/cjs/utils/qrcode.js +1 -1
- package/dist/cjs/utils/url.js +1 -1
- package/dist/cjs/utils/utf8.js +1 -1
- package/dist/cjs/utils/uuid.js +1 -1
- package/dist/cjs/utils/xml.js +1 -1
- package/dist/dts/bpm/deployer.d.ts +35 -3
- package/dist/dts/bpm/index.d.ts +14 -0
- package/dist/dts/bpm/process.d.ts +28 -3
- package/dist/dts/bpm/tasks.d.ts +32 -1
- package/dist/dts/bpm/tracer.d.ts +35 -0
- package/dist/dts/bpm/values.d.ts +17 -3
- package/dist/dts/cache/cache.d.ts +38 -0
- package/dist/dts/cache/index.d.ts +10 -0
- package/dist/dts/cms/cmis.d.ts +28 -3
- package/dist/dts/cms/index.d.ts +10 -0
- package/dist/dts/component/decorators.d.ts +35 -5
- package/dist/dts/component/index.d.ts +10 -0
- package/dist/dts/core/configurations.d.ts +43 -4
- package/dist/dts/core/context.d.ts +35 -2
- package/dist/dts/core/env.d.ts +29 -2
- package/dist/dts/core/globals.d.ts +34 -2
- package/dist/dts/core/index.d.ts +13 -0
- package/dist/dts/db/database.d.ts +34 -0
- package/dist/dts/db/decorators.d.ts +55 -2
- package/dist/dts/db/index.d.ts +19 -0
- package/dist/dts/db/orm.d.ts +43 -0
- package/dist/dts/db/procedure.d.ts +37 -0
- package/dist/dts/db/query.d.ts +25 -1
- package/dist/dts/db/repository.d.ts +52 -0
- package/dist/dts/db/sequence.d.ts +31 -2
- package/dist/dts/db/sql.d.ts +33 -0
- package/dist/dts/db/store.d.ts +27 -0
- package/dist/dts/db/translator.d.ts +34 -1
- package/dist/dts/db/update.d.ts +38 -0
- package/dist/dts/etcd/client.d.ts +36 -0
- package/dist/dts/etcd/index.d.ts +10 -0
- package/dist/dts/extensions/decorators.d.ts +28 -0
- package/dist/dts/extensions/extensions.d.ts +30 -1
- package/dist/dts/extensions/index.d.ts +11 -0
- package/dist/dts/git/client.d.ts +28 -0
- package/dist/dts/git/index.d.ts +10 -0
- package/dist/dts/http/client-async.d.ts +29 -1
- package/dist/dts/http/client.d.ts +29 -1
- package/dist/dts/http/decorators.d.ts +38 -0
- package/dist/dts/http/errors/ForbiddenError.d.ts +6 -2
- package/dist/dts/http/errors/ValidationError.d.ts +6 -2
- package/dist/dts/http/errors.d.ts +14 -0
- package/dist/dts/http/index.d.ts +18 -0
- package/dist/dts/http/request.d.ts +30 -3
- package/dist/dts/http/response.d.ts +40 -3
- package/dist/dts/http/rs/resource-mappings.d.ts +30 -0
- package/dist/dts/http/rs.d.ts +38 -0
- package/dist/dts/http/session.d.ts +34 -3
- package/dist/dts/http/upload.d.ts +27 -2
- package/dist/dts/http/utils.d.ts +42 -0
- package/dist/dts/indexing/index.d.ts +11 -0
- package/dist/dts/indexing/searcher.d.ts +35 -2
- package/dist/dts/indexing/writer.d.ts +23 -2
- package/dist/dts/integrations/index.d.ts +10 -0
- package/dist/dts/integrations/integrations.d.ts +27 -3
- package/dist/dts/io/bytes.d.ts +33 -2
- package/dist/dts/io/files.d.ts +34 -2
- package/dist/dts/io/image.d.ts +27 -2
- package/dist/dts/io/index.d.ts +14 -0
- package/dist/dts/io/streams.d.ts +40 -0
- package/dist/dts/io/zip.d.ts +32 -0
- package/dist/dts/job/decorators.d.ts +29 -0
- package/dist/dts/job/index.d.ts +11 -0
- package/dist/dts/job/scheduler.d.ts +33 -2
- package/dist/dts/junit/index.d.ts +10 -0
- package/dist/dts/junit/junit.d.ts +31 -0
- package/dist/dts/kafka/consumer.d.ts +31 -0
- package/dist/dts/kafka/index.d.ts +11 -0
- package/dist/dts/kafka/producer.d.ts +31 -0
- package/dist/dts/log/index.d.ts +10 -0
- package/dist/dts/log/logging.d.ts +32 -0
- package/dist/dts/mail/client.d.ts +27 -0
- package/dist/dts/mail/index.d.ts +10 -0
- package/dist/dts/messaging/consumer.d.ts +29 -2
- package/dist/dts/messaging/decorators.d.ts +32 -0
- package/dist/dts/messaging/index.d.ts +12 -0
- package/dist/dts/messaging/producer.d.ts +27 -2
- package/dist/dts/mongodb/client.d.ts +37 -0
- package/dist/dts/mongodb/dao.d.ts +53 -0
- package/dist/dts/mongodb/index.d.ts +11 -0
- package/dist/dts/net/decorators.d.ts +27 -0
- package/dist/dts/net/index.d.ts +13 -0
- package/dist/dts/net/soap.d.ts +34 -0
- package/dist/dts/net/websockets.d.ts +34 -0
- package/dist/dts/pdf/index.d.ts +10 -0
- package/dist/dts/pdf/pdf.d.ts +41 -2
- package/dist/dts/platform/command.d.ts +26 -0
- package/dist/dts/platform/engines.d.ts +38 -0
- package/dist/dts/platform/index.d.ts +19 -0
- package/dist/dts/platform/lifecycle.d.ts +29 -0
- package/dist/dts/platform/os.d.ts +30 -0
- package/dist/dts/platform/problems.d.ts +36 -0
- package/dist/dts/platform/registry.d.ts +39 -0
- package/dist/dts/platform/repository.d.ts +40 -0
- package/dist/dts/platform/workspace.d.ts +42 -0
- package/dist/dts/qldb/index.d.ts +12 -0
- package/dist/dts/qldb/qldb.d.ts +14 -0
- package/dist/dts/rabbitmq/consumer.d.ts +24 -3
- package/dist/dts/rabbitmq/index.d.ts +13 -0
- package/dist/dts/rabbitmq/producer.d.ts +20 -3
- package/dist/dts/redis/client.d.ts +31 -3
- package/dist/dts/redis/index.d.ts +12 -0
- package/dist/dts/security/decorators.d.ts +34 -0
- package/dist/dts/security/index.d.ts +14 -0
- package/dist/dts/security/oauth.d.ts +27 -0
- package/dist/dts/security/user.d.ts +39 -0
- package/dist/dts/template/engines.d.ts +31 -0
- package/dist/dts/template/index.d.ts +12 -0
- package/dist/dts/utils/alphanumeric.d.ts +36 -2
- package/dist/dts/utils/base64.d.ts +30 -0
- package/dist/dts/utils/converter.d.ts +37 -2
- package/dist/dts/utils/digest.d.ts +31 -0
- package/dist/dts/utils/escape.d.ts +28 -3
- package/dist/dts/utils/hex.d.ts +30 -0
- package/dist/dts/utils/index.d.ts +23 -0
- package/dist/dts/utils/jsonpath.d.ts +43 -0
- package/dist/dts/utils/qrcode.d.ts +24 -3
- package/dist/dts/utils/url.d.ts +37 -3
- package/dist/dts/utils/utf8.d.ts +34 -3
- package/dist/dts/utils/uuid.d.ts +28 -2
- package/dist/dts/utils/xml.d.ts +31 -2
- package/dist/esm/bpm/deployer.mjs +1 -1
- package/dist/esm/bpm/index.mjs +1 -1
- package/dist/esm/bpm/process.mjs +1 -1
- package/dist/esm/bpm/tasks.mjs +1 -1
- package/dist/esm/bpm/tracer.mjs +1 -1
- package/dist/esm/bpm/values.mjs +1 -1
- package/dist/esm/cache/cache.mjs +1 -1
- package/dist/esm/cache/index.mjs +1 -1
- package/dist/esm/cms/cmis.mjs +1 -1
- package/dist/esm/cms/index.mjs +1 -1
- package/dist/esm/component/decorators.mjs +1 -1
- package/dist/esm/component/index.mjs +1 -1
- package/dist/esm/core/configurations.mjs +1 -1
- package/dist/esm/core/context.mjs +1 -1
- package/dist/esm/core/env.mjs +1 -1
- package/dist/esm/core/globals.mjs +1 -1
- package/dist/esm/core/index.mjs +1 -1
- package/dist/esm/db/dao.mjs +1 -1
- package/dist/esm/db/database.mjs +1 -1
- package/dist/esm/db/decorators.mjs +1 -1
- package/dist/esm/db/index.mjs +1 -1
- package/dist/esm/db/insert.mjs +1 -1
- package/dist/esm/db/orm.mjs +1 -1
- package/dist/esm/db/ormstatements.mjs +1 -1
- package/dist/esm/db/procedure.mjs +1 -1
- package/dist/esm/db/query.mjs +1 -1
- package/dist/esm/db/repository.mjs +1 -1
- package/dist/esm/db/sequence.mjs +1 -1
- package/dist/esm/db/sql.mjs +1 -1
- package/dist/esm/db/store.mjs +1 -1
- package/dist/esm/db/translator.mjs +1 -1
- package/dist/esm/db/update.mjs +1 -1
- package/dist/esm/etcd/client.mjs +1 -1
- package/dist/esm/etcd/index.mjs +1 -1
- package/dist/esm/extensions/decorators.mjs +1 -1
- package/dist/esm/extensions/extensions.mjs +1 -1
- package/dist/esm/extensions/index.mjs +1 -1
- package/dist/esm/git/client.mjs +1 -1
- package/dist/esm/git/index.mjs +1 -1
- package/dist/esm/http/client-async.mjs +1 -1
- package/dist/esm/http/client.mjs +1 -1
- package/dist/esm/http/decorators.mjs +1 -1
- package/dist/esm/http/errors/ForbiddenError.mjs +1 -1
- package/dist/esm/http/errors/ValidationError.mjs +1 -1
- package/dist/esm/http/errors.mjs +1 -1
- package/dist/esm/http/index.mjs +1 -1
- package/dist/esm/http/request.mjs +1 -1
- package/dist/esm/http/response.mjs +1 -1
- package/dist/esm/http/rs/resource-http-controller.mjs +1 -1
- package/dist/esm/http/rs/resource-mappings.mjs +1 -1
- package/dist/esm/http/rs/resource-method.mjs +1 -1
- package/dist/esm/http/rs/resource.mjs +1 -1
- package/dist/esm/http/rs.mjs +1 -1
- package/dist/esm/http/session.mjs +1 -1
- package/dist/esm/http/upload.mjs +1 -1
- package/dist/esm/http/utils.mjs +1 -1
- package/dist/esm/indexing/index.mjs +1 -1
- package/dist/esm/indexing/searcher.mjs +1 -1
- package/dist/esm/indexing/writer.mjs +1 -1
- package/dist/esm/integrations/index.mjs +1 -1
- package/dist/esm/integrations/integrations.mjs +1 -1
- package/dist/esm/io/bytes.mjs +1 -1
- package/dist/esm/io/files.mjs +1 -1
- package/dist/esm/io/image.mjs +1 -1
- package/dist/esm/io/index.mjs +1 -1
- package/dist/esm/io/streams.mjs +1 -1
- package/dist/esm/io/zip.mjs +1 -1
- package/dist/esm/job/decorators.mjs +1 -1
- package/dist/esm/job/index.mjs +1 -1
- package/dist/esm/job/scheduler.mjs +1 -1
- package/dist/esm/junit/index.mjs +1 -1
- package/dist/esm/junit/junit.mjs +1 -1
- package/dist/esm/kafka/consumer.mjs +1 -1
- package/dist/esm/kafka/index.mjs +1 -1
- package/dist/esm/kafka/producer.mjs +1 -1
- package/dist/esm/log/index.mjs +1 -1
- package/dist/esm/log/logging.mjs +1 -1
- package/dist/esm/mail/client.mjs +1 -1
- package/dist/esm/mail/index.mjs +1 -1
- package/dist/esm/messaging/consumer.mjs +1 -1
- package/dist/esm/messaging/decorators.mjs +1 -1
- package/dist/esm/messaging/index.mjs +1 -1
- package/dist/esm/messaging/producer.mjs +1 -1
- package/dist/esm/mongodb/client.mjs +2 -2
- package/dist/esm/mongodb/dao.mjs +1 -1
- package/dist/esm/mongodb/index.mjs +1 -1
- package/dist/esm/net/decorators.mjs +1 -1
- package/dist/esm/net/index.mjs +1 -1
- package/dist/esm/net/soap.mjs +1 -1
- package/dist/esm/net/websockets.mjs +1 -1
- package/dist/esm/pdf/index.mjs +1 -1
- package/dist/esm/pdf/pdf.mjs +3 -3
- package/dist/esm/platform/command.mjs +1 -1
- package/dist/esm/platform/engines.mjs +1 -1
- package/dist/esm/platform/index.mjs +1 -1
- package/dist/esm/platform/lifecycle.mjs +1 -1
- package/dist/esm/platform/os.mjs +1 -1
- package/dist/esm/platform/problems.mjs +1 -1
- package/dist/esm/platform/registry.mjs +1 -1
- package/dist/esm/platform/repository.mjs +1 -1
- package/dist/esm/platform/workspace.mjs +1 -1
- package/dist/esm/qldb/index.mjs +1 -1
- package/dist/esm/qldb/qldb.mjs +1 -1
- package/dist/esm/rabbitmq/consumer.mjs +1 -1
- package/dist/esm/rabbitmq/index.mjs +1 -1
- package/dist/esm/rabbitmq/producer.mjs +1 -1
- package/dist/esm/redis/client.mjs +1 -1
- package/dist/esm/redis/index.mjs +1 -1
- package/dist/esm/security/decorators.mjs +1 -1
- package/dist/esm/security/index.mjs +1 -1
- package/dist/esm/security/oauth.mjs +1 -1
- package/dist/esm/security/user.mjs +1 -1
- package/dist/esm/template/engines.mjs +1 -1
- package/dist/esm/template/index.mjs +1 -1
- package/dist/esm/utils/alphanumeric.mjs +2 -2
- package/dist/esm/utils/base64.mjs +1 -1
- package/dist/esm/utils/converter.mjs +1 -1
- package/dist/esm/utils/digest.mjs +1 -1
- package/dist/esm/utils/escape.mjs +1 -1
- package/dist/esm/utils/hex.mjs +1 -1
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/utils/jsonpath.mjs +1 -1
- package/dist/esm/utils/qrcode.mjs +1 -1
- package/dist/esm/utils/url.mjs +1 -1
- package/dist/esm/utils/utf8.mjs +1 -1
- package/dist/esm/utils/uuid.mjs +1 -1
- package/dist/esm/utils/xml.mjs +1 -1
- package/package.json +1 -1
|
@@ -61,4 +61,4 @@ if (typeof module !== "undefined") {
|
|
|
61
61
|
export {
|
|
62
62
|
Producer
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21lc3NhZ2luZy9wcm9kdWNlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIG1lc3NhZ2luZy9wcm9kdWNlclxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL21lc3NhZ2luZ1xuICogQG5hbWUgUHJvZHVjZXJcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgUHJvZHVjZXIgbW9kdWxlIHByb3ZpZGVzIGFuIEFQSSBmb3IgY29uZmlndXJpbmcgYW5kIG1hbmFnaW5nIG1lc3NhZ2luZyBwcm9kdWNlcnMsIGFsbG93aW5nIHNjcmlwdHMgdG8gc2VuZCBtZXNzYWdlcyB0byBKTVMtc3R5bGUgZGVzdGluYXRpb25zIHN1Y2ggYXMgUXVldWVzIGFuZCBUb3BpY3MuIEl0IGFic3RyYWN0cyB0aGUgY29tcGxleGl0aWVzIG9mIG1lc3NhZ2UgcHJvZHVjdGlvbiwgZW5hYmxpbmcgZGV2ZWxvcGVycyB0byBlYXNpbHkgaW50ZWdyYXRlIG1lc3NhZ2Ugc2VuZGluZyBjYXBhYmlsaXRpZXMgaW50byB0aGVpciBhcHBsaWNhdGlvbnMuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqUXVldWUgYW5kIFRvcGljIFN1cHBvcnQqKjogVGhlIG1vZHVsZSBzdXBwb3J0cyBib3RoIFF1ZXVlIGFuZCBUb3BpYyBwcm9kdWNlcnMsIGVuYWJsaW5nIGRpZmZlcmVudCBtZXNzYWdpbmcgcGF0dGVybnMgKHBvaW50LXRvLXBvaW50IGFuZCBwdWJsaXNoL3N1YnNjcmliZSkuXG4gKiAtICoqTWVzc2FnZSBTZW5kaW5nKio6IFRoZSBgc2VuZGAgbWV0aG9kIGFsbG93cyBmb3Igc2VuZGluZyBtZXNzYWdlcyB0byB0aGUgY29uZmlndXJlZCBkZXN0aW5hdGlvbnMuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqRXZlbnQgUHJvZHVjdGlvbioqOiBEZXZlbG9wZXJzIGNhbiB1c2UgdGhpcyBtb2R1bGUgdG8gcHJvZHVjZSBtZXNzYWdlcyB0byBxdWV1ZXMgb3IgdG9waWNzLCBlbmFibGluZyB1c2UgY2FzZXMgc3VjaCBhcyBldmVudC1kcml2ZW4gYXJjaGl0ZWN0dXJlcyBhbmQgbWljcm9zZXJ2aWNlcyBjb21tdW5pY2F0aW9uLlxuICogLSAqKkludGVncmF0aW9uIHdpdGggTWVzc2FnaW5nIFN5c3RlbXMqKjogQnkgc2VuZGluZyBtZXNzYWdlcyB0byBKTVMtc3R5bGUgZGVzdGluYXRpb25zLCBhcHBsaWNhdGlvbnMgY2FuIGludGVncmF0ZSB3aXRoIHZhcmlvdXMgbWVzc2FnaW5nIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlIHBhdHRlcm5zLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBQcm9kdWNlciB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbWVzc2FnaW5nXCI7XG4gKiBcbiAqIC8vIENyZWF0ZSBhIFF1ZXVlIHByb2R1Y2VyIGZvciAndGFzay5xdWV1ZSdcbiAqIGNvbnN0IHF1ZXVlUHJvZHVjZXIgPSBQcm9kdWNlci5xdWV1ZShcInRhc2sucXVldWVcIik7XG4gKiBxdWV1ZVByb2R1Y2VyLnNlbmQoXCJOZXcgdGFzayBjcmVhdGVkXCIpO1xuICogXG4gKiAvLyBDcmVhdGUgYSBUb3BpYyBwcm9kdWNlciBmb3IgJ3NlbnNvci5kYXRhLnRvcGljJ1xuICogY29uc3QgdG9waWNQcm9kdWNlciA9IFByb2R1Y2VyLnRvcGljKFwic2Vuc29yLmRhdGEudG9waWNcIik7XG4gKiB0b3BpY1Byb2R1Y2VyLnNlbmQoXCJUZW1wZXJhdHVyZSByZWFkaW5nOiAyMlx1MDBCMENcIik7XG4gKiBgYGBcbiAqL1xuXG5jb25zdCBNZXNzYWdpbmdGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkubWVzc2FnaW5nLk1lc3NhZ2luZ0ZhY2FkZVwiKTtcblxuLyoqXG4gKiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1lc3NhZ2luZyBwcm9kdWNlcnMuXG4gKiBVc2UgdGhpcyBjbGFzcyB0byBvYnRhaW4gaW5zdGFuY2VzIG9mIFF1ZXVlIG9yIFRvcGljIHByb2R1Y2VycyBmb3Igc2VuZGluZyBtZXNzYWdlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2R1Y2VyIHtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIFF1ZXVlIHByb2R1Y2VyIGluc3RhbmNlIGZvciBwb2ludC10by1wb2ludCBtZXNzYWdpbmcuXG5cdCAqIE1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBkZXN0aW5hdGlvbiBhcmUgaW50ZW5kZWQgdG8gYmUgY29uc3VtZWQgYnkgYSBzaW5nbGUgcmVjZWl2ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBkZXN0aW5hdGlvbiBUaGUgbmFtZSBvZiB0aGUgcXVldWUgZGVzdGluYXRpb24gKGUuZy4sICd0YXNrLnF1ZXVlJykuXG5cdCAqIEByZXR1cm5zIEEge0BsaW5rIFF1ZXVlfSBpbnN0YW5jZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcXVldWUoZGVzdGluYXRpb246IHN0cmluZyk6IFF1ZXVlIHtcblx0XHRyZXR1cm4gbmV3IFF1ZXVlKGRlc3RpbmF0aW9uKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgVG9waWMgcHJvZHVjZXIgaW5zdGFuY2UgZm9yIHB1Ymxpc2gvc3Vic2NyaWJlIG1lc3NhZ2luZy5cblx0ICogTWVzc2FnZXMgc2VudCB0byB0aGlzIGRlc3RpbmF0aW9uIGNhbiBiZSBjb25zdW1lZCBieSBtdWx0aXBsZSBzdWJzY3JpYmVycyBzaW11bHRhbmVvdXNseS5cblx0ICpcblx0ICogQHBhcmFtIGRlc3RpbmF0aW9uIFRoZSBuYW1lIG9mIHRoZSB0b3BpYyBkZXN0aW5hdGlvbiAoZS5nLiwgJ3NlbnNvci5kYXRhLnRvcGljJykuXG5cdCAqIEByZXR1cm5zIEEge0BsaW5rIFRvcGljfSBpbnN0YW5jZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgdG9waWMoZGVzdGluYXRpb246IHN0cmluZyk6IFRvcGljIHtcblx0XHRyZXR1cm4gbmV3IFRvcGljKGRlc3RpbmF0aW9uKTtcblx0fVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwcm9kdWNlciBmb3IgYSBRdWV1ZSBkZXN0aW5hdGlvbiAocG9pbnQtdG8tcG9pbnQpLlxuICovXG5jbGFzcyBRdWV1ZSB7XG5cblx0cHJpdmF0ZSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBAcGFyYW0gZGVzdGluYXRpb24gVGhlIG5hbWUgb2YgdGhlIHF1ZXVlIGRlc3RpbmF0aW9uLlxuXHQgKi9cblx0Y29uc3RydWN0b3IoZGVzdGluYXRpb246IHN0cmluZykge1xuXHRcdHRoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIGNvbmZpZ3VyZWQgcXVldWUgZGVzdGluYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBjb250ZW50IG9mIHRoZSBtZXNzYWdlIHRvIHNlbmQgKHR5cGljYWxseSBhIHN0cmluZyBvciBzZXJpYWxpemVkIG9iamVjdCkuXG5cdCAqL1xuXHRwdWJsaWMgc2VuZChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRNZXNzYWdpbmdGYWNhZGUuc2VuZFRvUXVldWUodGhpcy5kZXN0aW5hdGlvbiwgbWVzc2FnZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcHJvZHVjZXIgZm9yIGEgVG9waWMgZGVzdGluYXRpb24gKHB1Ymxpc2gvc3Vic2NyaWJlKS5cbiAqL1xuY2xhc3MgVG9waWMge1xuXG5cdHByaXZhdGUgZGVzdGluYXRpb246IHN0cmluZztcblxuXHQvKipcblx0ICogQHBhcmFtIGRlc3RpbmF0aW9uIFRoZSBuYW1lIG9mIHRoZSB0b3BpYyBkZXN0aW5hdGlvbi5cblx0ICovXG5cdGNvbnN0cnVjdG9yKGRlc3RpbmF0aW9uOiBzdHJpbmcpIHtcblx0XHR0aGlzLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG5cdH1cblxuXHQvKipcblx0ICogU2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBjb25maWd1cmVkIHRvcGljIGRlc3RpbmF0aW9uLiBBbGwgYWN0aXZlIHN1YnNjcmliZXJzIHdpbGwgcmVjZWl2ZSB0aGUgbWVzc2FnZS5cblx0ICpcblx0ICogQHBhcmFtIG1lc3NhZ2UgVGhlIGNvbnRlbnQgb2YgdGhlIG1lc3NhZ2UgdG8gcHVibGlzaCAodHlwaWNhbGx5IGEgc3RyaW5nIG9yIHNlcmlhbGl6ZWQgb2JqZWN0KS5cblx0ICovXG5cdHB1YmxpYyBzZW5kKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdE1lc3NhZ2luZ0ZhY2FkZS5zZW5kVG9Ub3BpYyh0aGlzLmRlc3RpbmF0aW9uLCBtZXNzYWdlKTtcblx0fVxufVxuXG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gUHJvZHVjZXI7XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBOEJBLE1BQU0sa0JBQWtCLEtBQUssS0FBSyxnRUFBZ0U7QUFNM0YsTUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNyQixPQUFjLE1BQU0sYUFBNEI7QUFDL0MsV0FBTyxJQUFJLE1BQU0sV0FBVztBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsTUFBTSxhQUE0QjtBQUMvQyxXQUFPLElBQUksTUFBTSxXQUFXO0FBQUEsRUFDN0I7QUFDRDtBQUtBLE1BQU0sTUFBTTtBQUFBLEVBRUg7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtSLFlBQVksYUFBcUI7QUFDaEMsU0FBSyxjQUFjO0FBQUEsRUFDcEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxLQUFLLFNBQXVCO0FBQ2xDLG9CQUFnQixZQUFZLEtBQUssYUFBYSxPQUFPO0FBQUEsRUFDdEQ7QUFDRDtBQUtBLE1BQU0sTUFBTTtBQUFBLEVBRUg7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtSLFlBQVksYUFBcUI7QUFDaEMsU0FBSyxjQUFjO0FBQUEsRUFDcEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxLQUFLLFNBQXVCO0FBQ2xDLG9CQUFnQixZQUFZLEtBQUssYUFBYSxPQUFPO0FBQUEsRUFDdEQ7QUFDRDtBQUlBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { UUID } from "@aerokit/sdk/utils/uuid";
|
|
1
2
|
const MongoDBFacade = Java.type("org.eclipse.dirigible.components.api.mongodb.MongoDBFacade");
|
|
2
3
|
const TimeUnit = Java.type("java.util.concurrent.TimeUnit");
|
|
3
|
-
import { UUID } from "@aerokit/sdk/utils/uuid";
|
|
4
4
|
class DBObject {
|
|
5
5
|
/**
|
|
6
6
|
* The underlying native Java object representing the BSON document.
|
|
@@ -630,4 +630,4 @@ export {
|
|
|
630
630
|
DBObject,
|
|
631
631
|
createBasicDBObject
|
|
632
632
|
};
|
|
633
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vbmdvZGIvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBNb25nb0RCRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLm1vbmdvZGIuTW9uZ29EQkZhY2FkZVwiKTtcbmNvbnN0IFRpbWVVbml0ID0gSmF2YS50eXBlKFwiamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXRcIik7XG5pbXBvcnQgeyBVVUlEIH0gZnJvbSBcIkBhZXJva2l0L3Nkay91dGlscy91dWlkXCI7XG5cbi8qKlxuICogRGVmaW5lIGEgY29tbW9uIHR5cGUgZm9yIGlucHV0IHRvIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdCBlaXRoZXIgYSBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdFxuICogKHdoaWNoIHdpbGwgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gREJPYmplY3QpIG9yIGFuIGV4aXN0aW5nIERCT2JqZWN0IHdyYXBwZXIgaW5zdGFuY2UuXG4gKi9cbnR5cGUgREJJbnB1dCA9IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBEQk9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbi8qKlxuICogREJPYmplY3Qgb2JqZWN0IHJlcHJlc2VudHMgYSBCU09OIGRvY3VtZW50IHVzZWQgZm9yIHF1ZXJpZXMsIGluc2VydGlvbnMsIGFuZCB1cGRhdGVzLlxuICogSXQgd3JhcHMgdGhlIHVuZGVybHlpbmcgbmF0aXZlIEphdmEgb2JqZWN0LlxuICovXG5leHBvcnQgY2xhc3MgREJPYmplY3Qge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHVuZGVybHlpbmcgbmF0aXZlIEphdmEgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgQlNPTiBkb2N1bWVudC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBuYXRpdmU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgREJPYmplY3QgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG5hdGl2ZSBUaGUgbmF0aXZlIE1vbmdvREIgb2JqZWN0IChlLmcuLCBjb20ubW9uZ29kYi5EQk9iamVjdClcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBlbmRzIGEga2V5LXZhbHVlIHBhaXIgdG8gdGhlIERCT2JqZWN0LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGZpZWxkIG5hbWUuXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBhcHBlbmQuXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgREJPYmplY3QgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyBhcHBlbmQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBEQk9iamVjdCB7XG4gICAgICAgIHRoaXMubmF0aXZlLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIERCT2JqZWN0IHRvIGEgc3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgcmVwcmVzZW50YXRpb24gKEpTT04pLlxuICAgICAqIEByZXR1cm5zIEEgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIHRvSnNvbigpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLnRvSnNvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hcmtzIHRoZSBvYmplY3QgYXMgYSBwYXJ0aWFsIG9iamVjdCAodXNlZCBpbnRlcm5hbGx5IGJ5IE1vbmdvREIgZHJpdmVyKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFya0FzUGFydGlhbE9iamVjdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUubWFya0FzUGFydGlhbE9iamVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgb2JqZWN0IGlzIGEgcGFydGlhbCBvYmplY3QuXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBwYXJ0aWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGlzUGFydGlhbE9iamVjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmlzUGFydGlhbE9iamVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgREJPYmplY3QgY29udGFpbnMgYSBmaWVsZCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGZpZWxkIG5hbWUuXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZmllbGQgZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGNvbnRhaW5zRmllbGQoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmNvbnRhaW5zRmllbGQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBmaWVsZCBuYW1lLlxuICAgICAqIEByZXR1cm5zIFRoZSBmaWVsZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFB1dHMgYSBrZXktdmFsdWUgcGFpciBpbnRvIHRoZSBEQk9iamVjdC5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBmaWVsZCBuYW1lLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHV0LlxuICAgICAqIEByZXR1cm5zIFRoZSBwcmV2aW91cyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGtleSwgb3IgbnVsbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHV0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLnB1dChrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZmllbGQgZnJvbSB0aGUgREJPYmplY3QuXG4gICAgICogQHBhcmFtIGtleSBUaGUgZmllbGQgbmFtZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMgVGhlIHJlbW92ZWQgZmllbGQgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZUZpZWxkKGtleTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLnJlbW92ZUZpZWxkKGtleSk7XG4gICAgfVxuXG59XG5cbi8qKlxuICogQ29waWVzIHRoZSBwcm9wZXJ0aWVzIGZyb20gdGhlIG5hdGl2ZSBNb25nb0RCIG9iamVjdCdzIEpTT04gcmVwcmVzZW50YXRpb25cbiAqIG9udG8gdGhlIHB1YmxpYyBwcm9wZXJ0aWVzIG9mIHRoZSBEQk9iamVjdCB3cmFwcGVyIGluc3RhbmNlLlxuICogVGhpcyBhbGxvd3MgZGlyZWN0IGFjY2VzcyBsaWtlIGBkYk9iamVjdC5maWVsZE5hbWVgLlxuICogQHBhcmFtIGRiT2JqZWN0IFRoZSBEQk9iamVjdCB3cmFwcGVyIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIGV4dHJhY3RlZCBwcm9wZXJ0aWVzIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdChkYk9iamVjdDogREJPYmplY3QpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAoIWRiT2JqZWN0Lm5hdGl2ZSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIC8vIFBhcnNlIHRoZSBuYXRpdmUgb2JqZWN0J3MgSlNPTiByZXByZXNlbnRhdGlvblxuICAgIHZhciBleHRyYWN0ZWQgPSBKU09OLnBhcnNlKGRiT2JqZWN0Lm5hdGl2ZS50b0pzb24oKSk7XG4gICAgLy8gQ29weSBhbGwgcHJvcGVydGllcyB0byB0aGUgd3JhcHBlciBpbnN0YW5jZVxuICAgIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBleHRyYWN0ZWQpIHtcbiAgICAgICAgZGJPYmplY3RbcHJvcGVydHlOYW1lXSA9IGV4dHJhY3RlZFtwcm9wZXJ0eU5hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gZXh0cmFjdGVkO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBpbXBsaWNpdGx5IGNvbnZlcnQgYSBwbGFpbiBKUyBvYmplY3QgdG8gYSBEQk9iamVjdCxcbiAqIG9yIHJldHVybiB0aGUgZXhpc3RpbmcgREJPYmplY3QgaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2JqZWN0IElucHV0IG9iamVjdCB3aGljaCBjYW4gYmUgYSBwbGFpbiBvYmplY3QsIERCT2JqZWN0LCBvciB1bmRlZmluZWQvbnVsbC5cbiAqIEByZXR1cm5zIERCT2JqZWN0IG9yIHVuZGVmaW5lZC5cbiAqL1xuZnVuY3Rpb24gaW1wbGljaXQob2JqZWN0OiBEQklucHV0KTogREJPYmplY3QgfCB1bmRlZmluZWQge1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIEV4cGxpY2l0bHkgcmV0dXJuIHVuZGVmaW5lZCBpZiBpbnB1dCBpcyBmYWxzeVxuICAgIH1cbiAgICAvLyBDaGVjayBpZiBpdCBhbHJlYWR5IGhhcyB0aGUgbmF0aXZlIHByb3BlcnR5IChhc3N1bWVzIGl0J3MgYSBEQk9iamVjdCBvciBzaW1pbGFyIHdyYXBwZXIpXG4gICAgaWYgKChvYmplY3QgYXMgYW55KS5uYXRpdmUpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCBhcyBEQk9iamVjdDtcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHBsYWluIG9iamVjdCB0byBEQk9iamVjdFxuICAgIHZhciBkYk9iamVjdCA9IGNyZWF0ZUJhc2ljREJPYmplY3QoKTtcblxuICAgIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBvYmplY3QpIHtcbiAgICAgICAgZGJPYmplY3QuYXBwZW5kKHByb3BlcnR5TmFtZSwgb2JqZWN0W3Byb3BlcnR5TmFtZV0pO1xuICAgIH1cbiAgICByZXR1cm4gZGJPYmplY3Q7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldywgZW1wdHkgREJPYmplY3QgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIG5ldyBEQk9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJhc2ljREJPYmplY3QoKTogREJPYmplY3Qge1xuICAgIGNvbnN0IGRiT2JqZWN0ID0gbmV3IERCT2JqZWN0KE1vbmdvREJGYWNhZGUuY3JlYXRlQmFzaWNEQk9iamVjdCgpKTtcbiAgICBleHRyYWN0KGRiT2JqZWN0KTtcbiAgICByZXR1cm4gZGJPYmplY3Q7XG59XG5cbi8qKlxuICogQ2xpZW50IG9iamVjdCB3cmFwcGVyIGZvciBjb25uZWN0aW5nIHRvIE1vbmdvREIuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbGllbnQge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHVuZGVybHlpbmcgbmF0aXZlIE1vbmdvREIgY2xpZW50IG9iamVjdC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IE1vbmdvREIgQ2xpZW50IGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSB1cmkgVGhlIE1vbmdvREIgY29ubmVjdGlvbiBVUkkuXG4gICAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXJuYW1lIGZvciBhdXRoZW50aWNhdGlvbi5cbiAgICAgKiBAcGFyYW0gcGFzc3dvcmQgVGhlIHBhc3N3b3JkIGZvciBhdXRoZW50aWNhdGlvbi5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih1cmk6IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gTW9uZ29EQkZhY2FkZS5nZXRDbGllbnQodXJpLCB1c2VyLCBwYXNzd29yZClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYSBkYXRhYmFzZSBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gbmFtZSBPcHRpb25hbCBuYW1lIG9mIHRoZSBkYXRhYmFzZS4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBkYXRhYmFzZSBuYW1lIGlzIHVzZWQuXG4gICAgICogQHJldHVybnMgQSBEQiBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0REIobmFtZT86IHN0cmluZyk6IERCIHtcbiAgICAgICAgbGV0IG5hdGl2ZSA9IG51bGw7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5nZXREQihuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHREQiA9IE1vbmdvREJGYWNhZGUuZ2V0RGVmYXVsdERhdGFiYXNlTmFtZSgpO1xuICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0REIoZGVmYXVsdERCKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgREIobmF0aXZlKTtcbiAgICB9XG59XG5cbi8qKlxuICogREIgb2JqZWN0IHdyYXBwZXIgZm9yIGEgTW9uZ29EQiBkYXRhYmFzZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERCIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBNb25nb0RCIERCIG9iamVjdC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IERCIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBuYXRpdmUgVGhlIG5hdGl2ZSBNb25nb0RCIERCIG9iamVjdC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYSBjb2xsZWN0aW9uIGluc3RhbmNlIGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqIEByZXR1cm5zIEEgREJDb2xsZWN0aW9uIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2xsZWN0aW9uKG5hbWU6IHN0cmluZyk6IERCQ29sbGVjdGlvbiB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZSA9IHRoaXMubmF0aXZlLmdldENvbGxlY3Rpb24obmFtZSk7XG4gICAgICAgIHJldHVybiBuZXcgREJDb2xsZWN0aW9uKG5hdGl2ZSk7XG4gICAgfVxufVxuXG4vKipcbiAqIERCQ29sbGVjdGlvbiBvYmplY3Qgd3JhcHBlciBmb3IgYSBNb25nb0RCIGNvbGxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBEQkNvbGxlY3Rpb24ge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHVuZGVybHlpbmcgbmF0aXZlIE1vbmdvREIgREJDb2xsZWN0aW9uIG9iamVjdC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IERCQ29sbGVjdGlvbiBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gbmF0aXZlIFRoZSBuYXRpdmUgTW9uZ29EQiBEQkNvbGxlY3Rpb24gb2JqZWN0LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gbmF0aXZlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgYSBkb2N1bWVudCBpbnRvIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBkYk9iamVjdCBUaGUgZG9jdW1lbnQgdG8gaW5zZXJ0IChjYW4gYmUgYSBwbGFpbiBKUyBvYmplY3Qgb3IgREJPYmplY3QpLlxuICAgICAqL1xuICAgIHB1YmxpYyBpbnNlcnQoZGJPYmplY3Q6IERCSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGJvID0gaW1wbGljaXQoZGJPYmplY3QpO1xuICAgICAgICBpZiAoZGJvKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZS5pbnNlcnQoZGJvLm5hdGl2ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBkb2N1bWVudHMgbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgc3BlY2lmaWNhdGlvbiAoY2FuIGJlIGEgcGxhaW4gSlMgb2JqZWN0IG9yIERCT2JqZWN0KS5cbiAgICAgKiBAcGFyYW0gcHJvamVjdGlvbiBUaGUgZmllbGRzIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSAoY2FuIGJlIGEgcGxhaW4gSlMgb2JqZWN0IG9yIERCT2JqZWN0KS5cbiAgICAgKiBAcmV0dXJucyBBIERCQ3Vyc29yIGZvciBpdGVyYXRpbmcgb3ZlciByZXN1bHRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kKHF1ZXJ5PzogREJJbnB1dCwgcHJvamVjdGlvbj86IERCSW5wdXQpOiBEQkN1cnNvciB7XG4gICAgICAgIGNvbnN0IHEgPSBpbXBsaWNpdChxdWVyeSk7XG4gICAgICAgIGNvbnN0IHAgPSBpbXBsaWNpdChwcm9qZWN0aW9uKTtcblxuICAgICAgICB2YXIgbmF0aXZlID0gbnVsbDtcbiAgICAgICAgaWYgKHEpIHtcbiAgICAgICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZmluZChxLm5hdGl2ZSwgcC5uYXRpdmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5maW5kKHEubmF0aXZlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5hdGl2ZSA9IHRoaXMubmF0aXZlLmZpbmQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgREJDdXJzb3IobmF0aXZlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIHNpbmdsZSBkb2N1bWVudCBtYXRjaGluZyB0aGUgcXVlcnkuXG4gICAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSBzcGVjaWZpY2F0aW9uLlxuICAgICAqIEBwYXJhbSBwcm9qZWN0aW9uIFRoZSBmaWVsZHMgdG8gaW5jbHVkZSBvciBleGNsdWRlLlxuICAgICAqIEBwYXJhbSBzb3J0IFRoZSBzb3J0aW5nIHNwZWNpZmljYXRpb24uXG4gICAgICogQHJldHVybnMgVGhlIGZvdW5kIGRvY3VtZW50IGFzIGEgREJPYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIGZpbmRPbmUocXVlcnk6IERCSW5wdXQsIHByb2plY3Rpb246IERCSW5wdXQsIHNvcnQ6IERCSW5wdXQpOiBEQk9iamVjdCB7XG4gICAgICAgIGNvbnN0IHEgPSBpbXBsaWNpdChxdWVyeSk7XG4gICAgICAgIGNvbnN0IHAgPSBpbXBsaWNpdChwcm9qZWN0aW9uKTtcbiAgICAgICAgY29uc3QgcyA9IGltcGxpY2l0KHNvcnQpO1xuXG4gICAgICAgIHZhciBkYk9iamVjdCA9IGNyZWF0ZUJhc2ljREJPYmplY3QoKTtcbiAgICAgICAgdmFyIG5hdGl2ZSA9IG51bGw7XG4gICAgICAgIGlmIChxKSB7XG4gICAgICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZSA9IHRoaXMubmF0aXZlLmZpbmRPbmUocS5uYXRpdmUsIHAubmF0aXZlLCBzLm5hdGl2ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZmluZE9uZShxLm5hdGl2ZSwgcC5uYXRpdmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZmluZE9uZShxLm5hdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5maW5kT25lKCk7XG4gICAgICAgIH1cbiAgICAgICAgZGJPYmplY3QubmF0aXZlID0gbmF0aXZlO1xuICAgICAgICBleHRyYWN0KGRiT2JqZWN0KTtcbiAgICAgICAgcmV0dXJuIGRiT2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgc2luZ2xlIGRvY3VtZW50IGJ5IGl0cyBzdHJpbmcgSUQuXG4gICAgICogQHBhcmFtIGlkIFRoZSBzdHJpbmcgSUQgb2YgdGhlIGRvY3VtZW50LlxuICAgICAqIEBwYXJhbSBwcm9qZWN0aW9uIFRoZSBmaWVsZHMgdG8gaW5jbHVkZSBvciBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIFRoZSBmb3VuZCBkb2N1bWVudCBhcyBhIERCT2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kT25lQnlJZChpZDogc3RyaW5nLCBwcm9qZWN0aW9uPzogREJJbnB1dCk6IERCT2JqZWN0IHtcbiAgICAgICAgY29uc3QgcCA9IGltcGxpY2l0KHByb2plY3Rpb24pO1xuICAgICAgICBjb25zdCBkYk9iamVjdCA9IGNyZWF0ZUJhc2ljREJPYmplY3QoKTtcbiAgICAgICAgbGV0IG5hdGl2ZSA9IG51bGw7XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5maW5kT25lKGlkLCBwLm5hdGl2ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5maW5kT25lKGlkKTtcbiAgICAgICAgfVxuICAgICAgICBkYk9iamVjdC5uYXRpdmUgPSBuYXRpdmU7XG4gICAgICAgIGV4dHJhY3QoZGJPYmplY3QpO1xuICAgICAgICByZXR1cm4gZGJPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ291bnRzIHRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIGluIHRoZSBjb2xsZWN0aW9uLCBvcHRpb25hbGx5IGZpbHRlcmVkIGJ5IGEgcXVlcnkuXG4gICAgICogQHBhcmFtIHF1ZXJ5IE9wdGlvbmFsIHF1ZXJ5IHRvIGZpbHRlciB0aGUgY291bnQuXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBkb2N1bWVudHMuXG4gICAgICovXG4gICAgcHVibGljIGNvdW50KHF1ZXJ5PzogREJJbnB1dCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHEgPSBpbXBsaWNpdChxdWVyeSk7XG4gICAgICAgIGlmIChxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuY291bnQocS5uYXRpdmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5jb3VudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGNvdW50IG9mIGRvY3VtZW50cyAoYWxpYXMgZm9yIGNvdW50KS5cbiAgICAgKiBAcGFyYW0gcXVlcnkgT3B0aW9uYWwgcXVlcnkgdG8gZmlsdGVyIHRoZSBjb3VudC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGRvY3VtZW50cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q291bnQocXVlcnk6IERCSW5wdXQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBxID0gaW1wbGljaXQocXVlcnkpO1xuICAgICAgICBpZiAocSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldENvdW50KHEubmF0aXZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Q291bnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluZGV4IG9uIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBrZXlzIFRoZSBpbmRleCBrZXkgc3BlY2lmaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBpbmRleCBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVJbmRleChrZXlzOiBEQklucHV0LCBvcHRpb25zOiBEQklucHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGsgPSBpbXBsaWNpdChrZXlzKTtcbiAgICAgICAgY29uc3QgbyA9IGltcGxpY2l0KG9wdGlvbnMpO1xuICAgICAgICBpZiAoaykge1xuICAgICAgICAgICAgaWYgKG8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZS5jcmVhdGVJbmRleChrLm5hdGl2ZSwgby5uYXRpdmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZS5jcmVhdGVJbmRleChrLm5hdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdCBsZWFzdCBLZXlzIHBhcmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbmRleCBvbiBhIHNpbmdsZSBmaWVsZCBieSBuYW1lLlxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCB0byBpbmRleC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlSW5kZXhGb3JGaWVsZChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlLmNyZWF0ZUluZGV4KG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGZpbGVkIG5hbWUgbXVzdCBiZSBwcm92aWRlZFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgZGlzdGluY3QgdmFsdWVzIGZvciBhIHNwZWNpZmllZCBmaWVsZCBhY3Jvc3MgYSBjb2xsZWN0aW9uLlxuICAgICAqIE5PVEU6IFRoZSBzaWduYXR1cmUgaW4gdGhlIG9yaWdpbmFsIGNvZGUgc2VlbXMgc2xpZ2h0bHkgb2ZmIGNvbXBhcmVkIHRvIHR5cGljYWwgTW9uZ29EQiBkcml2ZXJzLlxuICAgICAqIFRoaXMgaW1wbGVtZW50YXRpb24gZm9sbG93cyB0aGUgb3JpZ2luYWwgc3RydWN0dXJlIHVzaW5nIGBrZXlzLm5hdGl2ZWAgaWYgYGtleXNgIGlzIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBmaWVsZCBuYW1lLlxuICAgICAqIEBwYXJhbSBxdWVyeSBPcHRpb25hbCBxdWVyeSB0byBmaWx0ZXIgcmVzdWx0cy5cbiAgICAgKiBAcGFyYW0ga2V5cyBPcHRpb25hbCBrZXlzIHRvIHVzZSBmb3IgZGlzdGluY3QgKHJlcGxhY2VzICduYW1lJyBpZiBwcm92aWRlZCBhbmQgcXVlcnkgZXhpc3RzKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzdGluY3QobmFtZTogc3RyaW5nLCBxdWVyeTogREJJbnB1dCwga2V5czogREJJbnB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBxID0gaW1wbGljaXQocXVlcnkpO1xuICAgICAgICBjb25zdCBrID0gaW1wbGljaXQoa2V5cyk7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBpZiAocSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHF1ZXJ5IGlzIHByb3ZpZGVkLCB1c2Uga2V5cyBmb3IgdGhlIGZpZWxkIG5hbWUgaWYgayBpcyBwcmVzZW50LCBvdGhlcndpc2UgdXNlICduYW1lJ1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlLmRpc3RpbmN0KGsgPyBrLm5hdGl2ZSA6IG5hbWUsIHEubmF0aXZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmUuZGlzdGluY3QobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdCBsZWFzdCB0aGUgZmlsZWQgbmFtZSBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERyb3BzIGEgc3BlY2lmaWVkIGluZGV4LlxuICAgICAqIEBwYXJhbSBpbmRleCBUaGUgbmFtZSBvZiB0aGUgaW5kZXggb3IgdGhlIERCT2JqZWN0IHJlcHJlc2VudGluZyB0aGUgaW5kZXgga2V5cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZHJvcEluZGV4KGluZGV4OiBzdHJpbmcgfCBEQklucHV0KTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5kZXggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZS5kcm9wSW5kZXgoaW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGJvID0gaW1wbGljaXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGRibykge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlLmRyb3BJbmRleChkYm8ubmF0aXZlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERyb3BzIGEgc3BlY2lmaWVkIGluZGV4IGJ5IG5hbWUuXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGluZGV4LlxuICAgICAqL1xuICAgIHB1YmxpYyBkcm9wSW5kZXhCeU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLmRyb3BJbmRleChuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEcm9wcyBhbGwgaW5kZXhlcyBvbiB0aGUgY29sbGVjdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZHJvcEluZGV4ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLmRyb3BJbmRleGVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBkb2N1bWVudHMgZnJvbSB0aGUgY29sbGVjdGlvbiBtYXRjaGluZyB0aGUgcXVlcnkuXG4gICAgICogQHBhcmFtIHF1ZXJ5IFRoZSBkZWxldGlvbiBxdWVyeSBzcGVjaWZpY2F0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmUocXVlcnk6IERCSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcSA9IGltcGxpY2l0KHF1ZXJ5KTtcbiAgICAgICAgaWYgKHEpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlLnJlbW92ZShxLm5hdGl2ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW5hbWVzIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBuZXdOYW1lIFRoZSBuZXcgbmFtZSBmb3IgdGhlIGNvbGxlY3Rpb24uXG4gICAgICovXG4gICAgcHVibGljIHJlbmFtZShuZXdOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUucmVuYW1lKG5ld05hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGEgZG9jdW1lbnQgdG8gdGhlIGNvbGxlY3Rpb24uIElmIHRoZSBkb2N1bWVudCBoYXMgYW4gYF9pZGAsIGl0IHBlcmZvcm1zIGFuIHVwZGF0ZTtcbiAgICAgKiBvdGhlcndpc2UsIGl0IHBlcmZvcm1zIGFuIGluc2VydC5cbiAgICAgKiBAcGFyYW0gZGJPYmplY3QgVGhlIGRvY3VtZW50IHRvIHNhdmUuXG4gICAgICovXG4gICAgcHVibGljIHNhdmUoZGJPYmplY3Q6IERCSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGJvID0gaW1wbGljaXQoZGJPYmplY3QpO1xuICAgICAgICBpZiAoZGJvKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZS5zYXZlKGRiby5uYXRpdmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBkb2N1bWVudHMgaW4gdGhlIGNvbGxlY3Rpb24gbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSBxdWVyeSBUaGUgdXBkYXRlIHF1ZXJ5IHNwZWNpZmljYXRpb24uXG4gICAgICogQHBhcmFtIHVwZGF0ZSBUaGUgdXBkYXRlIG9wZXJhdGlvbiBzcGVjaWZpY2F0aW9uIChlLmcuLCB7JHNldDogey4uLn19KS5cbiAgICAgKiBAcGFyYW0gdXBzZXJ0IElmIHRydWUsIGNyZWF0ZXMgYSBuZXcgZG9jdW1lbnQgaWYgbm8gZG9jdW1lbnRzIG1hdGNoIHRoZSBxdWVyeS5cbiAgICAgKiBAcGFyYW0gbXVsdGkgSWYgdHJ1ZSwgdXBkYXRlcyBhbGwgZG9jdW1lbnRzIG1hdGNoaW5nIHRoZSBxdWVyeTsgb3RoZXJ3aXNlLCBvbmx5IG9uZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKHF1ZXJ5OiBEQklucHV0LCB1cGRhdGU6IERCSW5wdXQsIHVwc2VydD86IGJvb2xlYW4sIG11bHRpPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBxID0gaW1wbGljaXQocXVlcnkpO1xuICAgICAgICBjb25zdCB1ID0gaW1wbGljaXQodXBkYXRlKTtcbiAgICAgICAgaWYgKHEpIHtcbiAgICAgICAgICAgIGlmICh1KSB7XG4gICAgICAgICAgICAgICAgaWYgKHVwc2VydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlLnVwZGF0ZShxLm5hdGl2ZSwgdS5uYXRpdmUsIHVwc2VydCwgbXVsdGkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXRpdmUudXBkYXRlKHEubmF0aXZlLCB1Lm5hdGl2ZSwgdXBzZXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlLnVwZGF0ZShxLm5hdGl2ZSwgdS5uYXRpdmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIHVwZGF0ZSBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBxdWVyeSBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgbXVsdGlwbGUgZG9jdW1lbnRzIGluIHRoZSBjb2xsZWN0aW9uIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICAgKiAoRXF1aXZhbGVudCB0byBjYWxsaW5nIGB1cGRhdGVgIHdpdGggYG11bHRpPXRydWVgIGFuZCBgdXBzZXJ0PXRydWVgIGltcGxpY2l0bHkpLlxuICAgICAqIEBwYXJhbSBxdWVyeSBUaGUgdXBkYXRlIHF1ZXJ5IHNwZWNpZmljYXRpb24uXG4gICAgICogQHBhcmFtIHVwZGF0ZSBUaGUgdXBkYXRlIG9wZXJhdGlvbiBzcGVjaWZpY2F0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVNdWx0aShxdWVyeTogREJJbnB1dCwgdXBkYXRlOiBEQklucHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHEgPSBpbXBsaWNpdChxdWVyeSk7XG4gICAgICAgIGNvbnN0IHUgPSBpbXBsaWNpdCh1cGRhdGUpO1xuICAgICAgICBpZiAocSkge1xuICAgICAgICAgICAgaWYgKHUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZS51cGRhdGUocS5uYXRpdmUsIHUubmF0aXZlLCB0cnVlLCB0cnVlKTsgLy8gQXNzdW1pbmcgdXBkYXRlTXVsdGkgbWVhbnMgdXBzZXJ0PXRydWUgYW5kIG11bHRpPXRydWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIHVwZGF0ZSBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBxdWVyeSBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZFwiKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBuZXh0IHNlcXVlbnRpYWwgSUQgYmFzZWQgb24gdGhlIGxhcmdlc3QgZXhpc3RpbmcgYF9pZGAgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAgICogQXNzdW1lcyBgX2lkYCBpcyBhIG51bWVyaWMgZmllbGQuXG4gICAgICogQHJldHVybnMgVGhlIG5leHQgYXZhaWxhYmxlIHNlcXVlbnRpYWwgSUQgKHN0YXJ0aW5nIGF0IDEgaWYgY29sbGVjdGlvbiBpcyBlbXB0eSkuXG4gICAgICovXG4gICAgcHVibGljIGdldE5leHRJZCgpOiBudW1iZXIge1xuICAgICAgICB2YXIgY3Vyc29yID0gdGhpcy5maW5kKHt9LCB7IFwiX2lkXCI6IDEgfSkuc29ydCh7IFwiX2lkXCI6IC0xIH0pLmxpbWl0KDEpO1xuICAgICAgICBpZiAoIWN1cnNvci5oYXNOZXh0KCkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnNvci5uZXh0KClbXCJfaWRcIl0gKyAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgbmV3IHJhbmRvbSBVVUlEIChVbml2ZXJzYWxseSBVbmlxdWUgSWRlbnRpZmllcikuXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBVVUlELlxuICAgICAqL1xuICAgIHB1YmxpYyBnZW5lcmF0ZVVVSUQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFVVSUQucmFuZG9tKCk7XG4gICAgfVxuXG59XG5cbi8qKlxuICogREJDdXJzb3Igb2JqZWN0IHdyYXBwZXIgZm9yIGl0ZXJhdGluZyBvdmVyIHJlc3VsdHMgb2YgYSBNb25nb0RCIHF1ZXJ5LlxuICovXG5leHBvcnQgY2xhc3MgREJDdXJzb3Ige1xuXG4gICAgLyoqXG4gICAgICogVGhlIHVuZGVybHlpbmcgbmF0aXZlIE1vbmdvREIgREJDdXJzb3Igb2JqZWN0LlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgREJDdXJzb3IgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG5hdGl2ZSBUaGUgbmF0aXZlIE1vbmdvREIgREJDdXJzb3Igb2JqZWN0LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gbmF0aXZlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNpbmdsZSByZXN1bHQgZnJvbSB0aGUgY3Vyc29yLlxuICAgICAqIEByZXR1cm5zIEEgREJPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkb2N1bWVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25lKCk6IERCT2JqZWN0IHtcbiAgICAgICAgY29uc3QgZGJPYmplY3QgPSBuZXcgREJPYmplY3QodGhpcy5uYXRpdmUub25lKCkpO1xuICAgICAgICBleHRyYWN0KGRiT2JqZWN0KTtcbiAgICAgICAgcmV0dXJuIGRiT2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhdGNoIHNpemUgZm9yIHRoZSBjdXJzb3IuXG4gICAgICogQHBhcmFtIG51bWJlck9mRWxlbWVudHMgVGhlIGJhdGNoIHNpemUuXG4gICAgICogQHJldHVybnMgVGhlIERCQ3Vyc29yIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYmF0Y2hTaXplKG51bWJlck9mRWxlbWVudHM6IG51bWJlcik6IERCQ3Vyc29yIHtcbiAgICAgICAgdGhpcy5uYXRpdmUuYmF0Y2hTaXplKG51bWJlck9mRWxlbWVudHMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50IGJhdGNoIHNpemUuXG4gICAgICogQHJldHVybnMgVGhlIGJhdGNoIHNpemUuXG4gICAgICovXG4gICAgcHVibGljIGdldEJhdGNoU2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0QmF0Y2hTaXplKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY29sbGVjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBjdXJzb3IuXG4gICAgICogQHJldHVybnMgVGhlIERCQ29sbGVjdGlvbiBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sbGVjdGlvbigpOiBEQkNvbGxlY3Rpb24ge1xuICAgICAgICByZXR1cm4gbmV3IERCQ29sbGVjdGlvbih0aGlzLm5hdGl2ZS5nZXRDb2xsZWN0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGN1cnNvciBJRC5cbiAgICAgKiBAcmV0dXJucyBUaGUgY3Vyc29yIElEIHN0cmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q3Vyc29ySWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldEN1cnNvcklkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcHJvamVjdGlvbiBvYmplY3QgKGZpZWxkcyB3YW50ZWQpIHVzZWQgaW4gdGhlIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSBwcm9qZWN0aW9uIERCT2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRLZXlzV2FudGVkKCk6IERCT2JqZWN0IHtcbiAgICAgICAgY29uc3QgZGJPYmplY3QgPSBuZXcgREJPYmplY3QodGhpcy5uYXRpdmUuZ2V0S2V5c1dhbnRlZCgpKTtcbiAgICAgICAgZXh0cmFjdChkYk9iamVjdCk7XG4gICAgICAgIHJldHVybiBkYk9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsaW1pdCBzZXQgb24gdGhlIGN1cnNvci5cbiAgICAgKiBAcmV0dXJucyBUaGUgbGltaXQgbnVtYmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRMaW1pdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TGltaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGN1cnNvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIGEgbmV4dCBkb2N1bWVudCBpbiB0aGUgY3Vyc29yLlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgdGhlcmUgaXMgYSBuZXh0IGRvY3VtZW50LCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhc05leHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5oYXNOZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBuZXh0IGRvY3VtZW50IGluIHRoZSBjdXJzb3IuXG4gICAgICogQHJldHVybnMgVGhlIG5leHQgZG9jdW1lbnQgYXMgYSBEQk9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmV4dCgpOiBEQk9iamVjdCB7XG4gICAgICAgIGNvbnN0IGRiT2JqZWN0ID0gbmV3IERCT2JqZWN0KHRoaXMubmF0aXZlLm5leHQoKSk7XG4gICAgICAgIGV4dHJhY3QoZGJPYmplY3QpO1xuICAgICAgICByZXR1cm4gZGJPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcXVlcnkgb2JqZWN0IHVzZWQgdG8gY3JlYXRlIHRoaXMgY3Vyc29yLlxuICAgICAqIEByZXR1cm5zIFRoZSBxdWVyeSBEQk9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UXVlcnkoKTogREJPYmplY3Qge1xuICAgICAgICBjb25zdCBkYk9iamVjdCA9IG5ldyBEQk9iamVjdCh0aGlzLm5hdGl2ZS5nZXRRdWVyeSgpKTtcbiAgICAgICAgZXh0cmFjdChkYk9iamVjdCk7XG4gICAgICAgIHJldHVybiBkYk9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIG1hdGNoZWQgYnkgdGhlIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSB0b3RhbCBudW1iZXIgb2YgZG9jdW1lbnRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmxlbmd0aCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIHF1ZXJ5IHJldHVybnMgdGhlIHJlc3VsdHMuXG4gICAgICogQHBhcmFtIG9yZGVyQnkgVGhlIHNvcnRpbmcgc3BlY2lmaWNhdGlvbiAoZS5nLiwge2ZpZWxkOiAxfSBmb3IgYXNjZW5kaW5nKS5cbiAgICAgKiBAcmV0dXJucyBUaGUgREJDdXJzb3IgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyBzb3J0KG9yZGVyQnk6IERCSW5wdXQpOiBEQkN1cnNvciB7XG4gICAgICAgIGNvbnN0IGRibyA9IGltcGxpY2l0KG9yZGVyQnkpO1xuICAgICAgICBpZiAoIWRibykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIG9yZGVyQnkgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uYXRpdmUuc29ydChkYm8ubmF0aXZlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGltaXRzIHRoZSBudW1iZXIgb2YgcmVzdWx0cyB0byBiZSByZXR1cm5lZC5cbiAgICAgKiBAcGFyYW0gbGltaXQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGRvY3VtZW50cyB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgVGhlIERCQ3Vyc29yIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbGltaXQobGltaXQ6IG51bWJlcik6IERCQ3Vyc29yIHtcbiAgICAgICAgdGhpcy5uYXRpdmUubGltaXQobGltaXQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIGV4Y2x1c2l2ZSB1cHBlciBib3VuZCBmb3IgYSBzcGVjaWZpYyBpbmRleC5cbiAgICAgKiBAcGFyYW0gbWluIFRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIFRoZSBEQkN1cnNvciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAgICovXG4gICAgcHVibGljIG1pbihtaW46IG51bWJlcik6IERCQ3Vyc29yIHtcbiAgICAgICAgdGhpcy5uYXRpdmUubWluKG1pbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgZXhjbHVzaXZlIHVwcGVyIGJvdW5kIGZvciBhIHNwZWNpZmljIGluZGV4LlxuICAgICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUuXG4gICAgICogQHJldHVybnMgVGhlIERCQ3Vyc29yIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWF4KG1heDogbnVtYmVyKTogREJDdXJzb3Ige1xuICAgICAgICB0aGlzLm5hdGl2ZS5tYXgobWF4KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBhIHRpbWVvdXQgZm9yIHRoZSBzZXJ2ZXIgdG8gZXhlY3V0ZSB0aGUgcXVlcnkuXG4gICAgICogQHBhcmFtIG1heFRpbWUgVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMuXG4gICAgICogQHJldHVybnMgVGhlIERCQ3Vyc29yIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWF4VGltZShtYXhUaW1lOiBudW1iZXIpOiBEQkN1cnNvciB7XG4gICAgICAgIHRoaXMubmF0aXZlLm1heFRpbWUobWF4VGltZSwgVGltZVVuaXQuTUlMTElTRUNPTkRTKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0IHNldC5cbiAgICAgKiBAcmV0dXJucyBUaGUgc2l6ZSBudW1iZXIuXG4gICAgICovXG4gICAgcHVibGljIHNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLnNpemUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTa2lwcyB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkb2N1bWVudHMuXG4gICAgICogQHBhcmFtIG51bWJlck9mRWxlbWVudHMgVGhlIG51bWJlciBvZiBkb2N1bWVudHMgdG8gc2tpcC5cbiAgICAgKiBAcmV0dXJucyBUaGUgREJDdXJzb3IgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyBza2lwKG51bWJlck9mRWxlbWVudHM6IG51bWJlcik6IERCQ3Vyc29yIHtcbiAgICAgICAgdGhpcy5uYXRpdmUuc2tpcChudW1iZXJPZkVsZW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxNQUFNLGdCQUFnQixLQUFLLEtBQUssNERBQTREO0FBQzVGLE1BQU0sV0FBVyxLQUFLLEtBQUssK0JBQStCO0FBQzFELFNBQVMsWUFBWTtBQVlkLE1BQU0sU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNUCxZQUFZLFFBQWE7QUFDckIsU0FBSyxTQUFTO0FBQUEsRUFDbEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLE9BQU8sS0FBYSxPQUFzQjtBQUM3QyxTQUFLLE9BQU8sT0FBTyxLQUFLLEtBQUs7QUFDN0IsV0FBTztBQUFBLEVBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sU0FBaUM7QUFDcEMsV0FBTyxLQUFLLE9BQU8sT0FBTztBQUFBLEVBQzlCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxzQkFBNEI7QUFDL0IsU0FBSyxPQUFPLG9CQUFvQjtBQUFBLEVBQ3BDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLGtCQUEyQjtBQUM5QixXQUFPLEtBQUssT0FBTyxnQkFBZ0I7QUFBQSxFQUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLGNBQWMsS0FBc0I7QUFDdkMsV0FBTyxLQUFLLE9BQU8sY0FBYyxHQUFHO0FBQUEsRUFDeEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxJQUFJLEtBQWtCO0FBQ3pCLFdBQU8sS0FBSyxPQUFPLElBQUksR0FBRztBQUFBLEVBQzlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxJQUFJLEtBQWEsT0FBaUI7QUFDckMsV0FBTyxLQUFL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
|
|
633
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vbmdvZGIvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgbW9uZ29kYi9jbGllbnRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9tb25nb2RiXG4gKiBAbmFtZSBDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgQ2xpZW50IG1vZHVsZSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgQVBJIGZvciBjb25uZWN0aW5nIHRvIE1vbmdvREIgZGF0YWJhc2VzIGFuZCBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgb24gY29sbGVjdGlvbnMuIEl0IGFic3RyYWN0cyB0aGUgdW5kZXJseWluZyBNb25nb0RCIEphdmEgZHJpdmVyLCBhbGxvd2luZyBkZXZlbG9wZXJzIHRvIGludGVyYWN0IHdpdGggTW9uZ29EQiB1c2luZyBmYW1pbGlhciBKYXZhU2NyaXB0IG9iamVjdHMgYW5kIG1ldGhvZHMuIFRoZSBtb2R1bGUgaW5jbHVkZXMgY2xhc3NlcyBmb3IgbWFuYWdpbmcgZGF0YWJhc2UgY29ubmVjdGlvbnMsIGFjY2Vzc2luZyBjb2xsZWN0aW9ucywgYW5kIGV4ZWN1dGluZyBxdWVyaWVzLCBtYWtpbmcgaXQgZWFzaWVyIHRvIGludGVncmF0ZSBNb25nb0RCIGludG8gYXBwbGljYXRpb25zIGJ1aWx0IG9uIHRoZSBEaXJpZ2libGUgcGxhdGZvcm0uXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqTW9uZ29EQiBDb25uZWN0aW9uIE1hbmFnZW1lbnQqKjogVGhlIGBDbGllbnRgIGNsYXNzIGFsbG93cyBmb3IgY29ubmVjdGluZyB0byBNb25nb0RCIHVzaW5nIGEgY29ubmVjdGlvbiBVUkkgYW5kIGNyZWRlbnRpYWxzLlxuICogLSAqKkRhdGFiYXNlIGFuZCBDb2xsZWN0aW9uIEFjY2VzcyoqOiBUaGUgYERCYCBhbmQgYERCQ29sbGVjdGlvbmAgY2xhc3NlcyBwcm92aWRlIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBkYXRhYmFzZXMgYW5kIGNvbGxlY3Rpb25zLCBhcyB3ZWxsIGFzIHBlcmZvcm1pbmcgQ1JVRCBvcGVyYXRpb25zLlxuICogLSAqKlF1ZXJ5aW5nIGFuZCBDdXJzb3IgTWFuYWdlbWVudCoqOiBUaGUgYERCQ3Vyc29yYCBjbGFzcyBlbmFibGVzIGl0ZXJhdGluZyBvdmVyIHF1ZXJ5IHJlc3VsdHMgd2l0aCBzdXBwb3J0IGZvciBzb3J0aW5nLCBsaW1pdGluZywgYW5kIGJhdGNoIHByb2Nlc3NpbmcuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqRGF0YSBTdG9yYWdlIGFuZCBSZXRyaWV2YWwqKjogRGV2ZWxvcGVycyBjYW4gdXNlIHRoaXMgbW9kdWxlIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBkYXRhIGluIE1vbmdvREIsIGxldmVyYWdpbmcgaXRzIGZsZXhpYmxlIGRvY3VtZW50IG1vZGVsLlxuICogLSAqKkludGVncmF0aW9uIHdpdGggTW9uZ29EQioqOiBCeSBwcm92aWRpbmcgYSBKYXZhU2NyaXB0LWZyaWVuZGx5IEFQSSwgdGhpcyBtb2R1bGUgZmFjaWxpdGF0ZXMgaW50ZWdyYXRpb24gd2l0aCBNb25nb0RCIGluIGFwcGxpY2F0aW9ucyBydW5uaW5nIG9uIHRoZSBEaXJpZ2libGUgcGxhdGZvcm0uXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IENsaWVudCB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbW9uZ29kYlwiO1xuICogXG4gKiAvLyBDcmVhdGUgYSBNb25nb0RCIGNsaWVudCBhbmQgY29ubmVjdCB0byB0aGUgZGF0YWJhc2VcbiAqIGNvbnN0IGNsaWVudCA9IG5ldyBDbGllbnQoXCJtb25nb2RiOi8vbG9jYWxob3N0OjI3MDE3XCIsIFwidXNlcm5hbWVcIiwgXCJwYXNzd29yZFwiKTtcbiAqIGNvbnN0IGRiID0gY2xpZW50LmdldERCKFwibXlEYXRhYmFzZVwiKTtcbiAqIGNvbnN0IGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKFwibXlDb2xsZWN0aW9uXCIpO1xuICogXG4gKiAvLyBJbnNlcnQgYSBkb2N1bWVudCBpbnRvIHRoZSBjb2xsZWN0aW9uXG4gKiBjb2xsZWN0aW9uLmluc2VydCh7IG5hbWU6IFwiQWxpY2VcIiwgYWdlOiAzMCB9KTtcbiAqIFxuICogLy8gRmluZCBkb2N1bWVudHMgaW4gdGhlIGNvbGxlY3Rpb25cbiAqIGNvbnN0IGN1cnNvciA9IGNvbGxlY3Rpb24uZmluZCh7IGFnZTogeyAkZ3Q6IDI1IH0gfSk7XG4gKiB3aGlsZSAoY3Vyc29yLmhhc05leHQoKSkge1xuICogICAgIGNvbnN0IGRvYyA9IGN1cnNvci5uZXh0KCk7XG4gKiAgICAgY29uc29sZS5sb2coZG9jKTtcbiAqIH1cbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IFVVSUQgfSBmcm9tIFwiQGFlcm9raXQvc2RrL3V0aWxzL3V1aWRcIjtcblxuY29uc3QgTW9uZ29EQkZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5tb25nb2RiLk1vbmdvREJGYWNhZGVcIik7XG5jb25zdCBUaW1lVW5pdCA9IEphdmEudHlwZShcImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0XCIpO1xuXG4vKipcbiAqIERlZmluZSBhIGNvbW1vbiB0eXBlIGZvciBpbnB1dCB0byBmdW5jdGlvbnMgdGhhdCBhY2NlcHQgZWl0aGVyIGEgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3RcbiAqICh3aGljaCB3aWxsIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIERCT2JqZWN0KSBvciBhbiBleGlzdGluZyBEQk9iamVjdCB3cmFwcGVyIGluc3RhbmNlLlxuICovXG50eXBlIERCSW5wdXQgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgREJPYmplY3QgfCB1bmRlZmluZWQgfCBudWxsO1xuXG4vKipcbiAqIERCT2JqZWN0IG9iamVjdCByZXByZXNlbnRzIGEgQlNPTiBkb2N1bWVudCB1c2VkIGZvciBxdWVyaWVzLCBpbnNlcnRpb25zLCBhbmQgdXBkYXRlcy5cbiAqIEl0IHdyYXBzIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBKYXZhIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIERCT2JqZWN0IHtcblxuICAgIC8qKlxuICAgICAqIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBKYXZhIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIEJTT04gZG9jdW1lbnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbmF0aXZlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IERCT2JqZWN0IGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBuYXRpdmUgVGhlIG5hdGl2ZSBNb25nb0RCIG9iamVjdCAoZS5nLiwgY29tLm1vbmdvZGIuREJPYmplY3QpXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBuYXRpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwZW5kcyBhIGtleS12YWx1ZSBwYWlyIHRvIHRoZSBEQk9iamVjdC5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBmaWVsZCBuYW1lLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXBwZW5kLlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IERCT2JqZWN0IGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXBwZW5kKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogREJPYmplY3Qge1xuICAgICAgICB0aGlzLm5hdGl2ZS5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBEQk9iamVjdCB0byBhIHN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIChKU09OKS5cbiAgICAgKiBAcmV0dXJucyBBIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyB0b0pzb24oKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS50b0pzb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXJrcyB0aGUgb2JqZWN0IGFzIGEgcGFydGlhbCBvYmplY3QgKHVzZWQgaW50ZXJuYWxseSBieSBNb25nb0RCIGRyaXZlcikuXG4gICAgICovXG4gICAgcHVibGljIG1hcmtBc1BhcnRpYWxPYmplY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLm1hcmtBc1BhcnRpYWxPYmplY3QoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIG9iamVjdCBpcyBhIHBhcnRpYWwgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgcGFydGlhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc1BhcnRpYWxPYmplY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5pc1BhcnRpYWxPYmplY3QoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIERCT2JqZWN0IGNvbnRhaW5zIGEgZmllbGQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBmaWVsZCBuYW1lLlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGZpZWxkIGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb250YWluc0ZpZWxkKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5jb250YWluc0ZpZWxkKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkuXG4gICAgICogQHBhcmFtIGtleSBUaGUgZmllbGQgbmFtZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgZmllbGQgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQdXRzIGEga2V5LXZhbHVlIHBhaXIgaW50byB0aGUgREJPYmplY3QuXG4gICAgICogQHBhcmFtIGtleSBUaGUgZmllbGQgbmFtZS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHB1dC5cbiAgICAgKiBAcmV0dXJucyBUaGUgcHJldmlvdXMgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXksIG9yIG51bGwuXG4gICAgICovXG4gICAgcHVibGljIHB1dChrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5wdXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGZpZWxkIGZyb20gdGhlIERCT2JqZWN0LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGZpZWxkIG5hbWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIFRoZSByZW1vdmVkIGZpZWxkIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5yZW1vdmVGaWVsZChrZXkpO1xuICAgIH1cblxufVxuXG4vKipcbiAqIENvcGllcyB0aGUgcHJvcGVydGllcyBmcm9tIHRoZSBuYXRpdmUgTW9uZ29EQiBvYmplY3QncyBKU09OIHJlcHJlc2VudGF0aW9uXG4gKiBvbnRvIHRoZSBwdWJsaWMgcHJvcGVydGllcyBvZiB0aGUgREJPYmplY3Qgd3JhcHBlciBpbnN0YW5jZS5cbiAqIFRoaXMgYWxsb3dzIGRpcmVjdCBhY2Nlc3MgbGlrZSBgZGJPYmplY3QuZmllbGROYW1lYC5cbiAqIEBwYXJhbSBkYk9iamVjdCBUaGUgREJPYmplY3Qgd3JhcHBlciBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBleHRyYWN0ZWQgcHJvcGVydGllcyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3QoZGJPYmplY3Q6IERCT2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKCFkYk9iamVjdC5uYXRpdmUpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvLyBQYXJzZSB0aGUgbmF0aXZlIG9iamVjdCdzIEpTT04gcmVwcmVzZW50YXRpb25cbiAgICB2YXIgZXh0cmFjdGVkID0gSlNPTi5wYXJzZShkYk9iamVjdC5uYXRpdmUudG9Kc29uKCkpO1xuICAgIC8vIENvcHkgYWxsIHByb3BlcnRpZXMgdG8gdGhlIHdyYXBwZXIgaW5zdGFuY2VcbiAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gZXh0cmFjdGVkKSB7XG4gICAgICAgIGRiT2JqZWN0W3Byb3BlcnR5TmFtZV0gPSBleHRyYWN0ZWRbcHJvcGVydHlOYW1lXTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dHJhY3RlZDtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gaW1wbGljaXRseSBjb252ZXJ0IGEgcGxhaW4gSlMgb2JqZWN0IHRvIGEgREJPYmplY3QsXG4gKiBvciByZXR1cm4gdGhlIGV4aXN0aW5nIERCT2JqZWN0IGluc3RhbmNlLlxuICogQHBhcmFtIG9iamVjdCBJbnB1dCBvYmplY3Qgd2hpY2ggY2FuIGJlIGEgcGxhaW4gb2JqZWN0LCBEQk9iamVjdCwgb3IgdW5kZWZpbmVkL251bGwuXG4gKiBAcmV0dXJucyBEQk9iamVjdCBvciB1bmRlZmluZWQuXG4gKi9cbmZ1bmN0aW9uIGltcGxpY2l0KG9iamVjdDogREJJbnB1dCk6IERCT2JqZWN0IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBFeHBsaWNpdGx5IHJldHVybiB1bmRlZmluZWQgaWYgaW5wdXQgaXMgZmFsc3lcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgaXQgYWxyZWFkeSBoYXMgdGhlIG5hdGl2ZSBwcm9wZXJ0eSAoYXNzdW1lcyBpdCdzIGEgREJPYmplY3Qgb3Igc2ltaWxhciB3cmFwcGVyKVxuICAgIGlmICgob2JqZWN0IGFzIGFueSkubmF0aXZlKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgYXMgREJPYmplY3Q7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCBwbGFpbiBvYmplY3QgdG8gREJPYmplY3RcbiAgICB2YXIgZGJPYmplY3QgPSBjcmVhdGVCYXNpY0RCT2JqZWN0KCk7XG5cbiAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gb2JqZWN0KSB7XG4gICAgICAgIGRiT2JqZWN0LmFwcGVuZChwcm9wZXJ0eU5hbWUsIG9iamVjdFtwcm9wZXJ0eU5hbWVdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRiT2JqZWN0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IERCT2JqZWN0IGluc3RhbmNlLlxuICogQHJldHVybnMgQSBuZXcgREJPYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCYXNpY0RCT2JqZWN0KCk6IERCT2JqZWN0IHtcbiAgICBjb25zdCBkYk9iamVjdCA9IG5ldyBEQk9iamVjdChNb25nb0RCRmFjYWRlLmNyZWF0ZUJhc2ljREJPYmplY3QoKSk7XG4gICAgZXh0cmFjdChkYk9iamVjdCk7XG4gICAgcmV0dXJuIGRiT2JqZWN0O1xufVxuXG4vKipcbiAqIENsaWVudCBvYmplY3Qgd3JhcHBlciBmb3IgY29ubmVjdGluZyB0byBNb25nb0RCLlxuICovXG5leHBvcnQgY2xhc3MgQ2xpZW50IHtcblxuICAgIC8qKlxuICAgICAqIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBNb25nb0RCIGNsaWVudCBvYmplY3QuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBNb25nb0RCIENsaWVudCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gdXJpIFRoZSBNb25nb0RCIGNvbm5lY3Rpb24gVVJJLlxuICAgICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VybmFtZSBmb3IgYXV0aGVudGljYXRpb24uXG4gICAgICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZCBmb3IgYXV0aGVudGljYXRpb24uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IE1vbmdvREJGYWNhZGUuZ2V0Q2xpZW50KHVyaSwgdXNlciwgcGFzc3dvcmQpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGEgZGF0YWJhc2UgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG5hbWUgT3B0aW9uYWwgbmFtZSBvZiB0aGUgZGF0YWJhc2UuIElmIG5vdCBwcm92aWRlZCwgdGhlIGRlZmF1bHQgZGF0YWJhc2UgbmFtZSBpcyB1c2VkLlxuICAgICAqIEByZXR1cm5zIEEgREIgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIGdldERCKG5hbWU/OiBzdHJpbmcpOiBEQiB7XG4gICAgICAgIGxldCBuYXRpdmUgPSBudWxsO1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0REIobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0REIgPSBNb25nb0RCRmFjYWRlLmdldERlZmF1bHREYXRhYmFzZU5hbWUoKTtcbiAgICAgICAgICAgIG5hdGl2ZSA9IHRoaXMubmF0aXZlLmdldERCKGRlZmF1bHREQik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IERCKG5hdGl2ZSk7XG4gICAgfVxufVxuXG4vKipcbiAqIERCIG9iamVjdCB3cmFwcGVyIGZvciBhIE1vbmdvREIgZGF0YWJhc2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEQiB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdW5kZXJseWluZyBuYXRpdmUgTW9uZ29EQiBEQiBvYmplY3QuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBEQiBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gbmF0aXZlIFRoZSBuYXRpdmUgTW9uZ29EQiBEQiBvYmplY3QuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBuYXRpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGEgY29sbGVjdGlvbiBpbnN0YW5jZSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29sbGVjdGlvbi5cbiAgICAgKiBAcmV0dXJucyBBIERCQ29sbGVjdGlvbiBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sbGVjdGlvbihuYW1lOiBzdHJpbmcpOiBEQkNvbGxlY3Rpb24ge1xuICAgICAgICBjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5nZXRDb2xsZWN0aW9uKG5hbWUpO1xuICAgICAgICByZXR1cm4gbmV3IERCQ29sbGVjdGlvbihuYXRpdmUpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBEQkNvbGxlY3Rpb24gb2JqZWN0IHdyYXBwZXIgZm9yIGEgTW9uZ29EQiBjb2xsZWN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgREJDb2xsZWN0aW9uIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBNb25nb0RCIERCQ29sbGVjdGlvbiBvYmplY3QuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBEQkNvbGxlY3Rpb24gaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG5hdGl2ZSBUaGUgbmF0aXZlIE1vbmdvREIgREJDb2xsZWN0aW9uIG9iamVjdC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIGEgZG9jdW1lbnQgaW50byB0aGUgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gZGJPYmplY3QgVGhlIGRvY3VtZW50IHRvIGluc2VydCAoY2FuIGJlIGEgcGxhaW4gSlMgb2JqZWN0IG9yIERCT2JqZWN0KS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5zZXJ0KGRiT2JqZWN0OiBEQklucHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRibyA9IGltcGxpY2l0KGRiT2JqZWN0KTtcbiAgICAgICAgaWYgKGRibykge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmUuaW5zZXJ0KGRiby5uYXRpdmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZG9jdW1lbnRzIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHNwZWNpZmljYXRpb24gKGNhbiBiZSBhIHBsYWluIEpTIG9iamVjdCBvciBEQk9iamVjdCkuXG4gICAgICogQHBhcmFtIHByb2plY3Rpb24gVGhlIGZpZWxkcyB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgKGNhbiBiZSBhIHBsYWluIEpTIG9iamVjdCBvciBEQk9iamVjdCkuXG4gICAgICogQHJldHVybnMgQSBEQkN1cnNvciBmb3IgaXRlcmF0aW5nIG92ZXIgcmVzdWx0cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZChxdWVyeT86IERCSW5wdXQsIHByb2plY3Rpb24/OiBEQklucHV0KTogREJDdXJzb3Ige1xuICAgICAgICBjb25zdCBxID0gaW1wbGljaXQocXVlcnkpO1xuICAgICAgICBjb25zdCBwID0gaW1wbGljaXQocHJvamVjdGlvbik7XG5cbiAgICAgICAgdmFyIG5hdGl2ZSA9IG51bGw7XG4gICAgICAgIGlmIChxKSB7XG4gICAgICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgICAgIG5hdGl2ZSA9IHRoaXMubmF0aXZlLmZpbmQocS5uYXRpdmUsIHAubmF0aXZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZmluZChxLm5hdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5maW5kKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IERCQ3Vyc29yKG5hdGl2ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBzaW5nbGUgZG9jdW1lbnQgbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgc3BlY2lmaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0gcHJvamVjdGlvbiBUaGUgZmllbGRzIHRvIGluY2x1ZGUgb3IgZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0gc29ydCBUaGUgc29ydGluZyBzcGVjaWZpY2F0aW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSBmb3VuZCBkb2N1bWVudCBhcyBhIERCT2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kT25lKHF1ZXJ5OiBEQklucHV0LCBwcm9qZWN0aW9uOiBEQklucHV0LCBzb3J0OiBEQklucHV0KTogREJPYmplY3Qge1xuICAgICAgICBjb25zdCBxID0gaW1wbGljaXQocXVlcnkpO1xuICAgICAgICBjb25zdCBwID0gaW1wbGljaXQocHJvamVjdGlvbik7XG4gICAgICAgIGNvbnN0IHMgPSBpbXBsaWNpdChzb3J0KTtcblxuICAgICAgICB2YXIgZGJPYmplY3QgPSBjcmVhdGVCYXNpY0RCT2JqZWN0KCk7XG4gICAgICAgIHZhciBuYXRpdmUgPSBudWxsO1xuICAgICAgICBpZiAocSkge1xuICAgICAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgICAgICBpZiAocykge1xuICAgICAgICAgICAgICAgICAgICBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5maW5kT25lKHEubmF0aXZlLCBwLm5hdGl2ZSwgcy5uYXRpdmUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZSA9IHRoaXMubmF0aXZlLmZpbmRPbmUocS5uYXRpdmUsIHAubmF0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5hdGl2ZSA9IHRoaXMubmF0aXZlLmZpbmRPbmUocS5uYXRpdmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZmluZE9uZSgpO1xuICAgICAgICB9XG4gICAgICAgIGRiT2JqZWN0Lm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICAgICAgZXh0cmFjdChkYk9iamVjdCk7XG4gICAgICAgIHJldHVybiBkYk9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIHNpbmdsZSBkb2N1bWVudCBieSBpdHMgc3RyaW5nIElELlxuICAgICAqIEBwYXJhbSBpZCBUaGUgc3RyaW5nIElEIG9mIHRoZSBkb2N1bWVudC5cbiAgICAgKiBAcGFyYW0gcHJvamVjdGlvbiBUaGUgZmllbGRzIHRvIGluY2x1ZGUgb3IgZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgZm91bmQgZG9jdW1lbnQgYXMgYSBEQk9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZE9uZUJ5SWQoaWQ6IHN0cmluZywgcHJvamVjdGlvbj86IERCSW5wdXQpOiBEQk9iamVjdCB7XG4gICAgICAgIGNvbnN0IHAgPSBpbXBsaWNpdChwcm9qZWN0aW9uKTtcbiAgICAgICAgY29uc3QgZGJPYmplY3QgPSBjcmVhdGVCYXNpY0RCT2JqZWN0KCk7XG4gICAgICAgIGxldCBuYXRpdmUgPSBudWxsO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZmluZE9uZShpZCwgcC5uYXRpdmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmF0aXZlID0gdGhpcy5uYXRpdmUuZmluZE9uZShpZCk7XG4gICAgICAgIH1cbiAgICAgICAgZGJPYmplY3QubmF0aXZlID0gbmF0aXZlO1xuICAgICAgICBleHRyYWN0KGRiT2JqZWN0KTtcbiAgICAgICAgcmV0dXJuIGRiT2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGRvY3VtZW50cyBpbiB0aGUgY29sbGVjdGlvbiwgb3B0aW9uYWxseSBmaWx0ZXJlZCBieSBhIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSBxdWVyeSBPcHRpb25hbCBxdWVyeSB0byBmaWx0ZXIgdGhlIGNvdW50LlxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZG9jdW1lbnRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChxdWVyeT86IERCSW5wdXQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBxID0gaW1wbGljaXQocXVlcnkpO1xuICAgICAgICBpZiAocSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmNvdW50KHEubmF0aXZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuY291bnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjb3VudCBvZiBkb2N1bWVudHMgKGFsaWFzIGZvciBjb3VudCkuXG4gICAgICogQHBhcmFtIHF1ZXJ5IE9wdGlvbmFsIHF1ZXJ5IHRvIGZpbHRlciB0aGUgY291bnQuXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBkb2N1bWVudHMuXG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50KHF1ZXJ5OiBEQklucHV0KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcSA9IGltcGxpY2l0KHF1ZXJ5KTtcbiAgICAgICAgaWYgKHEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRDb3VudChxLm5hdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldENvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbmRleCBvbiB0aGUgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0ga2V5cyBUaGUgaW5kZXgga2V5IHNwZWNpZmljYXRpb24uXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgaW5kZXggb3B0aW9ucy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlSW5kZXgoa2V5czogREJJbnB1dCwgb3B0aW9uczogREJJbnB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBrID0gaW1wbGljaXQoa2V5cyk7XG4gICAgICAgIGNvbnN0IG8gPSBpbXBsaWNpdChvcHRpb25zKTtcbiAgICAgICAgaWYgKGspIHtcbiAgICAgICAgICAgIGlmIChvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmUuY3JlYXRlSW5kZXgoay5uYXRpdmUsIG8ubmF0aXZlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmUuY3JlYXRlSW5kZXgoay5uYXRpdmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXQgbGVhc3QgS2V5cyBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5kZXggb24gYSBzaW5nbGUgZmllbGQgYnkgbmFtZS5cbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZmllbGQgdG8gaW5kZXguXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUluZGV4Rm9yRmllbGQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZS5jcmVhdGVJbmRleChuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBmaWxlZCBuYW1lIG11c3QgYmUgcHJvdmlkZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGRpc3RpbmN0IHZhbHVlcyBmb3IgYSBzcGVjaWZpZWQgZmllbGQgYWNyb3NzIGEgY29sbGVjdGlvbi5cbiAgICAgKiBOT1RFOiBUaGUgc2lnbmF0dXJlIGluIHRoZSBvcmlnaW5hbCBjb2RlIHNlZW1zIHNsaWdodGx5IG9mZiBjb21wYXJlZCB0byB0eXBpY2FsIE1vbmdvREIgZHJpdmVycy5cbiAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIGZvbGxvd3MgdGhlIG9yaWdpbmFsIHN0cnVjdHVyZSB1c2luZyBga2V5cy5uYXRpdmVgIGlmIGBrZXlzYCBpcyBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgZmllbGQgbmFtZS5cbiAgICAgKiBAcGFyYW0gcXVlcnkgT3B0aW9uYWwgcXVlcnkgdG8gZmlsdGVyIHJlc3VsdHMuXG4gICAgICogQHBhcmFtIGtleXMgT3B0aW9uYWwga2V5cyB0byB1c2UgZm9yIGRpc3RpbmN0IChyZXBsYWNlcyAnbmFtZScgaWYgcHJvdmlkZWQgYW5kIHF1ZXJ5IGV4aXN0cykuXG4gICAgICovXG4gICAgcHVibGljIGRpc3RpbmN0KG5hbWU6IHN0cmluZywgcXVlcnk6IERCSW5wdXQsIGtleXM6IERCSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcSA9IGltcGxpY2l0KHF1ZXJ5KTtcbiAgICAgICAgY29uc3QgayA9IGltcGxpY2l0KGtleXMpO1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgaWYgKHEpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBxdWVyeSBpcyBwcm92aWRlZCwgdXNlIGtleXMgZm9yIHRoZSBmaWVsZCBuYW1lIGlmIGsgaXMgcHJlc2VudCwgb3RoZXJ3aXNlIHVzZSAnbmFtZSdcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZS5kaXN0aW5jdChrID8gay5uYXRpdmUgOiBuYW1lLCBxLm5hdGl2ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlLmRpc3RpbmN0KG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXQgbGVhc3QgdGhlIGZpbGVkIG5hbWUgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEcm9wcyBhIHNwZWNpZmllZCBpbmRleC5cbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIG5hbWUgb2YgdGhlIGluZGV4IG9yIHRoZSBEQk9iamVjdCByZXByZXNlbnRpbmcgdGhlIGluZGV4IGtleXMuXG4gICAgICovXG4gICAgcHVibGljIGRyb3BJbmRleChpbmRleDogc3RyaW5nIHwgREJJbnB1dCk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmUuZHJvcEluZGV4KGluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRibyA9IGltcGxpY2l0KGluZGV4KTtcbiAgICAgICAgICAgIGlmIChkYm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZS5kcm9wSW5kZXgoZGJvLm5hdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEcm9wcyBhIHNwZWNpZmllZCBpbmRleCBieSBuYW1lLlxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBpbmRleC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZHJvcEluZGV4QnlOYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZS5kcm9wSW5kZXgobmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRHJvcHMgYWxsIGluZGV4ZXMgb24gdGhlIGNvbGxlY3Rpb24uXG4gICAgICovXG4gICAgcHVibGljIGRyb3BJbmRleGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZS5kcm9wSW5kZXhlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgZG9jdW1lbnRzIGZyb20gdGhlIGNvbGxlY3Rpb24gbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSBxdWVyeSBUaGUgZGVsZXRpb24gcXVlcnkgc3BlY2lmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlKHF1ZXJ5OiBEQklucHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHEgPSBpbXBsaWNpdChxdWVyeSk7XG4gICAgICAgIGlmIChxKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZS5yZW1vdmUocS5uYXRpdmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuYW1lcyB0aGUgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gbmV3TmFtZSBUaGUgbmV3IG5hbWUgZm9yIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW5hbWUobmV3TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLnJlbmFtZShuZXdOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyBhIGRvY3VtZW50IHRvIHRoZSBjb2xsZWN0aW9uLiBJZiB0aGUgZG9jdW1lbnQgaGFzIGFuIGBfaWRgLCBpdCBwZXJmb3JtcyBhbiB1cGRhdGU7XG4gICAgICogb3RoZXJ3aXNlLCBpdCBwZXJmb3JtcyBhbiBpbnNlcnQuXG4gICAgICogQHBhcmFtIGRiT2JqZWN0IFRoZSBkb2N1bWVudCB0byBzYXZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlKGRiT2JqZWN0OiBEQklucHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRibyA9IGltcGxpY2l0KGRiT2JqZWN0KTtcbiAgICAgICAgaWYgKGRibykge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmUuc2F2ZShkYm8ubmF0aXZlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgZG9jdW1lbnRzIGluIHRoZSBjb2xsZWN0aW9uIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICAgKiBAcGFyYW0gcXVlcnkgVGhlIHVwZGF0ZSBxdWVyeSBzcGVjaWZpY2F0aW9uLlxuICAgICAqIEBwYXJhbSB1cGRhdGUgVGhlIHVwZGF0ZSBvcGVyYXRpb24gc3BlY2lmaWNhdGlvbiAoZS5nLiwgeyRzZXQ6IHsuLi59fSkuXG4gICAgICogQHBhcmFtIHVwc2VydCBJZiB0cnVlLCBjcmVhdGVzIGEgbmV3IGRvY3VtZW50IGlmIG5vIGRvY3VtZW50cyBtYXRjaCB0aGUgcXVlcnkuXG4gICAgICogQHBhcmFtIG11bHRpIElmIHRydWUsIHVwZGF0ZXMgYWxsIGRvY3VtZW50cyBtYXRjaGluZyB0aGUgcXVlcnk7IG90aGVyd2lzZSwgb25seSBvbmUuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShxdWVyeTogREJJbnB1dCwgdXBkYXRlOiBEQklucHV0LCB1cHNlcnQ/OiBib29sZWFuLCBtdWx0aT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcSA9IGltcGxpY2l0KHF1ZXJ5KTtcbiAgICAgICAgY29uc3QgdSA9IGltcGxpY2l0KHVwZGF0ZSk7XG4gICAgICAgIGlmIChxKSB7XG4gICAgICAgICAgICBpZiAodSkge1xuICAgICAgICAgICAgICAgIGlmICh1cHNlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZS51cGRhdGUocS5uYXRpdmUsIHUubmF0aXZlLCB1cHNlcnQsIG11bHRpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlLnVwZGF0ZShxLm5hdGl2ZSwgdS5uYXRpdmUsIHVwc2VydCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZS51cGRhdGUocS5uYXRpdmUsIHUubmF0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSB1cGRhdGUgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgcXVlcnkgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIG11bHRpcGxlIGRvY3VtZW50cyBpbiB0aGUgY29sbGVjdGlvbiBtYXRjaGluZyB0aGUgcXVlcnkuXG4gICAgICogKEVxdWl2YWxlbnQgdG8gY2FsbGluZyBgdXBkYXRlYCB3aXRoIGBtdWx0aT10cnVlYCBhbmQgYHVwc2VydD10cnVlYCBpbXBsaWNpdGx5KS5cbiAgICAgKiBAcGFyYW0gcXVlcnkgVGhlIHVwZGF0ZSBxdWVyeSBzcGVjaWZpY2F0aW9uLlxuICAgICAqIEBwYXJhbSB1cGRhdGUgVGhlIHVwZGF0ZSBvcGVyYXRpb24gc3BlY2lmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlTXVsdGkocXVlcnk6IERCSW5wdXQsIHVwZGF0ZTogREJJbnB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBxID0gaW1wbGljaXQocXVlcnkpO1xuICAgICAgICBjb25zdCB1ID0gaW1wbGljaXQodXBkYXRlKTtcbiAgICAgICAgaWYgKHEpIHtcbiAgICAgICAgICAgIGlmICh1KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmUudXBkYXRlKHEubmF0aXZlLCB1Lm5hdGl2ZSwgdHJ1ZSwgdHJ1ZSk7IC8vIEFzc3VtaW5nIHVwZGF0ZU11bHRpIG1lYW5zIHVwc2VydD10cnVlIGFuZCBtdWx0aT10cnVlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSB1cGRhdGUgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgcXVlcnkgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWRcIik7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgbmV4dCBzZXF1ZW50aWFsIElEIGJhc2VkIG9uIHRoZSBsYXJnZXN0IGV4aXN0aW5nIGBfaWRgIGluIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqIEFzc3VtZXMgYF9pZGAgaXMgYSBudW1lcmljIGZpZWxkLlxuICAgICAqIEByZXR1cm5zIFRoZSBuZXh0IGF2YWlsYWJsZSBzZXF1ZW50aWFsIElEIChzdGFydGluZyBhdCAxIGlmIGNvbGxlY3Rpb24gaXMgZW1wdHkpLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROZXh0SWQoKTogbnVtYmVyIHtcbiAgICAgICAgdmFyIGN1cnNvciA9IHRoaXMuZmluZCh7fSwgeyBcIl9pZFwiOiAxIH0pLnNvcnQoeyBcIl9pZFwiOiAtMSB9KS5saW1pdCgxKTtcbiAgICAgICAgaWYgKCFjdXJzb3IuaGFzTmV4dCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJzb3IubmV4dCgpW1wiX2lkXCJdICsgMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyByYW5kb20gVVVJRCAoVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXIpLlxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgVVVJRC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2VuZXJhdGVVVUlEKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBVVUlELnJhbmRvbSgpO1xuICAgIH1cblxufVxuXG4vKipcbiAqIERCQ3Vyc29yIG9iamVjdCB3cmFwcGVyIGZvciBpdGVyYXRpbmcgb3ZlciByZXN1bHRzIG9mIGEgTW9uZ29EQiBxdWVyeS5cbiAqL1xuZXhwb3J0IGNsYXNzIERCQ3Vyc29yIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBNb25nb0RCIERCQ3Vyc29yIG9iamVjdC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IERCQ3Vyc29yIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBuYXRpdmUgVGhlIG5hdGl2ZSBNb25nb0RCIERCQ3Vyc29yIG9iamVjdC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzaW5nbGUgcmVzdWx0IGZyb20gdGhlIGN1cnNvci5cbiAgICAgKiBAcmV0dXJucyBBIERCT2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZG9jdW1lbnQuXG4gICAgICovXG4gICAgcHVibGljIG9uZSgpOiBEQk9iamVjdCB7XG4gICAgICAgIGNvbnN0IGRiT2JqZWN0ID0gbmV3IERCT2JqZWN0KHRoaXMubmF0aXZlLm9uZSgpKTtcbiAgICAgICAgZXh0cmFjdChkYk9iamVjdCk7XG4gICAgICAgIHJldHVybiBkYk9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBiYXRjaCBzaXplIGZvciB0aGUgY3Vyc29yLlxuICAgICAqIEBwYXJhbSBudW1iZXJPZkVsZW1lbnRzIFRoZSBiYXRjaCBzaXplLlxuICAgICAqIEByZXR1cm5zIFRoZSBEQkN1cnNvciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAgICovXG4gICAgcHVibGljIGJhdGNoU2l6ZShudW1iZXJPZkVsZW1lbnRzOiBudW1iZXIpOiBEQkN1cnNvciB7XG4gICAgICAgIHRoaXMubmF0aXZlLmJhdGNoU2l6ZShudW1iZXJPZkVsZW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY3VycmVudCBiYXRjaCBzaXplLlxuICAgICAqIEByZXR1cm5zIFRoZSBiYXRjaCBzaXplLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCYXRjaFNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldEJhdGNoU2l6ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGNvbGxlY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgY3Vyc29yLlxuICAgICAqIEByZXR1cm5zIFRoZSBEQkNvbGxlY3Rpb24gaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIGdldENvbGxlY3Rpb24oKTogREJDb2xsZWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEQkNvbGxlY3Rpb24odGhpcy5uYXRpdmUuZ2V0Q29sbGVjdGlvbigpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJzb3IgSUQuXG4gICAgICogQHJldHVybnMgVGhlIGN1cnNvciBJRCBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIGdldEN1cnNvcklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRDdXJzb3JJZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHByb2plY3Rpb24gb2JqZWN0IChmaWVsZHMgd2FudGVkKSB1c2VkIGluIHRoZSBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcHJvamVjdGlvbiBEQk9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0S2V5c1dhbnRlZCgpOiBEQk9iamVjdCB7XG4gICAgICAgIGNvbnN0IGRiT2JqZWN0ID0gbmV3IERCT2JqZWN0KHRoaXMubmF0aXZlLmdldEtleXNXYW50ZWQoKSk7XG4gICAgICAgIGV4dHJhY3QoZGJPYmplY3QpO1xuICAgICAgICByZXR1cm4gZGJPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGltaXQgc2V0IG9uIHRoZSBjdXJzb3IuXG4gICAgICogQHJldHVybnMgVGhlIGxpbWl0IG51bWJlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TGltaXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldExpbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBjdXJzb3IuXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhIG5leHQgZG9jdW1lbnQgaW4gdGhlIGN1cnNvci5cbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZXJlIGlzIGEgbmV4dCBkb2N1bWVudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNOZXh0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuaGFzTmV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgbmV4dCBkb2N1bWVudCBpbiB0aGUgY3Vyc29yLlxuICAgICAqIEByZXR1cm5zIFRoZSBuZXh0IGRvY3VtZW50IGFzIGEgREJPYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIG5leHQoKTogREJPYmplY3Qge1xuICAgICAgICBjb25zdCBkYk9iamVjdCA9IG5ldyBEQk9iamVjdCh0aGlzLm5hdGl2ZS5uZXh0KCkpO1xuICAgICAgICBleHRyYWN0KGRiT2JqZWN0KTtcbiAgICAgICAgcmV0dXJuIGRiT2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHF1ZXJ5IG9iamVjdCB1c2VkIHRvIGNyZWF0ZSB0aGlzIGN1cnNvci5cbiAgICAgKiBAcmV0dXJucyBUaGUgcXVlcnkgREJPYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIGdldFF1ZXJ5KCk6IERCT2JqZWN0IHtcbiAgICAgICAgY29uc3QgZGJPYmplY3QgPSBuZXcgREJPYmplY3QodGhpcy5uYXRpdmUuZ2V0UXVlcnkoKSk7XG4gICAgICAgIGV4dHJhY3QoZGJPYmplY3QpO1xuICAgICAgICByZXR1cm4gZGJPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGRvY3VtZW50cyBtYXRjaGVkIGJ5IHRoZSBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBUaGUgdG90YWwgbnVtYmVyIG9mIGRvY3VtZW50cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5sZW5ndGgoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBxdWVyeSByZXR1cm5zIHRoZSByZXN1bHRzLlxuICAgICAqIEBwYXJhbSBvcmRlckJ5IFRoZSBzb3J0aW5nIHNwZWNpZmljYXRpb24gKGUuZy4sIHtmaWVsZDogMX0gZm9yIGFzY2VuZGluZykuXG4gICAgICogQHJldHVybnMgVGhlIERCQ3Vyc29yIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc29ydChvcmRlckJ5OiBEQklucHV0KTogREJDdXJzb3Ige1xuICAgICAgICBjb25zdCBkYm8gPSBpbXBsaWNpdChvcmRlckJ5KTtcbiAgICAgICAgaWYgKCFkYm8pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBvcmRlckJ5IHBhcmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmF0aXZlLnNvcnQoZGJvLm5hdGl2ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExpbWl0cyB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgdG8gYmUgcmV0dXJuZWQuXG4gICAgICogQHBhcmFtIGxpbWl0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBkb2N1bWVudHMgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIFRoZSBEQkN1cnNvciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAgICovXG4gICAgcHVibGljIGxpbWl0KGxpbWl0OiBudW1iZXIpOiBEQkN1cnNvciB7XG4gICAgICAgIHRoaXMubmF0aXZlLmxpbWl0KGxpbWl0KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBleGNsdXNpdmUgdXBwZXIgYm91bmQgZm9yIGEgc3BlY2lmaWMgaW5kZXguXG4gICAgICogQHBhcmFtIG1pbiBUaGUgbWluaW11bSB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgREJDdXJzb3IgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyBtaW4obWluOiBudW1iZXIpOiBEQkN1cnNvciB7XG4gICAgICAgIHRoaXMubmF0aXZlLm1pbihtaW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIGV4Y2x1c2l2ZSB1cHBlciBib3VuZCBmb3IgYSBzcGVjaWZpYyBpbmRleC5cbiAgICAgKiBAcGFyYW0gbWF4IFRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIFRoZSBEQkN1cnNvciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAgICovXG4gICAgcHVibGljIG1heChtYXg6IG51bWJlcik6IERCQ3Vyc29yIHtcbiAgICAgICAgdGhpcy5uYXRpdmUubWF4KG1heCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSB0aW1lb3V0IGZvciB0aGUgc2VydmVyIHRvIGV4ZWN1dGUgdGhlIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSBtYXhUaW1lIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzLlxuICAgICAqIEByZXR1cm5zIFRoZSBEQkN1cnNvciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAgICovXG4gICAgcHVibGljIG1heFRpbWUobWF4VGltZTogbnVtYmVyKTogREJDdXJzb3Ige1xuICAgICAgICB0aGlzLm5hdGl2ZS5tYXhUaW1lKG1heFRpbWUsIFRpbWVVbml0Lk1JTExJU0VDT05EUyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNpemUgb2YgdGhlIHJlc3VsdCBzZXQuXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgbnVtYmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5zaXplKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2tpcHMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZG9jdW1lbnRzLlxuICAgICAqIEBwYXJhbSBudW1iZXJPZkVsZW1lbnRzIFRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIHRvIHNraXAuXG4gICAgICogQHJldHVybnMgVGhlIERCQ3Vyc29yIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2tpcChudW1iZXJPZkVsZW1lbnRzOiBudW1iZXIpOiBEQkN1cnNvciB7XG4gICAgICAgIHRoaXMubmF0aXZlLnNraXAobnVtYmVyT2ZFbGVtZW50cyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBc0NBLFNBQVMsWUFBWTtBQUVyQixNQUFNLGdCQUFnQixLQUFLLEtBQUssNERBQTREO0FBQzVGLE1BQU0sV0FBVyxLQUFLLEtBQUssK0JBQStCO0FBWW5ELE1BQU0sU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNUCxZQUFZLFFBQWE7QUFDckIsU0FBSyxTQUFTO0FBQUEsRUFDbEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLE9BQU8sS0FBYSxPQUFzQjtBQUM3QyxTQUFLLE9BQU8sT0FBTyxLQUFLLEtBQUs7QUFDN0IsV0FBTztBQUFBLEVBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sU0FBaUM7QUFDcEMsV0FBTyxLQUFLLE9BQU8sT0FBTztBQUFBLEVBQzlCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxzQkFBNEI7QUFDL0IsU0FBSyxPQUFPLG9CQUFvQjtBQUFBLEVBQ3BDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLGtCQUEyQjtBQUM5QixX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
|
package/dist/esm/mongodb/dao.mjs
CHANGED
|
@@ -359,4 +359,4 @@ export {
|
|
|
359
359
|
create,
|
|
360
360
|
dao
|
|
361
361
|
};
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vbmdvZGIvZGFvLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZ2xvYmFscyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvY29yZVwiXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tIFwiLi9jbGllbnRcIlxuaW1wb3J0ICogYXMgZGlyaWdpYmxlT3JtIGZyb20gXCJAYWVyb2tpdC9zZGsvZGIvb3JtXCI7XG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9sb2dcIjtcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9jb3JlXCI7XG5cbmNvbnN0IGRiVXJpID0gQ29uZmlndXJhdGlvbnMuZ2V0KFwiRElSSUdJQkxFX01PTkdPREJfQ0xJRU5UX1VSSVwiLCBcIm1vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTdcIik7XG5cbmNvbnN0IG1vbmdvQ2xpZW50ID0gbmV3IENsaWVudChkYlVyaSwgbnVsbCwgbnVsbCk7XG5jb25zdCBkYiA9IG1vbmdvQ2xpZW50LmdldERCKCk7XG5cbmV4cG9ydCBjbGFzcyBEQU8ge1xuICAgIHByaXZhdGUgb3JtOiBhbnk7XG4gICAgJGxvZztcblxuICAgIGNvbnN0cnVjdG9yKG9ybTogYW55LCBsb2dDdHhOYW1lOiBzdHJpbmcgPSAnbW9uZ29kYi5kYW8nKSB7XG4gICAgICAgIHRoaXMub3JtID0gZGlyaWdpYmxlT3JtLmdldChvcm0pO1xuXG4gICAgICAgIGxldCBsb2dnZXJOYW1lID0gbG9nQ3R4TmFtZTtcbiAgICAgICAgaWYgKHRoaXMub3JtLnRhYmxlKSB7XG4gICAgICAgICAgICBsb2dnZXJOYW1lID0gJ21vbmdvZGIuZGFvLicgKyAodGhpcy5vcm0udGFibGUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kbG9nID0gTG9nZ2luZy5nZXRMb2dnZXIobG9nZ2VyTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeShldmVudCwgLi4uYSk6IHZvaWQge1xuICAgICAgICB2YXIgZnVuYyA9IHRoaXNbZXZlbnRdO1xuICAgICAgICBpZiAoIXRoaXNbZXZlbnRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudC4gTm90IGEgZnVuY3Rpb246ICcgKyBmdW5jKTtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncy5zbGljZSgxKSk7XG4gICAgfVxuXG4gICAgLy9QcmVwYXJlIGEgSlNPTiBvYmplY3QgZm9yIGluc2VydCBpbnRvIERCXG4gICAgcHVibGljIGNyZWF0ZU5vU1FMRW50aXR5KGVudGl0eSk6IGFueSB7XG4gICAgICAgIHZhciBwZXJzaXN0ZW50SXRlbSA9IHt9O1xuICAgICAgICB2YXIgbWFuZGF0b3JpZXMgPSB0aGlzLm9ybS5nZXRNYW5kYXRvcnlQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFuZGF0b3JpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChtYW5kYXRvcmllc1tpXS5kYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcGVyc2lzdGVudEl0ZW1bbWFuZGF0b3JpZXNbaV0ubmFtZV0gPSBtYW5kYXRvcmllc1tpXS5kYlZhbHVlLmFwcGx5KHRoaXMsIFtlbnRpdHlbbWFuZGF0b3JpZXNbaV0ubmFtZV0sIGVudGl0eV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZXJzaXN0ZW50SXRlbVttYW5kYXRvcmllc1tpXS5uYW1lXSA9IGVudGl0eVttYW5kYXRvcmllc1tpXS5uYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgb3B0aW9uYWxzID0gdGhpcy5vcm0uZ2V0T3B0aW9uYWxQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3B0aW9uYWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uYWxzW2ldLmRiVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHBlcnNpc3RlbnRJdGVtW29wdGlvbmFsc1tpXS5uYW1lXSA9IG9wdGlvbmFsc1tpXS5kYlZhbHVlLmFwcGx5KHRoaXMsIFtlbnRpdHlbb3B0aW9uYWxzW2ldLm5hbWVdLCBlbnRpdHldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVyc2lzdGVudEl0ZW1bb3B0aW9uYWxzW2ldLm5hbWVdID0gZW50aXR5W29wdGlvbmFsc1tpXS5uYW1lXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGVudGl0eVtvcHRpb25hbHNbaV0ubmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1zZ0lkU2VnbWVudCA9IHBlcnNpc3RlbnRJdGVtW3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSA/IFwiW1wiICsgcGVyc2lzdGVudEl0ZW1bdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdICsgXCJdXCIgOiBcIlwiO1xuICAgICAgICB0aGlzLiRsb2cuaW5mbyhcIlRyYW5zZm9ybWF0aW9uIHRvIHt9IERCIEpTT04gb2JqZWN0IGZpbmlzaGVkXCIsICh0aGlzLm9ybS50YWJsZSArIG1zZ0lkU2VnbWVudCkpO1xuICAgICAgICByZXR1cm4gcGVyc2lzdGVudEl0ZW07XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyB2YWxpZGF0ZUVudGl0eShlbnRpdHksIHNraXApOiB2b2lkIHtcbiAgICAgICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkIHx8IGVudGl0eSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBlbnRpdHkgaXMgJyArIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNraXApIHtcbiAgICAgICAgICAgIGlmIChza2lwLmNvbnN0cnVjdG9yICE9PSBBcnJheSkge1xuICAgICAgICAgICAgICAgIHNraXAgPSBbc2tpcF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNraXAubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBza2lwW2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBtYW5kYXRvcmllcyA9IHRoaXMub3JtLmdldE1hbmRhdG9yeVByb3BlcnRpZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYW5kYXRvcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHByb3BOYW1lID0gbWFuZGF0b3JpZXNbaV0ubmFtZTtcbiAgICAgICAgICAgIGlmICgoc2tpcCAmJiBza2lwLmluZGV4T2YocHJvcE5hbWUpID4gLTEpIHx8IG1hbmRhdG9yaWVzW2ldLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0JPT0xFQU4nKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSA9IGVudGl0eVtwcm9wTmFtZV07XG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQgfHwgcHJvcFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsICcgKyBwcm9wTmFtZSArICcgYXR0cmlidXRlIHZhbHVlIGluICcgKyB0aGlzLm9ybS50YWJsZSArICcgZW50aXR5OiAnICsgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgaW5zZXJ0KF9lbnRpdHkpIHtcbiAgICBcbiAgICAgICAgdmFyIGVudGl0aWVzID0gX2VudGl0eTtcbiAgICAgICAgaWYgKF9lbnRpdHkuY29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICAgICAgICBlbnRpdGllcyA9IFtfZW50aXR5XTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnSW5zZXJ0aW5nIHt9IHt9JywgdGhpcy5vcm0udGFibGUsIChlbnRpdGllcy5sZW5ndGggPT09IDEgPyAnZW50aXR5JyA6ICdlbnRpdGllcycpKTtcbiAgICBcbiAgICAgICAgdmFyIHVwZGF0ZWRSZWNvcmRDb3VudCA9IDA7XG4gICAgICAgIHZhciBpZHMgPSBbXTtcbiAgICBcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRpdGllcy5sZW5ndGg7IGkrKykge1xuICAgIFxuICAgICAgICAgICAgdmFyIGVudGl0eSA9IGVudGl0aWVzW2ldO1xuICAgIFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVudGl0eShlbnRpdHksIFt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0pO1xuICAgIFxuICAgICAgICAgICAgdmFyIGRiRW50aXR5ID0gdGhpcy5jcmVhdGVOb1NRTEVudGl0eShlbnRpdHkpO1xuICAgIFxuICAgICAgICAgICAgdHJ5IHtcbiAgICBcbiAgICAgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IGRiLmdldENvbGxlY3Rpb24odGhpcy5vcm0udGFibGUpO1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IGNvbGxlY3Rpb24uZ2V0TmV4dElkKCk7XG4gICAgXG4gICAgICAgICAgICAgICAgZGJFbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdID0gaWQ7XG4gICAgICAgICAgICAgICAgZGJFbnRpdHlbXCJfaWRcIl0gPSBpZDtcbiAgICBcbiAgICBcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLmluc2VydChkYkVudGl0eSk7XG4gICAgICAgICAgICAgICAgdXBkYXRlZFJlY29yZENvdW50Kys7XG4gICAgXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2FmdGVySW5zZXJ0JywgZGJFbnRpdHkpO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCdiZWZvcmVJbnNlcnRBc3NvY2lhdGlvblNldHMnLCBkYkVudGl0eSk7XG4gICAgXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRSZWNvcmRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWRzLnB1c2goZGJFbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kbG9nLmluZm8oJ3t9W10gZW50aXR5IGluc2VydGVkJywgdGhpcy5vcm0udGFibGUsIGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kbG9nLmluZm8oJ05vIGNoYW5nZXMgaW5jdXJyZWQgaW4ge30nLCB0aGlzLm9ybS50YWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgIFxuICAgIFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5lcnJvcihcIkluc2VydGluZyB7fSB7fSBmYWlsZWRcIiwgdGhpcy5vcm0udGFibGUsIChlbnRpdGllcy5sZW5ndGggPT09IDEgPyAnZW50aXR5JyA6ICdlbnRpdGllcycpLCBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygnUm9sbGluZyBiYWNrIGNoYW5nZXMgYWZ0ZXIgZmFpbGVkIHt9W3t9XSBpbnNlcnQuICcsIHRoaXMub3JtLnRhYmxlLCBkYkVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0pO1xuICAgICAgICAgICAgICAgIGlmIChkYkVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlKGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKCdDb3VsZCBub3Qgcm9sbGJhY2sgY2hhbmdlcyBhZnRlciBmYWlsZWQge31be31dIGluc2VydC4gJywgdGhpcy5vcm0udGFibGUsIGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIGlmIChfZW50aXR5LmNvbnN0cnVjdG9yICE9PSBBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBpZHNbMF07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBpZHM7XG4gICAgfVxuICAgIFxuICAgIC8vIHVwZGF0ZSBlbnRpdHkgZnJvbSBhIEpTT04gb2JqZWN0LiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgdXBkYXRlZCBlbnRpdHkuXG4gICAgcHVibGljIHVwZGF0ZShlbnRpdHkpIHtcbiAgICBcbiAgICAgICAgdGhpcy4kbG9nLmluZm8oJ1VwZGF0aW5nIHt9W3t9XSBlbnRpdHknLCB0aGlzLm9ybS50YWJsZSwgZW50aXR5ICE9PSB1bmRlZmluZWQgPyBlbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdIDogZW50aXR5KTtcbiAgICBcbiAgICAgICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkIHx8IGVudGl0eSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBlbnRpdHkgaXMgJyArIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdmFyIGlnbm9yZWRQcm9wZXJ0aWVzID0gdGhpcy5vcm0uZ2V0TWFuZGF0b3J5UHJvcGVydGllcygpXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eS5hbGxvd2VkT3BzICYmIHByb3BlcnR5LmFsbG93ZWRPcHMuaW5kZXhPZigndXBkYXRlJykgPCAwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5Lm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUVudGl0eShlbnRpdHksIGlnbm9yZWRQcm9wZXJ0aWVzKTtcbiAgICBcbiAgICAgICAgdmFyIGRiRW50aXR5ID0gdGhpcy5jcmVhdGVOb1NRTEVudGl0eShlbnRpdHkpO1xuICAgICAgICBkYkVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0gPSBlbnRpdHlbXCJfaWRcIl07XG4gICAgICAgIGRiRW50aXR5W1wiX2lkXCJdID0gZW50aXR5W1wiX2lkXCJdO1xuICAgIFxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2JlZm9yZVVwZGF0ZUVudGl0eScsIGRiRW50aXR5KTtcbiAgICBcbiAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gZGIuZ2V0Q29sbGVjdGlvbih0aGlzLm9ybS50YWJsZSk7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLnVwZGF0ZSh7IFwiX2lkXCI6IGVudGl0eVtcIl9pZFwiXSB9LCBkYkVudGl0eSk7XG4gICAgXG4gICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygne31be31dIGVudGl0eSB1cGRhdGVkJywgdGhpcy5vcm0udGFibGUsIGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSk7XG4gICAgXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKCdVcGRhdGluZyB7fVt7fV0gZmFpbGVkJywgdGhpcy5vcm0udGFibGUsIGVudGl0eSAhPT0gdW5kZWZpbmVkID8gZW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSA6IGVudGl0eSwgZSk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBkZWxldGUgZW50aXR5IGJ5IGlkLCBvciBhcnJheSBvZiBpZHMsIG9yIGRlbGV0ZSBhbGwgKGlmIG5vdCBhcmd1bWVudCBpcyBwcm92aWRlZCkuXG4gICAgcHVibGljIHJlbW92ZShpZCkge1xuICAgIFxuICAgICAgICB2YXIgaWRzID0gW107XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZHMgPSB0aGlzLmxpc3Qoe1xuICAgICAgICAgICAgICAgIFwiJHNlbGVjdFwiOiBbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdXG4gICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24gKGVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbnRbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHNbMF0uY29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWRzID0gW2FyZ3VtZW50c1swXV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlkcyA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnRGVsZXRpbmcgJyArIHRoaXMub3JtLnRhYmxlICsgKChpZHMgIT09IHVuZGVmaW5lZCAmJiBpZHMubGVuZ3RoID09PSAxKSA/ICdbJyArIGlkc1swXSArICddIGVudGl0eScgOiBpZHMubGVuZ3RoICsgJyBlbnRpdGllcycpKTtcbiAgICBcbiAgICBcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcbiAgICBcbiAgICAgICAgICAgIHZhciBpZCA9IGlkc1tpXTtcbiAgICBcbiAgICAgICAgICAgIGlmIChpZHMubGVuZ3RoID4gMSlcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygnRGVsZXRpbmcge31be31dIGVudGl0eScsIHRoaXMub3JtLnRhYmxlLCBpZCk7XG4gICAgXG4gICAgICAgICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCB8fCBpZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBhcmd1bWVudCBmb3IgaWQgcGFyYW1ldGVyOicgKyBpZCk7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICB0cnkge1xuICAgIFxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCdiZWZvcmVSZW1vdmVFbnRpdHknLCBpZCk7XG4gICAgXG4gICAgICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnJlbW92ZSh7IFwiX2lkXCI6IGlkIH0pO1xuICAgIFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5lcnJvcignRGVsZXRpbmcge31be31dIGVudGl0eSBmYWlsZWQnLCB0aGlzLm9ybS50YWJsZSwgaWQsIGUpO1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgIH1cbiAgICBcbiAgICB9XG4gICAgXG4gICAgcHVibGljIGV4cGFuZChleHBhbnNpb25QYXRoLCBjb250ZXh0KSB7XG4gICAgICAgIHRoaXMuJGxvZy5pbmZvKCdFeHBhbmRpbmcgZm9yIGFzc29jaWF0aW9uIHBhdGgge30gYW5kIGNvbnRleHQgZW50aXR5IHt9JywgZXhwYW5zaW9uUGF0aCwgKHR5cGVvZiBhcmd1bWVudHNbMV0gIT09ICdvYmplY3QnID8gJ2lkICcgOiAnJykgKyBKU09OLnN0cmluZ2lmeShhcmd1bWVudHNbMV0pKTtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBcbiAgICAvKiBcbiAgICAgICAgUmVhZHMgYSBzaW5nbGUgZW50aXR5IGJ5IGlkLCBwYXJzZWQgaW50byBKU09OIG9iamVjdC4gXG4gICAgICAgIElmIHJlcXVlc3RlZCBhcyBleHBhbmRlZCB0aGUgcmV0dXJuZWQgZW50aXR5IHdpbGwgY29tcHJpc2UgYXNzb2NpYXRlZCAoZGVwZW5kZW50KSBlbnRpdGllcyB0b28uIEV4cGFuZCBjYW4gYmUgYSBzdHJpbmcgdGhhIHRpcyBhIHZhbGlkIGFzc29jaWF0aW9uIG5hbWUgZGVmaW5lZCBpbiB0aGlzIGRhbyBvcm0gb3JcbiAgICAgICAgYW4gYXJyYXkgb2Ygc3VjaCBuYW1lcy5cbiAgICAqL1xuICAgIHB1YmxpYyBmaW5kKGlkLCBleHBhbmQsIHNlbGVjdCkge1xuICAgIFxuICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlkID0gYXJndW1lbnRzWzBdLmlkO1xuICAgICAgICAgICAgZXhwYW5kID0gYXJndW1lbnRzWzBdLiRleHBhbmQgfHwgYXJndW1lbnRzWzBdLmV4cGFuZDtcbiAgICAgICAgICAgIHNlbGVjdCA9IGFyZ3VtZW50c1swXS4kc2VsZWN0IHx8IGFyZ3VtZW50c1swXS5zZWxlY3Q7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdGhpcy4kbG9nLmluZm8oJ0ZpbmRpbmcge31be31dIGVudGl0eSB3aXRoIGxpc3QgcGFyYW1ldGVycyBleHBhbmRbe31dLCBzZWxlY3Rbe31dJywgdGhpcy5vcm0udGFibGUsIGlkLCBleHBhbmQsIHNlbGVjdCk7XG4gICAgXG4gICAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQgZm9yIGlkIHBhcmFtZXRlcjonICsgaWQpO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgZW50aXR5O1xuICAgICAgICAgICAgaWYgKHNlbGVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdC5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgPSBzZWxlY3Quc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKHNlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWwuY29uc3RydWN0b3IgIT09IFN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IHNlbGVjdCBhcnJheSBjb21wb25lbnRzIGFyZSBleHBlY3RlZCBvdCBiZSBzdHJpbmdzIGJ1dCBmb3VuZCAnICsgKHR5cGVvZiBzZWwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IHNlbGVjdCBpcyBleHBlY3RlZCB0byBiZSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncyBidXQgd2FzICcgKyAodHlwZW9mIHNlbGVjdCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9lbnN1cmUgdGhhdCBqb2lua2V5cyBmb3IgcmVxdWlyZWQgZXhwYW5kcyBhcmUgYXZhaWxhYmxlIGFuZCBub3QgZmlsdGVyZWQgYnkgc2VsZWN0XG4gICAgICAgICAgICBpZiAoc2VsZWN0ICE9PSB1bmRlZmluZWQgJiYgZXhwYW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3QucHVzaCh0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICB2YXIgcGFyYW1zID0ge307XG4gICAgICAgICAgICBwYXJhbXNbXCJfaWRcIl0gPSBpZDtcbiAgICBcbiAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gZGIuZ2V0Q29sbGVjdGlvbih0aGlzLm9ybS50YWJsZSk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSBjb2xsZWN0aW9uLmZpbmQocGFyYW1zLCBzZWxlY3QpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSBjb2xsZWN0aW9uLmZpbmRPbmVCeUlkKGlkKTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICBcbiAgICAgICAgICAgIGlmIChlbnRpdHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygne31be31dIGVudGl0eSBmb3VuZCcsIHRoaXMub3JtLnRhYmxlLCBpZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2FmdGVyRm91bmQnLCBlbnRpdHkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygne31be31dIGVudGl0eSBub3QgZm91bmQnLCB0aGlzLm9ybS50YWJsZSwgaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKFwiRmluZGluZyB7fVt7fV0gZW50aXRpeSBmYWlsZWQuXCIsIHRoaXMub3JtLnRhYmxlLCBpZCwgZSk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnQ291bnRpbmcgJyArIHRoaXMub3JtLnRhYmxlICsgJyBlbnRpdGllcycpO1xuICAgIFxuICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgIGNvdW50ID0gY29sbGVjdGlvbi5jb3VudCgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLiRsb2cuZXJyb3IoJ0NvdW50aW5nIHt9IGVudGl0aWVzIGZhaWxlZCcsIHRoaXMub3JtLnRhYmxlLCBlKTtcbiAgICAgICAgICAgIC8vIGUuZXJyQ29udGV4dCA9IHBhcmFtZXRlcmljU3RhdGVtZW50LnRvU3RyaW5nKCk7IC8vIFRPRE86IHBhcmFtZXRlcmljU3RhdGVtZW50P1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygne30ge30gZW50aXRpZXMgY291bnRlZCcsIFN0cmluZyhjb3VudCksIHRoaXMub3JtLnRhYmxlKTtcbiAgICBcbiAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH07XG4gICAgXG4gICAgLypcbiAgICAgKiBsaXN0IHBhcmFtZXRlcnM6XG4gICAgICogLSAkZXhwYW5kXG4gICAgICogLSAkZmlsdGVyXG4gICAgICogLSAkc2VsZWN0XG4gICAgICogLSAkc29ydFxuICAgICAqIC0gJG9yZGVyIFxuICAgICAqIC0gJGxpbWl0XG4gICAgICogLSAkb2Zmc2V0XG4gICAgICovXG4gICAgcHVibGljIGxpc3Qoc2V0dGluZ3MpIHtcbiAgICBcbiAgICAgICAgc2V0dGluZ3MgPSBzZXR0aW5ncyB8fCB7fTtcbiAgICBcbiAgICAgICAgdmFyIGV4cGFuZCA9IHNldHRpbmdzLiRleHBhbmQgfHwgc2V0dGluZ3MuZXhwYW5kO1xuICAgICAgICBpZiAoZXhwYW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChleHBhbmQuY29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4cGFuZC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleHBhbmQuaW5kZXhPZignLCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLiRleHBhbmQgPSBleHBhbmQuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGV4cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHAuY29uc3RydWN0b3IgIT09IFN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IGV4cGFuZCBhcnJheSBjb21wb25lbnRzIGFyZSBleHBlY3RlZCBvdCBiZSBzdHJpbmdzIGJ1dCBmb3VuZCAnICsgKHR5cGVvZiBleHApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuJGV4cGFuZCA9IFtleHBhbmRdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IGV4cGFuZCBpcyBleHBlY3RlZCB0byBiZSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncyBidXQgd2FzICcgKyAodHlwZW9mIGV4cGFuZCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIFxuICAgICAgICB2YXIgc2VsZWN0ID0gc2V0dGluZ3MuJHNlbGVjdCB8fCBzZXR0aW5ncy5zZWxlY3Q7XG4gICAgICAgIGlmIChzZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHNlbGVjdC5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0LmNvbnN0cnVjdG9yID09PSBTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdC5pbmRleE9mKCcsJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuJHNlbGVjdCA9IHNlbGVjdC5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoZXhwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cC5jb25zdHJ1Y3RvciAhPT0gU3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogc2VsZWN0IGFycmF5IGNvbXBvbmVudHMgYXJlIGV4cGVjdGVkIG90IGJlIHN0cmluZ3MgYnV0IGZvdW5kICcgKyAodHlwZW9mIGV4cCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHAudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy4kc2VsZWN0ID0gW3NlbGVjdF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogc2VsZWN0IGlzIGV4cGVjdGVkIHRvIGJlIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIGJ1dCB3YXMgJyArICh0eXBlb2YgZXhwYW5kKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIHZhciBsaXN0QXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIGxpc3RBcmdzLnB1c2goJyAnICsga2V5ICsgJ1snICsgc2V0dGluZ3Nba2V5XSArICddJyk7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdGhpcy4kbG9nLmluZm8oJ0xpc3Rpbmcge30gZW50aXR5IGNvbGxlY3Rpb24gd2l0aCBsaXN0IG9wZXJhdG9yczoge30nLCB0aGlzLm9ybS50YWJsZSwgbGlzdEFyZ3Muam9pbignLCcpKTtcbiAgICBcbiAgICAgICAgaWYgKHNldHRpbmdzLiRzZWxlY3QgIT09IHVuZGVmaW5lZCAmJiBleHBhbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0dGluZ3MuJHNlbGVjdC5wdXNoKHRoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lKTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICAvL3NpbXBsaXN0aWMgZmlsdGVyaW5nIG9mIChvbmx5KSBzdHJpbmcgcHJvcGVydGllcyB3aXRoIGxpa2VcbiAgICAgICAgaWYgKHNldHRpbmdzLiRmaWx0ZXIpIHtcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy4kZmlsdGVyLmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgc2V0dGluZ3MuJGZpbHRlciA9IHNldHRpbmdzLiRmaWx0ZXIuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0dGluZ3MuJGZpbHRlciA9IFtzZXR0aW5ncy4kZmlsdGVyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldHRpbmdzLiRmaWx0ZXIgPSBzZXR0aW5ncy4kZmlsdGVyLmZpbHRlcihmdW5jdGlvbiAoZmlsdGVyRmllbGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcCA9IHRoaXMub3Jtc3RhdGVtZW50cy5vcm0uZ2V0UHJvcGVydHkoZmlsdGVyRmllbGQpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSB1bmRlZmluZWQgfHwgcHJvcC50eXBlLnRvVXBwZXJDYXNlKCkgIT09ICdWQVJDSEFSJyB8fCBzZXR0aW5nc1twcm9wLm5hbWVdID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXR0aW5nc1twcm9wLm5hbWVdID0gJyUnICsgc2V0dGluZ3NbcHJvcC5uYW1lXSArICclJztcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBlbnRpdGllcyA9IFtdO1xuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgIHZhciBjdXJzb3IgPSBjb2xsZWN0aW9uLmZpbmQoKTtcbiAgICAgICAgICAgIHdoaWxlIChjdXJzb3IuaGFzTmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgZW50aXRpZXMucHVzaChjdXJzb3IubmV4dCgpKTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIHRoaXMuJGxvZy5pbmZvKCd7fSB7fSBlbnRpdGllcyBmb3VuZCcsIGVudGl0aWVzLmxlbmd0aCwgdGhpcy5vcm0udGFibGUpO1xuICAgIFxuICAgICAgICAgICAgcmV0dXJuIGVudGl0aWVzO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLiRsb2cuZXJyb3IoXCJMaXN0aW5nIHt9IGVudGl0aWVzIGZhaWxlZC5cIiwgdGhpcy5vcm0udGFibGUsIGUpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgZXhpc3RzVGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgY3JlYXRlVGFibGUoKTogdm9pZCB7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBkcm9wVGFibGUoKTogREFPIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG4vKipcbiAqIG9EZWZpbml0aW9uIGNhbiBiZSB0YWJsZSBkZWZpbml0aW9uIG9yIHN0YW5kYXJkIG9ybSBkZWZpbml0aW9uIG9iamVjdC4gT3IgaXQgY2FuIGJlIGEgdmFsaWQgcGF0aCB0b1xuICogYSAudGFibGUgZmlsZSwgb3IgYW55IG90aGVyIHRleHQgZmlsZSBjb250aWFuaW5nIGEgc3RhbmRhcmQgZGFvIG9ybSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKG9EZWZpbml0aW9uLCBsb2dDdHhOYW1lLCBkYXRhU291cmNlTmFtZSwgZGF0YWJhc2VUeXBlKSB7XG4gICAgdmFyIG9ybTtcblxuICAgIG9ybSA9IG9EZWZpbml0aW9uO1xuXG4gICAgdmFyIHByb2R1Y3ROYW1lID0gZ2xvYmFscy5nZXQoZGF0YWJhc2VUeXBlICsgXCJfXCIgKyBkYXRhU291cmNlTmFtZSk7XG4gICAgaWYgKCFwcm9kdWN0TmFtZSkge1xuICAgICAgICBwcm9kdWN0TmFtZSA9IFwiTW9uZ29EQlwiO1xuICAgICAgICBnbG9iYWxzLnNldChkYXRhYmFzZVR5cGUgKyBcIl9cIiArIGRhdGFTb3VyY2VOYW1lLCBwcm9kdWN0TmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEQU8ob3JtLCBsb2dDdHhOYW1lKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkYW8ob0RlZmluaXRpb24sIGxvZ0N0eE5hbWUsIGRhdGFTb3VyY2VOYW1lLCBkYXRhYmFzZVR5cGUpIHtcbiAgICByZXR1cm4gY3JlYXRlKG9EZWZpbml0aW9uLCBsb2dDdHhOYW1lLCBkYXRhU291cmNlTmFtZSwgZGF0YWJhc2VUeXBlKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUVBLFNBQVMsZUFBZTtBQUN4QixTQUFTLGNBQWM7QUFDdkIsWUFBWSxrQkFBa0I7QUFDOUIsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsc0JBQXNCO0FBRS9CLE1BQU0sUUFBUSxlQUFlLElBQUksZ0NBQWdDLDJCQUEyQjtBQUU1RixNQUFNLGNBQWMsSUFBSSxPQUFPLE9BQU8sTUFBTSxJQUFJO0FBQ2hELE1BQU0sS0FBSyxZQUFZLE1BQU07QUFFdEIsTUFBTSxJQUFJO0FBQUEsRUFDTDtBQUFBLEVBQ1I7QUFBQSxFQUVBLFlBQVksS0FBVSxhQUFxQixlQUFlO0FBQ3RELFNBQUssTUFBTSxhQUFhLElBQUksR0FBRztBQUUvQixRQUFJLGFBQWE7QUFDakIsUUFBSSxLQUFLLElBQUksT0FBTztBQUNoQixtQkFBYSxpQkFBa0IsS0FBSyxJQUFJLE1BQU0sWUFBWTtBQUFBLElBQzlEO0FBQ0EsU0FBSyxPQUFPLFFBQVEsVUFBVSxVQUFVO0FBQUEsRUFDNUM7QUFBQSxFQUVPLE9BQU8sVUFBVSxHQUFTO0FBQzdCLFFBQUksT0FBTyxLQUFLLEtBQUs7QUFDckIsUUFBSSxDQUFDLEtBQUssS0FBSztBQUNYO0FBQ0osUUFBSSxPQUFPLFNBQVM7QUFDaEIsWUFBTSxNQUFNLHVDQUF1QyxJQUFJO0FBQzNELFFBQUksT0FBTyxDQUFDLEVBQUUsTUFBTSxLQUFLLFNBQVM7QUFDbEMsU0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztBQUFBLEVBQ2xDO0FBQUE7QUFBQSxFQUdP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
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vbmdvZGIvZGFvLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgbW9uZ29kYi9kYW9cbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9tb25nb2RiXG4gKiBAbmFtZSBEQU9cbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgREFPIChEYXRhIEFjY2VzcyBPYmplY3QpIG1vZHVsZSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgYWJzdHJhY3Rpb24gZm9yIHBlcmZvcm1pbmcgQ1JVRCBvcGVyYXRpb25zIG9uIE1vbmdvREIgY29sbGVjdGlvbnMuIEl0IGRlZmluZXMgYSBEQU8gY2xhc3MgdGhhdCBlbmNhcHN1bGF0ZXMgdGhlIGxvZ2ljIGZvciBpbnRlcmFjdGluZyB3aXRoIE1vbmdvREIsIGluY2x1ZGluZyBlbnRpdHkgdmFsaWRhdGlvbiwgdHJhbnNmb3JtYXRpb24sIGFuZCBkYXRhYmFzZSBvcGVyYXRpb25zLiBUaGUgbW9kdWxlIGFsc28gaW5jbHVkZXMgYSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBjcmVhdGluZyBEQU8gaW5zdGFuY2VzIGJhc2VkIG9uIE9STSBkZWZpbml0aW9ucy5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlczpcbiAqIC0gKipFbnRpdHkgVmFsaWRhdGlvbioqOiBUaGUgREFPIGNsYXNzIGluY2x1ZGVzIG1ldGhvZHMgZm9yIHZhbGlkYXRpbmcgZW50aXRpZXMgYWdhaW5zdCBtYW5kYXRvcnkgcHJvcGVydGllcyBkZWZpbmVkIGluIHRoZSBPUk0uXG4gKiAtICoqRW50aXR5IFRyYW5zZm9ybWF0aW9uKio6IFRoZSBgY3JlYXRlTm9TUUxFbnRpdHlgIG1ldGhvZCB0cmFuc2Zvcm1zIEphdmFTY3JpcHQgb2JqZWN0cyBpbnRvIGEgZm9ybWF0IHN1aXRhYmxlIGZvciBNb25nb0RCIHN0b3JhZ2UsIGFwcGx5aW5nIGFueSBuZWNlc3NhcnkgdHJhbnNmb3JtYXRpb25zIGRlZmluZWQgaW4gdGhlIE9STS5cbiAqIC0gKipDUlVEIE9wZXJhdGlvbnMqKjogVGhlIERBTyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciBpbnNlcnRpbmcsIHVwZGF0aW5nLCBkZWxldGluZywgYW5kIHF1ZXJ5aW5nIGVudGl0aWVzIGluIE1vbmdvREIgY29sbGVjdGlvbnMuXG4gKiAtICoqTG9nZ2luZyoqOiBUaGUgbW9kdWxlIGludGVncmF0ZXMgd2l0aCB0aGUgbG9nZ2luZyBzeXN0ZW0gdG8gcHJvdmlkZSBkZXRhaWxlZCBsb2dzIG9mIGRhdGFiYXNlIG9wZXJhdGlvbnMgYW5kIGVycm9ycy5cbiAqIFxuICogIyMjIFVzZSBDYXNlczpcbiAqIC0gKipEYXRhIE1hbmFnZW1lbnQqKjogRGV2ZWxvcGVycyBjYW4gdXNlIHRoZSBEQU8gbW9kdWxlIHRvIG1hbmFnZSBkYXRhIHN0b3JlZCBpbiBNb25nb0RCIGNvbGxlY3Rpb25zLCBwZXJmb3JtaW5nIENSVUQgb3BlcmF0aW9ucyB3aXRoIGVhc2UuXG4gKiAtICoqT1JNIEludGVncmF0aW9uKio6IEJ5IGRlZmluaW5nIE9STSBzcGVjaWZpY2F0aW9ucywgZGV2ZWxvcGVycyBjYW4gbGV2ZXJhZ2UgdGhlIERBTyBtb2R1bGUgdG8gZW5zdXJlIGNvbnNpc3RlbnQgZGF0YSBoYW5kbGluZyBhbmQgdmFsaWRhdGlvbiBhY3Jvc3MgdGhlaXIgYXBwbGljYXRpb24uXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRhbyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbW9uZ29kYlwiO1xuICogXG4gKiAvLyBEZWZpbmUgYW4gT1JNIHNwZWNpZmljYXRpb24gZm9yIGEgXCJ1c2Vyc1wiIGNvbGxlY3Rpb25cbiAqIGNvbnN0IHVzZXJPcm0gPSB7XG4gKiAgIHRhYmxlOiBcInVzZXJzXCIsXG4gKiAgIHByaW1hcnlLZXk6IHsgbmFtZTogXCJpZFwiIH0sXG4gKiAgIG1hbmRhdG9yeVByb3BlcnRpZXM6IFtcbiAqICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcIlZBUkNIQVJcIiB9LFxuICogICAgIHsgbmFtZTogXCJlbWFpbFwiLCB0eXBlOiBcIlZBUkNIQVJcIiB9XG4gKiAgIF0sXG4gKiAgIG9wdGlvbmFsUHJvcGVydGllczogW1xuICogICAgIHsgbmFtZTogXCJhZ2VcIiwgdHlwZTogXCJJTlRFR0VSXCIgfVxuICogICBdXG4gKiB9O1xuICogXG4gKiAvLyBDcmVhdGUgYSBEQU8gaW5zdGFuY2UgZm9yIHRoZSBcInVzZXJzXCIgY29sbGVjdGlvblxuICogY29uc3QgdXNlckRhbyA9IGRhbyh1c2VyT3JtKTtcbiAqIFxuICogLy8gSW5zZXJ0IGEgbmV3IHVzZXIgZW50aXR5XG4gKiBjb25zdCBuZXdVc2VySWQgPSB1c2VyRGFvLmluc2VydCh7IG5hbWU6IFwiQWxpY2VcIiwgZW1haWw6IFwiYWxpY2VAZXhhbXBsZS5jb21cIiB9KTtcbiAqIFxuICogLy8gRmluZCB0aGUgaW5zZXJ0ZWQgdXNlciBlbnRpdHlcbiAqIGNvbnN0IHVzZXIgPSB1c2VyRGFvLmZpbmQobmV3VXNlcklkKTtcbiAqIGNvbnNvbGUubG9nKFwiVXNlciBmb3VuZDpcIiwgdXNlcik7XG4gKiBcbiAqIC8vIFVwZGF0ZSB0aGUgdXNlciBlbnRpdHlcbiAqIHVzZXIuYWdlID0gMzA7XG4gKiB1c2VyRGFvLnVwZGF0ZSh1c2VyKTtcbiAqIFxuICogLy8gRGVsZXRlIHRoZSB1c2VyIGVudGl0eVxuICogdXNlckRhby5yZW1vdmUobmV3VXNlcklkKTtcbiAqIGBgYFxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBnbG9iYWxzIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9jb3JlXCJcbmltcG9ydCB7IENsaWVudCB9IGZyb20gXCIuL2NsaWVudFwiXG5pbXBvcnQgKiBhcyBkaXJpZ2libGVPcm0gZnJvbSBcIkBhZXJva2l0L3Nkay9kYi9vcm1cIjtcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2xvZ1wiO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2NvcmVcIjtcblxuY29uc3QgZGJVcmkgPSBDb25maWd1cmF0aW9ucy5nZXQoXCJESVJJR0lCTEVfTU9OR09EQl9DTElFTlRfVVJJXCIsIFwibW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxN1wiKTtcblxuY29uc3QgbW9uZ29DbGllbnQgPSBuZXcgQ2xpZW50KGRiVXJpLCBudWxsLCBudWxsKTtcbmNvbnN0IGRiID0gbW9uZ29DbGllbnQuZ2V0REIoKTtcblxuZXhwb3J0IGNsYXNzIERBTyB7XG4gICAgcHJpdmF0ZSBvcm06IGFueTtcbiAgICAkbG9nO1xuXG4gICAgY29uc3RydWN0b3Iob3JtOiBhbnksIGxvZ0N0eE5hbWU6IHN0cmluZyA9ICdtb25nb2RiLmRhbycpIHtcbiAgICAgICAgdGhpcy5vcm0gPSBkaXJpZ2libGVPcm0uZ2V0KG9ybSk7XG5cbiAgICAgICAgbGV0IGxvZ2dlck5hbWUgPSBsb2dDdHhOYW1lO1xuICAgICAgICBpZiAodGhpcy5vcm0udGFibGUpIHtcbiAgICAgICAgICAgIGxvZ2dlck5hbWUgPSAnbW9uZ29kYi5kYW8uJyArICh0aGlzLm9ybS50YWJsZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiRsb2cgPSBMb2dnaW5nLmdldExvZ2dlcihsb2dnZXJOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90aWZ5KGV2ZW50LCAuLi5hKTogdm9pZCB7XG4gICAgICAgIHZhciBmdW5jID0gdGhpc1tldmVudF07XG4gICAgICAgIGlmICghdGhpc1tldmVudF0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50LiBOb3QgYSBmdW5jdGlvbjogJyArIGZ1bmMpO1xuICAgICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmdzLnNsaWNlKDEpKTtcbiAgICB9XG5cbiAgICAvL1ByZXBhcmUgYSBKU09OIG9iamVjdCBmb3IgaW5zZXJ0IGludG8gREJcbiAgICBwdWJsaWMgY3JlYXRlTm9TUUxFbnRpdHkoZW50aXR5KTogYW55IHtcbiAgICAgICAgdmFyIHBlcnNpc3RlbnRJdGVtID0ge307XG4gICAgICAgIHZhciBtYW5kYXRvcmllcyA9IHRoaXMub3JtLmdldE1hbmRhdG9yeVByb3BlcnRpZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYW5kYXRvcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKG1hbmRhdG9yaWVzW2ldLmRiVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwZXJzaXN0ZW50SXRlbVttYW5kYXRvcmllc1tpXS5uYW1lXSA9IG1hbmRhdG9yaWVzW2ldLmRiVmFsdWUuYXBwbHkodGhpcywgW2VudGl0eVttYW5kYXRvcmllc1tpXS5uYW1lXSwgZW50aXR5XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlcnNpc3RlbnRJdGVtW21hbmRhdG9yaWVzW2ldLm5hbWVdID0gZW50aXR5W21hbmRhdG9yaWVzW2ldLm5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBvcHRpb25hbHMgPSB0aGlzLm9ybS5nZXRPcHRpb25hbFByb3BlcnRpZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25hbHNbaV0uZGJWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcGVyc2lzdGVudEl0ZW1bb3B0aW9uYWxzW2ldLm5hbWVdID0gb3B0aW9uYWxzW2ldLmRiVmFsdWUuYXBwbHkodGhpcywgW2VudGl0eVtvcHRpb25hbHNbaV0ubmFtZV0sIGVudGl0eV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZXJzaXN0ZW50SXRlbVtvcHRpb25hbHNbaV0ubmFtZV0gPSBlbnRpdHlbb3B0aW9uYWxzW2ldLm5hbWVdID09PSB1bmRlZmluZWQgPyBudWxsIDogZW50aXR5W29wdGlvbmFsc1tpXS5uYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbXNnSWRTZWdtZW50ID0gcGVyc2lzdGVudEl0ZW1bdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdID8gXCJbXCIgKyBwZXJzaXN0ZW50SXRlbVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0gKyBcIl1cIiA6IFwiXCI7XG4gICAgICAgIHRoaXMuJGxvZy5pbmZvKFwiVHJhbnNmb3JtYXRpb24gdG8ge30gREIgSlNPTiBvYmplY3QgZmluaXNoZWRcIiwgKHRoaXMub3JtLnRhYmxlICsgbXNnSWRTZWdtZW50KSk7XG4gICAgICAgIHJldHVybiBwZXJzaXN0ZW50SXRlbTtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHZhbGlkYXRlRW50aXR5KGVudGl0eSwgc2tpcCk6IHZvaWQge1xuICAgICAgICBpZiAoZW50aXR5ID09PSB1bmRlZmluZWQgfHwgZW50aXR5ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IGVudGl0eSBpcyAnICsgZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2tpcCkge1xuICAgICAgICAgICAgaWYgKHNraXAuY29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICAgICAgICAgICAgc2tpcCA9IFtza2lwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2tpcC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHNraXBbal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1hbmRhdG9yaWVzID0gdGhpcy5vcm0uZ2V0TWFuZGF0b3J5UHJvcGVydGllcygpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hbmRhdG9yaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcHJvcE5hbWUgPSBtYW5kYXRvcmllc1tpXS5uYW1lO1xuICAgICAgICAgICAgaWYgKChza2lwICYmIHNraXAuaW5kZXhPZihwcm9wTmFtZSkgPiAtMSkgfHwgbWFuZGF0b3JpZXNbaV0udHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQk9PTEVBTicpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB2YXIgcHJvcFZhbHVlID0gZW50aXR5W3Byb3BOYW1lXTtcbiAgICAgICAgICAgIGlmIChwcm9wVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgJyArIHByb3BOYW1lICsgJyBhdHRyaWJ1dGUgdmFsdWUgaW4gJyArIHRoaXMub3JtLnRhYmxlICsgJyBlbnRpdHk6ICcgKyBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBpbnNlcnQoX2VudGl0eSkge1xuICAgIFxuICAgICAgICB2YXIgZW50aXRpZXMgPSBfZW50aXR5O1xuICAgICAgICBpZiAoX2VudGl0eS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgICAgICAgIGVudGl0aWVzID0gW19lbnRpdHldO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIHRoaXMuJGxvZy5pbmZvKCdJbnNlcnRpbmcge30ge30nLCB0aGlzLm9ybS50YWJsZSwgKGVudGl0aWVzLmxlbmd0aCA9PT0gMSA/ICdlbnRpdHknIDogJ2VudGl0aWVzJykpO1xuICAgIFxuICAgICAgICB2YXIgdXBkYXRlZFJlY29yZENvdW50ID0gMDtcbiAgICAgICAgdmFyIGlkcyA9IFtdO1xuICAgIFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudGl0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgXG4gICAgICAgICAgICB2YXIgZW50aXR5ID0gZW50aXRpZXNbaV07XG4gICAgXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlRW50aXR5KGVudGl0eSwgW3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSk7XG4gICAgXG4gICAgICAgICAgICB2YXIgZGJFbnRpdHkgPSB0aGlzLmNyZWF0ZU5vU1FMRW50aXR5KGVudGl0eSk7XG4gICAgXG4gICAgICAgICAgICB0cnkge1xuICAgIFxuICAgICAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gZGIuZ2V0Q29sbGVjdGlvbih0aGlzLm9ybS50YWJsZSk7XG4gICAgICAgICAgICAgICAgdmFyIGlkID0gY29sbGVjdGlvbi5nZXROZXh0SWQoKTtcbiAgICBcbiAgICAgICAgICAgICAgICBkYkVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0gPSBpZDtcbiAgICAgICAgICAgICAgICBkYkVudGl0eVtcIl9pZFwiXSA9IGlkO1xuICAgIFxuICAgIFxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24uaW5zZXJ0KGRiRW50aXR5KTtcbiAgICAgICAgICAgICAgICB1cGRhdGVkUmVjb3JkQ291bnQrKztcbiAgICBcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeSgnYWZ0ZXJJbnNlcnQnLCBkYkVudGl0eSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2JlZm9yZUluc2VydEFzc29jaWF0aW9uU2V0cycsIGRiRW50aXR5KTtcbiAgICBcbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFJlY29yZENvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZHMucHVzaChkYkVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygne31bXSBlbnRpdHkgaW5zZXJ0ZWQnLCB0aGlzLm9ybS50YWJsZSwgZGJFbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygnTm8gY2hhbmdlcyBpbmN1cnJlZCBpbiB7fScsIHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKFwiSW5zZXJ0aW5nIHt9IHt9IGZhaWxlZFwiLCB0aGlzLm9ybS50YWJsZSwgKGVudGl0aWVzLmxlbmd0aCA9PT0gMSA/ICdlbnRpdHknIDogJ2VudGl0aWVzJyksIGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5pbmZvKCdSb2xsaW5nIGJhY2sgY2hhbmdlcyBhZnRlciBmYWlsZWQge31be31dIGluc2VydC4gJywgdGhpcy5vcm0udGFibGUsIGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSk7XG4gICAgICAgICAgICAgICAgaWYgKGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmUoZGJFbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsb2cuZXJyb3IoJ0NvdWxkIG5vdCByb2xsYmFjayBjaGFuZ2VzIGFmdGVyIGZhaWxlZCB7fVt7fV0gaW5zZXJ0LiAnLCB0aGlzLm9ybS50YWJsZSwgZGJFbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgaWYgKF9lbnRpdHkuY29uc3RydWN0b3IgIT09IEFycmF5KVxuICAgICAgICAgICAgcmV0dXJuIGlkc1swXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGlkcztcbiAgICB9XG4gICAgXG4gICAgLy8gdXBkYXRlIGVudGl0eSBmcm9tIGEgSlNPTiBvYmplY3QuIFJldHVybnMgdGhlIGlkIG9mIHRoZSB1cGRhdGVkIGVudGl0eS5cbiAgICBwdWJsaWMgdXBkYXRlKGVudGl0eSkge1xuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnVXBkYXRpbmcge31be31dIGVudGl0eScsIHRoaXMub3JtLnRhYmxlLCBlbnRpdHkgIT09IHVuZGVmaW5lZCA/IGVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0gOiBlbnRpdHkpO1xuICAgIFxuICAgICAgICBpZiAoZW50aXR5ID09PSB1bmRlZmluZWQgfHwgZW50aXR5ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IGVudGl0eSBpcyAnICsgZW50aXR5KTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICB2YXIgaWdub3JlZFByb3BlcnRpZXMgPSB0aGlzLm9ybS5nZXRNYW5kYXRvcnlQcm9wZXJ0aWVzKClcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5LmFsbG93ZWRPcHMgJiYgcHJvcGVydHkuYWxsb3dlZE9wcy5pbmRleE9mKCd1cGRhdGUnKSA8IDA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHkubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLnZhbGlkYXRlRW50aXR5KGVudGl0eSwgaWdub3JlZFByb3BlcnRpZXMpO1xuICAgIFxuICAgICAgICB2YXIgZGJFbnRpdHkgPSB0aGlzLmNyZWF0ZU5vU1FMRW50aXR5KGVudGl0eSk7XG4gICAgICAgIGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSA9IGVudGl0eVtcIl9pZFwiXTtcbiAgICAgICAgZGJFbnRpdHlbXCJfaWRcIl0gPSBlbnRpdHlbXCJfaWRcIl07XG4gICAgXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeSgnYmVmb3JlVXBkYXRlRW50aXR5JywgZGJFbnRpdHkpO1xuICAgIFxuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKHsgXCJfaWRcIjogZW50aXR5W1wiX2lkXCJdIH0sIGRiRW50aXR5KTtcbiAgICBcbiAgICAgICAgICAgIHRoaXMuJGxvZy5pbmZvKCd7fVt7fV0gZW50aXR5IHVwZGF0ZWQnLCB0aGlzLm9ybS50YWJsZSwgZGJFbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdKTtcbiAgICBcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLiRsb2cuZXJyb3IoJ1VwZGF0aW5nIHt9W3t9XSBmYWlsZWQnLCB0aGlzLm9ybS50YWJsZSwgZW50aXR5ICE9PSB1bmRlZmluZWQgPyBlbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdIDogZW50aXR5LCBlKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFxuICAgIC8vIGRlbGV0ZSBlbnRpdHkgYnkgaWQsIG9yIGFycmF5IG9mIGlkcywgb3IgZGVsZXRlIGFsbCAoaWYgbm90IGFyZ3VtZW50IGlzIHByb3ZpZGVkKS5cbiAgICBwdWJsaWMgcmVtb3ZlKGlkKSB7XG4gICAgXG4gICAgICAgIHZhciBpZHMgPSBbXTtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlkcyA9IHRoaXMubGlzdCh7XG4gICAgICAgICAgICAgICAgXCIkc2VsZWN0XCI6IFt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV1cbiAgICAgICAgICAgIH0pLm1hcChmdW5jdGlvbiAoZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudFt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV07XG4gICAgICAgICAgICB9LmJpbmQodGhpcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1swXS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBpZHMgPSBbYXJndW1lbnRzWzBdXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWRzID0gYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIHRoaXMuJGxvZy5pbmZvKCdEZWxldGluZyAnICsgdGhpcy5vcm0udGFibGUgKyAoKGlkcyAhPT0gdW5kZWZpbmVkICYmIGlkcy5sZW5ndGggPT09IDEpID8gJ1snICsgaWRzWzBdICsgJ10gZW50aXR5JyA6IGlkcy5sZW5ndGggKyAnIGVudGl0aWVzJykpO1xuICAgIFxuICAgIFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykge1xuICAgIFxuICAgICAgICAgICAgdmFyIGlkID0gaWRzW2ldO1xuICAgIFxuICAgICAgICAgICAgaWYgKGlkcy5sZW5ndGggPiAxKVxuICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5pbmZvKCdEZWxldGluZyB7fVt7fV0gZW50aXR5JywgdGhpcy5vcm0udGFibGUsIGlkKTtcbiAgICBcbiAgICAgICAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50IGZvciBpZCBwYXJhbWV0ZXI6JyArIGlkKTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIHRyeSB7XG4gICAgXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2JlZm9yZVJlbW92ZUVudGl0eScsIGlkKTtcbiAgICBcbiAgICAgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IGRiLmdldENvbGxlY3Rpb24odGhpcy5vcm0udGFibGUpO1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucmVtb3ZlKHsgXCJfaWRcIjogaWQgfSk7XG4gICAgXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKCdEZWxldGluZyB7fVt7fV0gZW50aXR5IGZhaWxlZCcsIHRoaXMub3JtLnRhYmxlLCBpZCwgZSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgfVxuICAgIFxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgZXhwYW5kKGV4cGFuc2lvblBhdGgsIGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy4kbG9nLmluZm8oJ0V4cGFuZGluZyBmb3IgYXNzb2NpYXRpb24gcGF0aCB7fSBhbmQgY29udGV4dCBlbnRpdHkge30nLCBleHBhbnNpb25QYXRoLCAodHlwZW9mIGFyZ3VtZW50c1sxXSAhPT0gJ29iamVjdCcgPyAnaWQgJyA6ICcnKSArIEpTT04uc3RyaW5naWZ5KGFyZ3VtZW50c1sxXSkpO1xuICAgICAgICB0aHJvdyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICAgIFxuICAgIC8qIFxuICAgICAgICBSZWFkcyBhIHNpbmdsZSBlbnRpdHkgYnkgaWQsIHBhcnNlZCBpbnRvIEpTT04gb2JqZWN0LiBcbiAgICAgICAgSWYgcmVxdWVzdGVkIGFzIGV4cGFuZGVkIHRoZSByZXR1cm5lZCBlbnRpdHkgd2lsbCBjb21wcmlzZSBhc3NvY2lhdGVkIChkZXBlbmRlbnQpIGVudGl0aWVzIHRvby4gRXhwYW5kIGNhbiBiZSBhIHN0cmluZyB0aGEgdGlzIGEgdmFsaWQgYXNzb2NpYXRpb24gbmFtZSBkZWZpbmVkIGluIHRoaXMgZGFvIG9ybSBvclxuICAgICAgICBhbiBhcnJheSBvZiBzdWNoIG5hbWVzLlxuICAgICovXG4gICAgcHVibGljIGZpbmQoaWQsIGV4cGFuZCwgc2VsZWN0KSB7XG4gICAgXG4gICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnRzWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWQgPSBhcmd1bWVudHNbMF0uaWQ7XG4gICAgICAgICAgICBleHBhbmQgPSBhcmd1bWVudHNbMF0uJGV4cGFuZCB8fCBhcmd1bWVudHNbMF0uZXhwYW5kO1xuICAgICAgICAgICAgc2VsZWN0ID0gYXJndW1lbnRzWzBdLiRzZWxlY3QgfHwgYXJndW1lbnRzWzBdLnNlbGVjdDtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnRmluZGluZyB7fVt7fV0gZW50aXR5IHdpdGggbGlzdCBwYXJhbWV0ZXJzIGV4cGFuZFt7fV0sIHNlbGVjdFt7fV0nLCB0aGlzLm9ybS50YWJsZSwgaWQsIGV4cGFuZCwgc2VsZWN0KTtcbiAgICBcbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBhcmd1bWVudCBmb3IgaWQgcGFyYW1ldGVyOicgKyBpZCk7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBlbnRpdHk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0LmNvbnN0cnVjdG9yICE9PSBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0LmNvbnN0cnVjdG9yID09PSBTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCA9IHNlbGVjdC5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoc2VsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbC5jb25zdHJ1Y3RvciAhPT0gU3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogc2VsZWN0IGFycmF5IGNvbXBvbmVudHMgYXJlIGV4cGVjdGVkIG90IGJlIHN0cmluZ3MgYnV0IGZvdW5kICcgKyAodHlwZW9mIHNlbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWwudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogc2VsZWN0IGlzIGV4cGVjdGVkIHRvIGJlIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIGJ1dCB3YXMgJyArICh0eXBlb2Ygc2VsZWN0KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2Vuc3VyZSB0aGF0IGpvaW5rZXlzIGZvciByZXF1aXJlZCBleHBhbmRzIGFyZSBhdmFpbGFibGUgYW5kIG5vdCBmaWx0ZXJlZCBieSBzZWxlY3RcbiAgICAgICAgICAgIGlmIChzZWxlY3QgIT09IHVuZGVmaW5lZCAmJiBleHBhbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdC5wdXNoKHRoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSB7fTtcbiAgICAgICAgICAgIHBhcmFtc1tcIl9pZFwiXSA9IGlkO1xuICAgIFxuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGVudGl0eSA9IGNvbGxlY3Rpb24uZmluZChwYXJhbXMsIHNlbGVjdCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVudGl0eSA9IGNvbGxlY3Rpb24uZmluZE9uZUJ5SWQoaWQpO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgIFxuICAgICAgICAgICAgaWYgKGVudGl0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5pbmZvKCd7fVt7fV0gZW50aXR5IGZvdW5kJywgdGhpcy5vcm0udGFibGUsIGlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeSgnYWZ0ZXJGb3VuZCcsIGVudGl0eSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5pbmZvKCd7fVt7fV0gZW50aXR5IG5vdCBmb3VuZCcsIHRoaXMub3JtLnRhYmxlLCBpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLiRsb2cuZXJyb3IoXCJGaW5kaW5nIHt9W3t9XSBlbnRpdGl5IGZhaWxlZC5cIiwgdGhpcy5vcm0udGFibGUsIGlkLCBlKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcHVibGljIGNvdW50KCk6IG51bWJlciB7XG4gICAgXG4gICAgICAgIHRoaXMuJGxvZy5pbmZvKCdDb3VudGluZyAnICsgdGhpcy5vcm0udGFibGUgKyAnIGVudGl0aWVzJyk7XG4gICAgXG4gICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IGRiLmdldENvbGxlY3Rpb24odGhpcy5vcm0udGFibGUpO1xuICAgICAgICAgICAgY291bnQgPSBjb2xsZWN0aW9uLmNvdW50KCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvZy5lcnJvcignQ291bnRpbmcge30gZW50aXRpZXMgZmFpbGVkJywgdGhpcy5vcm0udGFibGUsIGUpO1xuICAgICAgICAgICAgLy8gZS5lcnJDb250ZXh0ID0gcGFyYW1ldGVyaWNTdGF0ZW1lbnQudG9TdHJpbmcoKTsgLy8gVE9ETzogcGFyYW1ldGVyaWNTdGF0ZW1lbnQ/XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIHRoaXMuJGxvZy5pbmZvKCd7fSB7fSBlbnRpdGllcyBjb3VudGVkJywgU3RyaW5nKGNvdW50KSwgdGhpcy5vcm0udGFibGUpO1xuICAgIFxuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgfTtcbiAgICBcbiAgICAvKlxuICAgICAqIGxpc3QgcGFyYW1ldGVyczpcbiAgICAgKiAtICRleHBhbmRcbiAgICAgKiAtICRmaWx0ZXJcbiAgICAgKiAtICRzZWxlY3RcbiAgICAgKiAtICRzb3J0XG4gICAgICogLSAkb3JkZXIgXG4gICAgICogLSAkbGltaXRcbiAgICAgKiAtICRvZmZzZXRcbiAgICAgKi9cbiAgICBwdWJsaWMgbGlzdChzZXR0aW5ncykge1xuICAgIFxuICAgICAgICBzZXR0aW5ncyA9IHNldHRpbmdzIHx8IHt9O1xuICAgIFxuICAgICAgICB2YXIgZXhwYW5kID0gc2V0dGluZ3MuJGV4cGFuZCB8fCBzZXR0aW5ncy5leHBhbmQ7XG4gICAgICAgIGlmIChleHBhbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKGV4cGFuZC5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXhwYW5kLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZC5pbmRleE9mKCcsJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuJGV4cGFuZCA9IGV4cGFuZC5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoZXhwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cC5jb25zdHJ1Y3RvciAhPT0gU3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogZXhwYW5kIGFycmF5IGNvbXBvbmVudHMgYXJlIGV4cGVjdGVkIG90IGJlIHN0cmluZ3MgYnV0IGZvdW5kICcgKyAodHlwZW9mIGV4cCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHAudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy4kZXhwYW5kID0gW2V4cGFuZF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogZXhwYW5kIGlzIGV4cGVjdGVkIHRvIGJlIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIGJ1dCB3YXMgJyArICh0eXBlb2YgZXhwYW5kKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIHZhciBzZWxlY3QgPSBzZXR0aW5ncy4kc2VsZWN0IHx8IHNldHRpbmdzLnNlbGVjdDtcbiAgICAgICAgaWYgKHNlbGVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0LmNvbnN0cnVjdG9yICE9PSBBcnJheSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3QuY29uc3RydWN0b3IgPT09IFN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0LmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy4kc2VsZWN0ID0gc2VsZWN0LnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChleHApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwLmNvbnN0cnVjdG9yICE9PSBTdHJpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBzZWxlY3QgYXJyYXkgY29tcG9uZW50cyBhcmUgZXhwZWN0ZWQgb3QgYmUgc3RyaW5ncyBidXQgZm91bmQgJyArICh0eXBlb2YgZXhwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cC50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLiRzZWxlY3QgPSBbc2VsZWN0XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBzZWxlY3QgaXMgZXhwZWN0ZWQgdG8gYmUgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MgYnV0IHdhcyAnICsgKHR5cGVvZiBleHBhbmQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdmFyIGxpc3RBcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzZXR0aW5ncykge1xuICAgICAgICAgICAgbGlzdEFyZ3MucHVzaCgnICcgKyBrZXkgKyAnWycgKyBzZXR0aW5nc1trZXldICsgJ10nKTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnTGlzdGluZyB7fSBlbnRpdHkgY29sbGVjdGlvbiB3aXRoIGxpc3Qgb3BlcmF0b3JzOiB7fScsIHRoaXMub3JtLnRhYmxlLCBsaXN0QXJncy5qb2luKCcsJykpO1xuICAgIFxuICAgICAgICBpZiAoc2V0dGluZ3MuJHNlbGVjdCAhPT0gdW5kZWZpbmVkICYmIGV4cGFuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXR0aW5ncy4kc2VsZWN0LnB1c2godGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWUpO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIC8vc2ltcGxpc3RpYyBmaWx0ZXJpbmcgb2YgKG9ubHkpIHN0cmluZyBwcm9wZXJ0aWVzIHdpdGggbGlrZVxuICAgICAgICBpZiAoc2V0dGluZ3MuJGZpbHRlcikge1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLiRmaWx0ZXIuaW5kZXhPZignLCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy4kZmlsdGVyID0gc2V0dGluZ3MuJGZpbHRlci5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy4kZmlsdGVyID0gW3NldHRpbmdzLiRmaWx0ZXJdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0dGluZ3MuJGZpbHRlciA9IHNldHRpbmdzLiRmaWx0ZXIuZmlsdGVyKGZ1bmN0aW9uIChmaWx0ZXJGaWVsZCkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wID0gdGhpcy5vcm1zdGF0ZW1lbnRzLm9ybS5nZXRQcm9wZXJ0eShmaWx0ZXJGaWVsZCk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3AgPT09IHVuZGVmaW5lZCB8fCBwcm9wLnR5cGUudG9VcHBlckNhc2UoKSAhPT0gJ1ZBUkNIQVInIHx8IHNldHRpbmdzW3Byb3AubmFtZV0gPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldHRpbmdzW3Byb3AubmFtZV0gPSAnJScgKyBzZXR0aW5nc1twcm9wLm5hbWVdICsgJyUnO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGVudGl0aWVzID0gW107XG4gICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IGRiLmdldENvbGxlY3Rpb24odGhpcy5vcm0udGFibGUpO1xuICAgICAgICAgICAgdmFyIGN1cnNvciA9IGNvbGxlY3Rpb24uZmluZCgpO1xuICAgICAgICAgICAgd2hpbGUgKGN1cnNvci5oYXNOZXh0KCkpIHtcbiAgICAgICAgICAgICAgICBlbnRpdGllcy5wdXNoKGN1cnNvci5uZXh0KCkpO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgdGhpcy4kbG9nLmluZm8oJ3t9IHt9IGVudGl0aWVzIGZvdW5kJywgZW50aXRpZXMubGVuZ3RoLCB0aGlzLm9ybS50YWJsZSk7XG4gICAgXG4gICAgICAgICAgICByZXR1cm4gZW50aXRpZXM7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvZy5lcnJvcihcIkxpc3Rpbmcge30gZW50aXRpZXMgZmFpbGVkLlwiLCB0aGlzLm9ybS50YWJsZSwgZSk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBleGlzdHNUYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBjcmVhdGVUYWJsZSgpOiB2b2lkIHtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIGRyb3BUYWJsZSgpOiBEQU8ge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbi8qKlxuICogb0RlZmluaXRpb24gY2FuIGJlIHRhYmxlIGRlZmluaXRpb24gb3Igc3RhbmRhcmQgb3JtIGRlZmluaXRpb24gb2JqZWN0LiBPciBpdCBjYW4gYmUgYSB2YWxpZCBwYXRoIHRvXG4gKiBhIC50YWJsZSBmaWxlLCBvciBhbnkgb3RoZXIgdGV4dCBmaWxlIGNvbnRpYW5pbmcgYSBzdGFuZGFyZCBkYW8gb3JtIGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUob0RlZmluaXRpb24sIGxvZ0N0eE5hbWUsIGRhdGFTb3VyY2VOYW1lLCBkYXRhYmFzZVR5cGUpIHtcbiAgICB2YXIgb3JtO1xuXG4gICAgb3JtID0gb0RlZmluaXRpb247XG5cbiAgICB2YXIgcHJvZHVjdE5hbWUgPSBnbG9iYWxzLmdldChkYXRhYmFzZVR5cGUgKyBcIl9cIiArIGRhdGFTb3VyY2VOYW1lKTtcbiAgICBpZiAoIXByb2R1Y3ROYW1lKSB7XG4gICAgICAgIHByb2R1Y3ROYW1lID0gXCJNb25nb0RCXCI7XG4gICAgICAgIGdsb2JhbHMuc2V0KGRhdGFiYXNlVHlwZSArIFwiX1wiICsgZGF0YVNvdXJjZU5hbWUsIHByb2R1Y3ROYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERBTyhvcm0sIGxvZ0N0eE5hbWUpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRhbyhvRGVmaW5pdGlvbiwgbG9nQ3R4TmFtZSwgZGF0YVNvdXJjZU5hbWUsIGRhdGFiYXNlVHlwZSkge1xuICAgIHJldHVybiBjcmVhdGUob0RlZmluaXRpb24sIGxvZ0N0eE5hbWUsIGRhdGFTb3VyY2VOYW1lLCBkYXRhYmFzZVR5cGUpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBd0RBLFNBQVMsZUFBZTtBQUN4QixTQUFTLGNBQWM7QUFDdkIsWUFBWSxrQkFBa0I7QUFDOUIs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
|
|
@@ -4,4 +4,4 @@ export {
|
|
|
4
4
|
client,
|
|
5
5
|
dao
|
|
6
6
|
};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vbmdvZGIvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBtb25nb2RiL2luZGV4XG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvbW9uZ29kYlxuICogQG92ZXJ2aWV3XG4gKiBcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyBmb3IgTW9uZ29EQiBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIEFlcm9raXQgU0RLLiBJdCBpbmNsdWRlcyBjbGFzc2VzIGFuZCBtZXRob2RzIGZvciBjb25uZWN0aW5nIHRvIE1vbmdvREIgZGF0YWJhc2VzLCBwZXJmb3JtaW5nIENSVUQgb3BlcmF0aW9ucywgYW5kIG1hbmFnaW5nIE1vbmdvREIgY29sbGVjdGlvbnMgYW5kIGRvY3VtZW50cy5cbiAqIFxuICogVGhlIG1haW4gY29tcG9uZW50cyBvZiB0aGlzIG1vZHVsZSBhcmU6XG4gKiAtIENsaWVudDogUmVwcmVzZW50cyBhIGNsaWVudCBmb3IgY29ubmVjdGluZyB0byBhIE1vbmdvREIgZGF0YWJhc2UgYW5kIHByb3ZpZGVzIG1ldGhvZHMgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9uIHRoZSBkYXRhYmFzZS5cbiAqIC0gRGFvOiBSZXByZXNlbnRzIGEgRGF0YSBBY2Nlc3MgT2JqZWN0IChEQU8pIGZvciBtYW5hZ2luZyBNb25nb0RCIGNvbGxlY3Rpb25zIGFuZCBkb2N1bWVudHMsIHByb3ZpZGluZyBtZXRob2RzIGZvciBDUlVEIG9wZXJhdGlvbnMgYW5kIHF1ZXJ5IGV4ZWN1dGlvbi5cbiAqL1xuXG5leHBvcnQgKiBhcyBjbGllbnQgZnJvbSBcIi4vY2xpZW50XCI7XG5leHBvcnQgKiBhcyBkYW8gZnJvbSBcIi4vZGFvXCI7Il0sCiAgIm1hcHBpbmdzIjogIkFBWUEsWUFBWSxZQUFZO0FBQ3hCLFlBQVksU0FBUzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -18,4 +18,4 @@ function Websocket(options) {
|
|
|
18
18
|
export {
|
|
19
19
|
Websocket
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25ldC9kZWNvcmF0b3JzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgbmV0L2RlY29yYXRvcnNcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9uZXRcbiAqIEBuYW1lIERlY29yYXRvcnNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNldCBvZiBkZWNvcmF0b3JzIGZvciBkZWZpbmluZyBXZWJTb2NrZXQgZW5kcG9pbnRzIGluIGEgZGVjbGFyYXRpdmUgbWFubmVyLiBUaGUgZGVjb3JhdG9ycyBhbGxvdyBkZXZlbG9wZXJzIHRvIGFubm90YXRlIGNsYXNzZXMgdG8gc3BlY2lmeSB0aGF0IHRoZXkgc2hvdWxkIGFjdCBhcyBXZWJTb2NrZXQgaGFuZGxlcnMsIGRlZmluaW5nIHRoZSBlbmRwb2ludCBhbmQgYXNzb2NpYXRlZCBtZXRhZGF0YS4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgV2ViU29ja2V0LWJhc2VkIGNvbW11bmljYXRpb24gd2l0aGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlczpcbiAqIC0gKipXZWJTb2NrZXQgRGVjb3JhdG9yKio6IFRoZSBgQFdlYnNvY2tldGAgZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIGNsYXNzIGFzIGEgV2ViU29ja2V0IGhhbmRsZXIsIHNwZWNpZnlpbmcgdGhlIGVuZHBvaW50IGFuZCBhc3NvY2lhdGVkIG1ldGFkYXRhLlxuICogXG4gKiAjIyMgVXNlIENhc2VzOlxuICogLSAqKlJlYWwtVGltZSBDb21tdW5pY2F0aW9uKio6IFRoZXNlIGRlY29yYXRvcnMgYXJlIHByaW1hcmlseSB1c2VkIGZvciBkZWZpbmluZyBjb21wb25lbnRzIHRoYXQgaGFuZGxlIFdlYlNvY2tldCBjb25uZWN0aW9ucywgZW5hYmxpbmcgcmVhbC10aW1lIGNvbW11bmljYXRpb24gYmV0d2VlbiBjbGllbnRzIGFuZCB0aGUgc2VydmVyLlxuICogLSAqKkludGVncmF0aW9uIHdpdGggV2ViU29ja2V0IFN5c3RlbXMqKjogQnkgdXNpbmcgdGhlc2UgZGVjb3JhdG9ycywgZGV2ZWxvcGVycyBjYW4gZWFzaWx5IGludGVncmF0ZSB0aGVpciBhcHBsaWNhdGlvbnMgd2l0aCBXZWJTb2NrZXQtYmFzZWQgc3lzdGVtcyBhbmQgcHJvdG9jb2xzLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBXZWJzb2NrZXQgfSBmcm9tIFwiQGFlcm9raXQvc2RrL25ldFwiO1xuICogXG4gKiBAV2Vic29ja2V0KHsgbmFtZTogXCJNeVdlYnNvY2tldFwiLCBlbmRwb2ludDogXCJteS13c1wiIH0pXG4gKiBjbGFzcyBNeVdlYnNvY2tldEhhbmRsZXIge1xuICogICAgIC8vIExvZ2ljIHRvIGhhbmRsZSBXZWJTb2NrZXQgY29ubmVjdGlvbnMgYXQgdGhlICdteS13cycgZW5kcG9pbnRcbiAqIH1cbiAqIFxuICogLy8gVGhlIFdlYlNvY2tldCBoYW5kbGVyIHdpbGwgYmUgYXV0b21hdGljYWxseSByZWdpc3RlcmVkIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBtZXRhZGF0YS5cbiAqIGBgYFxuICovXG5cbmNvbnN0IFdFQlNPQ0tFVF9NRVRBREFUQV9LRVkgPSBTeW1ib2woXCJ3ZWJzb2NrZXQ6bWV0YWRhdGFcIik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2Vic29ja2V0T3B0aW9ucyB7XG4gICAgbmFtZTogc3RyaW5nOyAvLyBlLmcuLCBcIk15V2Vic2Nva2V0XCJcbiAgICBlbmRwb2ludDogc3RyaW5nOyAgICAgIC8vIGUuZy4sIFwibXktd3NcIlxufVxuXG4vKipcbiAqIEBXZWJzb2NrZXQgZGVjb3JhdG9yXG4gKiBNYXJrcyBhbiBlbnRpcmUgY2xhc3MgYXMgYSB3ZWJzb2NrZXRcbiAqXG4gKiBpbnRyb2R1Y2VkIGluIFR5cGVTY3JpcHQgNS4wLCB3aGljaCBleHBlY3RzIGEgQ2xhc3NEZWNvcmF0b3JDb250ZXh0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFdlYnNvY2tldChvcHRpb25zOiBXZWJzb2NrZXRPcHRpb25zKSB7XG4gICAgXG4gICAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgYWJzdHJhY3QgbmV3ICguLi5hcmdzOiBhbnkpID0+IGFueT4odGFyZ2V0OiBULCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQ8VD4pIHtcbiAgICAgICAgXG4gICAgICAgIGlmIChjb250ZXh0LmtpbmQgIT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQFdlYnNvY2tldCBjYW4gb25seSBiZSB1c2VkIG9uIGNsYXNzZXMuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBXRUJTT0NLRVRfTUVUQURBVEFfS0VZLCB7XG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogb3B0aW9ucy5lbmRwb2ludFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUE0QkEsTUFBTSx5QkFBeUIsdUJBQU8sb0JBQW9CO0FBYW5ELFNBQVMsVUFBVSxTQUEyQjtBQUVqRCxTQUFPLFNBQXdELFFBQVcsU0FBbUM7QUFFekcsUUFBSSxRQUFRLFNBQVMsU0FBUztBQUMxQixZQUFNLElBQUksTUFBTSx5Q0FBeUM7QUFBQSxJQUM3RDtBQUVBLFdBQU8sZUFBZSxRQUFRLHdCQUF3QjtBQUFBLE1BQ2xELE9BQU87QUFBQSxRQUNILE1BQU0sUUFBUTtBQUFBLFFBQ2QsVUFBVSxRQUFRO0FBQUEsTUFDdEI7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLGNBQWM7QUFBQSxNQUNkLFlBQVk7QUFBQSxJQUNoQixDQUFDO0FBQUEsRUFDTDtBQUNKOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/esm/net/index.mjs
CHANGED
|
@@ -9,4 +9,4 @@ export {
|
|
|
9
9
|
SOAP as soap,
|
|
10
10
|
Websockets as websockets
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25ldC9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIG5ldC9pbmRleFxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL25ldFxuICogQG92ZXJ2aWV3XG4gKiBcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyBmb3IgbmV0d29yayBjb21tdW5pY2F0aW9uIHdpdGhpbiB0aGUgQWVyb2tpdCBTREsuIEl0IGluY2x1ZGVzIGNsYXNzZXMgYW5kIG1ldGhvZHMgZm9yIGhhbmRsaW5nIHZhcmlvdXMgbmV0d29yayBwcm90b2NvbHMsIHN1Y2ggYXMgSFRUUCwgU09BUCwgV2ViU29ja2V0cywgYW5kIG1vcmUuIFRoZSBtb2R1bGUgYWxzbyBwcm92aWRlcyBkZWNvcmF0b3JzIGZvciBkZWZpbmluZyBuZXR3b3JrLXJlbGF0ZWQgZnVuY3Rpb25hbGl0aWVzIGluIGEgbW9kdWxhciBhcmNoaXRlY3R1cmUuXG4gKiBcbiAqIFRoZSBtYWluIGNvbXBvbmVudHMgb2YgdGhpcyBtb2R1bGUgYXJlOlxuICogLSBIVFRQOiBSZXByZXNlbnRzIGFuIEhUVFAgY2xpZW50IGZvciBtYWtpbmcgSFRUUCByZXF1ZXN0cyBhbmQgaGFuZGxpbmcgcmVzcG9uc2VzLlxuICogLSBTT0FQOiBSZXByZXNlbnRzIGEgU09BUCBjbGllbnQgZm9yIGludGVyYWN0aW5nIHdpdGggU09BUC1iYXNlZCB3ZWIgc2VydmljZXMuXG4gKiAtIFdlYlNvY2tldHM6IFJlcHJlc2VudHMgYSBXZWJTb2NrZXQgY2xpZW50IGZvciBlc3RhYmxpc2hpbmcgYW5kIG1hbmFnaW5nIFdlYlNvY2tldCBjb25uZWN0aW9ucy5cbiAqIC0gRGVjb3JhdG9yczogUHJvdmlkZXMgZGVjb3JhdG9ycyBmb3IgZGVmaW5pbmcgbmV0d29yay1yZWxhdGVkIGZ1bmN0aW9uYWxpdGllcyBpbiBhIGRlY2xhcmF0aXZlIG1hbm5lci5cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9zb2FwXCI7XG5leHBvcnQgeyBTT0FQIGFzIHNvYXAgfSBmcm9tIFwiLi9zb2FwXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93ZWJzb2NrZXRzXCI7XG5leHBvcnQgeyBXZWJzb2NrZXRzIGFzIHdlYnNvY2tldHMgfSBmcm9tIFwiLi93ZWJzb2NrZXRzXCI7XG5leHBvcnQgKiBhcyBkZWNvcmF0b3JzIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjsiXSwKICAibWFwcGluZ3MiOiAiQUFjQSxjQUFjO0FBQ2QsU0FBaUIsWUFBWTtBQUM3QixjQUFjO0FBQ2QsU0FBdUIsa0JBQWtCO0FBQ3pDLFlBQVksZ0JBQWdCO0FBQzVCLGNBQWM7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist/esm/net/soap.mjs
CHANGED
|
@@ -220,4 +220,4 @@ if (typeof module !== "undefined") {
|
|
|
220
220
|
export {
|
|
221
221
|
SOAP
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25ldC9zb2FwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSBcIkBhZXJva2l0L3Nkay9odHRwL3JlcXVlc3RcIjtcbmltcG9ydCB7IEJhc2U2NCB9IGZyb20gXCJAYWVyb2tpdC9zZGsvdXRpbHMvYmFzZTY0XCI7XG5pbXBvcnQgeyBTdHJlYW1zLCBJbnB1dFN0cmVhbSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vc3RyZWFtc1wiO1xuXG5jb25zdCBNZXNzYWdlRmFjdG9yeSA9IEphdmEudHlwZShcImpha2FydGEueG1sLnNvYXAuTWVzc2FnZUZhY3RvcnlcIik7XG5jb25zdCBNaW1lSGVhZGVyc0ludGVybmFsID0gSmF2YS50eXBlKFwiamFrYXJ0YS54bWwuc29hcC5NaW1lSGVhZGVyc1wiKTtcbmNvbnN0IFNPQVBDb25uZWN0aW9uRmFjdG9yeSA9IEphdmEudHlwZShcImpha2FydGEueG1sLnNvYXAuU09BUENvbm5lY3Rpb25GYWN0b3J5XCIpO1xuXG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBhbmQgY2FsbGluZyBTT0FQIG1lc3NhZ2VzLlxuICogSXQgd3JhcHMgdGhlIHVuZGVybHlpbmcgSmF2YSBqYXZheC54bWwuc29hcCBBUEkuXG4gKi9cbmV4cG9ydCBjbGFzcyBTT0FQIHtcblxuXHQvKipcblx0ICogQ2FsbCBhIGdpdmVuIFNPQVAgZW5kcG9pbnQgd2l0aCBhIGdpdmVuIHJlcXVlc3QgbWVzc2FnZVxuXHQgKiBAcGFyYW0gbWVzc2FnZSBUaGUgU09BUCBNZXNzYWdlIHdyYXBwZXIgb2JqZWN0LlxuXHQgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgU09BUCBlbmRwb2ludCBVUkwuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNhbGwobWVzc2FnZTogTWVzc2FnZSwgdXJsOiBzdHJpbmcpIHtcblx0XHRjb25zdCBzb2FwQ29ubmVjdGlvbkZhY3RvcnkgPSBTT0FQQ29ubmVjdGlvbkZhY3RvcnkubmV3SW5zdGFuY2UoKTtcblx0XHRjb25zdCBpbnRlcm5hbENvbm5lY3Rpb24gPSBzb2FwQ29ubmVjdGlvbkZhY3RvcnkuY3JlYXRlQ29ubmVjdGlvbigpO1xuXHRcdC8vIEFjY2Vzc2luZyB0aGUgaW50ZXJuYWwgcHJvcGVydHkgbmF0aXZlIChyZW5hbWVkIGZyb20gJ25hdGl2ZScgZm9yIGJldHRlciBlbmNhcHN1bGF0aW9uKVxuXHRcdGNvbnN0IGludGVybmFsUmVzcG9uc2UgPSBpbnRlcm5hbENvbm5lY3Rpb24uY2FsbChtZXNzYWdlLm5hdGl2ZSwgdXJsKTtcblx0XHRyZXR1cm4gbmV3IE1lc3NhZ2UoaW50ZXJuYWxSZXNwb25zZSk7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIHRydXN0QWxsKCkge1xuXHRcdC8vIFRPRE86IEltcGxlbWVudCBsb2dpYyBmb3IgdHJ1c3RpbmcgYWxsIGNlcnRpZmljYXRlcyBpZiByZXF1aXJlZCBieSB0aGUgU0RLIGVudmlyb25tZW50XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldywgZW1wdHkgU09BUCBtZXNzYWdlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjcmVhdGVNZXNzYWdlKCk6IE1lc3NhZ2Uge1xuXHRcdHJldHVybiBuZXcgTWVzc2FnZShNZXNzYWdlRmFjdG9yeS5uZXdJbnN0YW5jZSgpLmNyZWF0ZU1lc3NhZ2UoKSk7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgU09BUCBtZXNzYWdlIGZyb20gYW4gSW5wdXRTdHJlYW0gYW5kIE1pbWVIZWFkZXJzLlxuXHQgKiBAcGFyYW0gbWltZUhlYWRlcnMgVGhlIE1pbWVIZWFkZXJzIHdyYXBwZXIgb2JqZWN0LlxuXHQgKiBAcGFyYW0gaW5wdXRTdHJlYW0gVGhlIElucHV0U3RyZWFtIHdyYXBwZXIgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBwYXJzZU1lc3NhZ2UobWltZUhlYWRlcnM6IE1pbWVIZWFkZXJzLCBpbnB1dFN0cmVhbTogSW5wdXRTdHJlYW0pOiBNZXNzYWdlIHtcblx0XHRjb25zdCBpbnRlcm5hbEZhY3RvcnkgPSBNZXNzYWdlRmFjdG9yeS5uZXdJbnN0YW5jZSgpO1xuXHRcdC8vIFVzZSBuYXRpdmUgZm9yIGludGVybmFsIEphdmEgb2JqZWN0IGFjY2Vzc1xuXHRcdGlmIChpbnB1dFN0cmVhbS5uYXRpdmUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIFVzZSBuYXRpdmUgZm9yIGludGVybmFsIEphdmEgb2JqZWN0IGFjY2Vzc1xuXHRcdFx0XHRjb25zdCBpbnRlcm5hbE1lc3NhZ2UgPSBpbnRlcm5hbEZhY3RvcnkuY3JlYXRlTWVzc2FnZShtaW1lSGVhZGVycy5uYXRpdmUsIGlucHV0U3RyZWFtLm5hdGl2ZSk7XG5cdFx0XHRcdGNvbnN0IGludGVybmFsUGFydCA9IGludGVybmFsTWVzc2FnZS5nZXRTT0FQUGFydCgpO1xuXHRcdFx0XHRpbnRlcm5hbFBhcnQuZ2V0RW52ZWxvcGUoKTtcblx0XHRcdFx0cmV0dXJuIG5ldyBNZXNzYWdlKGludGVybmFsTWVzc2FnZSk7XG5cdFx0XHR9IGNhdGNoIChlOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihlKTtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgcHJvdmlkZWQgaXMgbnVsbCBvciBpbiBhIHdyb25nIGZvcm1hdC4gSFRUUCBtZXRob2QgdXNlZCBtdXN0IGJlIFBPU1QuIFwiICsgZS5tZXNzYWdlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgcHJvdmlkZWQgaXMgbnVsbC5cIik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgU09BUCBtZXNzYWdlIGZyb20gdGhlIGN1cnJlbnQgSFRUUCByZXF1ZXN0IGlucHV0IHN0cmVhbS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcGFyc2VSZXF1ZXN0KCk6IE1lc3NhZ2Uge1xuXHRcdGlmIChSZXF1ZXN0LmdldE1ldGhvZCgpLnRvVXBwZXJDYXNlKCkgIT09IFwiUE9TVFwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJIVFRQIG1ldGhvZCB1c2VkIG11c3QgYmUgUE9TVC5cIik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW5wdXRTdHJlYW0gPSBSZXF1ZXN0LmdldElucHV0U3RyZWFtKCk7XG5cdFx0Y29uc3QgbWltZUhlYWRlcnMgPSB0aGlzLmNyZWF0ZU1pbWVIZWFkZXJzKCk7XG5cblx0XHRyZXR1cm4gdGhpcy5wYXJzZU1lc3NhZ2UobWltZUhlYWRlcnMsIGlucHV0U3RyZWFtKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3LCBlbXB0eSBNaW1lSGVhZGVycyBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZU1pbWVIZWFkZXJzKCk6IE1pbWVIZWFkZXJzIHtcblx0XHRjb25zdCBpbnRlcm5hbE1pbWVIZWFkZXJzID0gbmV3IE1pbWVIZWFkZXJzSW50ZXJuYWwoKTtcblx0XHRyZXR1cm4gbmV3IE1pbWVIZWFkZXJzKGludGVybmFsTWltZUhlYWRlcnMpO1xuXHR9XG59XG5cbi8qKlxuICogU09BUCBNZXNzYWdlIFdyYXBwZXJcbiAqL1xuY2xhc3MgTWVzc2FnZSB7XG5cblx0Ly8gUmVuYW1lZCB0byBuYXRpdmUgdG8gc2lnbmFsIGludGVybmFsLXVzZSBwcm9wZXJ0eSwgaW1wcm92aW5nIGVuY2Fwc3VsYXRpb25cblx0cHVibGljIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGFydCgpOiBQYXJ0IHtcblx0XHRyZXR1cm4gbmV3IFBhcnQodGhpcy5uYXRpdmUuZ2V0U09BUFBhcnQoKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TWltZUhlYWRlcnMoKTogTWltZUhlYWRlcnMge1xuXHRcdHJldHVybiBuZXcgTWltZUhlYWRlcnModGhpcy5uYXRpdmUuZ2V0TWltZUhlYWRlcnMoKSk7XG5cdH1cblxuXHRwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zYXZlQ2hhbmdlcygpO1xuXHR9XG5cblx0cHVibGljIGdldFRleHQoKTogc3RyaW5nIHtcblx0XHRjb25zdCBvdXRwdXRTdHJlYW0gPSBTdHJlYW1zLmNyZWF0ZUJ5dGVBcnJheU91dHB1dFN0cmVhbSgpO1xuXHRcdC8vIFVzZSBuYXRpdmUgZm9yIGludGVybmFsIEphdmEgb2JqZWN0IGFjY2Vzc1xuXHRcdHRoaXMubmF0aXZlLndyaXRlVG8ob3V0cHV0U3RyZWFtLm5hdGl2ZSk7XG5cdFx0cmV0dXJuIG91dHB1dFN0cmVhbS5nZXRUZXh0KCk7XG5cdH1cbn1cblxuLyoqXG4gKiBTT0FQIFBhcnQgV3JhcHBlclxuICovXG5jbGFzcyBQYXJ0IHtcblxuXHQvLyBSZW5hbWVkIHRvIG5hdGl2ZVxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RW52ZWxvcGUoKTogRW52ZWxvcGUge1xuXHRcdHJldHVybiBuZXcgRW52ZWxvcGUodGhpcy5uYXRpdmUuZ2V0RW52ZWxvcGUoKSk7XG5cdH1cbn1cblxuLyoqXG4gKiBTT0FQIE1pbWUgSGVhZGVycyBXcmFwcGVyXG4gKi9cbmNsYXNzIE1pbWVIZWFkZXJzIHtcblxuXHQvLyBSZW5hbWVkIHRvIG5hdGl2ZVxuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBhZGRIZWFkZXIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuYWRkSGVhZGVyKG5hbWUsIHZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBhZGRCYXNpY0F1dGhlbnRpY2F0aW9uSGVhZGVyKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCB1c2VyQW5kUGFzc3dvcmQgPSBgJHt1c2VybmFtZX06JHtwYXNzd29yZH1gO1xuXHRcdGNvbnN0IGJhc2ljQXV0aCA9IEJhc2U2NC5lbmNvZGUodXNlckFuZFBhc3N3b3JkKTtcblx0XHR0aGlzLm5hdGl2ZS5hZGRIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIGBCYXNpYyAke2Jhc2ljQXV0aH1gKTtcblx0fVxufVxuXG4vKipcbiAqIFNPQVAgRW52ZWxvcGUgV3JhcHBlclxuICovXG5jbGFzcyBFbnZlbG9wZSB7XG5cdC8vIFJlbmFtZWQgdG8gbmF0aXZlXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBhZGROYW1lc3BhY2VEZWNsYXJhdGlvbihwcmVmaXg6IHN0cmluZywgdXJpOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5hZGROYW1lc3BhY2VEZWNsYXJhdGlvbihwcmVmaXgsIHVyaSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Qm9keSgpOiBCb2R5IHtcblx0XHRyZXR1cm4gbmV3IEJvZHkodGhpcy5uYXRpdmUuZ2V0Qm9keSgpKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRIZWFkZXIoKTogSGVhZGVyIHtcblx0XHRyZXR1cm4gbmV3IEhlYWRlcih0aGlzLm5hdGl2ZS5nZXRIZWFkZXIoKSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlTmFtZShsb2NhbE5hbWU6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHVyaTogc3RyaW5nKTogTmFtZSB7XG5cdFx0cmV0dXJuIG5ldyBOYW1lKHRoaXMubmF0aXZlLmNyZWF0ZU5hbWUobG9jYWxOYW1lLCBwcmVmaXgsIHVyaSkpO1xuXHR9XG59XG5cbi8qKlxuICogU09BUCBCb2R5IFdyYXBwZXJcbiAqL1xuY2xhc3MgQm9keSB7XG5cdC8vIFJlbmFtZWQgdG8gbmF0aXZlXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBhZGRDaGlsZEVsZW1lbnQobG9jYWxOYW1lOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogRWxlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBFbGVtZW50KHRoaXMubmF0aXZlLmFkZENoaWxkRWxlbWVudChsb2NhbE5hbWUsIHByZWZpeCkpO1xuXHR9XG5cblx0cHVibGljIGdldENoaWxkRWxlbWVudHMoKTogRWxlbWVudFtdIHtcblx0XHRjb25zdCBjaGlsZEVsZW1lbnRzID0gW107XG5cdFx0Y29uc3QgaW50ZXJuYWxFbGVtZW50c0l0ZXJhdG9yID0gdGhpcy5uYXRpdmUuZ2V0Q2hpbGRFbGVtZW50cygpO1xuXHRcdHdoaWxlIChpbnRlcm5hbEVsZW1lbnRzSXRlcmF0b3IuaGFzTmV4dCgpKSB7XG5cdFx0XHRjaGlsZEVsZW1lbnRzLnB1c2gobmV3IEVsZW1lbnQoaW50ZXJuYWxFbGVtZW50c0l0ZXJhdG9yLm5leHQoKSkpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2hpbGRFbGVtZW50cztcblx0fVxufVxuXG4vKipcbiAqIFNPQVAgSGVhZGVyIFdyYXBwZXJcbiAqL1xuY2xhc3MgSGVhZGVyIHtcblx0Ly8gUmVuYW1lZCB0byBuYXRpdmVcblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0cHVibGljIGFkZEhlYWRlckVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmFkZEhlYWRlckVsZW1lbnQoZWxlbWVudC5uYXRpdmUpO1xuXHR9XG59XG5cbi8qKlxuICogU09BUCBOYW1lIFdyYXBwZXJcbiAqL1xuY2xhc3MgTmFtZSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXHRcblx0cHVibGljIGdldE5hdGl2ZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBnZXRMb2NhbE5hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TG9jYWxOYW1lKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UHJlZml4KCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFByZWZpeCgpO1xuXHR9XG5cblx0cHVibGljIGdldFF1YWxpZmllZE5hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UXVhbGlmaWVkTmFtZSgpO1xuXHR9XG5cblx0cHVibGljIGdldFVSSSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRVUkkoKTtcblx0fVxufVxuXG4vKipcbiAqIFNPQVAgRWxlbWVudCBXcmFwcGVyXG4gKi9cbmNsYXNzIEVsZW1lbnQge1xuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBhZGRDaGlsZEVsZW1lbnQobG9jYWxOYW1lOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG5ldyBFbGVtZW50KHRoaXMubmF0aXZlLmFkZENoaWxkRWxlbWVudChsb2NhbE5hbWUsIHByZWZpeCkpO1xuXHR9XG5cblx0cHVibGljIGFkZFRleHROb2RlKHRleHQ6IHN0cmluZyk6IEVsZW1lbnQge1xuXHRcdHJldHVybiBuZXcgRWxlbWVudCh0aGlzLm5hdGl2ZS5hZGRUZXh0Tm9kZSh0ZXh0KSk7XG5cdH1cblxuXHRwdWJsaWMgYWRkQXR0cmlidXRlKG5hbWU6IE5hbWUsIHZhbHVlOiBhbnkpOiBFbGVtZW50IHtcblx0XHQvLyBVc2UgbmFtZS5uYXRpdmUgZm9yIGludGVybmFsIEphdmEgb2JqZWN0IGFjY2Vzc1xuXHRcdHJldHVybiBuZXcgRWxlbWVudCh0aGlzLm5hdGl2ZS5hZGRBdHRyaWJ1dGUobmFtZS5nZXROYXRpdmUoKSwgdmFsdWUpKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRDaGlsZEVsZW1lbnRzKCk6IEVsZW1lbnRbXSB7XG5cdFx0Y29uc3QgY2hpbGRFbGVtZW50cyA9IFtdO1xuXHRcdGNvbnN0IGludGVybmFsRWxlbWVudHNJdGVyYXRvciA9IHRoaXMubmF0aXZlLmdldENoaWxkRWxlbWVudHMoKTtcblx0XHR3aGlsZSAoaW50ZXJuYWxFbGVtZW50c0l0ZXJhdG9yLmhhc05leHQoKSkge1xuXHRcdFx0Y2hpbGRFbGVtZW50cy5wdXNoKG5ldyBFbGVtZW50KGludGVybmFsRWxlbWVudHNJdGVyYXRvci5uZXh0KCkpKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNoaWxkRWxlbWVudHM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RWxlbWVudE5hbWUoKTogTmFtZSB8IHVuZGVmaW5lZCB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGludGVybmFsTmFtZSA9IHRoaXMubmF0aXZlLmdldEVsZW1lbnROYW1lKCk7XG5cdFx0XHRyZXR1cm4gbmV3IE5hbWUoaW50ZXJuYWxOYW1lKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyBUaGlzIGNhdGNoIGhhbmRsZXMgY2FzZXMgd2hlcmUgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGEgU09BUEVsZW1lbnRcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXRWYWx1ZSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0cHVibGljIGlzU09BUEVsZW1lbnQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RWxlbWVudE5hbWUoKSAhPT0gdW5kZWZpbmVkO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gU09BUDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsZUFBZTtBQUN4QixTQUFTLGNBQWM7QUFDdkIsU0FBUyxlQUE0QjtBQUVyQyxNQUFNLGlCQUFpQixLQUFLLEtBQUssaUNBQWlDO0FBQ2xFLE1BQU0sc0JBQXNCLEtBQUssS0FBSyw4QkFBOEI7QUFDcEUsTUFBTSx3QkFBd0IsS0FBSyxLQUFLLHdDQUF3QztBQU16RSxNQUFNLEtBQUs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPakIsT0FBYyxLQUFLLFNBQWtCLEtBQWE7QUFDakQsVUFBTSx3QkFBd0Isc0JBQXNCLFlBQVk7QUFDaEUsVUFBTSxxQkFBcUIsc0JBQXNCLGlCQUFpQjtBQUVsRSxVQUFNLG1CQUFtQixtQkFBbUIsS0FBSyxRQUFRLFFBQVEsR0FBRztBQUNwRSxXQUFPLElBQUksUUFBUSxnQkFBZ0I7QUFBQSxFQUNwQztBQUFBLEVBRUEsT0FBYyxXQUFXO0FBQUEsRUFFekI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQWMsZ0JBQXlCO0FBQ3RDLFdBQU8sSUFBSSxRQUFRLGVBQWUsWUFBWSxFQUFFLGNBQWMsQ0FBQztBQUFBLEVBQ2hFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBYyxhQUFhLGFBQTBCLGFBQW1DO0FBQ3ZGLFVBQU0sa0JBQWtCLGVBQWUsWUFBWTtBQUVuRCxRQUFJLFlBQVksUUFBUTtBQUN2QixVQUFJO0FBRUgsY0FBTSxrQkFBa0IsZ0JBQWdCLGNBQWMsWUFBWSxRQUFRLFlBQVksTUFBTTtB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
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25ldC9zb2FwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgbmV0L3NvYXBcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9uZXRcbiAqIEBuYW1lIFNPQVBcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgU09BUCBtb2R1bGUgcHJvdmlkZXMgYSBzZXQgb2YgY2xhc3NlcyBhbmQgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIFNPQVAgbWVzc2FnZXMgaW4gSmF2YVNjcmlwdC4gSXQgYWxsb3dzIGRldmVsb3BlcnMgdG8gY3JlYXRlLCBwYXJzZSwgYW5kIHNlbmQgU09BUCBtZXNzYWdlcyB0byBTT0FQIGVuZHBvaW50cywgYWJzdHJhY3RpbmcgdGhlIGNvbXBsZXhpdGllcyBvZiB0aGUgdW5kZXJseWluZyBKYXZhIFNPQVAgQVBJLiBUaGlzIG1vZHVsZSBpcyBlc3NlbnRpYWwgZm9yIGludGVncmF0aW5nIHdpdGggU09BUC1iYXNlZCB3ZWIgc2VydmljZXMgYW5kIGVuYWJsZXMgc2VhbWxlc3MgY29tbXVuaWNhdGlvbiB1c2luZyB0aGUgU09BUCBwcm90b2NvbC5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlczpcbiAqIC0gKipNZXNzYWdlIENyZWF0aW9uKio6IFRoZSBgU09BUGAgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyB0byBjcmVhdGUgbmV3IFNPQVAgbWVzc2FnZXMsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byBhZGQgbmFtZXNwYWNlcywgaGVhZGVycywgYW5kIGJvZHkgZWxlbWVudHMuXG4gKiAtICoqTWVzc2FnZSBQYXJzaW5nKio6IFRoZSBtb2R1bGUgYWxsb3dzIHBhcnNpbmcgb2YgaW5jb21pbmcgU09BUCBtZXNzYWdlcyBmcm9tIEhUVFAgcmVxdWVzdHMsIGVuYWJsaW5nIGRldmVsb3BlcnMgdG8gaGFuZGxlIFNPQVAgcmVxdWVzdHMgaW4gdGhlaXIgYXBwbGljYXRpb25zLlxuICogLSAqKlNPQVAgQ2FsbHMqKjogVGhlIGBjYWxsYCBtZXRob2QgZW5hYmxlcyBzZW5kaW5nIFNPQVAgbWVzc2FnZXMgdG8gc3BlY2lmaWVkIGVuZHBvaW50cyBhbmQgcmVjZWl2aW5nIHJlc3BvbnNlcywgZmFjaWxpdGF0aW5nIGNvbW11bmljYXRpb24gd2l0aCBTT0FQLWJhc2VkIHdlYiBzZXJ2aWNlcy5cbiAqIFxuICogIyMjIFVzZSBDYXNlczpcbiAqIC0gKipJbnRlZ3JhdGluZyB3aXRoIFNPQVAgV2ViIFNlcnZpY2VzKio6IERldmVsb3BlcnMgY2FuIHVzZSB0aGlzIG1vZHVsZSB0byBpbnRlcmFjdCB3aXRoIGV4aXN0aW5nIFNPQVAgd2ViIHNlcnZpY2VzLCBzZW5kaW5nIHJlcXVlc3RzIGFuZCBwcm9jZXNzaW5nIHJlc3BvbnNlcyBpbiBhIHN0cnVjdHVyZWQgbWFubmVyLlxuICogLSAqKkJ1aWxkaW5nIFNPQVAgRW5kcG9pbnRzKio6IEJ5IHBhcnNpbmcgaW5jb21pbmcgU09BUCBtZXNzYWdlcywgZGV2ZWxvcGVycyBjYW4gY3JlYXRlIGFwcGxpY2F0aW9ucyB0aGF0IGFjdCBhcyBTT0FQIGVuZHBvaW50cywgaGFuZGxpbmcgcmVxdWVzdHMgYW5kIHByb3ZpZGluZyBhcHByb3ByaWF0ZSByZXNwb25zZXMuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFNPQVAgfSBmcm9tIFwiQGFlcm9raXQvc2RrL25ldFwiO1xuICogXG4gKiAvLyBDcmVhdGUgYSBuZXcgU09BUCBtZXNzYWdlXG4gKiBjb25zdCBtZXNzYWdlID0gU09BUC5jcmVhdGVNZXNzYWdlKCk7XG4gKiBjb25zdCBlbnZlbG9wZSA9IG1lc3NhZ2UuZ2V0UGFydCgpLmdldEVudmVsb3BlKCk7XG4gKiBlbnZlbG9wZS5hZGROYW1lc3BhY2VEZWNsYXJhdGlvbihcIm5zXCIsIFwiaHR0cDovL2V4YW1wbGUuY29tL25hbWVzcGFjZVwiKTtcbiAqIGNvbnN0IGJvZHkgPSBlbnZlbG9wZS5nZXRCb2R5KCk7XG4gKiBjb25zdCBlbGVtZW50ID0gYm9keS5hZGRDaGlsZEVsZW1lbnQoXCJNeVJlcXVlc3RcIiwgXCJuc1wiKTtcbiAqIGVsZW1lbnQuYWRkVGV4dE5vZGUoXCJSZXF1ZXN0IGRhdGFcIik7XG4gKiBcbiAqIC8vIFNlbmQgdGhlIFNPQVAgbWVzc2FnZSB0byBhbiBlbmRwb2ludFxuICogY29uc3QgcmVzcG9uc2UgPSBTT0FQLmNhbGwobWVzc2FnZSwgXCJodHRwOi8vZXhhbXBsZS5jb20vc29hcC1lbmRwb2ludFwiKTtcbiAqIGNvbnNvbGUubG9nKHJlc3BvbnNlLmdldFRleHQoKSk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSBcIkBhZXJva2l0L3Nkay9odHRwL3JlcXVlc3RcIjtcbmltcG9ydCB7IEJhc2U2NCB9IGZyb20gXCJAYWVyb2tpdC9zZGsvdXRpbHMvYmFzZTY0XCI7XG5pbXBvcnQgeyBTdHJlYW1zLCBJbnB1dFN0cmVhbSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vc3RyZWFtc1wiO1xuXG5jb25zdCBNZXNzYWdlRmFjdG9yeSA9IEphdmEudHlwZShcImpha2FydGEueG1sLnNvYXAuTWVzc2FnZUZhY3RvcnlcIik7XG5jb25zdCBNaW1lSGVhZGVyc0ludGVybmFsID0gSmF2YS50eXBlKFwiamFrYXJ0YS54bWwuc29hcC5NaW1lSGVhZGVyc1wiKTtcbmNvbnN0IFNPQVBDb25uZWN0aW9uRmFjdG9yeSA9IEphdmEudHlwZShcImpha2FydGEueG1sLnNvYXAuU09BUENvbm5lY3Rpb25GYWN0b3J5XCIpO1xuXG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBhbmQgY2FsbGluZyBTT0FQIG1lc3NhZ2VzLlxuICogSXQgd3JhcHMgdGhlIHVuZGVybHlpbmcgSmF2YSBqYXZheC54bWwuc29hcCBBUEkuXG4gKi9cbmV4cG9ydCBjbGFzcyBTT0FQIHtcblxuXHQvKipcblx0ICogQ2FsbCBhIGdpdmVuIFNPQVAgZW5kcG9pbnQgd2l0aCBhIGdpdmVuIHJlcXVlc3QgbWVzc2FnZVxuXHQgKiBAcGFyYW0gbWVzc2FnZSBUaGUgU09BUCBNZXNzYWdlIHdyYXBwZXIgb2JqZWN0LlxuXHQgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgU09BUCBlbmRwb2ludCBVUkwuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNhbGwobWVzc2FnZTogTWVzc2FnZSwgdXJsOiBzdHJpbmcpIHtcblx0XHRjb25zdCBzb2FwQ29ubmVjdGlvbkZhY3RvcnkgPSBTT0FQQ29ubmVjdGlvbkZhY3RvcnkubmV3SW5zdGFuY2UoKTtcblx0XHRjb25zdCBpbnRlcm5hbENvbm5lY3Rpb24gPSBzb2FwQ29ubmVjdGlvbkZhY3RvcnkuY3JlYXRlQ29ubmVjdGlvbigpO1xuXHRcdC8vIEFjY2Vzc2luZyB0aGUgaW50ZXJuYWwgcHJvcGVydHkgbmF0aXZlIChyZW5hbWVkIGZyb20gJ25hdGl2ZScgZm9yIGJldHRlciBlbmNhcHN1bGF0aW9uKVxuXHRcdGNvbnN0IGludGVybmFsUmVzcG9uc2UgPSBpbnRlcm5hbENvbm5lY3Rpb24uY2FsbChtZXNzYWdlLm5hdGl2ZSwgdXJsKTtcblx0XHRyZXR1cm4gbmV3IE1lc3NhZ2UoaW50ZXJuYWxSZXNwb25zZSk7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIHRydXN0QWxsKCkge1xuXHRcdC8vIFRPRE86IEltcGxlbWVudCBsb2dpYyBmb3IgdHJ1c3RpbmcgYWxsIGNlcnRpZmljYXRlcyBpZiByZXF1aXJlZCBieSB0aGUgU0RLIGVudmlyb25tZW50XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldywgZW1wdHkgU09BUCBtZXNzYWdlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBjcmVhdGVNZXNzYWdlKCk6IE1lc3NhZ2Uge1xuXHRcdHJldHVybiBuZXcgTWVzc2FnZShNZXNzYWdlRmFjdG9yeS5uZXdJbnN0YW5jZSgpLmNyZWF0ZU1lc3NhZ2UoKSk7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgU09BUCBtZXNzYWdlIGZyb20gYW4gSW5wdXRTdHJlYW0gYW5kIE1pbWVIZWFkZXJzLlxuXHQgKiBAcGFyYW0gbWltZUhlYWRlcnMgVGhlIE1pbWVIZWFkZXJzIHdyYXBwZXIgb2JqZWN0LlxuXHQgKiBAcGFyYW0gaW5wdXRTdHJlYW0gVGhlIElucHV0U3RyZWFtIHdyYXBwZXIgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBwYXJzZU1lc3NhZ2UobWltZUhlYWRlcnM6IE1pbWVIZWFkZXJzLCBpbnB1dFN0cmVhbTogSW5wdXRTdHJlYW0pOiBNZXNzYWdlIHtcblx0XHRjb25zdCBpbnRlcm5hbEZhY3RvcnkgPSBNZXNzYWdlRmFjdG9yeS5uZXdJbnN0YW5jZSgpO1xuXHRcdC8vIFVzZSBuYXRpdmUgZm9yIGludGVybmFsIEphdmEgb2JqZWN0IGFjY2Vzc1xuXHRcdGlmIChpbnB1dFN0cmVhbS5uYXRpdmUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIFVzZSBuYXRpdmUgZm9yIGludGVybmFsIEphdmEgb2JqZWN0IGFjY2Vzc1xuXHRcdFx0XHRjb25zdCBpbnRlcm5hbE1lc3NhZ2UgPSBpbnRlcm5hbEZhY3RvcnkuY3JlYXRlTWVzc2FnZShtaW1lSGVhZGVycy5uYXRpdmUsIGlucHV0U3RyZWFtLm5hdGl2ZSk7XG5cdFx0XHRcdGNvbnN0IGludGVybmFsUGFydCA9IGludGVybmFsTWVzc2FnZS5nZXRTT0FQUGFydCgpO1xuXHRcdFx0XHRpbnRlcm5hbFBhcnQuZ2V0RW52ZWxvcGUoKTtcblx0XHRcdFx0cmV0dXJuIG5ldyBNZXNzYWdlKGludGVybmFsTWVzc2FnZSk7XG5cdFx0XHR9IGNhdGNoIChlOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihlKTtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgcHJvdmlkZWQgaXMgbnVsbCBvciBpbiBhIHdyb25nIGZvcm1hdC4gSFRUUCBtZXRob2QgdXNlZCBtdXN0IGJlIFBPU1QuIFwiICsgZS5tZXNzYWdlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgcHJvdmlkZWQgaXMgbnVsbC5cIik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgU09BUCBtZXNzYWdlIGZyb20gdGhlIGN1cnJlbnQgSFRUUCByZXF1ZXN0IGlucHV0IHN0cmVhbS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcGFyc2VSZXF1ZXN0KCk6IE1lc3NhZ2Uge1xuXHRcdGlmIChSZXF1ZXN0LmdldE1ldGhvZCgpLnRvVXBwZXJDYXNlKCkgIT09IFwiUE9TVFwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJIVFRQIG1ldGhvZCB1c2VkIG11c3QgYmUgUE9TVC5cIik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW5wdXRTdHJlYW0gPSBSZXF1ZXN0LmdldElucHV0U3RyZWFtKCk7XG5cdFx0Y29uc3QgbWltZUhlYWRlcnMgPSB0aGlzLmNyZWF0ZU1pbWVIZWFkZXJzKCk7XG5cblx0XHRyZXR1cm4gdGhpcy5wYXJzZU1lc3NhZ2UobWltZUhlYWRlcnMsIGlucHV0U3RyZWFtKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3LCBlbXB0eSBNaW1lSGVhZGVycyBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZU1pbWVIZWFkZXJzKCk6IE1pbWVIZWFkZXJzIHtcblx0XHRjb25zdCBpbnRlcm5hbE1pbWVIZWFkZXJzID0gbmV3IE1pbWVIZWFkZXJzSW50ZXJuYWwoKTtcblx0XHRyZXR1cm4gbmV3IE1pbWVIZWFkZXJzKGludGVybmFsTWltZUhlYWRlcnMpO1xuXHR9XG59XG5cbi8qKlxuICogU09BUCBNZXNzYWdlIFdyYXBwZXJcbiAqL1xuY2xhc3MgTWVzc2FnZSB7XG5cblx0Ly8gUmVuYW1lZCB0byBuYXRpdmUgdG8gc2lnbmFsIGludGVybmFsLXVzZSBwcm9wZXJ0eSwgaW1wcm92aW5nIGVuY2Fwc3VsYXRpb25cblx0cHVibGljIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGFydCgpOiBQYXJ0IHtcblx0XHRyZXR1cm4gbmV3IFBhcnQodGhpcy5uYXRpdmUuZ2V0U09BUFBhcnQoKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TWltZUhlYWRlcnMoKTogTWltZUhlYWRlcnMge1xuXHRcdHJldHVybiBuZXcgTWltZUhlYWRlcnModGhpcy5uYXRpdmUuZ2V0TWltZUhlYWRlcnMoKSk7XG5cdH1cblxuXHRwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zYXZlQ2hhbmdlcygpO1xuXHR9XG5cblx0cHVibGljIGdldFRleHQoKTogc3RyaW5nIHtcblx0XHRjb25zdCBvdXRwdXRTdHJlYW0gPSBTdHJlYW1zLmNyZWF0ZUJ5dGVBcnJheU91dHB1dFN0cmVhbSgpO1xuXHRcdC8vIFVzZSBuYXRpdmUgZm9yIGludGVybmFsIEphdmEgb2JqZWN0IGFjY2Vzc1xuXHRcdHRoaXMubmF0aXZlLndyaXRlVG8ob3V0cHV0U3RyZWFtLm5hdGl2ZSk7XG5cdFx0cmV0dXJuIG91dHB1dFN0cmVhbS5nZXRUZXh0KCk7XG5cdH1cbn1cblxuLyoqXG4gKiBTT0FQIFBhcnQgV3JhcHBlclxuICovXG5jbGFzcyBQYXJ0IHtcblxuXHQvLyBSZW5hbWVkIHRvIG5hdGl2ZVxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RW52ZWxvcGUoKTogRW52ZWxvcGUge1xuXHRcdHJldHVybiBuZXcgRW52ZWxvcGUodGhpcy5uYXRpdmUuZ2V0RW52ZWxvcGUoKSk7XG5cdH1cbn1cblxuLyoqXG4gKiBTT0FQIE1pbWUgSGVhZGVycyBXcmFwcGVyXG4gKi9cbmNsYXNzIE1pbWVIZWFkZXJzIHtcblxuXHQvLyBSZW5hbWVkIHRvIG5hdGl2ZVxuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBhZGRIZWFkZXIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuYWRkSGVhZGVyKG5hbWUsIHZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBhZGRCYXNpY0F1dGhlbnRpY2F0aW9uSGVhZGVyKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCB1c2VyQW5kUGFzc3dvcmQgPSBgJHt1c2VybmFtZX06JHtwYXNzd29yZH1gO1xuXHRcdGNvbnN0IGJhc2ljQXV0aCA9IEJhc2U2NC5lbmNvZGUodXNlckFuZFBhc3N3b3JkKTtcblx0XHR0aGlzLm5hdGl2ZS5hZGRIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIGBCYXNpYyAke2Jhc2ljQXV0aH1gKTtcblx0fVxufVxuXG4vKipcbiAqIFNPQVAgRW52ZWxvcGUgV3JhcHBlclxuICovXG5jbGFzcyBFbnZlbG9wZSB7XG5cdC8vIFJlbmFtZWQgdG8gbmF0aXZlXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBhZGROYW1lc3BhY2VEZWNsYXJhdGlvbihwcmVmaXg6IHN0cmluZywgdXJpOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5hZGROYW1lc3BhY2VEZWNsYXJhdGlvbihwcmVmaXgsIHVyaSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Qm9keSgpOiBCb2R5IHtcblx0XHRyZXR1cm4gbmV3IEJvZHkodGhpcy5uYXRpdmUuZ2V0Qm9keSgpKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRIZWFkZXIoKTogSGVhZGVyIHtcblx0XHRyZXR1cm4gbmV3IEhlYWRlcih0aGlzLm5hdGl2ZS5nZXRIZWFkZXIoKSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlTmFtZShsb2NhbE5hbWU6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHVyaTogc3RyaW5nKTogTmFtZSB7XG5cdFx0cmV0dXJuIG5ldyBOYW1lKHRoaXMubmF0aXZlLmNyZWF0ZU5hbWUobG9jYWxOYW1lLCBwcmVmaXgsIHVyaSkpO1xuXHR9XG59XG5cbi8qKlxuICogU09BUCBCb2R5IFdyYXBwZXJcbiAqL1xuY2xhc3MgQm9keSB7XG5cdC8vIFJlbmFtZWQgdG8gbmF0aXZlXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBhZGRDaGlsZEVsZW1lbnQobG9jYWxOYW1lOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogRWxlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBFbGVtZW50KHRoaXMubmF0aXZlLmFkZENoaWxkRWxlbWVudChsb2NhbE5hbWUsIHByZWZpeCkpO1xuXHR9XG5cblx0cHVibGljIGdldENoaWxkRWxlbWVudHMoKTogRWxlbWVudFtdIHtcblx0XHRjb25zdCBjaGlsZEVsZW1lbnRzID0gW107XG5cdFx0Y29uc3QgaW50ZXJuYWxFbGVtZW50c0l0ZXJhdG9yID0gdGhpcy5uYXRpdmUuZ2V0Q2hpbGRFbGVtZW50cygpO1xuXHRcdHdoaWxlIChpbnRlcm5hbEVsZW1lbnRzSXRlcmF0b3IuaGFzTmV4dCgpKSB7XG5cdFx0XHRjaGlsZEVsZW1lbnRzLnB1c2gobmV3IEVsZW1lbnQoaW50ZXJuYWxFbGVtZW50c0l0ZXJhdG9yLm5leHQoKSkpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2hpbGRFbGVtZW50cztcblx0fVxufVxuXG4vKipcbiAqIFNPQVAgSGVhZGVyIFdyYXBwZXJcbiAqL1xuY2xhc3MgSGVhZGVyIHtcblx0Ly8gUmVuYW1lZCB0byBuYXRpdmVcblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0cHVibGljIGFkZEhlYWRlckVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmFkZEhlYWRlckVsZW1lbnQoZWxlbWVudC5uYXRpdmUpO1xuXHR9XG59XG5cbi8qKlxuICogU09BUCBOYW1lIFdyYXBwZXJcbiAqL1xuY2xhc3MgTmFtZSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXHRcblx0cHVibGljIGdldE5hdGl2ZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBnZXRMb2NhbE5hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TG9jYWxOYW1lKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UHJlZml4KCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFByZWZpeCgpO1xuXHR9XG5cblx0cHVibGljIGdldFF1YWxpZmllZE5hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UXVhbGlmaWVkTmFtZSgpO1xuXHR9XG5cblx0cHVibGljIGdldFVSSSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRVUkkoKTtcblx0fVxufVxuXG4vKipcbiAqIFNPQVAgRWxlbWVudCBXcmFwcGVyXG4gKi9cbmNsYXNzIEVsZW1lbnQge1xuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdHB1YmxpYyBhZGRDaGlsZEVsZW1lbnQobG9jYWxOYW1lOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG5ldyBFbGVtZW50KHRoaXMubmF0aXZlLmFkZENoaWxkRWxlbWVudChsb2NhbE5hbWUsIHByZWZpeCkpO1xuXHR9XG5cblx0cHVibGljIGFkZFRleHROb2RlKHRleHQ6IHN0cmluZyk6IEVsZW1lbnQge1xuXHRcdHJldHVybiBuZXcgRWxlbWVudCh0aGlzLm5hdGl2ZS5hZGRUZXh0Tm9kZSh0ZXh0KSk7XG5cdH1cblxuXHRwdWJsaWMgYWRkQXR0cmlidXRlKG5hbWU6IE5hbWUsIHZhbHVlOiBhbnkpOiBFbGVtZW50IHtcblx0XHQvLyBVc2UgbmFtZS5uYXRpdmUgZm9yIGludGVybmFsIEphdmEgb2JqZWN0IGFjY2Vzc1xuXHRcdHJldHVybiBuZXcgRWxlbWVudCh0aGlzLm5hdGl2ZS5hZGRBdHRyaWJ1dGUobmFtZS5nZXROYXRpdmUoKSwgdmFsdWUpKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRDaGlsZEVsZW1lbnRzKCk6IEVsZW1lbnRbXSB7XG5cdFx0Y29uc3QgY2hpbGRFbGVtZW50cyA9IFtdO1xuXHRcdGNvbnN0IGludGVybmFsRWxlbWVudHNJdGVyYXRvciA9IHRoaXMubmF0aXZlLmdldENoaWxkRWxlbWVudHMoKTtcblx0XHR3aGlsZSAoaW50ZXJuYWxFbGVtZW50c0l0ZXJhdG9yLmhhc05leHQoKSkge1xuXHRcdFx0Y2hpbGRFbGVtZW50cy5wdXNoKG5ldyBFbGVtZW50KGludGVybmFsRWxlbWVudHNJdGVyYXRvci5uZXh0KCkpKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNoaWxkRWxlbWVudHM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RWxlbWVudE5hbWUoKTogTmFtZSB8IHVuZGVmaW5lZCB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGludGVybmFsTmFtZSA9IHRoaXMubmF0aXZlLmdldEVsZW1lbnROYW1lKCk7XG5cdFx0XHRyZXR1cm4gbmV3IE5hbWUoaW50ZXJuYWxOYW1lKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyBUaGlzIGNhdGNoIGhhbmRsZXMgY2FzZXMgd2hlcmUgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGEgU09BUEVsZW1lbnRcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXRWYWx1ZSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0cHVibGljIGlzU09BUEVsZW1lbnQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RWxlbWVudE5hbWUoKSAhPT0gdW5kZWZpbmVkO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gU09BUDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQW1DQSxTQUFTLGVBQWU7QUFDeEIsU0FBUyxjQUFjO0FBQ3ZCLFNBQVMsZUFBNEI7QUFFckMsTUFBTSxpQkFBaUIsS0FBSyxLQUFLLGlDQUFpQztBQUNsRSxNQUFNLHNCQUFzQixLQUFLLEtBQUssOEJBQThCO0FBQ3BFLE1BQU0sd0JBQXdCLEtBQUssS0FBSyx3Q0FBd0M7QUFNekUsTUFBTSxLQUFLO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT2pCLE9BQWMsS0FBSyxTQUFrQixLQUFhO0FBQ2pELFVBQU0sd0JBQXdCLHNCQUFzQixZQUFZO0FBQ2hFLFVBQU0scUJBQXFCLHNCQUFzQixpQkFBaUI7QUFFbEUsVUFBTSxtQkFBbUIsbUJBQW1CLEtBQUssUUFBUSxRQUFRLEdBQUc7QUFDcEUsV0FBTyxJQUFJLFFBQVEsZ0JBQWdCO0FBQUEsRUFDcEM7QUFBQSxFQUVBLE9BQWMsV0FBVztBQUFBLEVBRXpCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxPQUFjLGdCQUF5QjtBQUN0QyxXQUFPLElBQUksUUFBUSxlQUFlLFlBQVksRUFBRSxjQUFjLENBQUM7QUFBQSxFQUNoRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsYUFBYSxhQUEwQixhQUFtQztBQUN2RixVQUFNLGtCQUFrQixlQUFlLFlBQVk7QUFFbkQsUUFBSSxZQUFZLFFBQVE7QUFDdkIsVUFBSTtBQUVILGNBQU0sa0JBQWtCLGdCQUFnQixjQUFjLFlBQVksUUFBUSxZQUFZLE1BQU07QUFDNUYsY0FBTSxlQUFlLGdCQUFnQixZQUFZO0FBQ2pELHFCQUFhLFlBQVk7QUFDekIsZUFBTyxJQUFJLFFBQVEsZUFBZTtBQUFBLE1BQ25DLFNBQVMsR0FBUTtBQUNoQixnQkFBUSxNQUFNLENBQUM7QUFDZixjQUFNLElBQUksTUFBTSxpRkFBaUYsRUFBRSxPQUFPO0FBQUEsTUFDM0c7QUFBQSxJQUNEO0FBQ0EsVUFBTSxJQUFJLE1BQU0seUJBQXlCO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQWMsZUFBd0I7QUFDckMsUUFBSSxRQUFRLFVBQVUsRUFBRSxZQUFZLE1BQU0sUUFBUTtBQUNqRCxZQUFNLElBQUksTUFBTSxnQ0FBZ0M7QUFBQSxJQUNqRDtBQUVBLFVBQU0sY0FBYyxRQUFRLGVBQWU7QUFDM0MsVUFBTSxjQUFjLEtBQUssa0JBQWtCO0FBRTNDLFdBQU8sS0FBSyxhQUFhLGFBQWEsV0FBVztBQUFBLEVBQ2xEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxPQUFjLG9CQUFpQztBQUM5QyxVQUFNLHNCQUFzQixJQUFJLG9CQUFvQjtBQUNwRCxXQUFPLElBQUksWUFBWSxtQkFBbUI7QUFBQSxFQUMzQztBQUNEO0FBS0EsTUFBTSxRQUFRO0FBQUE7QUFBQSxFQUdHO0FBQUEsRUFFaEIsWUFBWSxRQUFhO0FBQ3hCLFNBQUssU0FBUztBQUFBLEVBQ2Y7QUFBQSxFQUVPLFVBQWdCO0FBQ3RCLFdBQU8sSUFBSSxLQUFLLEtBQUssT0FBTyxZQUFZLENBQUM7QUFBQSxFQUMxQztBQUFBLEVBRU8saUJBQThCO0FBQ3BDLFdBQU8sSUFBSSxZQUFZLEtBQUssT0FBTyxlQUFlLENBQUM7QUFBQSxFQUNwRDtBQUFBLEVBRU8sT0FBYTtBQUNuQixTQUFLLE9BQU8sWUFBWTtBQUFBLEVBQ3pCO0FBQUEsRUFFTyxVQUFrQjtBQUN4QixVQUFNLGVBQWUsUUFBUSw0QkFBNEI7QUFFekQsU0FBSyxPQUFPLFFBQVEsYUFBYSxNQUFNO0FBQ3ZDLFdBQU8sYUFBYSxRQUFRO0FBQUEsRUFDN0I7QUFDRDtBQUtBLE1BQU0sS0FBSztBQUFBO0FBQUEsRUFHTztBQUFBLEVBRWpCLFlBQVksUUFBYTtBQUN4QixTQUFLLFNBQVM7QUFBQSxFQUNmO0FBQUEsRUFFTyxjQUF3QjtBQUM5QixXQUFPLElBQUksU0FBUyxLQUFLLE9BQU8sWUFBWSxDQUFDO0FBQUEsRUFDOUM7QUFDRDtBQUtBLE1BQU0sWUFBWTtBQUFBO0FBQUEsRUFHRDtBQUFBLEVBRWhCLFlBQVksUUFBYTtBQUN4QixTQUFLLFNBQVM7QUFBQSxFQUNmO0FBQUEsRUFFTyxVQUFVLE1BQWMsT0FBcUI7QUFDbkQsU0FBSyxPQUFPLFVBQVUsTUFBTSxLQUFLO0FBQUEsRUFDbEM7QUFBQSxFQUVPLDZCQUE2QixVQUFrQixVQUF3QjtBQUM3RSxVQUFNLGtCQUFrQixHQUFHLFFBQVEsSUFBSSxRQUFRO0FBQy9DLFVBQU0sWUFBWSxPQUFPLE9BQU8sZUFBZTtBQUMvQyxTQUFLLE9BQU8sVUFBVSxpQkFBaUIsU0FBUyxTQUFTLEVBQUU7QUFBQSxFQUM1RDtBQUNEO0FBS0EsTUFBTSxTQUFTO0FBQUE7QUFBQSxFQUVHO0FBQUEsRUFFakIsWUFBWSxRQUFhO0FBQ3hCLFNBQUssU0FBUztBQUFBLEVBQ2Y7QUFBQSxFQUVPLHdCQUF3QixRQUFnQixLQUFtQjtBQUNqRSxTQUFLLE9BQU8sd0JBQXdCLFFBQVEsR0FBRztBQUFBLEVBQ2hEO0FBQUEsRUFFTyxVQUFnQjtBQUN0QixXQUFPLElBQUksS0FBSyxLQUFLLE9BQU8sUUFBUSxDQUFDO0FBQUEsRUFDdEM7QUFBQSxFQUVPLFlBQW9CO0FBQzFCLFdBQU8sSUFBSSxPQUFPLEtBQUssT0FBTyxVQUFVLENBQUM7QUFBQSxFQUMxQztBQUFBLEVBRU8sV0FBVyxXQUFtQixRQUFnQixLQUFtQjtBQUN2RSxXQUFPLElBQUksS0FBSyxLQUFLLE9BQU8sV0FBVyxXQUFXLFFBQVEsR0FBRyxDQUFDO0FBQUEsRUFDL0Q7QUFDRDtBQUtBLE1BQU0sS0FBSztBQUFBO0FBQUEsRUFFTztBQUFBLEVBRWpCLFlBQVksUUFBYTtBQUN4QixTQUFLLFNBQVM7QUFBQSxFQUNmO0FBQUEsRUFFTyxnQkFBZ0IsV0FBbUIsUUFBeUI7QUFDbEUsV0FBTyxJQUFJLFFBQVEsS0FBSyxPQUFPLGdCQUFnQixXQUFXLE1BQU0sQ0FBQztBQUFBLEVBQ2xFO0FBQUEsRUFFTyxtQkFBOEI7QUFDcEMsVUFBTSxnQkFBZ0IsQ0FBQztBQUN2QixVQUFNLDJCQUEyQixLQUFLLE9BQU8saUJBQWlCO0FBQzlELFdBQU8seUJBQXlCLFFBQVEsR0FBRztBQUMxQyxvQkFBYyxLQUFLLElBQUksUUFBUSx5QkFBeUIsS0FBSyxDQUFDLENBQUM7QUFBQSxJQUNoRTtBQUNBLFdBQU87QUFBQSxFQUNSO0FBQ0Q7QUFLQSxNQUFNLE9BQU87QUFBQTtBQUFBLEVBRUs7QUFBQSxFQUVqQixZQUFZLFFBQWE7QUFDeEIsU0FBSyxTQUFTO0FBQUEsRUFDZjtBQUFBLEVBRU8saUJBQWlCLFNBQXdCO0FBQy9DLFNBQUssT0FBTyxpQkFBaUIsUUFBUSxNQUFNO0FBQUEsRUFDNUM7QUFDRDtBQUtBLE1BQU0sS0FBSztBQUFBLEVBQ087QUFBQSxFQUVqQixZQUFZLFFBQWE7QUFDeEIsU0FBSyxTQUFTO0FBQUEsRUFDZjtBQUFBLEVBRU8sWUFBb0I7QUFDMUIsV0FBTyxLQUFLO0FBQUEsRUFDYjtBQUFBLEVBRU8sZUFBdUI7QUFDN0IsV0FBTyxLQUFLLE9BQU8sYUFBYTtBQUFBLEVBQ2pDO0FBQUEsRUFFTyxZQUFvQjtBQUMxQixXQUFPLEtBQUssT0FBTyxVQUFVO0FBQUEsRUFDOUI7QUFBQSxFQUVPLG1CQUEyQjtBQUNqQyxXQUFPLEtBQUssT0FBTyxpQkFBaUI7QUFBQSxFQUNyQztBQUFBLEVBRU8sU0FBaUI7QUFDdkIsV0FBTyxLQUFLLE9BQU8sT0FBTztBQUFBLEVBQzNCO0FBQ0Q7QUFLQSxNQUFNLFFBQVE7QUFBQSxFQUNHO0FBQUEsRUFFaEIsWUFBWSxRQUFhO0FBQ3hCLFNBQUssU0FBUztBQUFBLEVBQ2Y7QUFBQSxFQUVPLGdCQUFnQixXQUFtQixRQUFnQjtBQUN6RCxXQUFPLElBQUksUUFBUSxLQUFLLE9BQU8sZ0JBQWdCLFdBQVcsTUFBTSxDQUFDO0FBQUEsRUFDbEU7QUFBQSxFQUVPLFlBQVksTUFBdUI7QUFDekMsV0FBTyxJQUFJLFFBQVEsS0FBSyxPQUFPLFlBQVksSUFBSSxDQUFDO0FBQUEsRUFDakQ7QUFBQSxFQUVPLGFBQWEsTUFBWSxPQUFxQjtBQUVwRCxXQUFPLElBQUksUUFBUSxLQUFLLE9BQU8sYUFBYSxLQUFLLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFBQSxFQUNyRTtBQUFBLEVBRU8sbUJBQThCO0FBQ3BDLFVBQU0sZ0JBQWdCLENBQUM7QUFDdkIsVUFBTSwyQkFBMkIsS0FBSyxPQUFPLGlCQUFpQjtBQUM5RCxXQUFPLHlCQUF5QixRQUFRLEdBQUc7QUFDMUMsb0JBQWMsS0FBSyxJQUFJLFFBQVEseUJBQXlCLEtBQUssQ0FBQyxDQUFDO0FBQUEsSUFDaEU7QUFDQSxXQUFPO0FBQUEsRUFDUjtBQUFBLEVBRU8saUJBQW1DO0FBQ3pDLFFBQUk7QUFDSCxZQUFNLGVBQWUsS0FBSyxPQUFPLGVBQWU7QUFDaEQsYUFBTyxJQUFJLEtBQUssWUFBWTtBQUFBLElBQzdCLFNBQVMsR0FBRztBQUFBLElBRVo7QUFDQSxXQUFPO0FBQUEsRUFDUjtBQUFBLEVBRU8sV0FBZ0I7QUFDdEIsV0FBTyxLQUFLLE9BQU8sU0FBUztBQUFBLEVBQzdCO0FBQUEsRUFFTyxnQkFBeUI7QUFDL0IsV0FBTyxLQUFLLGVBQWUsTUFBTTtBQUFBLEVBQ2xDO0FBQ0Q7QUFHQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0FBRWxDLFNBQU8sVUFBVTtBQUNsQjsiLAogICJuYW1lcyI6IFtdCn0K
|