@decaf-ts/for-fabric 0.12.6 → 0.12.7
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/for-fabric.cjs +2 -3797
- package/dist/for-fabric.cjs.map +1 -0
- package/dist/for-fabric.js +2 -3901
- package/dist/for-fabric.js.map +1 -0
- package/lib/cjs/bin/cli.cjs +2 -2
- package/lib/cjs/bin/cli.cjs.map +1 -0
- package/lib/cjs/cli-module.cjs +2 -2
- package/lib/cjs/cli-module.cjs.map +1 -0
- package/lib/cjs/cli-utils.cjs +2 -2
- package/lib/cjs/cli-utils.cjs.map +1 -0
- package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
- package/lib/cjs/client/FabricClientAdapter.cjs.map +1 -0
- package/lib/cjs/client/FabricClientDispatch.cjs +2 -2
- package/lib/cjs/client/FabricClientDispatch.cjs.map +1 -0
- package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
- package/lib/cjs/client/FabricClientPaginator.cjs.map +1 -0
- package/lib/cjs/client/FabricClientRepository.cjs +2 -2
- package/lib/cjs/client/FabricClientRepository.cjs.map +1 -0
- package/lib/cjs/client/FabricClientStatement.cjs +2 -2
- package/lib/cjs/client/FabricClientStatement.cjs.map +1 -0
- package/lib/cjs/client/collections/generation.cjs +2 -2
- package/lib/cjs/client/collections/generation.cjs.map +1 -0
- package/lib/cjs/client/collections/index.cjs +2 -2
- package/lib/cjs/client/collections/index.cjs.map +1 -0
- package/lib/cjs/client/constants.cjs +2 -2
- package/lib/cjs/client/constants.cjs.map +1 -0
- package/lib/cjs/client/crypto.cjs +2 -2
- package/lib/cjs/client/crypto.cjs.map +1 -0
- package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
- package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +1 -0
- package/lib/cjs/client/erc20/index.cjs +2 -2
- package/lib/cjs/client/erc20/index.cjs.map +1 -0
- package/lib/cjs/client/fabric-fs.cjs +2 -2
- package/lib/cjs/client/fabric-fs.cjs.map +1 -0
- package/lib/cjs/client/fabric-hsm.cjs +2 -2
- package/lib/cjs/client/fabric-hsm.cjs.map +1 -0
- package/lib/cjs/client/ids/id-extraction.cjs +2 -2
- package/lib/cjs/client/ids/id-extraction.cjs.map +1 -0
- package/lib/cjs/client/ids/index.cjs +2 -2
- package/lib/cjs/client/ids/index.cjs.map +1 -0
- package/lib/cjs/client/index.cjs +2 -2
- package/lib/cjs/client/index.cjs.map +1 -0
- package/lib/cjs/client/indexes/generation.cjs +2 -2
- package/lib/cjs/client/indexes/generation.cjs.map +1 -0
- package/lib/cjs/client/indexes/index.cjs +2 -2
- package/lib/cjs/client/indexes/index.cjs.map +1 -0
- package/lib/cjs/client/logging.cjs +2 -2
- package/lib/cjs/client/logging.cjs.map +1 -0
- package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
- package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +1 -0
- package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
- package/lib/cjs/client/services/FabricIdentityService.cjs.map +1 -0
- package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
- package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +1 -0
- package/lib/cjs/client/services/constants.cjs +2 -2
- package/lib/cjs/client/services/constants.cjs.map +1 -0
- package/lib/cjs/client/services/index.cjs +2 -2
- package/lib/cjs/client/services/index.cjs.map +1 -0
- package/lib/cjs/client/types.cjs +2 -2
- package/lib/cjs/client/types.cjs.map +1 -0
- package/lib/cjs/client/utils.cjs +2 -2
- package/lib/cjs/client/utils.cjs.map +1 -0
- package/lib/cjs/contract/Address.cjs +2 -2
- package/lib/cjs/contract/Address.cjs.map +1 -0
- package/lib/cjs/contract/AddressContract.cjs +2 -2
- package/lib/cjs/contract/AddressContract.cjs.map +1 -0
- package/lib/cjs/contract/AuditContract.cjs +2 -2
- package/lib/cjs/contract/AuditContract.cjs.map +1 -0
- package/lib/cjs/contract/BatchContract.cjs +2 -2
- package/lib/cjs/contract/BatchContract.cjs.map +1 -0
- package/lib/cjs/contract/MarketContract.cjs +2 -2
- package/lib/cjs/contract/MarketContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
- package/lib/cjs/contract/OtherAuditContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
- package/lib/cjs/contract/OtherBatchContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
- package/lib/cjs/contract/OtherMarketContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherProductContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductImageContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductSharedContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +1 -0
- package/lib/cjs/contract/Product.cjs +2 -2
- package/lib/cjs/contract/Product.cjs.map +1 -0
- package/lib/cjs/contract/ProductContract.cjs +2 -2
- package/lib/cjs/contract/ProductContract.cjs.map +1 -0
- package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
- package/lib/cjs/contract/ProductStrengthContract.cjs.map +1 -0
- package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
- package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +1 -0
- package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
- package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +1 -0
- package/lib/cjs/contract/User.cjs +2 -2
- package/lib/cjs/contract/User.cjs.map +1 -0
- package/lib/cjs/contract/UserContract.cjs +2 -2
- package/lib/cjs/contract/UserContract.cjs.map +1 -0
- package/lib/cjs/contract/index.cjs +3 -2
- package/lib/cjs/contract/index.cjs.map +1 -0
- package/lib/cjs/contract/logging-context.cjs +2 -2
- package/lib/cjs/contract/logging-context.cjs.map +1 -0
- package/lib/cjs/contract/models/Audit.cjs +2 -2
- package/lib/cjs/contract/models/Audit.cjs.map +1 -0
- package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
- package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +1 -0
- package/lib/cjs/contract/models/BaseModel.cjs +2 -2
- package/lib/cjs/contract/models/BaseModel.cjs.map +1 -0
- package/lib/cjs/contract/models/Batch.cjs +2 -2
- package/lib/cjs/contract/models/Batch.cjs.map +1 -0
- package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
- package/lib/cjs/contract/models/GtinOwner.cjs.map +1 -0
- package/lib/cjs/contract/models/History.cjs +2 -2
- package/lib/cjs/contract/models/History.cjs.map +1 -0
- package/lib/cjs/contract/models/Leaflet.cjs +2 -2
- package/lib/cjs/contract/models/Leaflet.cjs.map +1 -0
- package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
- package/lib/cjs/contract/models/LeafletFile.cjs.map +1 -0
- package/lib/cjs/contract/models/Market.cjs +2 -2
- package/lib/cjs/contract/models/Market.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherAudit.cjs +2 -2
- package/lib/cjs/contract/models/OtherAudit.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherBatchShared.cjs +2 -2
- package/lib/cjs/contract/models/OtherBatchShared.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherLeaflet.cjs +2 -2
- package/lib/cjs/contract/models/OtherLeaflet.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherLeafletFile.cjs +2 -2
- package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherMarket.cjs +2 -2
- package/lib/cjs/contract/models/OtherMarket.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherProduct.cjs +2 -2
- package/lib/cjs/contract/models/OtherProduct.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherProductImage.cjs +2 -2
- package/lib/cjs/contract/models/OtherProductImage.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherProductShared.cjs +2 -2
- package/lib/cjs/contract/models/OtherProductShared.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherProductStrength.cjs +2 -2
- package/lib/cjs/contract/models/OtherProductStrength.cjs.map +1 -0
- package/lib/cjs/contract/models/Product.cjs +2 -2
- package/lib/cjs/contract/models/Product.cjs.map +1 -0
- package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
- package/lib/cjs/contract/models/ProductStrength.cjs.map +1 -0
- package/lib/cjs/contract/models/SegregatedDocument.cjs +2 -2
- package/lib/cjs/contract/models/SegregatedDocument.cjs.map +1 -0
- package/lib/cjs/contract/models/constants.cjs +2 -2
- package/lib/cjs/contract/models/constants.cjs.map +1 -0
- package/lib/cjs/contract/models/decorators-private.cjs +2 -2
- package/lib/cjs/contract/models/decorators-private.cjs.map +1 -0
- package/lib/cjs/contract/models/decorators.cjs +2 -2
- package/lib/cjs/contract/models/decorators.cjs.map +1 -0
- package/lib/cjs/contract/models/gtin.cjs +2 -2
- package/lib/cjs/contract/models/gtin.cjs.map +1 -0
- package/lib/cjs/contract/models/history-dec.cjs +2 -2
- package/lib/cjs/contract/models/history-dec.cjs.map +1 -0
- package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
- package/lib/cjs/contracts/ContractAdapter.cjs.map +1 -0
- package/lib/cjs/contracts/ContractContext.cjs +2 -2
- package/lib/cjs/contracts/ContractContext.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
- package/lib/cjs/contracts/FabricContractDispatch.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
- package/lib/cjs/contracts/FabricContractPaginator.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
- package/lib/cjs/contracts/FabricContractRepository.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
- package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
- package/lib/cjs/contracts/FabricContractSequence.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
- package/lib/cjs/contracts/FabricContractStatement.cjs.map +1 -0
- package/lib/cjs/contracts/MigrationContract.cjs +2 -2
- package/lib/cjs/contracts/MigrationContract.cjs.map +1 -0
- package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
- package/lib/cjs/contracts/PrivateSequence.cjs.map +1 -0
- package/lib/cjs/contracts/auth/decorators.cjs +2 -2
- package/lib/cjs/contracts/auth/decorators.cjs.map +1 -0
- package/lib/cjs/contracts/auth/index.cjs +2 -2
- package/lib/cjs/contracts/auth/index.cjs.map +1 -0
- package/lib/cjs/contracts/bootstrap.cjs +14 -0
- package/lib/cjs/contracts/bootstrap.cjs.map +1 -0
- package/lib/cjs/contracts/crud/crud-contract.cjs +3 -2
- package/lib/cjs/contracts/crud/crud-contract.cjs.map +1 -0
- package/lib/cjs/contracts/crud/index.cjs +2 -2
- package/lib/cjs/contracts/crud/index.cjs.map +1 -0
- package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
- package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +1 -0
- package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
- package/lib/cjs/contracts/erc20/erc20contract.cjs.map +1 -0
- package/lib/cjs/contracts/erc20/index.cjs +2 -2
- package/lib/cjs/contracts/erc20/index.cjs.map +1 -0
- package/lib/cjs/contracts/erc20/models.cjs +2 -2
- package/lib/cjs/contracts/erc20/models.cjs.map +1 -0
- package/lib/cjs/contracts/fabric-overrides.cjs +65 -0
- package/lib/cjs/contracts/fabric-overrides.cjs.map +1 -0
- package/lib/cjs/contracts/index.cjs +3 -2
- package/lib/cjs/contracts/index.cjs.map +1 -0
- package/lib/cjs/contracts/logging.cjs +2 -2
- package/lib/cjs/contracts/logging.cjs.map +1 -0
- package/lib/cjs/contracts/overrides.cjs +2 -2
- package/lib/cjs/contracts/overrides.cjs.map +1 -0
- package/lib/cjs/contracts/types.cjs +2 -2
- package/lib/cjs/contracts/types.cjs.map +1 -0
- package/lib/cjs/contracts/uuid.cjs +2 -2
- package/lib/cjs/contracts/uuid.cjs.map +1 -0
- package/lib/cjs/index.cjs +2 -2
- package/lib/cjs/index.cjs.map +1 -0
- package/lib/cjs/shared/ClientSerializer.cjs +2 -2
- package/lib/cjs/shared/ClientSerializer.cjs.map +1 -0
- package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
- package/lib/cjs/shared/DeterministicSerializer.cjs.map +1 -0
- package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
- package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +1 -0
- package/lib/cjs/shared/constants.cjs +2 -2
- package/lib/cjs/shared/constants.cjs.map +1 -0
- package/lib/cjs/shared/decorators.cjs +2 -2
- package/lib/cjs/shared/decorators.cjs.map +1 -0
- package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
- package/lib/cjs/shared/erc20/erc20-constants.cjs.map +1 -0
- package/lib/cjs/shared/erc20/index.cjs +2 -2
- package/lib/cjs/shared/erc20/index.cjs.map +1 -0
- package/lib/cjs/shared/errors.cjs +2 -2
- package/lib/cjs/shared/errors.cjs.map +1 -0
- package/lib/cjs/shared/events.cjs +2 -2
- package/lib/cjs/shared/events.cjs.map +1 -0
- package/lib/cjs/shared/fabric-types.cjs +2 -2
- package/lib/cjs/shared/fabric-types.cjs.map +1 -0
- package/lib/cjs/shared/index.cjs +2 -2
- package/lib/cjs/shared/index.cjs.map +1 -0
- package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
- package/lib/cjs/shared/interfaces/Checkable.cjs.map +1 -0
- package/lib/cjs/shared/interfaces/index.cjs +2 -2
- package/lib/cjs/shared/interfaces/index.cjs.map +1 -0
- package/lib/cjs/shared/math.cjs +2 -2
- package/lib/cjs/shared/math.cjs.map +1 -0
- package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
- package/lib/cjs/shared/model/FabricBaseModel.cjs.map +1 -0
- package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
- package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +1 -0
- package/lib/cjs/shared/model/Identity.cjs +2 -2
- package/lib/cjs/shared/model/Identity.cjs.map +1 -0
- package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
- package/lib/cjs/shared/model/IdentityCredentials.cjs.map +1 -0
- package/lib/cjs/shared/model/index.cjs +2 -2
- package/lib/cjs/shared/model/index.cjs.map +1 -0
- package/lib/cjs/shared/overrides/Model.cjs +2 -2
- package/lib/cjs/shared/overrides/Model.cjs.map +1 -0
- package/lib/cjs/shared/overrides/index.cjs +2 -2
- package/lib/cjs/shared/overrides/index.cjs.map +1 -0
- package/lib/cjs/shared/overrides/overrides.cjs +2 -2
- package/lib/cjs/shared/overrides/overrides.cjs.map +1 -0
- package/lib/cjs/shared/types.cjs +2 -2
- package/lib/cjs/shared/types.cjs.map +1 -0
- package/lib/cjs/version.cjs +2 -2
- package/lib/cjs/version.cjs.map +1 -0
- package/lib/esm/bin/cli.js +1 -1
- package/lib/esm/bin/cli.js.map +1 -0
- package/lib/esm/cli-module.js +1 -1
- package/lib/esm/cli-module.js.map +1 -0
- package/lib/esm/cli-utils.js +1 -1
- package/lib/esm/cli-utils.js.map +1 -0
- package/lib/esm/client/FabricClientAdapter.js +1 -1
- package/lib/esm/client/FabricClientAdapter.js.map +1 -0
- package/lib/esm/client/FabricClientDispatch.js +1 -1
- package/lib/esm/client/FabricClientDispatch.js.map +1 -0
- package/lib/esm/client/FabricClientPaginator.js +1 -1
- package/lib/esm/client/FabricClientPaginator.js.map +1 -0
- package/lib/esm/client/FabricClientRepository.js +1 -1
- package/lib/esm/client/FabricClientRepository.js.map +1 -0
- package/lib/esm/client/FabricClientStatement.js +1 -1
- package/lib/esm/client/FabricClientStatement.js.map +1 -0
- package/lib/esm/client/collections/generation.js +1 -1
- package/lib/esm/client/collections/generation.js.map +1 -0
- package/lib/esm/client/collections/index.js +1 -1
- package/lib/esm/client/collections/index.js.map +1 -0
- package/lib/esm/client/constants.js +1 -1
- package/lib/esm/client/constants.js.map +1 -0
- package/lib/esm/client/crypto.js +1 -1
- package/lib/esm/client/crypto.js.map +1 -0
- package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
- package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +1 -0
- package/lib/esm/client/erc20/index.js +1 -1
- package/lib/esm/client/erc20/index.js.map +1 -0
- package/lib/esm/client/fabric-fs.js +1 -1
- package/lib/esm/client/fabric-fs.js.map +1 -0
- package/lib/esm/client/fabric-hsm.js +1 -1
- package/lib/esm/client/fabric-hsm.js.map +1 -0
- package/lib/esm/client/ids/id-extraction.js +1 -1
- package/lib/esm/client/ids/id-extraction.js.map +1 -0
- package/lib/esm/client/ids/index.js +1 -1
- package/lib/esm/client/ids/index.js.map +1 -0
- package/lib/esm/client/index.js +1 -1
- package/lib/esm/client/index.js.map +1 -0
- package/lib/esm/client/indexes/generation.js +1 -1
- package/lib/esm/client/indexes/generation.js.map +1 -0
- package/lib/esm/client/indexes/index.js +1 -1
- package/lib/esm/client/indexes/index.js.map +1 -0
- package/lib/esm/client/logging.js +1 -1
- package/lib/esm/client/logging.js.map +1 -0
- package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
- package/lib/esm/client/services/FabricEnrollmentService.js.map +1 -0
- package/lib/esm/client/services/FabricIdentityService.js +1 -1
- package/lib/esm/client/services/FabricIdentityService.js.map +1 -0
- package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
- package/lib/esm/client/services/RegistrationRequestBuilder.js.map +1 -0
- package/lib/esm/client/services/constants.js +1 -1
- package/lib/esm/client/services/constants.js.map +1 -0
- package/lib/esm/client/services/index.js +1 -1
- package/lib/esm/client/services/index.js.map +1 -0
- package/lib/esm/client/types.js +1 -1
- package/lib/esm/client/types.js.map +1 -0
- package/lib/esm/client/utils.js +1 -1
- package/lib/esm/client/utils.js.map +1 -0
- package/lib/esm/contract/Address.js +1 -1
- package/lib/esm/contract/Address.js.map +1 -0
- package/lib/esm/contract/AddressContract.js +1 -1
- package/lib/esm/contract/AddressContract.js.map +1 -0
- package/lib/esm/contract/AuditContract.js +1 -1
- package/lib/esm/contract/AuditContract.js.map +1 -0
- package/lib/esm/contract/BatchContract.js +1 -1
- package/lib/esm/contract/BatchContract.js.map +1 -0
- package/lib/esm/contract/MarketContract.js +1 -1
- package/lib/esm/contract/MarketContract.js.map +1 -0
- package/lib/esm/contract/OtherAuditContract.js +1 -1
- package/lib/esm/contract/OtherAuditContract.js.map +1 -0
- package/lib/esm/contract/OtherBatchContract.js +1 -1
- package/lib/esm/contract/OtherBatchContract.js.map +1 -0
- package/lib/esm/contract/OtherMarketContract.js +1 -1
- package/lib/esm/contract/OtherMarketContract.js.map +1 -0
- package/lib/esm/contract/OtherProductContract.js +1 -1
- package/lib/esm/contract/OtherProductContract.js.map +1 -0
- package/lib/esm/contract/OtherProductImageContract.js +1 -1
- package/lib/esm/contract/OtherProductImageContract.js.map +1 -0
- package/lib/esm/contract/OtherProductSharedContract.js +1 -1
- package/lib/esm/contract/OtherProductSharedContract.js.map +1 -0
- package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
- package/lib/esm/contract/OtherProductStrengthContract.js.map +1 -0
- package/lib/esm/contract/Product.js +1 -1
- package/lib/esm/contract/Product.js.map +1 -0
- package/lib/esm/contract/ProductContract.js +1 -1
- package/lib/esm/contract/ProductContract.js.map +1 -0
- package/lib/esm/contract/ProductStrengthContract.js +1 -1
- package/lib/esm/contract/ProductStrengthContract.js.map +1 -0
- package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
- package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +1 -0
- package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
- package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +1 -0
- package/lib/esm/contract/User.js +1 -1
- package/lib/esm/contract/User.js.map +1 -0
- package/lib/esm/contract/UserContract.js +1 -1
- package/lib/esm/contract/UserContract.js.map +1 -0
- package/lib/esm/contract/index.js +2 -1
- package/lib/esm/contract/index.js.map +1 -0
- package/lib/esm/contract/logging-context.js +1 -1
- package/lib/esm/contract/logging-context.js.map +1 -0
- package/lib/esm/contract/models/Audit.js +1 -1
- package/lib/esm/contract/models/Audit.js.map +1 -0
- package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
- package/lib/esm/contract/models/BaseIdentifiedModel.js.map +1 -0
- package/lib/esm/contract/models/BaseModel.js +1 -1
- package/lib/esm/contract/models/BaseModel.js.map +1 -0
- package/lib/esm/contract/models/Batch.js +1 -1
- package/lib/esm/contract/models/Batch.js.map +1 -0
- package/lib/esm/contract/models/GtinOwner.js +1 -1
- package/lib/esm/contract/models/GtinOwner.js.map +1 -0
- package/lib/esm/contract/models/History.js +1 -1
- package/lib/esm/contract/models/History.js.map +1 -0
- package/lib/esm/contract/models/Leaflet.js +1 -1
- package/lib/esm/contract/models/Leaflet.js.map +1 -0
- package/lib/esm/contract/models/LeafletFile.js +1 -1
- package/lib/esm/contract/models/LeafletFile.js.map +1 -0
- package/lib/esm/contract/models/Market.js +1 -1
- package/lib/esm/contract/models/Market.js.map +1 -0
- package/lib/esm/contract/models/OtherAudit.js +1 -1
- package/lib/esm/contract/models/OtherAudit.js.map +1 -0
- package/lib/esm/contract/models/OtherBatchShared.js +1 -1
- package/lib/esm/contract/models/OtherBatchShared.js.map +1 -0
- package/lib/esm/contract/models/OtherLeaflet.js +1 -1
- package/lib/esm/contract/models/OtherLeaflet.js.map +1 -0
- package/lib/esm/contract/models/OtherLeafletFile.js +1 -1
- package/lib/esm/contract/models/OtherLeafletFile.js.map +1 -0
- package/lib/esm/contract/models/OtherMarket.js +1 -1
- package/lib/esm/contract/models/OtherMarket.js.map +1 -0
- package/lib/esm/contract/models/OtherProduct.js +1 -1
- package/lib/esm/contract/models/OtherProduct.js.map +1 -0
- package/lib/esm/contract/models/OtherProductImage.js +1 -1
- package/lib/esm/contract/models/OtherProductImage.js.map +1 -0
- package/lib/esm/contract/models/OtherProductShared.js +1 -1
- package/lib/esm/contract/models/OtherProductShared.js.map +1 -0
- package/lib/esm/contract/models/OtherProductStrength.js +1 -1
- package/lib/esm/contract/models/OtherProductStrength.js.map +1 -0
- package/lib/esm/contract/models/Product.js +1 -1
- package/lib/esm/contract/models/Product.js.map +1 -0
- package/lib/esm/contract/models/ProductStrength.js +1 -1
- package/lib/esm/contract/models/ProductStrength.js.map +1 -0
- package/lib/esm/contract/models/SegregatedDocument.js +1 -1
- package/lib/esm/contract/models/SegregatedDocument.js.map +1 -0
- package/lib/esm/contract/models/constants.js +1 -1
- package/lib/esm/contract/models/constants.js.map +1 -0
- package/lib/esm/contract/models/decorators-private.js +1 -1
- package/lib/esm/contract/models/decorators-private.js.map +1 -0
- package/lib/esm/contract/models/decorators.js +1 -1
- package/lib/esm/contract/models/decorators.js.map +1 -0
- package/lib/esm/contract/models/gtin.js +1 -1
- package/lib/esm/contract/models/gtin.js.map +1 -0
- package/lib/esm/contract/models/history-dec.js +1 -1
- package/lib/esm/contract/models/history-dec.js.map +1 -0
- package/lib/esm/contracts/ContractAdapter.js +1 -1
- package/lib/esm/contracts/ContractAdapter.js.map +1 -0
- package/lib/esm/contracts/ContractContext.js +1 -1
- package/lib/esm/contracts/ContractContext.js.map +1 -0
- package/lib/esm/contracts/FabricContractDispatch.js +1 -1
- package/lib/esm/contracts/FabricContractDispatch.js.map +1 -0
- package/lib/esm/contracts/FabricContractPaginator.js +1 -1
- package/lib/esm/contracts/FabricContractPaginator.js.map +1 -0
- package/lib/esm/contracts/FabricContractRepository.js +1 -1
- package/lib/esm/contracts/FabricContractRepository.js.map +1 -0
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
- package/lib/esm/contracts/FabricContractSequence.js +1 -1
- package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
- package/lib/esm/contracts/FabricContractStatement.js +1 -1
- package/lib/esm/contracts/FabricContractStatement.js.map +1 -0
- package/lib/esm/contracts/MigrationContract.js +1 -1
- package/lib/esm/contracts/MigrationContract.js.map +1 -0
- package/lib/esm/contracts/PrivateSequence.js +1 -1
- package/lib/esm/contracts/PrivateSequence.js.map +1 -0
- package/lib/esm/contracts/auth/decorators.js +1 -1
- package/lib/esm/contracts/auth/decorators.js.map +1 -0
- package/lib/esm/contracts/auth/index.js +1 -1
- package/lib/esm/contracts/auth/index.js.map +1 -0
- package/lib/esm/contracts/bootstrap.js +11 -0
- package/lib/esm/contracts/bootstrap.js.map +1 -0
- package/lib/esm/contracts/crud/crud-contract.js +2 -1
- package/lib/esm/contracts/crud/crud-contract.js.map +1 -0
- package/lib/esm/contracts/crud/index.js +1 -1
- package/lib/esm/contracts/crud/index.js.map +1 -0
- package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -0
- package/lib/esm/contracts/erc20/erc20contract.js +1 -1
- package/lib/esm/contracts/erc20/erc20contract.js.map +1 -0
- package/lib/esm/contracts/erc20/index.js +1 -1
- package/lib/esm/contracts/erc20/index.js.map +1 -0
- package/lib/esm/contracts/erc20/models.js +1 -1
- package/lib/esm/contracts/erc20/models.js.map +1 -0
- package/lib/esm/contracts/fabric-overrides.js +61 -0
- package/lib/esm/contracts/fabric-overrides.js.map +1 -0
- package/lib/esm/contracts/index.js +2 -1
- package/lib/esm/contracts/index.js.map +1 -0
- package/lib/esm/contracts/logging.js +1 -1
- package/lib/esm/contracts/logging.js.map +1 -0
- package/lib/esm/contracts/overrides.js +1 -1
- package/lib/esm/contracts/overrides.js.map +1 -0
- package/lib/esm/contracts/types.js +1 -1
- package/lib/esm/contracts/types.js.map +1 -0
- package/lib/esm/contracts/uuid.js +1 -1
- package/lib/esm/contracts/uuid.js.map +1 -0
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/shared/ClientSerializer.js +1 -1
- package/lib/esm/shared/ClientSerializer.js.map +1 -0
- package/lib/esm/shared/DeterministicSerializer.js +1 -1
- package/lib/esm/shared/DeterministicSerializer.js.map +1 -0
- package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
- package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -0
- package/lib/esm/shared/constants.js +1 -1
- package/lib/esm/shared/constants.js.map +1 -0
- package/lib/esm/shared/decorators.js +1 -1
- package/lib/esm/shared/decorators.js.map +1 -0
- package/lib/esm/shared/erc20/erc20-constants.js +1 -1
- package/lib/esm/shared/erc20/erc20-constants.js.map +1 -0
- package/lib/esm/shared/erc20/index.js +1 -1
- package/lib/esm/shared/erc20/index.js.map +1 -0
- package/lib/esm/shared/errors.js +1 -1
- package/lib/esm/shared/errors.js.map +1 -0
- package/lib/esm/shared/events.js +1 -1
- package/lib/esm/shared/events.js.map +1 -0
- package/lib/esm/shared/fabric-types.js +1 -1
- package/lib/esm/shared/fabric-types.js.map +1 -0
- package/lib/esm/shared/index.js +1 -1
- package/lib/esm/shared/index.js.map +1 -0
- package/lib/esm/shared/interfaces/Checkable.js +1 -1
- package/lib/esm/shared/interfaces/Checkable.js.map +1 -0
- package/lib/esm/shared/interfaces/index.js +1 -1
- package/lib/esm/shared/interfaces/index.js.map +1 -0
- package/lib/esm/shared/math.js +1 -1
- package/lib/esm/shared/math.js.map +1 -0
- package/lib/esm/shared/model/FabricBaseModel.js +1 -1
- package/lib/esm/shared/model/FabricBaseModel.js.map +1 -0
- package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
- package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +1 -0
- package/lib/esm/shared/model/Identity.js +1 -1
- package/lib/esm/shared/model/Identity.js.map +1 -0
- package/lib/esm/shared/model/IdentityCredentials.js +1 -1
- package/lib/esm/shared/model/IdentityCredentials.js.map +1 -0
- package/lib/esm/shared/model/index.js +1 -1
- package/lib/esm/shared/model/index.js.map +1 -0
- package/lib/esm/shared/overrides/Model.js +1 -1
- package/lib/esm/shared/overrides/Model.js.map +1 -0
- package/lib/esm/shared/overrides/index.js +1 -1
- package/lib/esm/shared/overrides/index.js.map +1 -0
- package/lib/esm/shared/overrides/overrides.js +1 -1
- package/lib/esm/shared/overrides/overrides.js.map +1 -0
- package/lib/esm/shared/types.js +1 -1
- package/lib/esm/shared/types.js.map +1 -0
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -0
- package/lib/types/contract/index.d.cts +1 -0
- package/lib/types/contract/index.d.mts +1 -0
- package/lib/types/contracts/bootstrap.d.cts +10 -0
- package/lib/types/contracts/bootstrap.d.mts +10 -0
- package/lib/types/contracts/crud/crud-contract.d.cts +1 -0
- package/lib/types/contracts/crud/crud-contract.d.mts +1 -0
- package/lib/types/contracts/fabric-overrides.d.cts +1 -0
- package/lib/types/contracts/fabric-overrides.d.mts +1 -0
- package/lib/types/contracts/index.d.cts +1 -0
- package/lib/types/contracts/index.d.mts +1 -0
- package/package.json +16 -1
|
@@ -360,5 +360,5 @@ class FabricERC20ClientRepository extends FabricClientRepository_js_1.FabricClie
|
|
|
360
360
|
}
|
|
361
361
|
}
|
|
362
362
|
exports.FabricERC20ClientRepository = FabricERC20ClientRepository;
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9lcmMyMC9GYWJyaWNFUkMyMENsaWVudFJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVDQUFrQztBQUNuRSxPQUFPLEVBQWMsV0FBVyxFQUFFLDBDQUFxQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFjLE1BQU0sZ0NBQWdDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDJDQUFzQztBQUNqRSxPQUFPLEVBQ0wsT0FBTyxFQUtQLFFBQVEsR0FDVCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFTCxhQUFhLEdBRWQsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMkJBRVgsU0FBUSxzQkFBc0M7YUFDL0IsZUFBVSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQUFBekIsQ0FBMEI7YUFLcEMsWUFBTyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxBQUExQixDQUEyQjtJQUVqRDs7Ozs7Ozs7O09BU0c7SUFDTSxLQUFLLENBQUMsZUFBZSxDQUM1QixLQUE4QixFQUM5QixLQUFxRCxFQUNyRCxFQUFZLEVBQ1osR0FBRyxJQUFrQztRQUVyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFDdkIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsb0VBQW9FLENBQ3JFLENBQUM7UUFDSixNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxHQUFHLENBQUMsT0FBTyxDQUNULFlBQVksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUNqRSxDQUFDO1FBRUYsS0FBSyxHQUFHLENBQ04sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQ25DLENBQUM7UUFDcEIsSUFBSSxRQUF1QyxDQUFDO1FBRTVDLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDdkIsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzdCLFFBQVEsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUNmLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBVyxDQUN2RSxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FDNUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQzdCLEVBQUUsQ0FDTyxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQ3hDLEtBQUssRUFDTCxLQUFLLEVBQ0wsUUFBUyxFQUNULEdBQUcsT0FBTyxDQUNYLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsSUFBZ0I7UUFDckIsT0FBTywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxZQUFZLE9BQVc7UUFDckIsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQWxFWCxlQUFVLEdBQzNCLDJCQUEyQixDQUFDLFVBQVUsQ0FBQztJQWtFekMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBc0M7UUFDdkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQzlELElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBc0M7UUFDcEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBc0M7UUFDdEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQzdELElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekUsT0FBTyxNQUFNLENB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Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsZUFBZTtRQUNuQixNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQ3BDLFdBQVcsRUFDWCxJQUFJLENBQUMsS0FBSyxFQUNWLEVBQUUsRUFDRixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUN0QixDQUFDO1FBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEUsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUM1RCxHQUFHLEVBQ0gsaUJBQWlCLENBQ2xCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhYnJpY0NsaWVudFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vRmFicmljQ2xpZW50UmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgRVJDMjBUb2tlbiwgRVJDMjBXYWxsZXQgfSBmcm9tIFwiLi4vLi4vY29udHJhY3RzL2VyYzIwL21vZGVsc1wiO1xuaW1wb3J0IHsgTW9kZWwsIFNlcmlhbGl6ZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBGYWJyaWNDbGllbnRBZGFwdGVyIH0gZnJvbSBcIi4uL0ZhYnJpY0NsaWVudEFkYXB0ZXJcIjtcbmltcG9ydCB7IENsaWVudFNlcmlhbGl6ZXIgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL0NsaWVudFNlcmlhbGl6ZXJcIjtcbmltcG9ydCB7XG4gIENvbnRleHQsXG4gIENvbnRleHRPZixcbiAgQ29udGV4dHVhbEFyZ3MsXG4gIEV2ZW50SWRzLFxuICBNYXliZUNvbnRleHR1YWxBcmcsXG4gIFNlcXVlbmNlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7XG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgSW50ZXJuYWxFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuLyoqXG4gKiBSZXBvc2l0b3J5IGZvciBpbnRlcmFjdGluZyB3aXRoIEVSQzIwIGNvbnRyYWN0cyBvbiBhIEh5cGVybGVkZ2VyIEZhYnJpYyBuZXR3b3JrLlxuICogRXh0ZW5kcyB0aGUgYmFzZSBGYWJyaWNDbGllbnRSZXBvc2l0b3J5IGNsYXNzIGFuZCB1dGlsaXplcyB0aGUgQ2xpZW50U2VyaWFsaXplciBmb3IgZGF0YSBzZXJpYWxpemF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5PFxuICBBIGV4dGVuZHMgRmFicmljQ2xpZW50QWRhcHRlcixcbj4gZXh0ZW5kcyBGYWJyaWNDbGllbnRSZXBvc2l0b3J5PEVSQzIwV2FsbGV0LCBBPiB7XG4gIHByaXZhdGUgc3RhdGljIHNlcmlhbGl6ZXIgPSBuZXcgQ2xpZW50U2VyaWFsaXplcigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZXJpYWxpemVyOiBTZXJpYWxpemVyPGFueT4gPVxuICAgIEZhYnJpY0VSQzIwQ2xpZW50UmVwb3NpdG9yeS5zZXJpYWxpemVyO1xuXG4gIHByaXZhdGUgc3RhdGljIGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGY4XCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTm90aWZpZXMgYWxsIG9ic2VydmVycyBvZiBhbiBldmVudC5cbiAgICogQHN1bW1hcnkgVXBkYXRlcyBhbGwgcmVnaXN0ZXJlZCBvYnNlcnZlcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBhIGRhdGFiYXNlIGV2ZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGUgLSBUaGUgdGFibGUgbmFtZSB3aGVyZSB0aGUgZXZlbnQgb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c3xCdWxrQ3J1ZE9wZXJhdGlvbktleXN8c3RyaW5nfSBldmVudCAtIFRoZSB0eXBlIG9mIGV2ZW50IHRoYXQgb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7RXZlbnRJZHN9IGlkIC0gVGhlIElEIG9yIElEcyBvZiB0aGUgYWZmZWN0ZWQgcmVjb3Jkcy5cbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGFsbCBvYnNlcnZlcnMgaGF2ZSBiZWVuIG5vdGlmaWVkLlxuICAgKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBJZiB0aGUgb2JzZXJ2ZXIgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyB1cGRhdGVPYnNlcnZlcnM8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YWJsZTogQ29uc3RydWN0b3I8TT4gfCBzdHJpbmcsXG4gICAgZXZlbnQ6IE9wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmcsXG4gICAgaWQ6IEV2ZW50SWRzLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm9ic2VydmVySGFuZGxlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIk9ic2VydmVySGFuZGxlciBub3QgaW5pdGlhbGl6ZWQuIERpZCB5b3UgcmVnaXN0ZXIgYW55IG9ic2VydmFibGVzP1wiXG4gICAgICApO1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnVwZGF0ZU9ic2VydmVycyk7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgVXBkYXRpbmcgJHt0aGlzLm9ic2VydmVySGFuZGxlci5jb3VudCgpfSBvYnNlcnZlcnMgZm9yICR7dGhpc31gXG4gICAgKTtcblxuICAgIHRhYmxlID0gKFxuICAgICAgdHlwZW9mIHRhYmxlID09PSBcInN0cmluZ1wiID8gTW9kZWwuZ2V0KHRhYmxlKSA6IHRhYmxlXG4gICAgKSBhcyBDb25zdHJ1Y3RvcjxNPjtcbiAgICBsZXQgcGFyc2VkSWQ6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnNlZElkID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICAgIHBhcnNlZElkID0gaWQubWFwKFxuICAgICAgICAoaSkgPT4gU2VxdWVuY2UucGFyc2VWYWx1ZShNb2RlbC5zZXF1ZW5jZUZvcih0YWJsZSkudHlwZSwgaSkgYXMgc3RyaW5nXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWRJZCA9IFNlcXVlbmNlLnBhcnNlVmFsdWUoXG4gICAgICAgIE1vZGVsLnNlcXVlbmNlRm9yKHRhYmxlKS50eXBlLFxuICAgICAgICBpZFxuICAgICAgKSBhcyBzdHJpbmc7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMub2JzZXJ2ZXJIYW5kbGVyLnVwZGF0ZU9ic2VydmVycyhcbiAgICAgIHRhYmxlLFxuICAgICAgZXZlbnQsXG4gICAgICBwYXJzZWRJZCEsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgVWludDhBcnJheSBpbnRvIGEgc3RyaW5nIHVzaW5nIHRoZSBUZXh0RGVjb2Rlci5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgVWludDhBcnJheSB0byBkZWNvZGUuXG4gICAqIEByZXR1cm5zIFRoZSBkZWNvZGVkIHN0cmluZy5cbiAgICovXG4gIGRlY29kZShkYXRhOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5LmRlY29kZXIuZGVjb2RlKGRhdGEpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoYWRhcHRlcj86IEEpIHtcbiAgICBzdXBlcihhZGFwdGVyLCBFUkMyMFdhbGxldCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgbmFtZSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqIEl0IGNhbGxzIHRoZSBcIlRva2VuTmFtZVwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCBhbmQgZGVjb2RlcyB0aGUgcmV0dXJuZWQgZGF0YS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmFtZSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyB0b2tlbk5hbWUoLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJ0b2tlbk5hbWVcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMudG9rZW5OYW1lXG4gICAgKTtcbiAgICBjb25zdCBuYW1lID0gYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oY3R4LCBcIlRva2VuTmFtZVwiKTtcbiAgICByZXR1cm4gdGhpcy5kZWNvZGUobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBzeW1ib2wgb2YgdGhlIEVSQzIwIHRva2VuLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gZmV0Y2ggdGhlIHN5bWJvbCBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqIEl0IGNhbGxzIHRoZSBcIlN5bWJvbFwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCBhbmQgZGVjb2RlcyB0aGUgcmV0dXJuZWQgZGF0YS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc3ltYm9sIG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscyBvciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBmYWlscy5cbiAgICovXG4gIGFzeW5jIHN5bWJvbCguLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+Pik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcInN5bWJvbFwiLCB0cnVlKSkuZm9yKHRoaXMuc3ltYm9sKTtcbiAgICBjb25zdCBzeW1ib2wgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihjdHgsIFwiU3ltYm9sXCIpO1xuICAgIHJldHVybiB0aGlzLmRlY29kZShzeW1ib2wpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGZvciB0aGUgRVJDMjAgdG9rZW4uXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGZvciB0aGUgRVJDMjAgdG9rZW4uXG4gICAqIEl0IGNhbGxzIHRoZSBcIkRlY2ltYWxzXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IGFuZCBkZWNvZGVzIHRoZSByZXR1cm5lZCBkYXRhLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZm9yIHRoZSBFUkMyMCB0b2tlbi5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscyBvciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBmYWlscy5cbiAgICovXG4gIGFzeW5jIGRlY2ltYWxzKC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB7IGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwiZGVjaW1hbHNcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMuZGVjaW1hbHNcbiAgICApO1xuICAgIGNvbnN0IGRlY2ltYWxzID0gYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oY3R4LCBcIkRlY2ltYWxzXCIpO1xuICAgIHJldHVybiBOdW1iZXIodGhpcy5kZWNvZGUoZGVjaW1hbHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHRvdGFsIHN1cHBseSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgdG90YWwgc3VwcGx5IG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICogSXQgY2FsbHMgdGhlIFwiVG90YWxTdXBwbHlcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3QgYW5kIGRlY29kZXMgdGhlIHJldHVybmVkIGRhdGEuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRvdGFsIHN1cHBseSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyB0b3RhbFN1cHBseShcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJ0b3RhbFN1cHBseVwiLCB0cnVlKSkuZm9yKFxuICAgICAgdGhpcy50b3RhbFN1cHBseVxuICAgICk7XG4gICAgY29uc3QgdG90YWwgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihjdHgsIFwiVG90YWxTdXBwbHlcIik7XG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmRlY29kZSh0b3RhbCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgYmFsYW5jZSBvZiB0aGUgRVJDMjAgdG9rZW4gZm9yIGEgc3BlY2lmaWVkIG93bmVyLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBiYWxhbmNlIG9mIHRoZSBFUkMyMCB0b2tlbiBmb3IgYSBnaXZlbiBvd25lci5cbiAgICogSXQgY2FsbHMgdGhlIFwiQmFsYW5jZU9mXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHByb3ZpZGVkIG93bmVyJ3MgYWRkcmVzcyBhcyBhIHBhcmFtZXRlci5cbiAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjb252ZXJ0ZWQgdG8gYSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBvd25lciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBFUkMyMCB0b2tlbiBvd25lci5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYmFsYW5jZSBvZiB0aGUgRVJDMjAgdG9rZW4gZm9yIHRoZSBzcGVjaWZpZWQgb3duZXIuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyBiYWxhbmNlT2YoXG4gICAgb3duZXI6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJiYWxhbmNlXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLmJhbGFuY2VPZlxuICAgICk7XG4gICAgY29uc3QgYmFsYW5jZSA9IGF3YWl0IHRoaXMuYWRhcHRlci5ldmFsdWF0ZVRyYW5zYWN0aW9uKGN0eCwgXCJCYWxhbmNlT2ZcIiwgW1xuICAgICAgb3duZXIsXG4gICAgXSk7XG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmRlY29kZShiYWxhbmNlKSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmZXJzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gYSByZWNpcGllbnQuXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gdHJhbnNmZXIgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBhIHJlY2lwaWVudC5cbiAgICogSXQgY2FsbHMgdGhlIFwiVHJhbnNmZXJcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3Qgd2l0aCB0aGUgcmVjaXBpZW50J3MgYWRkcmVzcyBhbmQgdGhlIHRyYW5zZmVyIGFtb3VudCBhcyBwYXJhbWV0ZXJzLlxuICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIGNoZWNrZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSB0cmFuc2ZlciB3YXMgc3VjY2Vzc2Z1bC5cbiAgICpcbiAgICogQHBhcmFtIHRvIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHJlY2lwaWVudC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gdHJhbnNmZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGB0cnVlYCBpZiB0aGUgdHJhbnNmZXIgd2FzIHN1Y2Nlc3NmdWwsIGFuZCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscyBvciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBmYWlscy5cbiAgICovXG4gIGFzeW5jIHRyYW5zZmVyKFxuICAgIHRvOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwidHJhbnNmZXJcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMudHJhbnNmZXJcbiAgICApO1xuICAgIGNvbnN0IHRyYW5zZmVycmVkID0gYXdhaXQgdGhpcy5hZGFwdGVyLnN1Ym1pdFRyYW5zYWN0aW9uKGN0eCwgXCJUcmFuc2ZlclwiLCBbXG4gICAgICB0byxcbiAgICAgIHZhbHVlLnRvU3RyaW5nKCksXG4gICAgXSk7XG4gICAgcmV0dXJuIHRoaXMuZGVjb2RlKHRyYW5zZmVycmVkKSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmZXJzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIHRyYW5zZmVyIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLlxuICAgKiBGb3IgdGhpcyB0cmFuc2ZlciB0byB3b3JrIHRoZSBzcGVuZGVyICggYWNjb3VudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGlzIGZ1bmN0aW9uICkgbmVlZCB0byBoYXZlIHRoZSB2YWx1ZSBhcHByb3ZlZCBhcyBhbiBhbGxvd2FuY2UgYnkgdGhlIHNlbmRlci5cbiAgICogSXQgY2FsbHMgdGhlIFwiVHJhbnNmZXJGcm9tXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHNlbmRlcidzIGFkZHJlc3MsIHJlY2lwaWVudCdzIGFkZHJlc3MsIGFuZCB0aGUgdHJhbnNmZXIgYW1vdW50IGFzIHBhcmFtZXRlcnMuXG4gICAqIFRoZSByZXR1cm5lZCBkYXRhIGlzIHRoZW4gZGVjb2RlZCBhbmQgY2hlY2tlZCB0byBkZXRlcm1pbmUgaWYgdGhlIHRyYW5zZmVyIHdhcyBzdWNjZXNzZnVsLlxuICAgKlxuICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kZXIuXG4gICAqIEBwYXJhbSB0byAtIFRoZSBhZGRyZXNzIG9mIHRoZSByZWNpcGllbnQuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIHRyYW5zZmVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIHRyYW5zZmVyIHdhcyBzdWNjZXNzZnVsLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyB0cmFuc2ZlckZyb20oXG4gICAgZnJvbTogc3RyaW5nLFxuICAgIHRvOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlclxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcbiAgICAgIFwidHJhbnNmZXJGcm9tXCIsXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgW10sXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLnRyYW5zZmVyRnJvbSk7XG4gICAgY29uc3QgdHJhbnNmZXJyZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oXG4gICAgICBjdHgsXG4gICAgICBcIlRyYW5zZmVyRnJvbVwiLFxuICAgICAgW2Zyb20sIHRvLCB2YWx1ZS50b1N0cmluZygpXVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWNvZGUodHJhbnNmZXJyZWQpID09PSBcInRydWVcIiA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHByb3ZlcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIGJlIHNwZW50IGJ5IGEgc3BlY2lmaWVkIHNwZW5kZXIuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBhcHByb3ZlIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gYmUgc3BlbnQgYnkgYSBzcGVjaWZpZWQgc3BlbmRlci5cbiAgICogSXQgY2FsbHMgdGhlIFwiQXBwcm92ZVwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCB3aXRoIHRoZSBzcGVuZGVyJ3MgYWRkcmVzcyBhbmQgdGhlIGFwcHJvdmFsIGFtb3VudCBhcyBwYXJhbWV0ZXJzLlxuICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIGNoZWNrZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBhcHByb3ZhbCB3YXMgc3VjY2Vzc2Z1bC5cbiAgICpcbiAgICogQHBhcmFtIHNwZW5kZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgc3BlbmRlci5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gYXBwcm92ZSBmb3IgdGhlIHNwZW5kZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGB0cnVlYCBpZiB0aGUgYXBwcm92YWwgd2FzIHN1Y2Nlc3NmdWwsIGFuZCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscyBvciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBmYWlscy5cbiAgICovXG4gIGFzeW5jIGFwcHJvdmUoc3BlbmRlcjogc3RyaW5nLCB2YWx1ZTogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29udGV4dEFyZ3MgPSBhd2FpdCBDb250ZXh0LmFyZ3MoXG4gICAgICBcImFwcHJvdmVcIixcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICBbXSxcbiAgICAgIHRoaXMuYWRhcHRlcixcbiAgICAgIHRoaXMuX292ZXJyaWRlcyB8fCB7fVxuICAgICk7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMubG9nQ3R4KGNvbnRleHRBcmdzLmFyZ3MsIHRoaXMuYXBwcm92ZSk7XG4gICAgY29uc3QgYXBwcm92ZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oY3R4LCBcIkFwcHJvdmVcIiwgW1xuICAgICAgc3BlbmRlcixcbiAgICAgIHZhbHVlLnRvU3RyaW5nKCksXG4gICAgXSk7XG4gICAgcmV0dXJuIHRoaXMuZGVjb2RlKGFwcHJvdmVkKSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBhbGxvd2FuY2Ugb2YgRVJDMjAgdG9rZW5zIHRoYXQgdGhlIHNwZWNpZmllZCBvd25lciBoYXMgYXBwcm92ZWQgZm9yIGEgc3BlbmRlci5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgYWxsb3dhbmNlIG9mIEVSQzIwIHRva2VucyB0aGF0IHRoZSBzcGVjaWZpZWQgb3duZXIgaGFzIGFwcHJvdmVkIGZvciBhIHNwZW5kZXIuXG4gICAqIEl0IGNhbGxzIHRoZSBcIkFsbG93YW5jZVwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCB3aXRoIHRoZSBvd25lcidzIGFkZHJlc3MgYW5kIHRoZSBzcGVuZGVyJ3MgYWRkcmVzcyBhcyBwYXJhbWV0ZXJzLlxuICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIGNvbnZlcnRlZCB0byBhIG51bWJlci5cbiAgICpcbiAgICogQHBhcmFtIG93bmVyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIEVSQzIwIHRva2VuIG93bmVyLlxuICAgKiBAcGFyYW0gc3BlbmRlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzcGVuZGVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhbGxvd2FuY2Ugb2YgRVJDMjAgdG9rZW5zIHRoYXQgdGhlIHNwZWNpZmllZCBvd25lciBoYXMgYXBwcm92ZWQgZm9yIHRoZSBzcGVuZGVyLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzIG9yIHRoZSBkZWNvZGluZyBwcm9jZXNzIGZhaWxzLlxuICAgKi9cbiAgYXN5bmMgYWxsb3dhbmNlKG93bmVyOiBzdHJpbmcsIHNwZW5kZXI6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgY29udGV4dEFyZ3MgPSBhd2FpdCBDb250ZXh0LmFyZ3MoXG4gICAgICBcImFsbG93YW5jZVwiLFxuICAgICAgdGhpcy5jbGFzcyxcbiAgICAgIFtdLFxuICAgICAgdGhpcy5hZGFwdGVyLFxuICAgICAgdGhpcy5fb3ZlcnJpZGVzIHx8IHt9XG4gICAgKTtcbiAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5sb2dDdHgoY29udGV4dEFyZ3MuYXJncywgdGhpcy5hbGxvd2FuY2UpO1xuICAgIGNvbnN0IGFsbG93YW5jZSA9IGF3YWl0IHRoaXMuYWRhcHRlci5zdWJtaXRUcmFuc2FjdGlvbihjdHgsIFwiQWxsb3dhbmNlXCIsIFtcbiAgICAgIG93bmVyLFxuICAgICAgc3BlbmRlcixcbiAgICBdKTtcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGVjb2RlKGFsbG93YW5jZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBFUkMyMCBjb250cmFjdCB3aXRoIHRoZSBwcm92aWRlZCB0b2tlbiBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBpbml0aWFsaXplIHRoZSBFUkMyMCBjb250cmFjdCB3aXRoIHRoZSBnaXZlbiB0b2tlbiBpbmZvcm1hdGlvbi5cbiAgICogSXQgY2FsbHMgdGhlIFwiSW5pdGlhbGl6ZVwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCB3aXRoIHRoZSBzZXJpYWxpemVkIHRva2VuIGRhdGEgYXMgYSBwYXJhbWV0ZXIuXG4gICAqIFRoZSByZXR1cm5lZCBkYXRhIGlzIHRoZW4gZGVjb2RlZCBhbmQgY2hlY2tlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLlxuICAgKlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgRVJDMjAgdG9rZW4gaW5mb3JtYXRpb24gdG8gaW5pdGlhbGl6ZSB0aGUgY29udHJhY3Qgd2l0aC5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYHRydWVgIGlmIHRoZSBpbml0aWFsaXphdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzIG9yIHRoZSBkZWNvZGluZyBwcm9jZXNzIGZhaWxzLlxuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZSh0b2tlbjogRVJDMjBUb2tlbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNvbnRleHRBcmdzID0gYXdhaXQgQ29udGV4dC5hcmdzKFxuICAgICAgXCJpbml0aWFsaXplXCIsXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgW10sXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmluaXRpYWxpemUpO1xuICAgIGNvbnN0IGluaXRpbGlhemVkID0gYXdhaXQgdGhpcy5hZGFwdGVyLnN1Ym1pdFRyYW5zYWN0aW9uKFxuICAgICAgY3R4LFxuICAgICAgXCJJbml0aWFsaXplXCIsXG4gICAgICBbRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5LnNlcmlhbGl6ZXIuc2VyaWFsaXplKHRva2VuKV1cbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVjb2RlKGluaXRpbGlhemVkKSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBFUkMyMCBjb250cmFjdCBoYXMgYmVlbiBpbml0aWFsaXplZC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIHZlcmlmeSBpZiB0aGUgRVJDMjAgY29udHJhY3QgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXG4gICAqIEl0IGNhbGxzIHRoZSBcIkNoZWNrSW5pdGlhbGl6ZWRcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3QsIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgYW55IHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBpbml0aWFsaXphdGlvbiBjaGVjayBpcyBjb21wbGV0ZWQuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuXG4gICAqL1xuICBhc3luYyBjaGVja0luaXRpYWxpemVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRleHRBcmdzID0gYXdhaXQgQ29udGV4dC5hcmdzKFxuICAgICAgXCJjaGVja0luaXRpYWxpemVkXCIsXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgW10sXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmNoZWNrSW5pdGlhbGl6ZWQpO1xuICAgIGF3YWl0IHRoaXMuYWRhcHRlci5ldmFsdWF0ZVRyYW5zYWN0aW9uKGN0eCwgXCJDaGVja0luaXRpYWxpemVkXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pbnRzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMuXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gbWludCBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zLlxuICAgKiBJdCBjYWxscyB0aGUgXCJNaW50XCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIG1pbnRpbmcgYW1vdW50IGFzIGEgcGFyYW1ldGVyLlxuICAgKiBUaGUgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGFueSB2YWx1ZSwgYnV0IGl0IHVwZGF0ZXMgdGhlIG1pbnRlcidzIG51bWJlciBvZiB0b2tlbnMuXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBtaW50LlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWludGluZyBwcm9jZXNzIGlzIGNvbXBsZXRlZC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscy5cbiAgICovXG4gIGFzeW5jIG1pbnQoYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcbiAgICAgIFwibWludFwiLFxuICAgICAgdGhpcy5jbGFzcyxcbiAgICAgIFtdLFxuICAgICAgdGhpcy5hZGFwdGVyLFxuICAgICAgdGhpcy5fb3ZlcnJpZGVzIHx8IHt9XG4gICAgKTtcbiAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5sb2dDdHgoY29udGV4dEFyZ3MuYXJncywgdGhpcy5taW50KTtcbiAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oY3R4LCBcIk1pbnRcIiwgW2Ftb3VudC50b1N0cmluZygpXSk7XG4gIH1cblxuICAvKipcbiAgICogQnVybnMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyBmcm9tIHRoZSBtaW50ZXIncyBhY2NvdW50LlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gYnVybiBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zLlxuICAgKiBJdCBjYWxscyB0aGUgXCJCdXJuXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIGJ1cm5pbmcgYW1vdW50IGFzIGEgcGFyYW1ldGVyLlxuICAgKiBUaGUgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGFueSB2YWx1ZSwgYnV0IGl0IGRlY3JlYXNlcyB0aGUgbWludGVyJ3MgbnVtYmVyIG9mIHRva2Vucy5cbiAgICpcbiAgICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIGJ1cm4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBidXJuaW5nIHByb2Nlc3MgaXMgY29tcGxldGVkLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzLlxuICAgKi9cbiAgYXN5bmMgYnVybihhbW91bnQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRleHRBcmdzID0gYXdhaXQgQ29udGV4dC5hcmdzKFxuICAgICAgXCJidXJuXCIsXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgW10sXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmJ1cm4pO1xuICAgIGF3YWl0IHRoaXMuYWRhcHRlci5zdWJtaXRUcmFuc2FjdGlvbihjdHgsIFwiQnVyblwiLCBbYW1vdW50LnRvU3RyaW5nKCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdXJucyBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIGZyb20gYSBzcGVjaWZpZWQgYWNjb3VudC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGJ1cm4gYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyBmcm9tIGEgZ2l2ZW4gYWNjb3VudC5cbiAgICogSXQgY2FsbHMgdGhlIFwiQnVybkZyb21cIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3Qgd2l0aCB0aGUgYWNjb3VudCdzIGFkZHJlc3MgYW5kIHRoZSBidXJuaW5nIGFtb3VudCBhcyBwYXJhbWV0ZXJzLlxuICAgKiBUaGUgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGFueSB2YWx1ZSwgYnV0IGl0IGRlY3JlYXNlcyB0aGUgc3BlY2lmaWVkIGFjY291bnQncyBudW1iZXIgb2YgdG9rZW5zLlxuICAgKlxuICAgKiBAcGFyYW0gYWNjb3VudCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IGZyb20gd2hpY2ggdG8gYnVybiB0aGUgRVJDMjAgdG9rZW5zLlxuICAgKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gYnVybi5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGJ1cm5pbmcgcHJvY2VzcyBpcyBjb21wbGV0ZWQuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuXG4gICAqL1xuICBhc3luYyBidXJuRnJvbShhY2NvdW50OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29udGV4dEFyZ3MgPSBhd2FpdCBDb250ZXh0LmFyZ3MoXG4gICAgICBcImJ1cm5Gcm9tXCIsXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgW10sXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmJ1cm5Gcm9tKTtcbiAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oY3R4LCBcIkJ1cm5Gcm9tXCIsIFtcbiAgICAgIGFjY291bnQsXG4gICAgICBhbW91bnQudG9TdHJpbmcoKSxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGJhbGFuY2Ugb2YgRVJDMjAgdG9rZW5zIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2xpZW50J3MgYWNjb3VudC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBiYWxhbmNlIG9mIEVSQzIwIHRva2VucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNsaWVudCdzIGFjY291bnQuXG4gICAqIEl0IGNhbGxzIHRoZSBcIkNsaWVudEFjY291bnRCYWxhbmNlXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0LCB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGFueSBwYXJhbWV0ZXJzLlxuICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIGNvbnZlcnRlZCB0byBhIG51bWJlci5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYmFsYW5jZSBvZiBFUkMyMCB0b2tlbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjbGllbnQncyBhY2NvdW50LlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzIG9yIHRoZSBkZWNvZGluZyBwcm9jZXNzIGZhaWxzLlxuICAgKi9cbiAgYXN5bmMgY2xpZW50QWNjb3VudEJhbGFuY2UoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcbiAgICAgIFwiYWNjb3VudEJhbGFuY2VcIixcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICBbXSxcbiAgICAgIHRoaXMuYWRhcHRlcixcbiAgICAgIHRoaXMuX292ZXJyaWRlcyB8fCB7fVxuICAgICk7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMubG9nQ3R4KGNvbnRleHRBcmdzLmFyZ3MsIHRoaXMuY2xpZW50QWNjb3VudEJhbGFuY2UpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRBY2NvdW50QmFsYW5jZSA9IGF3YWl0IHRoaXMuYWRhcHRlci5ldmFsdWF0ZVRyYW5zYWN0aW9uKFxuICAgICAgY3R4LFxuICAgICAgXCJDbGllbnRBY2NvdW50QmFsYW5jZVwiXG4gICAgKTtcblxuICAgIHJldHVybiBOdW1iZXIodGhpcy5kZWNvZGUoc2VyaWFsaXplZEFjY291bnRCYWxhbmNlKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjbGllbnQncyBhY2NvdW50IElEIGZyb20gdGhlIGJsb2NrY2hhaW4gbmV0d29yay5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBjbGllbnQncyBhY2NvdW50IElELlxuICAgKiBJdCBjYWxscyB0aGUgXCJDbGllbnRBY2NvdW50SURcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3QsIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgYW55IHBhcmFtZXRlcnMuXG4gICAqIFRoZSByZXR1cm5lZCBkYXRhIGlzIHRoZW4gZGVjb2RlZCBhbmQgcmV0dXJuZWQgYXMgYSBzdHJpbmcuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGNsaWVudCdzIGFjY291bnQgSUQuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyBjbGllbnRBY2NvdW50SUQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcbiAgICAgIFwiYWNjb3VudElkXCIsXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgW10sXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmNsaWVudEFjY291bnRJRCk7XG4gICAgY29uc3QgY2xpZW50QWNjb3VudElEID0gYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oXG4gICAgICBjdHgsXG4gICAgICBcIkNsaWVudEFjY291bnRJRFwiXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmRlY29kZShjbGllbnRBY2NvdW50SUQpO1xuICB9XG59XG4iXX0=
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhFQUF3RTtBQUN4RSxpRUFBZ0U7QUFDaEUseUVBQXVEO0FBQ3ZELDRFQUFzRTtBQUN0RSx5Q0FBb0Q7QUFDcEQsMkRBQXlEO0FBQ3pEOzs7R0FHRztBQUNILE1BQWEsMkJBQTRCLFNBQVEsa0RBQXNCO0lBQ25FLFNBQVMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHNDQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFNBQVMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQ7Ozs7Ozs7OztPQVNHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUk7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO1lBQ3JCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7UUFDbEcsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLEtBQUssR0FBRyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsNEJBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxFQUFFLEtBQUssU0FBUyxF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LEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRSxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQTNWRCxrRUEyVkM7QUFDRCwwOHFDQUEwOHFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFicmljQ2xpZW50UmVwb3NpdG9yeSB9IGZyb20gXCIuLy4uL0ZhYnJpY0NsaWVudFJlcG9zaXRvcnkuanNcIjtcbmltcG9ydCB7IEVSQzIwV2FsbGV0IH0gZnJvbSBcIi4vLi4vLi4vY29udHJhY3RzL2VyYzIwL21vZGVscy5qc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDbGllbnRTZXJpYWxpemVyIH0gZnJvbSBcIi4vLi4vLi4vc2hhcmVkL0NsaWVudFNlcmlhbGl6ZXIuanNcIjtcbmltcG9ydCB7IENvbnRleHQsIFNlcXVlbmNlLCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciwgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbi8qKlxuICogUmVwb3NpdG9yeSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBFUkMyMCBjb250cmFjdHMgb24gYSBIeXBlcmxlZGdlciBGYWJyaWMgbmV0d29yay5cbiAqIEV4dGVuZHMgdGhlIGJhc2UgRmFicmljQ2xpZW50UmVwb3NpdG9yeSBjbGFzcyBhbmQgdXRpbGl6ZXMgdGhlIENsaWVudFNlcmlhbGl6ZXIgZm9yIGRhdGEgc2VyaWFsaXphdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY0VSQzIwQ2xpZW50UmVwb3NpdG9yeSBleHRlbmRzIEZhYnJpY0NsaWVudFJlcG9zaXRvcnkge1xuICAgIHN0YXRpYyB7IHRoaXMuc2VyaWFsaXplciA9IG5ldyBDbGllbnRTZXJpYWxpemVyKCk7IH1cbiAgICBzdGF0aWMgeyB0aGlzLmRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGY4XCIpOyB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE5vdGlmaWVzIGFsbCBvYnNlcnZlcnMgb2YgYW4gZXZlbnQuXG4gICAgICogQHN1bW1hcnkgVXBkYXRlcyBhbGwgcmVnaXN0ZXJlZCBvYnNlcnZlcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBhIGRhdGFiYXNlIGV2ZW50LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZSAtIFRoZSB0YWJsZSBuYW1lIHdoZXJlIHRoZSBldmVudCBvY2N1cnJlZC5cbiAgICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXN8QnVsa0NydWRPcGVyYXRpb25LZXlzfHN0cmluZ30gZXZlbnQgLSBUaGUgdHlwZSBvZiBldmVudCB0aGF0IG9jY3VycmVkLlxuICAgICAqIEBwYXJhbSB7RXZlbnRJZHN9IGlkIC0gVGhlIElEIG9yIElEcyBvZiB0aGUgYWZmZWN0ZWQgcmVjb3Jkcy5cbiAgICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgb2JzZXJ2ZXJzIGhhdmUgYmVlbiBub3RpZmllZC5cbiAgICAgKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBJZiB0aGUgb2JzZXJ2ZXIgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQuXG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlT2JzZXJ2ZXJzKHRhYmxlLCBldmVudCwgaWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9ic2VydmVySGFuZGxlcilcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiT2JzZXJ2ZXJIYW5kbGVyIG5vdCBpbml0aWFsaXplZC4gRGlkIHlvdSByZWdpc3RlciBhbnkgb2JzZXJ2YWJsZXM/XCIpO1xuICAgICAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGVPYnNlcnZlcnMpO1xuICAgICAgICBsb2cudmVyYm9zZShgVXBkYXRpbmcgJHt0aGlzLm9ic2VydmVySGFuZGxlci5jb3VudCgpfSBvYnNlcnZlcnMgZm9yICR7dGhpc31gKTtcbiAgICAgICAgdGFibGUgPSAodHlwZW9mIHRhYmxlID09PSBcInN0cmluZ1wiID8gTW9kZWwuZ2V0KHRhYmxlKSA6IHRhYmxlKTtcbiAgICAgICAgbGV0IHBhcnNlZElkO1xuICAgICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGFyc2VkSWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICAgICAgICAgIHBhcnNlZElkID0gaWQubWFwKChpKSA9PiBTZXF1ZW5jZS5wYXJzZVZhbHVlKE1vZGVsLnNlcXVlbmNlRm9yKHRhYmxlKS50eXBlLCBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwYXJzZWRJZCA9IFNlcXVlbmNlLnBhcnNlVmFsdWUoTW9kZWwuc2VxdWVuY2VGb3IodGFibGUpLnR5cGUsIGlkKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLm9ic2VydmVySGFuZGxlci51cGRhdGVPYnNlcnZlcnModGFibGUsIGV2ZW50LCBwYXJzZWRJZCwgLi4uY3R4QXJncyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlY29kZXMgYSBVaW50OEFycmF5IGludG8gYSBzdHJpbmcgdXNpbmcgdGhlIFRleHREZWNvZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEgLSBUaGUgVWludDhBcnJheSB0byBkZWNvZGUuXG4gICAgICogQHJldHVybnMgVGhlIGRlY29kZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGRlY29kZShkYXRhKSB7XG4gICAgICAgIHJldHVybiBGYWJyaWNFUkMyMENsaWVudFJlcG9zaXRvcnkuZGVjb2Rlci5kZWNvZGUoZGF0YSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGFkYXB0ZXIpIHtcbiAgICAgICAgc3VwZXIoYWRhcHRlciwgRVJDMjBXYWxsZXQpO1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZXIgPSBGYWJyaWNFUkMyMENsaWVudFJlcG9zaXRvcnkuc2VyaWFsaXplcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgbmFtZSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAgICogSXQgY2FsbHMgdGhlIFwiVG9rZW5OYW1lXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IGFuZCBkZWNvZGVzIHRoZSByZXR1cm5lZCBkYXRhLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmFtZSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzIG9yIHRoZSBkZWNvZGluZyBwcm9jZXNzIGZhaWxzLlxuICAgICAqL1xuICAgIGFzeW5jIHRva2VuTmFtZSguLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJ0b2tlbk5hbWVcIiwgdHJ1ZSkpLmZvcih0aGlzLnRva2VuTmFtZSk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihjdHgsIFwiVG9rZW5OYW1lXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGUobmFtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgc3ltYm9sIG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgc3ltYm9sIG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICAgKiBJdCBjYWxscyB0aGUgXCJTeW1ib2xcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3QgYW5kIGRlY29kZXMgdGhlIHJldHVybmVkIGRhdGEuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzeW1ib2wgb2YgdGhlIEVSQzIwIHRva2VuLlxuICAgICAqXG4gICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscyBvciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBmYWlscy5cbiAgICAgKi9cbiAgICBhc3luYyBzeW1ib2woLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwic3ltYm9sXCIsIHRydWUpKS5mb3IodGhpcy5zeW1ib2wpO1xuICAgICAgICBjb25zdCBzeW1ib2wgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihjdHgsIFwiU3ltYm9sXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGUoc3ltYm9sKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZm9yIHRoZSBFUkMyMCB0b2tlbi5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGZvciB0aGUgRVJDMjAgdG9rZW4uXG4gICAgICogSXQgY2FsbHMgdGhlIFwiRGVjaW1hbHNcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3QgYW5kIGRlY29kZXMgdGhlIHJldHVybmVkIGRhdGEuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZm9yIHRoZSBFUkMyMCB0b2tlbi5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgZGVjaW1hbHMoLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwiZGVjaW1hbHNcIiwgdHJ1ZSkpLmZvcih0aGlzLmRlY2ltYWxzKTtcbiAgICAgICAgY29uc3QgZGVjaW1hbHMgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihjdHgsIFwiRGVjaW1hbHNcIik7XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5kZWNvZGUoZGVjaW1hbHMpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSB0b3RhbCBzdXBwbHkgb2YgdGhlIEVSQzIwIHRva2VuLlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSB0b3RhbCBzdXBwbHkgb2YgdGhlIEVSQzIwIHRva2VuLlxuICAgICAqIEl0IGNhbGxzIHRoZSBcIlRvdGFsU3VwcGx5XCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IGFuZCBkZWNvZGVzIHRoZSByZXR1cm5lZCBkYXRhLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG90YWwgc3VwcGx5IG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgdG90YWxTdXBwbHkoLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwidG90YWxTdXBwbHlcIiwgdHJ1ZSkpLmZvcih0aGlzLnRvdGFsU3VwcGx5KTtcbiAgICAgICAgY29uc3QgdG90YWwgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihjdHgsIFwiVG90YWxTdXBwbHlcIik7XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5kZWNvZGUodG90YWwpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBiYWxhbmNlIG9mIHRoZSBFUkMyMCB0b2tlbiBmb3IgYSBzcGVjaWZpZWQgb3duZXIuXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gZmV0Y2ggdGhlIGJhbGFuY2Ugb2YgdGhlIEVSQzIwIHRva2VuIGZvciBhIGdpdmVuIG93bmVyLlxuICAgICAqIEl0IGNhbGxzIHRoZSBcIkJhbGFuY2VPZlwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCB3aXRoIHRoZSBwcm92aWRlZCBvd25lcidzIGFkZHJlc3MgYXMgYSBwYXJhbWV0ZXIuXG4gICAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjb252ZXJ0ZWQgdG8gYSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3duZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgRVJDMjAgdG9rZW4gb3duZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBiYWxhbmNlIG9mIHRoZSBFUkMyMCB0b2tlbiBmb3IgdGhlIHNwZWNpZmllZCBvd25lci5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgYmFsYW5jZU9mKG93bmVyLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJiYWxhbmNlXCIsIHRydWUpKS5mb3IodGhpcy5iYWxhbmNlT2YpO1xuICAgICAgICBjb25zdCBiYWxhbmNlID0gYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oY3R4LCBcIkJhbGFuY2VPZlwiLCBbXG4gICAgICAgICAgICBvd25lcixcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5kZWNvZGUoYmFsYW5jZSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUcmFuc2ZlcnMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBhIHJlY2lwaWVudC5cbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byB0cmFuc2ZlciBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIGEgcmVjaXBpZW50LlxuICAgICAqIEl0IGNhbGxzIHRoZSBcIlRyYW5zZmVyXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHJlY2lwaWVudCdzIGFkZHJlc3MgYW5kIHRoZSB0cmFuc2ZlciBhbW91bnQgYXMgcGFyYW1ldGVycy5cbiAgICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIGNoZWNrZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSB0cmFuc2ZlciB3YXMgc3VjY2Vzc2Z1bC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0byAtIFRoZSBhZGRyZXNzIG9mIHRoZSByZWNpcGllbnQuXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gdHJhbnNmZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIHRyYW5zZmVyIHdhcyBzdWNjZXNzZnVsLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzIG9yIHRoZSBkZWNvZGluZyBwcm9jZXNzIGZhaWxzLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zZmVyKHRvLCB2YWx1ZSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwidHJhbnNmZXJcIiwgdHJ1ZSkpLmZvcih0aGlzLnRyYW5zZmVyKTtcbiAgICAgICAgY29uc3QgdHJhbnNmZXJyZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oY3R4LCBcIlRyYW5zZmVyXCIsIFtcbiAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgdmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZSh0cmFuc2ZlcnJlZCkgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUcmFuc2ZlcnMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gdHJhbnNmZXIgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuXG4gICAgICogRm9yIHRoaXMgdHJhbnNmZXIgdG8gd29yayB0aGUgc3BlbmRlciAoIGFjY291bnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhpcyBmdW5jdGlvbiApIG5lZWQgdG8gaGF2ZSB0aGUgdmFsdWUgYXBwcm92ZWQgYXMgYW4gYWxsb3dhbmNlIGJ5IHRoZSBzZW5kZXIuXG4gICAgICogSXQgY2FsbHMgdGhlIFwiVHJhbnNmZXJGcm9tXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHNlbmRlcidzIGFkZHJlc3MsIHJlY2lwaWVudCdzIGFkZHJlc3MsIGFuZCB0aGUgdHJhbnNmZXIgYW1vdW50IGFzIHBhcmFtZXRlcnMuXG4gICAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjaGVja2VkIHRvIGRldGVybWluZSBpZiB0aGUgdHJhbnNmZXIgd2FzIHN1Y2Nlc3NmdWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kZXIuXG4gICAgICogQHBhcmFtIHRvIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHJlY2lwaWVudC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byB0cmFuc2Zlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGB0cnVlYCBpZiB0aGUgdHJhbnNmZXIgd2FzIHN1Y2Nlc3NmdWwsIGFuZCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNmZXJGcm9tKGZyb20sIHRvLCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcInRyYW5zZmVyRnJvbVwiLCB0aGlzLmNsYXNzLCBbXSwgdGhpcy5hZGFwdGVyLCB0aGlzLl9vdmVycmlkZXMgfHwge30pO1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5sb2dDdHgoY29udGV4dEFyZ3MuYXJncywgdGhpcy50cmFuc2ZlckZyb20pO1xuICAgICAgICBjb25zdCB0cmFuc2ZlcnJlZCA9IGF3YWl0IHRoaXMuYWRhcHRlci5zdWJtaXRUcmFuc2FjdGlvbihjdHgsIFwiVHJhbnNmZXJGcm9tXCIsIFtmcm9tLCB0bywgdmFsdWUudG9TdHJpbmcoKV0pO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGUodHJhbnNmZXJyZWQpID09PSBcInRydWVcIiA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXBwcm92ZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBiZSBzcGVudCBieSBhIHNwZWNpZmllZCBzcGVuZGVyLlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGFwcHJvdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBiZSBzcGVudCBieSBhIHNwZWNpZmllZCBzcGVuZGVyLlxuICAgICAqIEl0IGNhbGxzIHRoZSBcIkFwcHJvdmVcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3Qgd2l0aCB0aGUgc3BlbmRlcidzIGFkZHJlc3MgYW5kIHRoZSBhcHByb3ZhbCBhbW91bnQgYXMgcGFyYW1ldGVycy5cbiAgICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIGNoZWNrZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBhcHByb3ZhbCB3YXMgc3VjY2Vzc2Z1bC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzcGVuZGVyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHNwZW5kZXIuXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gYXBwcm92ZSBmb3IgdGhlIHNwZW5kZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIGFwcHJvdmFsIHdhcyBzdWNjZXNzZnVsLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzIG9yIHRoZSBkZWNvZGluZyBwcm9jZXNzIGZhaWxzLlxuICAgICAqL1xuICAgIGFzeW5jIGFwcHJvdmUoc3BlbmRlciwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dEFyZ3MgPSBhd2FpdCBDb250ZXh0LmFyZ3MoXCJhcHByb3ZlXCIsIHRoaXMuY2xhc3MsIFtdLCB0aGlzLmFkYXB0ZXIsIHRoaXMuX292ZXJyaWRlcyB8fCB7fSk7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmFwcHJvdmUpO1xuICAgICAgICBjb25zdCBhcHByb3ZlZCA9IGF3YWl0IHRoaXMuYWRhcHRlci5zdWJtaXRUcmFuc2FjdGlvbihjdHgsIFwiQXBwcm92ZVwiLCBbXG4gICAgICAgICAgICBzcGVuZGVyLFxuICAgICAgICAgICAgdmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZShhcHByb3ZlZCkgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGFsbG93YW5jZSBvZiBFUkMyMCB0b2tlbnMgdGhhdCB0aGUgc3BlY2lmaWVkIG93bmVyIGhhcyBhcHByb3ZlZCBmb3IgYSBzcGVuZGVyLlxuICAgICAqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBhbGxvd2FuY2Ugb2YgRVJDMjAgdG9rZW5zIHRoYXQgdGhlIHNwZWNpZmllZCBvd25lciBoYXMgYXBwcm92ZWQgZm9yIGEgc3BlbmRlci5cbiAgICAgKiBJdCBjYWxscyB0aGUgXCJBbGxvd2FuY2VcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3Qgd2l0aCB0aGUgb3duZXIncyBhZGRyZXNzIGFuZCB0aGUgc3BlbmRlcidzIGFkZHJlc3MgYXMgcGFyYW1ldGVycy5cbiAgICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIGNvbnZlcnRlZCB0byBhIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvd25lciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBFUkMyMCB0b2tlbiBvd25lci5cbiAgICAgKiBAcGFyYW0gc3BlbmRlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzcGVuZGVyLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYWxsb3dhbmNlIG9mIEVSQzIwIHRva2VucyB0aGF0IHRoZSBzcGVjaWZpZWQgb3duZXIgaGFzIGFwcHJvdmVkIGZvciB0aGUgc3BlbmRlci5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgYWxsb3dhbmNlKG93bmVyLCBzcGVuZGVyKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRBcmdzID0gYXdhaXQgQ29udGV4dC5hcmdzKFwiYWxsb3dhbmNlXCIsIHRoaXMuY2xhc3MsIFtdLCB0aGlzLmFkYXB0ZXIsIHRoaXMuX292ZXJyaWRlcyB8fCB7fSk7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmFsbG93YW5jZSk7XG4gICAgICAgIGNvbnN0IGFsbG93YW5jZSA9IGF3YWl0IHRoaXMuYWRhcHRlci5zdWJtaXRUcmFuc2FjdGlvbihjdHgsIFwiQWxsb3dhbmNlXCIsIFtcbiAgICAgICAgICAgIG93bmVyLFxuICAgICAgICAgICAgc3BlbmRlcixcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5kZWNvZGUoYWxsb3dhbmNlKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSBFUkMyMCBjb250cmFjdCB3aXRoIHRoZSBwcm92aWRlZCB0b2tlbiBpbmZvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBpbml0aWFsaXplIHRoZSBFUkMyMCBjb250cmFjdCB3aXRoIHRoZSBnaXZlbiB0b2tlbiBpbmZvcm1hdGlvbi5cbiAgICAgKiBJdCBjYWxscyB0aGUgXCJJbml0aWFsaXplXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHNlcmlhbGl6ZWQgdG9rZW4gZGF0YSBhcyBhIHBhcmFtZXRlci5cbiAgICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIGNoZWNrZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBpbml0aWFsaXphdGlvbiB3YXMgc3VjY2Vzc2Z1bC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBFUkMyMCB0b2tlbiBpbmZvcm1hdGlvbiB0byBpbml0aWFsaXplIHRoZSBjb250cmFjdCB3aXRoLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYHRydWVgIGlmIHRoZSBpbml0aWFsaXphdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqXG4gICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscyBvciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBmYWlscy5cbiAgICAgKi9cbiAgICBhc3luYyBpbml0aWFsaXplKHRva2VuKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRBcmdzID0gYXdhaXQgQ29udGV4dC5hcmdzKFwiaW5pdGlhbGl6ZVwiLCB0aGlzLmNsYXNzLCBbXSwgdGhpcy5hZGFwdGVyLCB0aGlzLl9vdmVycmlkZXMgfHwge30pO1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5sb2dDdHgoY29udGV4dEFyZ3MuYXJncywgdGhpcy5pbml0aWFsaXplKTtcbiAgICAgICAgY29uc3QgaW5pdGlsaWF6ZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oY3R4LCBcIkluaXRpYWxpemVcIiwgW0ZhYnJpY0VSQzIwQ2xpZW50UmVwb3NpdG9yeS5zZXJpYWxpemVyLnNlcmlhbGl6ZSh0b2tlbildKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlKGluaXRpbGlhemVkKSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgRVJDMjAgY29udHJhY3QgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gdmVyaWZ5IGlmIHRoZSBFUkMyMCBjb250cmFjdCBoYXMgYmVlbiBpbml0aWFsaXplZC5cbiAgICAgKiBJdCBjYWxscyB0aGUgXCJDaGVja0luaXRpYWxpemVkXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0LCB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGFueSBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGluaXRpYWxpemF0aW9uIGNoZWNrIGlzIGNvbXBsZXRlZC5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgY2hlY2tJbml0aWFsaXplZCgpIHtcbiAgICAgICAgY29uc3QgY29udGV4dEFyZ3MgPSBhd2FpdCBDb250ZXh0LmFyZ3MoXCJjaGVja0luaXRpYWxpemVkXCIsIHRoaXMuY2xhc3MsIFtdLCB0aGlzLmFkYXB0ZXIsIHRoaXMuX292ZXJyaWRlcyB8fCB7fSk7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmNoZWNrSW5pdGlhbGl6ZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihjdHgsIFwiQ2hlY2tJbml0aWFsaXplZFwiKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTWludHMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2Vucy5cbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBtaW50IGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMuXG4gICAgICogSXQgY2FsbHMgdGhlIFwiTWludFwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCB3aXRoIHRoZSBtaW50aW5nIGFtb3VudCBhcyBhIHBhcmFtZXRlci5cbiAgICAgKiBUaGUgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGFueSB2YWx1ZSwgYnV0IGl0IHVwZGF0ZXMgdGhlIG1pbnRlcidzIG51bWJlciBvZiB0b2tlbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gbWludC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtaW50aW5nIHByb2Nlc3MgaXMgY29tcGxldGVkLlxuICAgICAqXG4gICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscy5cbiAgICAgKi9cbiAgICBhc3luYyBtaW50KGFtb3VudCkge1xuICAgICAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcIm1pbnRcIiwgdGhpcy5jbGFzcywgW10sIHRoaXMuYWRhcHRlciwgdGhpcy5fb3ZlcnJpZGVzIHx8IHt9KTtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMubG9nQ3R4KGNvbnRleHRBcmdzLmFyZ3MsIHRoaXMubWludCk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRhcHRlci5zdWJtaXRUcmFuc2FjdGlvbihjdHgsIFwiTWludFwiLCBbYW1vdW50LnRvU3RyaW5nKCldKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQnVybnMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyBmcm9tIHRoZSBtaW50ZXIncyBhY2NvdW50LlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGJ1cm4gYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2Vucy5cbiAgICAgKiBJdCBjYWxscyB0aGUgXCJCdXJuXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIGJ1cm5pbmcgYW1vdW50IGFzIGEgcGFyYW1ldGVyLlxuICAgICAqIFRoZSBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYW55IHZhbHVlLCBidXQgaXQgZGVjcmVhc2VzIHRoZSBtaW50ZXIncyBudW1iZXIgb2YgdG9rZW5zLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIGJ1cm4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYnVybmluZyBwcm9jZXNzIGlzIGNvbXBsZXRlZC5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgYnVybihhbW91bnQpIHtcbiAgICAgICAgY29uc3QgY29udGV4dEFyZ3MgPSBhd2FpdCBDb250ZXh0LmFyZ3MoXCJidXJuXCIsIHRoaXMuY2xhc3MsIFtdLCB0aGlzLmFkYXB0ZXIsIHRoaXMuX292ZXJyaWRlcyB8fCB7fSk7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmJ1cm4pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oY3R4LCBcIkJ1cm5cIiwgW2Ftb3VudC50b1N0cmluZygpXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEJ1cm5zIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgZnJvbSBhIHNwZWNpZmllZCBhY2NvdW50LlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGJ1cm4gYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyBmcm9tIGEgZ2l2ZW4gYWNjb3VudC5cbiAgICAgKiBJdCBjYWxscyB0aGUgXCJCdXJuRnJvbVwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCB3aXRoIHRoZSBhY2NvdW50J3MgYWRkcmVzcyBhbmQgdGhlIGJ1cm5pbmcgYW1vdW50IGFzIHBhcmFtZXRlcnMuXG4gICAgICogVGhlIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhbnkgdmFsdWUsIGJ1dCBpdCBkZWNyZWFzZXMgdGhlIHNwZWNpZmllZCBhY2NvdW50J3MgbnVtYmVyIG9mIHRva2Vucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhY2NvdW50IC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGFjY291bnQgZnJvbSB3aGljaCB0byBidXJuIHRoZSBFUkMyMCB0b2tlbnMuXG4gICAgICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIGJ1cm4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYnVybmluZyBwcm9jZXNzIGlzIGNvbXBsZXRlZC5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgYnVybkZyb20oYWNjb3VudCwgYW1vdW50KSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRBcmdzID0gYXdhaXQgQ29udGV4dC5hcmdzKFwiYnVybkZyb21cIiwgdGhpcy5jbGFzcywgW10sIHRoaXMuYWRhcHRlciwgdGhpcy5fb3ZlcnJpZGVzIHx8IHt9KTtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMubG9nQ3R4KGNvbnRleHRBcmdzLmFyZ3MsIHRoaXMuYnVybkZyb20pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oY3R4LCBcIkJ1cm5Gcm9tXCIsIFtcbiAgICAgICAgICAgIGFjY291bnQsXG4gICAgICAgICAgICBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgYmFsYW5jZSBvZiBFUkMyMCB0b2tlbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjbGllbnQncyBhY2NvdW50LlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBiYWxhbmNlIG9mIEVSQzIwIHRva2VucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNsaWVudCdzIGFjY291bnQuXG4gICAgICogSXQgY2FsbHMgdGhlIFwiQ2xpZW50QWNjb3VudEJhbGFuY2VcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3QsIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgYW55IHBhcmFtZXRlcnMuXG4gICAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjb252ZXJ0ZWQgdG8gYSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBiYWxhbmNlIG9mIEVSQzIwIHRva2VucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNsaWVudCdzIGFjY291bnQuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzIG9yIHRoZSBkZWNvZGluZyBwcm9jZXNzIGZhaWxzLlxuICAgICAqL1xuICAgIGFzeW5jIGNsaWVudEFjY291bnRCYWxhbmNlKCkge1xuICAgICAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcImFjY291bnRCYWxhbmNlXCIsIHRoaXMuY2xhc3MsIFtdLCB0aGlzLmFkYXB0ZXIsIHRoaXMuX292ZXJyaWRlcyB8fCB7fSk7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmNsaWVudEFjY291bnRCYWxhbmNlKTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZEFjY291bnRCYWxhbmNlID0gYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oY3R4LCBcIkNsaWVudEFjY291bnRCYWxhbmNlXCIpO1xuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGVjb2RlKHNlcmlhbGl6ZWRBY2NvdW50QmFsYW5jZSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGNsaWVudCdzIGFjY291bnQgSUQgZnJvbSB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrLlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBjbGllbnQncyBhY2NvdW50IElELlxuICAgICAqIEl0IGNhbGxzIHRoZSBcIkNsaWVudEFjY291bnRJRFwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCwgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSBhbnkgcGFyYW1ldGVycy5cbiAgICAgKiBUaGUgcmV0dXJuZWQgZGF0YSBpcyB0aGVuIGRlY29kZWQgYW5kIHJldHVybmVkIGFzIGEgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgY2xpZW50J3MgYWNjb3VudCBJRC5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAgICovXG4gICAgYXN5bmMgY2xpZW50QWNjb3VudElEKCkge1xuICAgICAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcImFjY291bnRJZFwiLCB0aGlzLmNsYXNzLCBbXSwgdGhpcy5hZGFwdGVyLCB0aGlzLl9vdmVycmlkZXMgfHwge30pO1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5sb2dDdHgoY29udGV4dEFyZ3MuYXJncywgdGhpcy5jbGllbnRBY2NvdW50SUQpO1xuICAgICAgICBjb25zdCBjbGllbnRBY2NvdW50SUQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihjdHgsIFwiQ2xpZW50QWNjb3VudElEXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGUoY2xpZW50QWNjb3VudElEKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lSbUZpY21salJWSkRNakJEYkdsbGJuUlNaWEJ2YzJsMGIzSjVMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDJOc2FXVnVkQzlsY21NeU1DOUdZV0p5YVdORlVrTXlNRU5zYVdWdWRGSmxjRzl6YVhSdmNua3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxITkNRVUZ6UWl4RlFVRkZMSFZEUVVGclF6dEJRVU51UlN4UFFVRlBMRVZCUVdNc1YwRkJWeXhGUVVGRkxEQkRRVUZ4UXp0QlFVTjJSU3hQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZqTEUxQlFVMHNaME5CUVdkRExFTkJRVU03UVVGRmJrVXNUMEZCVHl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTERKRFFVRnpRenRCUVVOcVJTeFBRVUZQTEVWQlEwd3NUMEZCVHl4RlFVdFFMRkZCUVZFc1IwRkRWQ3hOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUTNoQ0xFOUJRVThzUlVGRlRDeGhRVUZoTEVkQlJXUXNUVUZCVFN4NVFrRkJlVUlzUTBGQlF6dEJRVVZxUXpzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEU5QlFVOHNNa0pCUlZnc1UwRkJVU3h6UWtGQmMwTTdZVUZETDBJc1pVRkJWU3hIUVVGSExFbEJRVWtzWjBKQlFXZENMRVZCUVVVc1FVRkJla0lzUTBGQk1FSTdZVUZMY0VNc1dVRkJUeXhIUVVGSExFbEJRVWtzVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4QlFVRXhRaXhEUVVFeVFqdEpRVVZxUkRzN096czdPenM3TzA5QlUwYzdTVUZEVFN4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVNMVFpeExRVUU0UWl4RlFVTTVRaXhMUVVGeFJDeEZRVU55UkN4RlFVRlpMRVZCUTFvc1IwRkJSeXhKUVVGclF6dFJRVVZ5UXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1U3V1VGRGRrSXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYjBWQlFXOUZMRU5CUTNKRkxFTkJRVU03VVVGRFNpeE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF6dFJRVU5xUlN4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVOVUxGbEJRVmtzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4TFFVRkxMRVZCUVVVc2EwSkJRV3RDTEVsQlFVa3NSVUZCUlN4RFFVTnFSU3hEUVVGRE8xRkJSVVlzUzBGQlN5eEhRVUZITEVOQlEwNHNUMEZCVHl4TFFVRkxMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlEyNURMRU5CUVVNN1VVRkRjRUlzU1VGQlNTeFJRVUYxUXl4RFFVRkRPMUZCUlRWRExFbEJRVWtzUlVGQlJTeExRVUZMTEZOQlFWTXNSVUZCUlN4RFFVRkRPMWxCUTNKQ0xGRkJRVkVzUjBGQlJ5eFRRVUZUTEVOQlFVTTdVVUZEZGtJc1EwRkJRenRoUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8xbEJRemRDTEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVObUxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlZ5eERRVU4yUlN4RFFVRkRPMUZCUTBvc1EwRkJRenRoUVVGTkxFTkJRVU03V1VGRFRpeFJRVUZSTEVkQlFVY3NVVUZCVVN4RFFVRkRMRlZCUVZVc1EwRkROVUlzUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRemRDTEVWQlFVVXNRMEZEVHl4RFFVRkRPMUZCUTJRc1EwRkJRenRSUVVORUxFMUJRVTBzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4bFFVRmxMRU5CUTNoRExFdEJRVXNzUlVGRFRDeExRVUZMTEVWQlEwd3NVVUZCVXl4RlFVTlVMRWRCUVVjc1QwRkJUeXhEUVVOWUxFTkJRVU03U1VGRFNpeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1NVRkJaMEk3VVVGRGNrSXNUMEZCVHl3eVFrRkJNa0lzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRekZFTEVOQlFVTTdTVUZGUkN4WlFVRlpMRTlCUVZjN1VVRkRja0lzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVd4RldDeGxRVUZWTEVkQlF6TkNMREpDUVVFeVFpeERRVUZETEZWQlFWVXNRMEZCUXp0SlFXdEZla01zUTBGQlF6dEpRVVZFT3pzN096czdPenM3TzA5QlZVYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzU1VGQmMwTTdVVUZEZGtRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeFhRVUZYTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRemxFTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUTJZc1EwRkJRenRSUVVOR0xFMUJRVTBzU1VGQlNTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4SFFVRkhMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRGRFVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkNMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPMDlCVTBjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCYzBNN1VVRkRjRVFzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRek5GTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhIUVVGSExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEY2tVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpkQ0xFTkJRVU03U1VGRlJEczdPenM3T3pzN08wOUJVMGM3U1VGRFNDeExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1NVRkJjME03VVVGRGRFUXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hWUVVGVkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUXpkRUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlEyUXNRMEZCUXp0UlFVTkdMRTFCUVUwc1VVRkJVU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eEhRVUZITEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkRla1VzVDBGQlR5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzWkRMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPMDlCVTBjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVjBGQlZ5eERRVU5tTEVkQlFVY3NTVUZCYzBNN1VVRkZla01zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4aFFVRmhMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlEyaEZMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRMnBDTEVOQlFVTTdVVUZEUml4TlFVRk5MRXRCUVVzc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUjBGQlJ5eEZRVUZGTEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTNwRkxFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53UXl4RFFVRkRPMGxCUlVRN096czdPenM3T3pzN096czdUMEZoUnp0SlFVTklMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRMklzUzBGQllTeEZRVU5pTEVkQlFVY3NTVUZCYzBNN1VVRkZla01zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlF6VkVMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRMllzUTBGQlF6dFJRVU5HTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhIUVVGSExFVkJRVVVzVjBGQlZ5eEZRVUZGTzFsQlEzWkZMRXRCUVVzN1UwRkRUaXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZEVNc1EwRkJRenRKUVVWRU96czdPenM3T3pzN096czdPenRQUVdOSE8wbEJRMGdzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZEV2l4RlFVRlZMRVZCUTFZc1MwRkJZU3hGUVVOaUxFZEJRVWNzU1VGQmMwTTdVVUZGZWtNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeFZRVUZWTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRemRFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUTJRc1EwRkJRenRSUVVOR0xFMUJRVTBzVjBGQlZ5eEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SFFVRkhMRVZCUVVVc1ZVRkJWU3hGUVVGRk8xbEJRM2hGTEVWQlFVVTdXVUZEUml4TFFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRk8xTkJRMnBDTEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUXpWRUxFTkJRVU03U1VGRlJEczdPenM3T3pzN096czdPenM3T3p0UFFXZENSenRKUVVOSUxFdEJRVXNzUTBGQlF5eFpRVUZaTEVOQlEyaENMRWxCUVZrc1JVRkRXaXhGUVVGVkxFVkJRMVlzUzBGQllUdFJRVVZpTEUxQlFVMHNWMEZCVnl4SFFVRkhMRTFCUVUwc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGRGNFTXNZMEZCWXl4RlFVTmtMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRMVlzUlVGQlJTeEZRVU5HTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUTFvc1NVRkJTU3hEUVVGRExGVkJRVlVzU1VGQlNTeEZRVUZGTEVOQlEzUkNMRU5CUVVNN1VVRkRSaXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVOcVJTeE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zYVVKQlFXbENMRU5CUTNSRUxFZEJRVWNzUlVGRFNDeGpRVUZqTEVWQlEyUXNRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hGUVVGRkxFdEJRVXNzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVTTNRaXhEUVVGRE8xRkJSVVlzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU03U1VGRE5VUXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdPenM3TzA5QllVYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRV1VzUlVGQlJTeExRVUZoTzFGQlF6RkRMRTFCUVUwc1YwRkJWeXhIUVVGSExFMUJRVTBzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZEY0VNc1UwRkJVeXhGUVVOVUxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlExWXNSVUZCUlN4RlFVTkdMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRMW9zU1VGQlNTeERRVUZETEZWQlFWVXNTVUZCU1N4RlFVRkZMRU5CUTNSQ0xFTkJRVU03VVVGRFJpeE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU0xUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUjBGQlJ5eEZRVUZGTEZOQlFWTXNSVUZCUlR0WlFVTndSU3hQUVVGUE8xbEJRMUFzUzBGQlN5eERRVUZETEZGQlFWRXNSVUZCUlR0VFFVTnFRaXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dEpRVU42UkN4RFFVRkRPMGxCUlVRN096czdPenM3T3pzN096czdPMDlCWTBjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFXRXNSVUZCUlN4UFFVRmxPMUZCUXpWRExFMUJRVTBzVjBGQlZ5eEhRVUZITEUxQlFVMHNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkRjRU1zVjBGQlZ5eEZRVU5ZTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUTFZc1JVRkJSU3hGUVVOR0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlExb3NTVUZCU1N4RFFVRkRMRlZCUVZVc1NVRkJTU3hGUVVGRkxFTkJRM1JDTEVOQlFVTTdVVUZEUml4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVTTVSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNSMEZCUnl4RlFVRkZMRmRCUVZjc1JVRkJSVHRaUVVOMlJTeExRVUZMTzFsQlEwd3NUMEZCVHp0VFFVTlNMRU5CUVVNc1EwRkJRenRSUVVOSUxFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UXl4RFFVRkRPMGxCUlVRN096czdPenM3T3pzN096czdUMEZoUnp0SlFVTklMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQmFVSTdVVUZEYUVNc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTndReXhaUVVGWkxFVkJRMW9zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZEVml4RlFVRkZMRVZCUTBZc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGRFdpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SlFVRkpMRVZCUVVVc1EwRkRkRUlzUTBGQlF6dFJRVU5HTEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzFGQlF5OUVMRTFCUVUwc1YwRkJWeXhIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4cFFrRkJhVUlzUTBGRGRFUXNSMEZCUnl4RlFVTklMRmxCUVZrc1JVRkRXaXhEUVVGRExESkNRVUV5UWl4RFFVRkRMRlZCUVZVc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZETVVRc1EwRkJRenRSUVVWR0xFOUJRVThzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRelZFTEVOQlFVTTdTVUZGUkRzN096czdPenM3TzA5QlUwYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1owSkJRV2RDTzFGQlEzQkNMRTFCUVUwc1YwRkJWeXhIUVVGSExFMUJRVTBzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZEY0VNc2EwSkJRV3RDTEVWQlEyeENMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRMVlzUlVGQlJTeEZRVU5HTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUTFvc1NVRkJTU3hEUVVGRExGVkJRVlVzU1VGQlNTeEZRVUZGTEVOQlEzUkNMRU5CUVVNN1VVRkRSaXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzFGQlEzSkZMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhIUVVGSExFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRKUVVOc1JTeERRVUZETzBsQlJVUTdPenM3T3pzN096czdPenM3VDBGaFJ6dEpRVU5JTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJZenRSUVVOMlFpeE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRM0JETEUxQlFVMHNSVUZEVGl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVOV0xFVkJRVVVzUlVGRFJpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVTmFMRWxCUVVrc1EwRkJReXhWUVVGVkxFbEJRVWtzUlVGQlJTeERRVU4wUWl4RFFVRkRPMUZCUTBZc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRla1FzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVkQlFVY3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNwRkxFTkJRVU03U1VGRlJEczdPenM3T3pzN096czdPMDlCV1VjN1NVRkRTQ3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFXTTdVVUZEZGtJc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTndReXhOUVVGTkxFVkJRMDRzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZEVml4RlFVRkZMRVZCUTBZc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGRFdpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SlFVRkpMRVZCUVVVc1EwRkRkRUlzUTBGQlF6dFJRVU5HTEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEzcEVMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhIUVVGSExFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU42UlN4RFFVRkRPMGxCUlVRN096czdPenM3T3pzN096czdUMEZoUnp0SlFVTklMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlpTeEZRVUZGTEUxQlFXTTdVVUZETlVNc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTndReXhWUVVGVkxFVkJRMVlzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZEVml4RlFVRkZMRVZCUTBZc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGRFdpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SlFVRkpMRVZCUVVVc1EwRkRkRUlzUTBGQlF6dFJRVU5HTEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlF6ZEVMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhIUVVGSExFVkJRVVVzVlVGQlZTeEZRVUZGTzFsQlEzQkVMRTlCUVU4N1dVRkRVQ3hOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTzFOQlEyeENMRU5CUVVNc1EwRkJRenRKUVVOTUxFTkJRVU03U1VGRlJEczdPenM3T3pzN096dFBRVlZITzBsQlEwZ3NTMEZCU3l4RFFVRkRMRzlDUVVGdlFqdFJRVU40UWl4TlFVRk5MRmRCUVZjc1IwRkJSeXhOUVVGTkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlEzQkRMR2RDUVVGblFpeEZRVU5vUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVOV0xFVkJRVVVzUlVGRFJpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVTmFMRWxCUVVrc1EwRkJReXhWUVVGVkxFbEJRVWtzUlVGQlJTeERRVU4wUWl4RFFVRkRPMUZCUTBZc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUTBGQlF6dFJRVU42UlN4TlFVRk5MSGRDUVVGM1FpeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXh0UWtGQmJVSXNRMEZEY2tVc1IwRkJSeXhGUVVOSUxITkNRVUZ6UWl4RFFVTjJRaXhEUVVGRE8xRkJSVVlzVDBGQlR5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRka1FzUTBGQlF6dEpRVVZFT3pzN096czdPenM3TzA5QlZVYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1pVRkJaVHRSUVVOdVFpeE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRM0JETEZkQlFWY3NSVUZEV0N4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVOV0xFVkJRVVVzUlVGRFJpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVTmFMRWxCUVVrc1EwRkJReXhWUVVGVkxFbEJRVWtzUlVGQlJTeERRVU4wUWl4RFFVRkRPMUZCUTBZc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkRjRVVzVFVGQlRTeGxRVUZsTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExHMUNRVUZ0UWl4RFFVTTFSQ3hIUVVGSExFVkJRMGdzYVVKQlFXbENMRU5CUTJ4Q0xFTkJRVU03VVVGRlJpeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03U1VGRGRFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFWmhZbkpwWTBOc2FXVnVkRkpsY0c5emFYUnZjbmtnZlNCbWNtOXRJRndpTGk0dlJtRmljbWxqUTJ4cFpXNTBVbVZ3YjNOcGRHOXllVndpTzF4dWFXMXdiM0owSUhzZ1JWSkRNakJVYjJ0bGJpd2dSVkpETWpCWFlXeHNaWFFnZlNCbWNtOXRJRndpTGk0dkxpNHZZMjl1ZEhKaFkzUnpMMlZ5WXpJd0wyMXZaR1ZzYzF3aU8xeHVhVzF3YjNKMElIc2dUVzlrWld3c0lGTmxjbWxoYkdsNlpYSWdmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMlJsWTI5eVlYUnZjaTEyWVd4cFpHRjBhVzl1WENJN1hHNXBiWEJ2Y25RZ2V5QkdZV0p5YVdORGJHbGxiblJCWkdGd2RHVnlJSDBnWm5KdmJTQmNJaTR1TDBaaFluSnBZME5zYVdWdWRFRmtZWEIwWlhKY0lqdGNibWx0Y0c5eWRDQjdJRU5zYVdWdWRGTmxjbWxoYkdsNlpYSWdmU0JtY205dElGd2lMaTR2TGk0dmMyaGhjbVZrTDBOc2FXVnVkRk5sY21saGJHbDZaWEpjSWp0Y2JtbHRjRzl5ZENCN1hHNGdJRU52Ym5SbGVIUXNYRzRnSUVOdmJuUmxlSFJQWml4Y2JpQWdRMjl1ZEdWNGRIVmhiRUZ5WjNNc1hHNGdJRVYyWlc1MFNXUnpMRnh1SUNCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jc1hHNGdJRk5sY1hWbGJtTmxMRnh1ZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJOdmNtVmNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lFSjFiR3REY25Wa1QzQmxjbUYwYVc5dVMyVjVjeXhjYmlBZ1NXNTBaWEp1WVd4RmNuSnZjaXhjYmlBZ1QzQmxjbUYwYVc5dVMyVjVjeXhjYm4wZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5a1lpMWtaV052Y21GMGIzSnpYQ0k3WEc1cGJYQnZjblFnZXlCRGIyNXpkSEoxWTNSdmNpQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR1ZqYjNKaGRHbHZibHdpTzF4dUx5b3FYRzRnS2lCU1pYQnZjMmwwYjNKNUlHWnZjaUJwYm5SbGNtRmpkR2x1WnlCM2FYUm9JRVZTUXpJd0lHTnZiblJ5WVdOMGN5QnZiaUJoSUVoNWNHVnliR1ZrWjJWeUlFWmhZbkpwWXlCdVpYUjNiM0pyTGx4dUlDb2dSWGgwWlc1a2N5QjBhR1VnWW1GelpTQkdZV0p5YVdORGJHbGxiblJTWlhCdmMybDBiM0o1SUdOc1lYTnpJR0Z1WkNCMWRHbHNhWHBsY3lCMGFHVWdRMnhwWlc1MFUyVnlhV0ZzYVhwbGNpQm1iM0lnWkdGMFlTQnpaWEpwWVd4cGVtRjBhVzl1TGx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JtRmljbWxqUlZKRE1qQkRiR2xsYm5SU1pYQnZjMmwwYjNKNVBGeHVJQ0JCSUdWNGRHVnVaSE1nUm1GaWNtbGpRMnhwWlc1MFFXUmhjSFJsY2l4Y2JqNGdaWGgwWlc1a2N5QkdZV0p5YVdORGJHbGxiblJTWlhCdmMybDBiM0o1UEVWU1F6SXdWMkZzYkdWMExDQkJQaUI3WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUhObGNtbGhiR2w2WlhJZ1BTQnVaWGNnUTJ4cFpXNTBVMlZ5YVdGc2FYcGxjaWdwTzF4dVhHNGdJSEJ5YjNSbFkzUmxaQ0J5WldGa2IyNXNlU0J6WlhKcFlXeHBlbVZ5T2lCVFpYSnBZV3hwZW1WeVBHRnVlVDRnUFZ4dUlDQWdJRVpoWW5KcFkwVlNRekl3UTJ4cFpXNTBVbVZ3YjNOcGRHOXllUzV6WlhKcFlXeHBlbVZ5TzF4dVhHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHUmxZMjlrWlhJZ1BTQnVaWGNnVkdWNGRFUmxZMjlrWlhJb1hDSjFkR1k0WENJcE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdUbTkwYVdacFpYTWdZV3hzSUc5aWMyVnlkbVZ5Y3lCdlppQmhiaUJsZG1WdWRDNWNiaUFnSUNvZ1FITjFiVzFoY25rZ1ZYQmtZWFJsY3lCaGJHd2djbVZuYVhOMFpYSmxaQ0J2WW5ObGNuWmxjbk1nZDJsMGFDQnBibVp2Y20xaGRHbHZiaUJoWW05MWRDQmhJR1JoZEdGaVlYTmxJR1YyWlc1MExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEdGaWJHVWdMU0JVYUdVZ2RHRmliR1VnYm1GdFpTQjNhR1Z5WlNCMGFHVWdaWFpsYm5RZ2IyTmpkWEp5WldRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDNCbGNtRjBhVzl1UzJWNWMzeENkV3hyUTNKMVpFOXdaWEpoZEdsdmJrdGxlWE44YzNSeWFXNW5mU0JsZG1WdWRDQXRJRlJvWlNCMGVYQmxJRzltSUdWMlpXNTBJSFJvWVhRZ2IyTmpkWEp5WldRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UlhabGJuUkpaSE45SUdsa0lDMGdWR2hsSUVsRUlHOXlJRWxFY3lCdlppQjBhR1VnWVdabVpXTjBaV1FnY21WamIzSmtjeTVjYmlBZ0lDb2dRSEJoY21GdElIc3VMaTVoYm5sYlhYMGdZWEpuY3lBdElFRmtaR2wwYVc5dVlXd2dZWEpuZFcxbGJuUnpMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFFjbTl0YVhObFBIWnZhV1ErZlNCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYUdWdUlHRnNiQ0J2WW5ObGNuWmxjbk1nYUdGMlpTQmlaV1Z1SUc1dmRHbG1hV1ZrTGx4dUlDQWdLaUJBZEdoeWIzZHpJSHRKYm5SbGNtNWhiRVZ5Y205eWZTQkpaaUIwYUdVZ2IySnpaWEoyWlhJZ2FHRnVaR3hsY2lCcGN5QnViM1FnYVc1cGRHbGhiR2w2WldRdVhHNGdJQ0FxTDF4dUlDQnZkbVZ5Y21sa1pTQmhjM2x1WXlCMWNHUmhkR1ZQWW5ObGNuWmxjbk04VFNCbGVIUmxibVJ6SUUxdlpHVnNQaWhjYmlBZ0lDQjBZV0pzWlRvZ1EyOXVjM1J5ZFdOMGIzSThUVDRnZkNCemRISnBibWNzWEc0Z0lDQWdaWFpsYm5RNklFOXdaWEpoZEdsdmJrdGxlWE1nZkNCQ2RXeHJRM0oxWkU5d1pYSmhkR2x2Ymt0bGVYTWdmQ0J6ZEhKcGJtY3NYRzRnSUNBZ2FXUTZJRVYyWlc1MFNXUnpMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFTnZiblJsZUhSMVlXeEJjbWR6UEVOdmJuUmxlSFJQWmp4QlBqNWNiaUFnS1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbTlpYzJWeWRtVnlTR0Z1Wkd4bGNpbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkpiblJsY201aGJFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lrOWljMlZ5ZG1WeVNHRnVaR3hsY2lCdWIzUWdhVzVwZEdsaGJHbDZaV1F1SUVScFpDQjViM1VnY21WbmFYTjBaWElnWVc1NUlHOWljMlZ5ZG1GaWJHVnpQMXdpWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElIc2diRzluTENCamRIaEJjbWR6SUgwZ1BTQjBhR2x6TG14dlowTjBlQ2hoY21kekxDQjBhR2x6TG5Wd1pHRjBaVTlpYzJWeWRtVnljeWs3WEc0Z0lDQWdiRzluTG5abGNtSnZjMlVvWEc0Z0lDQWdJQ0JnVlhCa1lYUnBibWNnSkh0MGFHbHpMbTlpYzJWeWRtVnlTR0Z1Wkd4bGNpNWpiM1Z1ZENncGZTQnZZbk5sY25abGNuTWdabTl5SUNSN2RHaHBjMzFnWEc0Z0lDQWdLVHRjYmx4dUlDQWdJSFJoWW14bElEMGdLRnh1SUNBZ0lDQWdkSGx3Wlc5bUlIUmhZbXhsSUQwOVBTQmNJbk4wY21sdVoxd2lJRDhnVFc5a1pXd3VaMlYwS0hSaFlteGxLU0E2SUhSaFlteGxYRzRnSUNBZ0tTQmhjeUJEYjI1emRISjFZM1J2Y2p4TlBqdGNiaUFnSUNCc1pYUWdjR0Z5YzJWa1NXUTZJSE4wY21sdVp5QjhJSE4wY21sdVoxdGRJSHdnZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnYVdZZ0tHbGtJRDA5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lIQmhjbk5sWkVsa0lEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNocFpDa3BJSHRjYmlBZ0lDQWdJSEJoY25ObFpFbGtJRDBnYVdRdWJXRndLRnh1SUNBZ0lDQWdJQ0FvYVNrZ1BUNGdVMlZ4ZFdWdVkyVXVjR0Z5YzJWV1lXeDFaU2hOYjJSbGJDNXpaWEYxWlc1alpVWnZjaWgwWVdKc1pTa3VkSGx3WlN3Z2FTa2dZWE1nYzNSeWFXNW5YRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCd1lYSnpaV1JKWkNBOUlGTmxjWFZsYm1ObExuQmhjbk5sVm1Gc2RXVW9YRzRnSUNBZ0lDQWdJRTF2WkdWc0xuTmxjWFZsYm1ObFJtOXlLSFJoWW14bEtTNTBlWEJsTEZ4dUlDQWdJQ0FnSUNCcFpGeHVJQ0FnSUNBZ0tTQmhjeUJ6ZEhKcGJtYzdYRzRnSUNBZ2ZWeHVJQ0FnSUdGM1lXbDBJSFJvYVhNdWIySnpaWEoyWlhKSVlXNWtiR1Z5TG5Wd1pHRjBaVTlpYzJWeWRtVnljeWhjYmlBZ0lDQWdJSFJoWW14bExGeHVJQ0FnSUNBZ1pYWmxiblFzWEc0Z0lDQWdJQ0J3WVhKelpXUkpaQ0VzWEc0Z0lDQWdJQ0F1TGk1amRIaEJjbWR6WEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRVpXTnZaR1Z6SUdFZ1ZXbHVkRGhCY25KaGVTQnBiblJ2SUdFZ2MzUnlhVzVuSUhWemFXNW5JSFJvWlNCVVpYaDBSR1ZqYjJSbGNpNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJR1JoZEdFZ0xTQlVhR1VnVldsdWREaEJjbkpoZVNCMGJ5QmtaV052WkdVdVhHNGdJQ0FxSUVCeVpYUjFjbTV6SUZSb1pTQmtaV052WkdWa0lITjBjbWx1Wnk1Y2JpQWdJQ292WEc0Z0lHUmxZMjlrWlNoa1lYUmhPaUJWYVc1ME9FRnljbUY1S1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdSbUZpY21salJWSkRNakJEYkdsbGJuUlNaWEJ2YzJsMGIzSjVMbVJsWTI5a1pYSXVaR1ZqYjJSbEtHUmhkR0VwTzF4dUlDQjlYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9ZV1JoY0hSbGNqODZJRUVwSUh0Y2JpQWdJQ0J6ZFhCbGNpaGhaR0Z3ZEdWeUxDQkZVa015TUZkaGJHeGxkQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBjbWxsZG1WeklIUm9aU0J1WVcxbElHOW1JSFJvWlNCRlVrTXlNQ0IwYjJ0bGJpNWNiaUFnSUNwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUZSb2FYTWdablZ1WTNScGIyNGdhVzUwWlhKaFkzUnpJSGRwZEdnZ2RHaGxJR0pzYjJOclkyaGhhVzRnYm1WMGQyOXlheUIwYnlCbVpYUmphQ0IwYUdVZ2JtRnRaU0J2WmlCMGFHVWdSVkpETWpBZ2RHOXJaVzR1WEc0Z0lDQXFJRWwwSUdOaGJHeHpJSFJvWlNCY0lsUnZhMlZ1VG1GdFpWd2lJSFJ5WVc1ellXTjBhVzl1SUc5dUlIUm9aU0J6YldGeWRDQmpiMjUwY21GamRDQmhibVFnWkdWamIyUmxjeUIwYUdVZ2NtVjBkWEp1WldRZ1pHRjBZUzVjYmlBZ0lDcGNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ2UxQnliMjFwYzJVOGMzUnlhVzVuUG4wZ1FTQndjbTl0YVhObElIUm9ZWFFnY21WemIyeDJaWE1nZDJsMGFDQjBhR1VnYm1GdFpTQnZaaUIwYUdVZ1JWSkRNakFnZEc5clpXNHVYRzRnSUNBcVhHNGdJQ0FxSUVCMGFISnZkM01nZTBWeWNtOXlmU0JKWmlCMGFHVWdkSEpoYm5OaFkzUnBiMjRnWm1GcGJITWdiM0lnZEdobElHUmxZMjlrYVc1bklIQnliMk5sYzNNZ1ptRnBiSE11WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUIwYjJ0bGJrNWhiV1VvTGk0dVlYSm5jem9nVFdGNVltVkRiMjUwWlhoMGRXRnNRWEpuUEVOdmJuUmxlSFJQWmp4QlBqNHBPaUJRY205dGFYTmxQSE4wY21sdVp6NGdlMXh1SUNBZ0lHTnZibk4wSUhzZ1kzUjRJSDBnUFNBb1lYZGhhWFFnZEdocGN5NXNiMmREZEhnb1lYSm5jeXdnWENKMGIydGxiazVoYldWY0lpd2dkSEoxWlNrcExtWnZjaWhjYmlBZ0lDQWdJSFJvYVhNdWRHOXJaVzVPWVcxbFhHNGdJQ0FnS1R0Y2JpQWdJQ0JqYjI1emRDQnVZVzFsSUQwZ1lYZGhhWFFnZEdocGN5NWhaR0Z3ZEdWeUxtVjJZV3gxWVhSbFZISmhibk5oWTNScGIyNG9ZM1I0TENCY0lsUnZhMlZ1VG1GdFpWd2lLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVrWldOdlpHVW9ibUZ0WlNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwY21sbGRtVnpJSFJvWlNCemVXMWliMndnYjJZZ2RHaGxJRVZTUXpJd0lIUnZhMlZ1TGx4dUlDQWdLbHh1SUNBZ0tpQlVhR2x6SUdaMWJtTjBhVzl1SUdsdWRHVnlZV04wY3lCM2FYUm9JSFJvWlNCaWJHOWphMk5vWVdsdUlHNWxkSGR2Y21zZ2RHOGdabVYwWTJnZ2RHaGxJSE41YldKdmJDQnZaaUIwYUdVZ1JWSkRNakFnZEc5clpXNHVYRzRnSUNBcUlFbDBJR05oYkd4eklIUm9aU0JjSWxONWJXSnZiRndpSUhSeVlXNXpZV04wYVc5dUlHOXVJSFJvWlNCemJXRnlkQ0JqYjI1MGNtRmpkQ0JoYm1RZ1pHVmpiMlJsY3lCMGFHVWdjbVYwZFhKdVpXUWdaR0YwWVM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEpsZEhWeWJuTWdlMUJ5YjIxcGMyVThjM1J5YVc1blBuMGdRU0J3Y205dGFYTmxJSFJvWVhRZ2NtVnpiMngyWlhNZ2QybDBhQ0IwYUdVZ2MzbHRZbTlzSUc5bUlIUm9aU0JGVWtNeU1DQjBiMnRsYmk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSFJvY205M2N5QjdSWEp5YjNKOUlFbG1JSFJvWlNCMGNtRnVjMkZqZEdsdmJpQm1ZV2xzY3lCdmNpQjBhR1VnWkdWamIyUnBibWNnY0hKdlkyVnpjeUJtWVdsc2N5NWNiaUFnSUNvdlhHNGdJR0Z6ZVc1aklITjViV0p2YkNndUxpNWhjbWR6T2lCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jOFEyOXVkR1Y0ZEU5bVBFRStQaWs2SUZCeWIyMXBjMlU4YzNSeWFXNW5QaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QmpkSGdnZlNBOUlDaGhkMkZwZENCMGFHbHpMbXh2WjBOMGVDaGhjbWR6TENCY0luTjViV0p2YkZ3aUxDQjBjblZsS1NrdVptOXlLSFJvYVhNdWMzbHRZbTlzS1R0Y2JpQWdJQ0JqYjI1emRDQnplVzFpYjJ3Z1BTQmhkMkZwZENCMGFHbHpMbUZrWVhCMFpYSXVaWFpoYkhWaGRHVlVjbUZ1YzJGamRHbHZiaWhqZEhnc0lGd2lVM2x0WW05c1hDSXBPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVJsWTI5a1pTaHplVzFpYjJ3cE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhKcFpYWmxjeUIwYUdVZ2JuVnRZbVZ5SUc5bUlHUmxZMmx0WVd3Z2NHeGhZMlZ6SUdadmNpQjBhR1VnUlZKRE1qQWdkRzlyWlc0dVhHNGdJQ0FxWEc0Z0lDQXFJRlJvYVhNZ1puVnVZM1JwYjI0Z2FXNTBaWEpoWTNSeklIZHBkR2dnZEdobElHSnNiMk5yWTJoaGFXNGdibVYwZDI5eWF5QjBieUJtWlhSamFDQjBhR1VnYm5WdFltVnlJRzltSUdSbFkybHRZV3dnY0d4aFkyVnpJR1p2Y2lCMGFHVWdSVkpETWpBZ2RHOXJaVzR1WEc0Z0lDQXFJRWwwSUdOaGJHeHpJSFJvWlNCY0lrUmxZMmx0WVd4elhDSWdkSEpoYm5OaFkzUnBiMjRnYjI0Z2RHaGxJSE50WVhKMElHTnZiblJ5WVdOMElHRnVaQ0JrWldOdlpHVnpJSFJvWlNCeVpYUjFjbTVsWkNCa1lYUmhMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVjBkWEp1Y3lCN1VISnZiV2x6WlR4dWRXMWlaWEkrZlNCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYVhSb0lIUm9aU0J1ZFcxaVpYSWdiMllnWkdWamFXMWhiQ0J3YkdGalpYTWdabTl5SUhSb1pTQkZVa015TUNCMGIydGxiaTVjYmlBZ0lDcGNiaUFnSUNvZ1FIUm9jbTkzY3lCN1JYSnliM0o5SUVsbUlIUm9aU0IwY21GdWMyRmpkR2x2YmlCbVlXbHNjeUJ2Y2lCMGFHVWdaR1ZqYjJScGJtY2djSEp2WTJWemN5Qm1ZV2xzY3k1Y2JpQWdJQ292WEc0Z0lHRnplVzVqSUdSbFkybHRZV3h6S0M0dUxtRnlaM002SUUxaGVXSmxRMjl1ZEdWNGRIVmhiRUZ5Wnp4RGIyNTBaWGgwVDJZOFFUNCtLVG9nVUhKdmJXbHpaVHh1ZFcxaVpYSStJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHTjBlQ0I5SUQwZ0tHRjNZV2wwSUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUZ3aVpHVmphVzFoYkhOY0lpd2dkSEoxWlNrcExtWnZjaWhjYmlBZ0lDQWdJSFJvYVhNdVpHVmphVzFoYkhOY2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElHUmxZMmx0WVd4eklEMGdZWGRoYVhRZ2RHaHBjeTVoWkdGd2RHVnlMbVYyWVd4MVlYUmxWSEpoYm5OaFkzUnBiMjRvWTNSNExDQmNJa1JsWTJsdFlXeHpYQ0lwTzF4dUlDQWdJSEpsZEhWeWJpQk9kVzFpWlhJb2RHaHBjeTVrWldOdlpHVW9aR1ZqYVcxaGJITXBLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUnlhV1YyWlhNZ2RHaGxJSFJ2ZEdGc0lITjFjSEJzZVNCdlppQjBhR1VnUlZKRE1qQWdkRzlyWlc0dVhHNGdJQ0FxWEc0Z0lDQXFJRlJvYVhNZ1puVnVZM1JwYjI0Z2FXNTBaWEpoWTNSeklIZHBkR2dnZEdobElHSnNiMk5yWTJoaGFXNGdibVYwZDI5eWF5QjBieUJtWlhSamFDQjBhR1VnZEc5MFlXd2djM1Z3Y0d4NUlHOW1JSFJvWlNCRlVrTXlNQ0IwYjJ0bGJpNWNiaUFnSUNvZ1NYUWdZMkZzYkhNZ2RHaGxJRndpVkc5MFlXeFRkWEJ3YkhsY0lpQjBjbUZ1YzJGamRHbHZiaUJ2YmlCMGFHVWdjMjFoY25RZ1kyOXVkSEpoWTNRZ1lXNWtJR1JsWTI5a1pYTWdkR2hsSUhKbGRIVnlibVZrSUdSaGRHRXVYRzRnSUNBcVhHNGdJQ0FxSUVCeVpYUjFjbTV6SUh0UWNtOXRhWE5sUEc1MWJXSmxjajU5SUVFZ2NISnZiV2x6WlNCMGFHRjBJSEpsYzI5c2RtVnpJSGRwZEdnZ2RHaGxJSFJ2ZEdGc0lITjFjSEJzZVNCdlppQjBhR1VnUlZKRE1qQWdkRzlyWlc0dVhHNGdJQ0FxWEc0Z0lDQXFJRUIwYUhKdmQzTWdlMFZ5Y205eWZTQkpaaUIwYUdVZ2RISmhibk5oWTNScGIyNGdabUZwYkhNZ2IzSWdkR2hsSUdSbFkyOWthVzVuSUhCeWIyTmxjM01nWm1GcGJITXVYRzRnSUNBcUwxeHVJQ0JoYzNsdVl5QjBiM1JoYkZOMWNIQnNlU2hjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhRMjl1ZEdWNGRFOW1QRUUrUGx4dUlDQXBPaUJRY205dGFYTmxQRzUxYldKbGNqNGdlMXh1SUNBZ0lHTnZibk4wSUhzZ1kzUjRJSDBnUFNBb1lYZGhhWFFnZEdocGN5NXNiMmREZEhnb1lYSm5jeXdnWENKMGIzUmhiRk4xY0hCc2VWd2lMQ0IwY25WbEtTa3VabTl5S0Z4dUlDQWdJQ0FnZEdocGN5NTBiM1JoYkZOMWNIQnNlVnh1SUNBZ0lDazdYRzRnSUNBZ1kyOXVjM1FnZEc5MFlXd2dQU0JoZDJGcGRDQjBhR2x6TG1Ga1lYQjBaWEl1WlhaaGJIVmhkR1ZVY21GdWMyRmpkR2x2YmloamRIZ3NJRndpVkc5MFlXeFRkWEJ3YkhsY0lpazdYRzRnSUNBZ2NtVjBkWEp1SUU1MWJXSmxjaWgwYUdsekxtUmxZMjlrWlNoMGIzUmhiQ2twTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSEpwWlhabGN5QjBhR1VnWW1Gc1lXNWpaU0J2WmlCMGFHVWdSVkpETWpBZ2RHOXJaVzRnWm05eUlHRWdjM0JsWTJsbWFXVmtJRzkzYm1WeUxseHVJQ0FnS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI1Y2JpQWdJQ29nVkdocGN5Qm1kVzVqZEdsdmJpQnBiblJsY21GamRITWdkMmwwYUNCMGFHVWdZbXh2WTJ0amFHRnBiaUJ1WlhSM2IzSnJJSFJ2SUdabGRHTm9JSFJvWlNCaVlXeGhibU5sSUc5bUlIUm9aU0JGVWtNeU1DQjBiMnRsYmlCbWIzSWdZU0JuYVhabGJpQnZkMjVsY2k1Y2JpQWdJQ29nU1hRZ1kyRnNiSE1nZEdobElGd2lRbUZzWVc1alpVOW1YQ0lnZEhKaGJuTmhZM1JwYjI0Z2IyNGdkR2hsSUhOdFlYSjBJR052Ym5SeVlXTjBJSGRwZEdnZ2RHaGxJSEJ5YjNacFpHVmtJRzkzYm1WeUozTWdZV1JrY21WemN5QmhjeUJoSUhCaGNtRnRaWFJsY2k1Y2JpQWdJQ29nVkdobElISmxkSFZ5Ym1Wa0lHUmhkR0VnYVhNZ2RHaGxiaUJrWldOdlpHVmtJR0Z1WkNCamIyNTJaWEowWldRZ2RHOGdZU0J1ZFcxaVpYSXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0J2ZDI1bGNpQXRJRlJvWlNCaFpHUnlaWE56SUc5bUlIUm9aU0JGVWtNeU1DQjBiMnRsYmlCdmQyNWxjaTVjYmlBZ0lDcGNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ2UxQnliMjFwYzJVOGJuVnRZbVZ5UG4wZ1FTQndjbTl0YVhObElIUm9ZWFFnY21WemIyeDJaWE1nZDJsMGFDQjBhR1VnWW1Gc1lXNWpaU0J2WmlCMGFHVWdSVkpETWpBZ2RHOXJaVzRnWm05eUlIUm9aU0J6Y0dWamFXWnBaV1FnYjNkdVpYSXVYRzRnSUNBcVhHNGdJQ0FxSUVCMGFISnZkM01nZTBWeWNtOXlmU0JKWmlCMGFHVWdkSEpoYm5OaFkzUnBiMjRnWm1GcGJITWdiM0lnZEdobElHUmxZMjlrYVc1bklIQnliMk5sYzNNZ1ptRnBiSE11WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUJpWVd4aGJtTmxUMllvWEc0Z0lDQWdiM2R1WlhJNklITjBjbWx1Wnl4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJOWVhsaVpVTnZiblJsZUhSMVlXeEJjbWM4UTI5dWRHVjRkRTltUEVFK1BseHVJQ0FwT2lCUWNtOXRhWE5sUEc1MWJXSmxjajRnZTF4dUlDQWdJR052Ym5OMElIc2dZM1I0SUgwZ1BTQW9ZWGRoYVhRZ2RHaHBjeTVzYjJkRGRIZ29ZWEpuY3l3Z1hDSmlZV3hoYm1ObFhDSXNJSFJ5ZFdVcEtTNW1iM0lvWEc0Z0lDQWdJQ0IwYUdsekxtSmhiR0Z1WTJWUFpseHVJQ0FnSUNrN1hHNGdJQ0FnWTI5dWMzUWdZbUZzWVc1alpTQTlJR0YzWVdsMElIUm9hWE11WVdSaGNIUmxjaTVsZG1Gc2RXRjBaVlJ5WVc1ellXTjBhVzl1S0dOMGVDd2dYQ0pDWVd4aGJtTmxUMlpjSWl3Z1cxeHVJQ0FnSUNBZ2IzZHVaWElzWEc0Z0lDQWdYU2s3WEc0Z0lDQWdjbVYwZFhKdUlFNTFiV0psY2loMGFHbHpMbVJsWTI5a1pTaGlZV3hoYm1ObEtTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVkhKaGJuTm1aWEp6SUdFZ2MzQmxZMmxtYVdWa0lHRnRiM1Z1ZENCdlppQkZVa015TUNCMGIydGxibk1nZEc4Z1lTQnlaV05wY0dsbGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJseHVJQ0FnS2lCVWFHbHpJR1oxYm1OMGFXOXVJR2x1ZEdWeVlXTjBjeUIzYVhSb0lIUm9aU0JpYkc5amEyTm9ZV2x1SUc1bGRIZHZjbXNnZEc4Z2RISmhibk5tWlhJZ1lTQnpjR1ZqYVdacFpXUWdZVzF2ZFc1MElHOW1JRVZTUXpJd0lIUnZhMlZ1Y3lCMGJ5QmhJSEpsWTJsd2FXVnVkQzVjYmlBZ0lDb2dTWFFnWTJGc2JITWdkR2hsSUZ3aVZISmhibk5tWlhKY0lpQjBjbUZ1YzJGamRHbHZiaUJ2YmlCMGFHVWdjMjFoY25RZ1kyOXVkSEpoWTNRZ2QybDBhQ0IwYUdVZ2NtVmphWEJwWlc1MEozTWdZV1JrY21WemN5QmhibVFnZEdobElIUnlZVzV6Wm1WeUlHRnRiM1Z1ZENCaGN5QndZWEpoYldWMFpYSnpMbHh1SUNBZ0tpQlVhR1VnY21WMGRYSnVaV1FnWkdGMFlTQnBjeUIwYUdWdUlHUmxZMjlrWldRZ1lXNWtJR05vWldOclpXUWdkRzhnWkdWMFpYSnRhVzVsSUdsbUlIUm9aU0IwY21GdWMyWmxjaUIzWVhNZ2MzVmpZMlZ6YzJaMWJDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSFJ2SUMwZ1ZHaGxJR0ZrWkhKbGMzTWdiMllnZEdobElISmxZMmx3YVdWdWRDNWNiaUFnSUNvZ1FIQmhjbUZ0SUhaaGJIVmxJQzBnVkdobElHRnRiM1Z1ZENCdlppQkZVa015TUNCMGIydGxibk1nZEc4Z2RISmhibk5tWlhJdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ5WlhSMWNtNXpJSHRRY205dGFYTmxQR0p2YjJ4bFlXNCtmU0JCSUhCeWIyMXBjMlVnZEdoaGRDQnlaWE52YkhabGN5QjNhWFJvSUdCMGNuVmxZQ0JwWmlCMGFHVWdkSEpoYm5ObVpYSWdkMkZ6SUhOMVkyTmxjM05tZFd3c0lHRnVaQ0JnWm1Gc2MyVmdJRzkwYUdWeWQybHpaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIUm9jbTkzY3lCN1JYSnliM0o5SUVsbUlIUm9aU0IwY21GdWMyRmpkR2x2YmlCbVlXbHNjeUJ2Y2lCMGFHVWdaR1ZqYjJScGJtY2djSEp2WTJWemN5Qm1ZV2xzY3k1Y2JpQWdJQ292WEc0Z0lHRnplVzVqSUhSeVlXNXpabVZ5S0Z4dUlDQWdJSFJ2T2lCemRISnBibWNzWEc0Z0lDQWdkbUZzZFdVNklHNTFiV0psY2l4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJOWVhsaVpVTnZiblJsZUhSMVlXeEJjbWM4UTI5dWRHVjRkRTltUEVFK1BseHVJQ0FwT2lCUWNtOXRhWE5sUEdKdmIyeGxZVzQrSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR04wZUNCOUlEMGdLR0YzWVdsMElIUm9hWE11Ykc5blEzUjRLR0Z5WjNNc0lGd2lkSEpoYm5ObVpYSmNJaXdnZEhKMVpTa3BMbVp2Y2loY2JpQWdJQ0FnSUhSb2FYTXVkSEpoYm5ObVpYSmNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJSFJ5WVc1elptVnljbVZrSUQwZ1lYZGhhWFFnZEdocGN5NWhaR0Z3ZEdWeUxuTjFZbTFwZEZSeVlXNXpZV04wYVc5dUtHTjBlQ3dnWENKVWNtRnVjMlpsY2x3aUxDQmJYRzRnSUNBZ0lDQjBieXhjYmlBZ0lDQWdJSFpoYkhWbExuUnZVM1J5YVc1bktDa3NYRzRnSUNBZ1hTazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaR1ZqYjJSbEtIUnlZVzV6Wm1WeWNtVmtLU0E5UFQwZ1hDSjBjblZsWENJZ1B5QjBjblZsSURvZ1ptRnNjMlU3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1ZISmhibk5tWlhKeklHRWdjM0JsWTJsbWFXVmtJR0Z0YjNWdWRDQnZaaUJGVWtNeU1DQjBiMnRsYm5NZ1puSnZiU0J2Ym1VZ1lXTmpiM1Z1ZENCMGJ5QmhibTkwYUdWeUxseHVJQ0FnS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI1Y2JpQWdJQ29nVkdocGN5Qm1kVzVqZEdsdmJpQnBiblJsY21GamRITWdkMmwwYUNCMGFHVWdZbXh2WTJ0amFHRnBiaUJ1WlhSM2IzSnJJSFJ2SUhSeVlXNXpabVZ5SUdFZ2MzQmxZMmxtYVdWa0lHRnRiM1Z1ZENCdlppQkZVa015TUNCMGIydGxibk1nWm5KdmJTQnZibVVnWVdOamIzVnVkQ0IwYnlCaGJtOTBhR1Z5TGx4dUlDQWdLaUJHYjNJZ2RHaHBjeUIwY21GdWMyWmxjaUIwYnlCM2IzSnJJSFJvWlNCemNHVnVaR1Z5SUNnZ1lXTmpiM1Z1ZENCMGFHRjBJSGRwYkd3Z2RISnBaMmRsY2lCMGFHbHpJR1oxYm1OMGFXOXVJQ2tnYm1WbFpDQjBieUJvWVhabElIUm9aU0IyWVd4MVpTQmhjSEJ5YjNabFpDQmhjeUJoYmlCaGJHeHZkMkZ1WTJVZ1lua2dkR2hsSUhObGJtUmxjaTVjYmlBZ0lDb2dTWFFnWTJGc2JITWdkR2hsSUZ3aVZISmhibk5tWlhKR2NtOXRYQ0lnZEhKaGJuTmhZM1JwYjI0Z2IyNGdkR2hsSUhOdFlYSjBJR052Ym5SeVlXTjBJSGRwZEdnZ2RHaGxJSE5sYm1SbGNpZHpJR0ZrWkhKbGMzTXNJSEpsWTJsd2FXVnVkQ2R6SUdGa1pISmxjM01zSUdGdVpDQjBhR1VnZEhKaGJuTm1aWElnWVcxdmRXNTBJR0Z6SUhCaGNtRnRaWFJsY25NdVhHNGdJQ0FxSUZSb1pTQnlaWFIxY201bFpDQmtZWFJoSUdseklIUm9aVzRnWkdWamIyUmxaQ0JoYm1RZ1kyaGxZMnRsWkNCMGJ5QmtaWFJsY20xcGJtVWdhV1lnZEdobElIUnlZVzV6Wm1WeUlIZGhjeUJ6ZFdOalpYTnpablZzTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1puSnZiU0F0SUZSb1pTQmhaR1J5WlhOeklHOW1JSFJvWlNCelpXNWtaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjBieUF0SUZSb1pTQmhaR1J5WlhOeklHOW1JSFJvWlNCeVpXTnBjR2xsYm5RdVhHNGdJQ0FxSUVCd1lYSmhiU0IyWVd4MVpTQXRJRlJvWlNCaGJXOTFiblFnYjJZZ1JWSkRNakFnZEc5clpXNXpJSFJ2SUhSeVlXNXpabVZ5TGx4dUlDQWdLbHh1SUNBZ0tpQkFjbVYwZFhKdWN5QjdVSEp2YldselpUeGliMjlzWldGdVBuMGdRU0J3Y205dGFYTmxJSFJvWVhRZ2NtVnpiMngyWlhNZ2QybDBhQ0JnZEhKMVpXQWdhV1lnZEdobElIUnlZVzV6Wm1WeUlIZGhjeUJ6ZFdOalpYTnpablZzTENCaGJtUWdZR1poYkhObFlDQnZkR2hsY25kcGMyVXVYRzRnSUNBcVhHNGdJQ0FxSUVCMGFISnZkM01nZTBWeWNtOXlmU0JKWmlCMGFHVWdkSEpoYm5OaFkzUnBiMjRnWm1GcGJITWdiM0lnZEdobElHUmxZMjlrYVc1bklIQnliMk5sYzNNZ1ptRnBiSE11WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUIwY21GdWMyWmxja1p5YjIwb1hHNGdJQ0FnWm5KdmJUb2djM1J5YVc1bkxGeHVJQ0FnSUhSdk9pQnpkSEpwYm1jc1hHNGdJQ0FnZG1Gc2RXVTZJRzUxYldKbGNseHVJQ0FwT2lCUWNtOXRhWE5sUEdKdmIyeGxZVzQrSUh0Y2JpQWdJQ0JqYjI1emRDQmpiMjUwWlhoMFFYSm5jeUE5SUdGM1lXbDBJRU52Ym5SbGVIUXVZWEpuY3loY2JpQWdJQ0FnSUZ3aWRISmhibk5tWlhKR2NtOXRYQ0lzWEc0Z0lDQWdJQ0IwYUdsekxtTnNZWE56TEZ4dUlDQWdJQ0FnVzEwc1hHNGdJQ0FnSUNCMGFHbHpMbUZrWVhCMFpYSXNYRzRnSUNBZ0lDQjBhR2x6TGw5dmRtVnljbWxrWlhNZ2ZId2dlMzFjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUhzZ1kzUjRJSDBnUFNCMGFHbHpMbXh2WjBOMGVDaGpiMjUwWlhoMFFYSm5jeTVoY21kekxDQjBhR2x6TG5SeVlXNXpabVZ5Um5KdmJTazdYRzRnSUNBZ1kyOXVjM1FnZEhKaGJuTm1aWEp5WldRZ1BTQmhkMkZwZENCMGFHbHpMbUZrWVhCMFpYSXVjM1ZpYldsMFZISmhibk5oWTNScGIyNG9YRzRnSUNBZ0lDQmpkSGdzWEc0Z0lDQWdJQ0JjSWxSeVlXNXpabVZ5Um5KdmJWd2lMRnh1SUNBZ0lDQWdXMlp5YjIwc0lIUnZMQ0IyWVd4MVpTNTBiMU4wY21sdVp5Z3BYVnh1SUNBZ0lDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVrWldOdlpHVW9kSEpoYm5ObVpYSnlaV1FwSUQwOVBTQmNJblJ5ZFdWY0lpQS9JSFJ5ZFdVZ09pQm1ZV3h6WlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJjSEJ5YjNabGN5QmhJSE53WldOcFptbGxaQ0JoYlc5MWJuUWdiMllnUlZKRE1qQWdkRzlyWlc1eklIUnZJR0psSUhOd1pXNTBJR0o1SUdFZ2MzQmxZMmxtYVdWa0lITndaVzVrWlhJdVhHNGdJQ0FxWEc0Z0lDQXFJRlJvYVhNZ1puVnVZM1JwYjI0Z2FXNTBaWEpoWTNSeklIZHBkR2dnZEdobElHSnNiMk5yWTJoaGFXNGdibVYwZDI5eWF5QjBieUJoY0hCeWIzWmxJR0VnYzNCbFkybG1hV1ZrSUdGdGIzVnVkQ0J2WmlCRlVrTXlNQ0IwYjJ0bGJuTWdkRzhnWW1VZ2MzQmxiblFnWW5rZ1lTQnpjR1ZqYVdacFpXUWdjM0JsYm1SbGNpNWNiaUFnSUNvZ1NYUWdZMkZzYkhNZ2RHaGxJRndpUVhCd2NtOTJaVndpSUhSeVlXNXpZV04wYVc5dUlHOXVJSFJvWlNCemJXRnlkQ0JqYjI1MGNtRmpkQ0IzYVhSb0lIUm9aU0J6Y0dWdVpHVnlKM01nWVdSa2NtVnpjeUJoYm1RZ2RHaGxJR0Z3Y0hKdmRtRnNJR0Z0YjNWdWRDQmhjeUJ3WVhKaGJXVjBaWEp6TGx4dUlDQWdLaUJVYUdVZ2NtVjBkWEp1WldRZ1pHRjBZU0JwY3lCMGFHVnVJR1JsWTI5a1pXUWdZVzVrSUdOb1pXTnJaV1FnZEc4Z1pHVjBaWEp0YVc1bElHbG1JSFJvWlNCaGNIQnliM1poYkNCM1lYTWdjM1ZqWTJWemMyWjFiQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhOd1pXNWtaWElnTFNCVWFHVWdZV1JrY21WemN5QnZaaUIwYUdVZ2MzQmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSFpoYkhWbElDMGdWR2hsSUdGdGIzVnVkQ0J2WmlCRlVrTXlNQ0IwYjJ0bGJuTWdkRzhnWVhCd2NtOTJaU0JtYjNJZ2RHaGxJSE53Wlc1a1pYSXVYRzRnSUNBcVhHNGdJQ0FxSUVCeVpYUjFjbTV6SUh0UWNtOXRhWE5sUEdKdmIyeGxZVzQrZlNCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYVhSb0lHQjBjblZsWUNCcFppQjBhR1VnWVhCd2NtOTJZV3dnZDJGeklITjFZMk5sYzNObWRXd3NJR0Z1WkNCZ1ptRnNjMlZnSUc5MGFHVnlkMmx6WlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSFJvY205M2N5QjdSWEp5YjNKOUlFbG1JSFJvWlNCMGNtRnVjMkZqZEdsdmJpQm1ZV2xzY3lCdmNpQjBhR1VnWkdWamIyUnBibWNnY0hKdlkyVnpjeUJtWVdsc2N5NWNiaUFnSUNvdlhHNGdJR0Z6ZVc1aklHRndjSEp2ZG1Vb2MzQmxibVJsY2pvZ2MzUnlhVzVuTENCMllXeDFaVG9nYm5WdFltVnlLVG9nVUhKdmJXbHpaVHhpYjI5c1pXRnVQaUI3WEc0Z0lDQWdZMjl1YzNRZ1kyOXVkR1Y0ZEVGeVozTWdQU0JoZDJGcGRDQkRiMjUwWlhoMExtRnlaM01vWEc0Z0lDQWdJQ0JjSW1Gd2NISnZkbVZjSWl4Y2JpQWdJQ0FnSUhSb2FYTXVZMnhoYzNNc1hHNGdJQ0FnSUNCYlhTeGNiaUFnSUNBZ0lIUm9hWE11WVdSaGNIUmxjaXhjYmlBZ0lDQWdJSFJvYVhNdVgyOTJaWEp5YVdSbGN5QjhmQ0I3ZlZ4dUlDQWdJQ2s3WEc0Z0lDQWdZMjl1YzNRZ2V5QmpkSGdnZlNBOUlIUm9hWE11Ykc5blEzUjRLR052Ym5SbGVIUkJjbWR6TG1GeVozTXNJSFJvYVhNdVlYQndjbTkyWlNrN1hHNGdJQ0FnWTI5dWMzUWdZWEJ3Y205MlpXUWdQU0JoZDJGcGRDQjBhR2x6TG1Ga1lYQjBaWEl1YzNWaWJXbDBWSEpoYm5OaFkzUnBiMjRvWTNSNExDQmNJa0Z3Y0hKdmRtVmNJaXdnVzF4dUlDQWdJQ0FnYzNCbGJtUmxjaXhjYmlBZ0lDQWdJSFpoYkhWbExuUnZVM1J5YVc1bktDa3NYRzRnSUNBZ1hTazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaR1ZqYjJSbEtHRndjSEp2ZG1Wa0tTQTlQVDBnWENKMGNuVmxYQ0lnUHlCMGNuVmxJRG9nWm1Gc2MyVTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGNtbGxkbVZ6SUhSb1pTQmhiR3h2ZDJGdVkyVWdiMllnUlZKRE1qQWdkRzlyWlc1eklIUm9ZWFFnZEdobElITndaV05wWm1sbFpDQnZkMjVsY2lCb1lYTWdZWEJ3Y205MlpXUWdabTl5SUdFZ2MzQmxibVJsY2k1Y2JpQWdJQ3BjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1WEc0Z0lDQXFJRlJvYVhNZ1puVnVZM1JwYjI0Z2FXNTBaWEpoWTNSeklIZHBkR2dnZEdobElHSnNiMk5yWTJoaGFXNGdibVYwZDI5eWF5QjBieUJtWlhSamFDQjBhR1VnWVd4c2IzZGhibU5sSUc5bUlFVlNRekl3SUhSdmEyVnVjeUIwYUdGMElIUm9aU0J6Y0dWamFXWnBaV1FnYjNkdVpYSWdhR0Z6SUdGd2NISnZkbVZrSUdadmNpQmhJSE53Wlc1a1pYSXVYRzRnSUNBcUlFbDBJR05oYkd4eklIUm9aU0JjSWtGc2JHOTNZVzVqWlZ3aUlIUnlZVzV6WVdOMGFXOXVJRzl1SUhSb1pTQnpiV0Z5ZENCamIyNTBjbUZqZENCM2FYUm9JSFJvWlNCdmQyNWxjaWR6SUdGa1pISmxjM01nWVc1a0lIUm9aU0J6Y0dWdVpHVnlKM01nWVdSa2NtVnpjeUJoY3lCd1lYSmhiV1YwWlhKekxseHVJQ0FnS2lCVWFHVWdjbVYwZFhKdVpXUWdaR0YwWVNCcGN5QjBhR1Z1SUdSbFkyOWtaV1FnWVc1a0lHTnZiblpsY25SbFpDQjBieUJoSUc1MWJXSmxjaTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUc5M2JtVnlJQzBnVkdobElHRmtaSEpsYzNNZ2IyWWdkR2hsSUVWU1F6SXdJSFJ2YTJWdUlHOTNibVZ5TGx4dUlDQWdLaUJBY0dGeVlXMGdjM0JsYm1SbGNpQXRJRlJvWlNCaFpHUnlaWE56SUc5bUlIUm9aU0J6Y0dWdVpHVnlMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVjBkWEp1Y3lCN1VISnZiV2x6WlR4dWRXMWlaWEkrZlNCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYVhSb0lIUm9aU0JoYkd4dmQyRnVZMlVnYjJZZ1JWSkRNakFnZEc5clpXNXpJSFJvWVhRZ2RHaGxJSE53WldOcFptbGxaQ0J2ZDI1bGNpQm9ZWE1nWVhCd2NtOTJaV1FnWm05eUlIUm9aU0J6Y0dWdVpHVnlMbHh1SUNBZ0tseHVJQ0FnS2lCQWRHaHliM2R6SUh0RmNuSnZjbjBnU1dZZ2RHaGxJSFJ5WVc1ellXTjBhVzl1SUdaaGFXeHpJRzl5SUhSb1pTQmtaV052WkdsdVp5QndjbTlqWlhOeklHWmhhV3h6TGx4dUlDQWdLaTljYmlBZ1lYTjVibU1nWVd4c2IzZGhibU5sS0c5M2JtVnlPaUJ6ZEhKcGJtY3NJSE53Wlc1a1pYSTZJSE4wY21sdVp5azZJRkJ5YjIxcGMyVThiblZ0WW1WeVBpQjdYRzRnSUNBZ1kyOXVjM1FnWTI5dWRHVjRkRUZ5WjNNZ1BTQmhkMkZwZENCRGIyNTBaWGgwTG1GeVozTW9YRzRnSUNBZ0lDQmNJbUZzYkc5M1lXNWpaVndpTEZ4dUlDQWdJQ0FnZEdocGN5NWpiR0Z6Y3l4Y2JpQWdJQ0FnSUZ0ZExGeHVJQ0FnSUNBZ2RHaHBjeTVoWkdGd2RHVnlMRnh1SUNBZ0lDQWdkR2hwY3k1ZmIzWmxjbkpwWkdWeklIeDhJSHQ5WEc0Z0lDQWdLVHRjYmlBZ0lDQmpiMjV6ZENCN0lHTjBlQ0I5SUQwZ2RHaHBjeTVzYjJkRGRIZ29ZMjl1ZEdWNGRFRnlaM011WVhKbmN5d2dkR2hwY3k1aGJHeHZkMkZ1WTJVcE8xeHVJQ0FnSUdOdmJuTjBJR0ZzYkc5M1lXNWpaU0E5SUdGM1lXbDBJSFJvYVhNdVlXUmhjSFJsY2k1emRXSnRhWFJVY21GdWMyRmpkR2x2YmloamRIZ3NJRndpUVd4c2IzZGhibU5sWENJc0lGdGNiaUFnSUNBZ0lHOTNibVZ5TEZ4dUlDQWdJQ0FnYzNCbGJtUmxjaXhjYmlBZ0lDQmRLVHRjYmlBZ0lDQnlaWFIxY200Z1RuVnRZbVZ5S0hSb2FYTXVaR1ZqYjJSbEtHRnNiRzkzWVc1alpTa3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsdWFYUnBZV3hwZW1WeklIUm9aU0JGVWtNeU1DQmpiMjUwY21GamRDQjNhWFJvSUhSb1pTQndjbTkyYVdSbFpDQjBiMnRsYmlCcGJtWnZjbTFoZEdsdmJpNWNiaUFnSUNwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdJQ0FxSUZSb2FYTWdablZ1WTNScGIyNGdhVzUwWlhKaFkzUnpJSGRwZEdnZ2RHaGxJR0pzYjJOclkyaGhhVzRnYm1WMGQyOXlheUIwYnlCcGJtbDBhV0ZzYVhwbElIUm9aU0JGVWtNeU1DQmpiMjUwY21GamRDQjNhWFJvSUhSb1pTQm5hWFpsYmlCMGIydGxiaUJwYm1admNtMWhkR2x2Ymk1Y2JpQWdJQ29nU1hRZ1kyRnNiSE1nZEdobElGd2lTVzVwZEdsaGJHbDZaVndpSUhSeVlXNXpZV04wYVc5dUlHOXVJSFJvWlNCemJXRnlkQ0JqYjI1MGNtRmpkQ0IzYVhSb0lIUm9aU0J6WlhKcFlXeHBlbVZrSUhSdmEyVnVJR1JoZEdFZ1lYTWdZU0J3WVhKaGJXVjBaWEl1WEc0Z0lDQXFJRlJvWlNCeVpYUjFjbTVsWkNCa1lYUmhJR2x6SUhSb1pXNGdaR1ZqYjJSbFpDQmhibVFnWTJobFkydGxaQ0IwYnlCa1pYUmxjbTFwYm1VZ2FXWWdkR2hsSUdsdWFYUnBZV3hwZW1GMGFXOXVJSGRoY3lCemRXTmpaWE56Wm5Wc0xseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdkRzlyWlc0Z0xTQlVhR1VnUlZKRE1qQWdkRzlyWlc0Z2FXNW1iM0p0WVhScGIyNGdkRzhnYVc1cGRHbGhiR2w2WlNCMGFHVWdZMjl1ZEhKaFkzUWdkMmwwYUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEpsZEhWeWJuTWdlMUJ5YjIxcGMyVThZbTl2YkdWaGJqNTlJRUVnY0hKdmJXbHpaU0IwYUdGMElISmxjMjlzZG1WeklIZHBkR2dnWUhSeWRXVmdJR2xtSUhSb1pTQnBibWwwYVdGc2FYcGhkR2x2YmlCM1lYTWdjM1ZqWTJWemMyWjFiQ3dnWVc1a0lHQm1ZV3h6WldBZ2IzUm9aWEozYVhObExseHVJQ0FnS2x4dUlDQWdLaUJBZEdoeWIzZHpJSHRGY25KdmNuMGdTV1lnZEdobElIUnlZVzV6WVdOMGFXOXVJR1poYVd4eklHOXlJSFJvWlNCa1pXTnZaR2x1WnlCd2NtOWpaWE56SUdaaGFXeHpMbHh1SUNBZ0tpOWNiaUFnWVhONWJtTWdhVzVwZEdsaGJHbDZaU2gwYjJ0bGJqb2dSVkpETWpCVWIydGxiaWs2SUZCeWIyMXBjMlU4WW05dmJHVmhiajRnZTF4dUlDQWdJR052Ym5OMElHTnZiblJsZUhSQmNtZHpJRDBnWVhkaGFYUWdRMjl1ZEdWNGRDNWhjbWR6S0Z4dUlDQWdJQ0FnWENKcGJtbDBhV0ZzYVhwbFhDSXNYRzRnSUNBZ0lDQjBhR2x6TG1Oc1lYTnpMRnh1SUNBZ0lDQWdXMTBzWEc0Z0lDQWdJQ0IwYUdsekxtRmtZWEIwWlhJc1hHNGdJQ0FnSUNCMGFHbHpMbDl2ZG1WeWNtbGtaWE1nZkh3Z2UzMWNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJSHNnWTNSNElIMGdQU0IwYUdsekxteHZaME4wZUNoamIyNTBaWGgwUVhKbmN5NWhjbWR6TENCMGFHbHpMbWx1YVhScFlXeHBlbVVwTzF4dUlDQWdJR052Ym5OMElHbHVhWFJwYkdsaGVtVmtJRDBnWVhkaGFYUWdkR2hwY3k1aFpHRndkR1Z5TG5OMVltMXBkRlJ5WVc1ellXTjBhVzl1S0Z4dUlDQWdJQ0FnWTNSNExGeHVJQ0FnSUNBZ1hDSkpibWwwYVdGc2FYcGxYQ0lzWEc0Z0lDQWdJQ0JiUm1GaWNtbGpSVkpETWpCRGJHbGxiblJTWlhCdmMybDBiM0o1TG5ObGNtbGhiR2w2WlhJdWMyVnlhV0ZzYVhwbEtIUnZhMlZ1S1YxY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVpHVmpiMlJsS0dsdWFYUnBiR2xoZW1Wa0tTQTlQVDBnWENKMGNuVmxYQ0lnUHlCMGNuVmxJRG9nWm1Gc2MyVTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTJobFkydHpJR2xtSUhSb1pTQkZVa015TUNCamIyNTBjbUZqZENCb1lYTWdZbVZsYmlCcGJtbDBhV0ZzYVhwbFpDNWNiaUFnSUNwY2JpQWdJQ29nVkdocGN5Qm1kVzVqZEdsdmJpQnBiblJsY21GamRITWdkMmwwYUNCMGFHVWdZbXh2WTJ0amFHRnBiaUJ1WlhSM2IzSnJJSFJ2SUhabGNtbG1lU0JwWmlCMGFHVWdSVkpETWpBZ1kyOXVkSEpoWTNRZ2FHRnpJR0psWlc0Z2FXNXBkR2xoYkdsNlpXUXVYRzRnSUNBcUlFbDBJR05oYkd4eklIUm9aU0JjSWtOb1pXTnJTVzVwZEdsaGJHbDZaV1JjSWlCMGNtRnVjMkZqZEdsdmJpQnZiaUIwYUdVZ2MyMWhjblFnWTI5dWRISmhZM1FzSUhkb2FXTm9JR1J2WlhNZ2JtOTBJSEpsY1hWcGNtVWdZVzU1SUhCaGNtRnRaWFJsY25NdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ5WlhSMWNtNXpJSHRRY205dGFYTmxQSFp2YVdRK2ZTQkJJSEJ5YjIxcGMyVWdkR2hoZENCeVpYTnZiSFpsY3lCM2FHVnVJSFJvWlNCcGJtbDBhV0ZzYVhwaGRHbHZiaUJqYUdWamF5QnBjeUJqYjIxd2JHVjBaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFQjBhSEp2ZDNNZ2UwVnljbTl5ZlNCSlppQjBhR1VnZEhKaGJuTmhZM1JwYjI0Z1ptRnBiSE11WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUJqYUdWamEwbHVhWFJwWVd4cGVtVmtLQ2s2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lHTnZibk4wSUdOdmJuUmxlSFJCY21keklEMGdZWGRoYVhRZ1EyOXVkR1Y0ZEM1aGNtZHpLRnh1SUNBZ0lDQWdYQ0pqYUdWamEwbHVhWFJwWVd4cGVtVmtYQ0lzWEc0Z0lDQWdJQ0IwYUdsekxtTnNZWE56TEZ4dUlDQWdJQ0FnVzEwc1hHNGdJQ0FnSUNCMGFHbHpMbUZrWVhCMFpYSXNYRzRnSUNBZ0lDQjBhR2x6TGw5dmRtVnljbWxrWlhNZ2ZId2dlMzFjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUhzZ1kzUjRJSDBnUFNCMGFHbHpMbXh2WjBOMGVDaGpiMjUwWlhoMFFYSm5jeTVoY21kekxDQjBhR2x6TG1Ob1pXTnJTVzVwZEdsaGJHbDZaV1FwTzF4dUlDQWdJR0YzWVdsMElIUm9hWE11WVdSaGNIUmxjaTVsZG1Gc2RXRjBaVlJ5WVc1ellXTjBhVzl1S0dOMGVDd2dYQ0pEYUdWamEwbHVhWFJwWVd4cGVtVmtYQ0lwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFMXBiblJ6SUdFZ2MzQmxZMmxtYVdWa0lHRnRiM1Z1ZENCdlppQkZVa015TUNCMGIydGxibk11WEc0Z0lDQXFYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZibHh1SUNBZ0tpQlVhR2x6SUdaMWJtTjBhVzl1SUdsdWRHVnlZV04wY3lCM2FYUm9JSFJvWlNCaWJHOWphMk5vWVdsdUlHNWxkSGR2Y21zZ2RHOGdiV2x1ZENCaElITndaV05wWm1sbFpDQmhiVzkxYm5RZ2IyWWdSVkpETWpBZ2RHOXJaVzV6TGx4dUlDQWdLaUJKZENCallXeHNjeUIwYUdVZ1hDSk5hVzUwWENJZ2RISmhibk5oWTNScGIyNGdiMjRnZEdobElITnRZWEowSUdOdmJuUnlZV04wSUhkcGRHZ2dkR2hsSUcxcGJuUnBibWNnWVcxdmRXNTBJR0Z6SUdFZ2NHRnlZVzFsZEdWeUxseHVJQ0FnS2lCVWFHVWdablZ1WTNScGIyNGdaRzlsY3lCdWIzUWdjbVYwZFhKdUlHRnVlU0IyWVd4MVpTd2dZblYwSUdsMElIVndaR0YwWlhNZ2RHaGxJRzFwYm5SbGNpZHpJRzUxYldKbGNpQnZaaUIwYjJ0bGJuTXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JoYlc5MWJuUWdMU0JVYUdVZ1lXMXZkVzUwSUc5bUlFVlNRekl3SUhSdmEyVnVjeUIwYnlCdGFXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVjBkWEp1Y3lCN1VISnZiV2x6WlR4MmIybGtQbjBnUVNCd2NtOXRhWE5sSUhSb1lYUWdjbVZ6YjJ4MlpYTWdkMmhsYmlCMGFHVWdiV2x1ZEdsdVp5QndjbTlqWlhOeklHbHpJR052YlhCc1pYUmxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIUm9jbTkzY3lCN1JYSnliM0o5SUVsbUlIUm9aU0IwY21GdWMyRmpkR2x2YmlCbVlXbHNjeTVjYmlBZ0lDb3ZYRzRnSUdGemVXNWpJRzFwYm5Rb1lXMXZkVzUwT2lCdWRXMWlaWElwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQmpiMjV6ZENCamIyNTBaWGgwUVhKbmN5QTlJR0YzWVdsMElFTnZiblJsZUhRdVlYSm5jeWhjYmlBZ0lDQWdJRndpYldsdWRGd2lMRnh1SUNBZ0lDQWdkR2hwY3k1amJHRnpjeXhjYmlBZ0lDQWdJRnRkTEZ4dUlDQWdJQ0FnZEdocGN5NWhaR0Z3ZEdWeUxGeHVJQ0FnSUNBZ2RHaHBjeTVmYjNabGNuSnBaR1Z6SUh4OElIdDlYRzRnSUNBZ0tUdGNiaUFnSUNCamIyNXpkQ0I3SUdOMGVDQjlJRDBnZEdocGN5NXNiMmREZEhnb1kyOXVkR1Y0ZEVGeVozTXVZWEpuY3l3Z2RHaHBjeTV0YVc1MEtUdGNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtRmtZWEIwWlhJdWMzVmliV2wwVkhKaGJuTmhZM1JwYjI0b1kzUjRMQ0JjSWsxcGJuUmNJaXdnVzJGdGIzVnVkQzUwYjFOMGNtbHVaeWdwWFNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRblZ5Ym5NZ1lTQnpjR1ZqYVdacFpXUWdZVzF2ZFc1MElHOW1JRVZTUXpJd0lIUnZhMlZ1Y3lCbWNtOXRJSFJvWlNCdGFXNTBaWEluY3lCaFkyTnZkVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQlVhR2x6SUdaMWJtTjBhVzl1SUdsdWRHVnlZV04wY3lCM2FYUm9JSFJvWlNCaWJHOWphMk5vWVdsdUlHNWxkSGR2Y21zZ2RHOGdZblZ5YmlCaElITndaV05wWm1sbFpDQmhiVzkxYm5RZ2IyWWdSVkpETWpBZ2RHOXJaVzV6TGx4dUlDQWdLaUJKZENCallXeHNjeUIwYUdVZ1hDSkNkWEp1WENJZ2RISmhibk5oWTNScGIyNGdiMjRnZEdobElITnRZWEowSUdOdmJuUnlZV04wSUhkcGRHZ2dkR2hsSUdKMWNtNXBibWNnWVcxdmRXNTBJR0Z6SUdFZ2NHRnlZVzFsZEdWeUxseHVJQ0FnS2lCVWFHVWdablZ1WTNScGIyNGdaRzlsY3lCdWIzUWdjbVYwZFhKdUlHRnVlU0IyWVd4MVpTd2dZblYwSUdsMElHUmxZM0psWVhObGN5QjBhR1VnYldsdWRHVnlKM01nYm5WdFltVnlJRzltSUhSdmEyVnVjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUdGdGIzVnVkQ0F0SUZSb1pTQmhiVzkxYm5RZ2IyWWdSVkpETWpBZ2RHOXJaVzV6SUhSdklHSjFjbTR1WEc0Z0lDQXFYRzRnSUNBcUlFQnlaWFIxY201eklIdFFjbTl0YVhObFBIWnZhV1ErZlNCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYUdWdUlIUm9aU0JpZFhKdWFXNW5JSEJ5YjJObGMzTWdhWE1nWTI5dGNHeGxkR1ZrTGx4dUlDQWdLbHh1SUNBZ0tpQkFkR2h5YjNkeklIdEZjbkp2Y24wZ1NXWWdkR2hsSUhSeVlXNXpZV04wYVc5dUlHWmhhV3h6TGx4dUlDQWdLaTljYmlBZ1lYTjVibU1nWW5WeWJpaGhiVzkxYm5RNklHNTFiV0psY2lrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR052Ym5OMElHTnZiblJsZUhSQmNtZHpJRDBnWVhkaGFYUWdRMjl1ZEdWNGRDNWhjbWR6S0Z4dUlDQWdJQ0FnWENKaWRYSnVYQ0lzWEc0Z0lDQWdJQ0IwYUdsekxtTnNZWE56TEZ4dUlDQWdJQ0FnVzEwc1hHNGdJQ0FnSUNCMGFHbHpMbUZrWVhCMFpYSXNYRzRnSUNBZ0lDQjBhR2x6TGw5dmRtVnljbWxrWlhNZ2ZId2dlMzFjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUhzZ1kzUjRJSDBnUFNCMGFHbHpMbXh2WjBOMGVDaGpiMjUwWlhoMFFYSm5jeTVoY21kekxDQjBhR2x6TG1KMWNtNHBPMXh1SUNBZ0lHRjNZV2wwSUhSb2FYTXVZV1JoY0hSbGNpNXpkV0p0YVhSVWNtRnVjMkZqZEdsdmJpaGpkSGdzSUZ3aVFuVnlibHdpTENCYllXMXZkVzUwTG5SdlUzUnlhVzVuS0NsZEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJDZFhKdWN5QmhJSE53WldOcFptbGxaQ0JoYlc5MWJuUWdiMllnUlZKRE1qQWdkRzlyWlc1eklHWnliMjBnWVNCemNHVmphV1pwWldRZ1lXTmpiM1Z1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dWR2hwY3lCbWRXNWpkR2x2YmlCcGJuUmxjbUZqZEhNZ2QybDBhQ0IwYUdVZ1lteHZZMnRqYUdGcGJpQnVaWFIzYjNKcklIUnZJR0oxY200Z1lTQnpjR1ZqYVdacFpXUWdZVzF2ZFc1MElHOW1JRVZTUXpJd0lIUnZhMlZ1Y3lCbWNtOXRJR0VnWjJsMlpXNGdZV05qYjNWdWRDNWNiaUFnSUNvZ1NYUWdZMkZzYkhNZ2RHaGxJRndpUW5WeWJrWnliMjFjSWlCMGNtRnVjMkZqZEdsdmJpQnZiaUIwYUdVZ2MyMWhjblFnWTI5dWRISmhZM1FnZDJsMGFDQjBhR1VnWVdOamIzVnVkQ2R6SUdGa1pISmxjM01nWVc1a0lIUm9aU0JpZFhKdWFXNW5JR0Z0YjNWdWRDQmhjeUJ3WVhKaGJXVjBaWEp6TGx4dUlDQWdLaUJVYUdVZ1puVnVZM1JwYjI0Z1pHOWxjeUJ1YjNRZ2NtVjBkWEp1SUdGdWVTQjJZV3gxWlN3Z1luVjBJR2wwSUdSbFkzSmxZWE5sY3lCMGFHVWdjM0JsWTJsbWFXVmtJR0ZqWTI5MWJuUW5jeUJ1ZFcxaVpYSWdiMllnZEc5clpXNXpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnWVdOamIzVnVkQ0F0SUZSb1pTQmhaR1J5WlhOeklHOW1JSFJvWlNCaFkyTnZkVzUwSUdaeWIyMGdkMmhwWTJnZ2RHOGdZblZ5YmlCMGFHVWdSVkpETWpBZ2RHOXJaVzV6TGx4dUlDQWdLaUJBY0dGeVlXMGdZVzF2ZFc1MElDMGdWR2hsSUdGdGIzVnVkQ0J2WmlCRlVrTXlNQ0IwYjJ0bGJuTWdkRzhnWW5WeWJpNWNiaUFnSUNwY2JpQWdJQ29nUUhKbGRIVnlibk1nZTFCeWIyMXBjMlU4ZG05cFpENTlJRUVnY0hKdmJXbHpaU0IwYUdGMElISmxjMjlzZG1WeklIZG9aVzRnZEdobElHSjFjbTVwYm1jZ2NISnZZMlZ6Y3lCcGN5QmpiMjF3YkdWMFpXUXVYRzRnSUNBcVhHNGdJQ0FxSUVCMGFISnZkM01nZTBWeWNtOXlmU0JKWmlCMGFHVWdkSEpoYm5OaFkzUnBiMjRnWm1GcGJITXVYRzRnSUNBcUwxeHVJQ0JoYzNsdVl5QmlkWEp1Um5KdmJTaGhZMk52ZFc1ME9pQnpkSEpwYm1jc0lHRnRiM1Z1ZERvZ2JuVnRZbVZ5S1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lDQWdZMjl1YzNRZ1kyOXVkR1Y0ZEVGeVozTWdQU0JoZDJGcGRDQkRiMjUwWlhoMExtRnlaM01vWEc0Z0lDQWdJQ0JjSW1KMWNtNUdjbTl0WENJc1hHNGdJQ0FnSUNCMGFHbHpMbU5zWVhOekxGeHVJQ0FnSUNBZ1cxMHNYRzRnSUNBZ0lDQjBhR2x6TG1Ga1lYQjBaWElzWEc0Z0lDQWdJQ0IwYUdsekxsOXZkbVZ5Y21sa1pYTWdmSHdnZTMxY2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElIc2dZM1I0SUgwZ1BTQjBhR2x6TG14dlowTjBlQ2hqYjI1MFpYaDBRWEpuY3k1aGNtZHpMQ0IwYUdsekxtSjFjbTVHY205dEtUdGNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtRmtZWEIwWlhJdWMzVmliV2wwVkhKaGJuTmhZM1JwYjI0b1kzUjRMQ0JjSWtKMWNtNUdjbTl0WENJc0lGdGNiaUFnSUNBZ0lHRmpZMjkxYm5Rc1hHNGdJQ0FnSUNCaGJXOTFiblF1ZEc5VGRISnBibWNvS1N4Y2JpQWdJQ0JkS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFJ5YVdWMlpYTWdkR2hsSUdKaGJHRnVZMlVnYjJZZ1JWSkRNakFnZEc5clpXNXpJR0Z6YzI5amFXRjBaV1FnZDJsMGFDQjBhR1VnWTJ4cFpXNTBKM01nWVdOamIzVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1ZHaHBjeUJtZFc1amRHbHZiaUJwYm5SbGNtRmpkSE1nZDJsMGFDQjBhR1VnWW14dlkydGphR0ZwYmlCdVpYUjNiM0pySUhSdklHWmxkR05vSUhSb1pTQmlZV3hoYm1ObElHOW1JRVZTUXpJd0lIUnZhMlZ1Y3lCaGMzTnZZMmxoZEdWa0lIZHBkR2dnZEdobElHTnNhV1Z1ZENkeklHRmpZMjkxYm5RdVhHNGdJQ0FxSUVsMElHTmhiR3h6SUhSb1pTQmNJa05zYVdWdWRFRmpZMjkxYm5SQ1lXeGhibU5sWENJZ2RISmhibk5oWTNScGIyNGdiMjRnZEdobElITnRZWEowSUdOdmJuUnlZV04wTENCM2FHbGphQ0JrYjJWeklHNXZkQ0J5WlhGMWFYSmxJR0Z1ZVNCd1lYSmhiV1YwWlhKekxseHVJQ0FnS2lCVWFHVWdjbVYwZFhKdVpXUWdaR0YwWVNCcGN5QjBhR1Z1SUdSbFkyOWtaV1FnWVc1a0lHTnZiblpsY25SbFpDQjBieUJoSUc1MWJXSmxjaTVjYmlBZ0lDcGNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ2UxQnliMjFwYzJVOGJuVnRZbVZ5UG4wZ1FTQndjbTl0YVhObElIUm9ZWFFnY21WemIyeDJaWE1nZDJsMGFDQjBhR1VnWW1Gc1lXNWpaU0J2WmlCRlVrTXlNQ0IwYjJ0bGJuTWdZWE56YjJOcFlYUmxaQ0IzYVhSb0lIUm9aU0JqYkdsbGJuUW5jeUJoWTJOdmRXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWRHaHliM2R6SUh0RmNuSnZjbjBnU1dZZ2RHaGxJSFJ5WVc1ellXTjBhVzl1SUdaaGFXeHpJRzl5SUhSb1pTQmtaV052WkdsdVp5QndjbTlqWlhOeklHWmhhV3h6TGx4dUlDQWdLaTljYmlBZ1lYTjVibU1nWTJ4cFpXNTBRV05qYjNWdWRFSmhiR0Z1WTJVb0tUb2dVSEp2YldselpUeHVkVzFpWlhJK0lIdGNiaUFnSUNCamIyNXpkQ0JqYjI1MFpYaDBRWEpuY3lBOUlHRjNZV2wwSUVOdmJuUmxlSFF1WVhKbmN5aGNiaUFnSUNBZ0lGd2lZV05qYjNWdWRFSmhiR0Z1WTJWY0lpeGNiaUFnSUNBZ0lIUm9hWE11WTJ4aGMzTXNYRzRnSUNBZ0lDQmJYU3hjYmlBZ0lDQWdJSFJvYVhNdVlXUmhjSFJsY2l4Y2JpQWdJQ0FnSUhSb2FYTXVYMjkyWlhKeWFXUmxjeUI4ZkNCN2ZWeHVJQ0FnSUNrN1hHNGdJQ0FnWTI5dWMzUWdleUJqZEhnZ2ZTQTlJSFJvYVhNdWJHOW5RM1I0S0dOdmJuUmxlSFJCY21kekxtRnlaM01zSUhSb2FYTXVZMnhwWlc1MFFXTmpiM1Z1ZEVKaGJHRnVZMlVwTzF4dUlDQWdJR052Ym5OMElITmxjbWxoYkdsNlpXUkJZMk52ZFc1MFFtRnNZVzVqWlNBOUlHRjNZV2wwSUhSb2FYTXVZV1JoY0hSbGNpNWxkbUZzZFdGMFpWUnlZVzV6WVdOMGFXOXVLRnh1SUNBZ0lDQWdZM1I0TEZ4dUlDQWdJQ0FnWENKRGJHbGxiblJCWTJOdmRXNTBRbUZzWVc1alpWd2lYRzRnSUNBZ0tUdGNibHh1SUNBZ0lISmxkSFZ5YmlCT2RXMWlaWElvZEdocGN5NWtaV052WkdVb2MyVnlhV0ZzYVhwbFpFRmpZMjkxYm5SQ1lXeGhibU5sS1NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwY21sbGRtVnpJSFJvWlNCamJHbGxiblFuY3lCaFkyTnZkVzUwSUVsRUlHWnliMjBnZEdobElHSnNiMk5yWTJoaGFXNGdibVYwZDI5eWF5NWNiaUFnSUNwY2JpQWdJQ29nVkdocGN5Qm1kVzVqZEdsdmJpQnBiblJsY21GamRITWdkMmwwYUNCMGFHVWdZbXh2WTJ0amFHRnBiaUJ1WlhSM2IzSnJJSFJ2SUdabGRHTm9JSFJvWlNCamJHbGxiblFuY3lCaFkyTnZkVzUwSUVsRUxseHVJQ0FnS2lCSmRDQmpZV3hzY3lCMGFHVWdYQ0pEYkdsbGJuUkJZMk52ZFc1MFNVUmNJaUIwY21GdWMyRmpkR2x2YmlCdmJpQjBhR1VnYzIxaGNuUWdZMjl1ZEhKaFkzUXNJSGRvYVdOb0lHUnZaWE1nYm05MElISmxjWFZwY21VZ1lXNTVJSEJoY21GdFpYUmxjbk11WEc0Z0lDQXFJRlJvWlNCeVpYUjFjbTVsWkNCa1lYUmhJR2x6SUhSb1pXNGdaR1ZqYjJSbFpDQmhibVFnY21WMGRYSnVaV1FnWVhNZ1lTQnpkSEpwYm1jdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ5WlhSMWNtNXpJSHRRY205dGFYTmxQSE4wY21sdVp6NTlJRUVnY0hKdmJXbHpaU0IwYUdGMElISmxjMjlzZG1WeklIZHBkR2dnZEdobElHTnNhV1Z1ZENkeklHRmpZMjkxYm5RZ1NVUXVYRzRnSUNBcVhHNGdJQ0FxSUVCMGFISnZkM01nZTBWeWNtOXlmU0JKWmlCMGFHVWdkSEpoYm5OaFkzUnBiMjRnWm1GcGJITWdiM0lnZEdobElHUmxZMjlrYVc1bklIQnliMk5sYzNNZ1ptRnBiSE11WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUJqYkdsbGJuUkJZMk52ZFc1MFNVUW9LVG9nVUhKdmJXbHpaVHh6ZEhKcGJtYytJSHRjYmlBZ0lDQmpiMjV6ZENCamIyNTBaWGgwUVhKbmN5QTlJR0YzWVdsMElFTnZiblJsZUhRdVlYSm5jeWhjYmlBZ0lDQWdJRndpWVdOamIzVnVkRWxrWENJc1hHNGdJQ0FnSUNCMGFHbHpMbU5zWVhOekxGeHVJQ0FnSUNBZ1cxMHNYRzRnSUNBZ0lDQjBhR2x6TG1Ga1lYQjBaWElzWEc0Z0lDQWdJQ0IwYUdsekxsOXZkbVZ5Y21sa1pYTWdmSHdnZTMxY2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElIc2dZM1I0SUgwZ1BTQjBhR2x6TG14dlowTjBlQ2hqYjI1MFpYaDBRWEpuY3k1aGNtZHpMQ0IwYUdsekxtTnNhV1Z1ZEVGalkyOTFiblJKUkNrN1hHNGdJQ0FnWTI5dWMzUWdZMnhwWlc1MFFXTmpiM1Z1ZEVsRUlEMGdZWGRoYVhRZ2RHaHBjeTVoWkdGd2RHVnlMbVYyWVd4MVlYUmxWSEpoYm5OaFkzUnBiMjRvWEc0Z0lDQWdJQ0JqZEhnc1hHNGdJQ0FnSUNCY0lrTnNhV1Z1ZEVGalkyOTFiblJKUkZ3aVhHNGdJQ0FnS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtUmxZMjlrWlNoamJHbGxiblJCWTJOdmRXNTBTVVFwTzF4dUlDQjlYRzU5WEc0aVhYMD0iXX0=
|
|
363
|
+
//# sourceMappingURL=FabricERC20ClientRepository.js.map
|
|
364
|
+
//# sourceMappingURL=FabricERC20ClientRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FabricERC20ClientRepository.js","sourceRoot":"","sources":["FabricERC20ClientRepository.js"],"names":[],"mappings":"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"}
|
|
@@ -15,5 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./FabricERC20ClientRepository.cjs"), exports);
|
|
18
|
-
//# sourceMappingURL=
|
|
19
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mEAAiD;AACjD,iCAAiC"}
|
|
@@ -231,5 +231,5 @@ async function extractPrivateKey(pem) {
|
|
|
231
231
|
throw new db_decorators_1.InternalError(e);
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9mYWJyaWMtZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBb0IsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUV4Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLGFBQWtDLEVBQ2xDLFVBQW1FO0lBRW5FLElBQUksYUFBYSxZQUFZLFVBQVU7UUFBRSxPQUFPLGFBQWEsQ0FBQztJQUM5RCxJQUNFLGFBQWEsQ0FBQyxLQUFLLENBQ2pCLHNFQUFzRSxDQUN2RTtRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLE9BQU8sTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FBQyxhQUE4QjtJQUMzRCxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVE7UUFBRSxPQUFPLGFBQWEsQ0FBQztJQUU1RCxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFFLEVBQUU7UUFDeEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElB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QUNUO1lBQ0UsSUFBSSxFQUFFLE9BQU87WUFDYixVQUFVLEVBQUUsT0FBTztTQUNwQixFQUNELElBQUksRUFDSixDQUFDLE1BQU0sQ0FBQyxDQUNULENBQUM7UUFFRixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jyb3dzZXIsIE1pbmlMb2dnZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiZmFicmljLWNvbW1vblwiO1xuaW1wb3J0IHsgSWRlbnRpdHksIFNpZ25lciwgc2lnbmVycyB9IGZyb20gXCJAaHlwZXJsZWRnZXIvZmFicmljLWdhdGV3YXlcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUltcG9ydCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5jb25zdCBsb2cgPSBuZXcgTWluaUxvZ2dlcihcImZhYnJpYy1mc1wiKTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTG9hZHMgY29udGVudCBmcm9tIGEgZmlsZSBvciByZXR1cm5zIHRoZSBjb250ZW50IGlmIGFscmVhZHkgbG9hZGVkXG4gKiBAc3VtbWFyeSBEZXRlcm1pbmVzIGlmIHRoZSBpbnB1dCBpcyBhbHJlYWR5IGNvbnRlbnQgb3IgYSBwYXRoIHRvIGEgZmlsZSwgYW5kIGxvYWRzIHRoZSBmaWxlIGlmIG5lZWRlZFxuICogQHBhcmFtIHtzdHJpbmcgfCBVaW50OEFycmF5fSBjb250ZW50T3JQYXRoIC0gVGhlIGNvbnRlbnQgb3IgcGF0aCB0byBsb2FkXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaWxlUmVhZGVyIC0gRnVuY3Rpb24gdG8gcmVhZCB0aGUgZmlsZSBpZiBjb250ZW50T3JQYXRoIGlzIGEgcGF0aFxuICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmcgfCBVaW50OEFycmF5IHwgQnVmZmVyPn0gVGhlIGNvbnRlbnRcbiAqIEBmdW5jdGlvbiBjb250ZW50T2ZMb2FkRmlsZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29udGVudE9mTG9hZEZpbGUoXG4gIGNvbnRlbnRPclBhdGg6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gIGZpbGVSZWFkZXI6IChwYXRoOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nIHwgVWludDhBcnJheSB8IEJ1ZmZlcj5cbikge1xuICBpZiAoY29udGVudE9yUGF0aCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBjb250ZW50T3JQYXRoO1xuICBpZiAoXG4gICAgY29udGVudE9yUGF0aC5tYXRjaChcbiAgICAgIC8tLS0tLUJFR0lOIChDRVJUSUZJQ0FURXxLRVl8UFJJVkFURSBLRVkpLS0tLS0uKz8tLS0tLUVORCBcXDEtLS0tLSQvZ21zXG4gICAgKVxuICApXG4gICAgcmV0dXJuIGNvbnRlbnRPclBhdGg7XG4gIHJldHVybiBhd2FpdCBmaWxlUmVhZGVyKGNvbnRlbnRPclBhdGgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWFkcyBhIGZpbGUgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAqIEBzdW1tYXJ5IExvYWRzIGEgZmlsZSB1c2luZyB0aGUgTm9kZS5qcyBmaWxlIHN5c3RlbSBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSBjb250ZW50T3JQYXRoIC0gVGhlIGNvbnRlbnQgb3IgcGF0aCB0byBsb2FkXG4gKiBAcmV0dXJuIHtQcm9taXNlPEJ1ZmZlcj59IFRoZSBmaWxlIGNvbnRlbnQgYXMgYSBCdWZmZXJcbiAqIEBmdW5jdGlvbiByZWFkRmlsZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZpbGUoY29udGVudE9yUGF0aDogc3RyaW5nIHwgQnVmZmVyKSB7XG4gIGlmICh0eXBlb2YgY29udGVudE9yUGF0aCAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIGNvbnRlbnRPclBhdGg7XG5cbiAgY29uc3QgZmlsZVJlYWRlciA9IGFzeW5jIChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB7IHByb21pc2VzIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KFwiZnNcIikpO1xuICAgIHJldHVybiBhd2FpdCBwcm9taXNlcy5yZWFkRmlsZShwYXRoKTtcbiAgfTtcblxuICByZXR1cm4gYXdhaXQgZmlsZVJlYWRlcihjb250ZW50T3JQYXRoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIENlcnRpZmljYXRlIEF1dGhvcml0eSB1c2VyXG4gKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gY3JlZGVudGlhbHMgZm9yIGludGVyYWN0aW5nIHdpdGggYSBGYWJyaWMgQ0FcbiAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyTmFtZSAtIFRoZSB1c2VyIG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcml2YXRlS2V5IC0gVGhlIHByaXZhdGUga2V5IGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gY2VydGlmaWNhdGUgLSBUaGUgY2VydGlmaWNhdGUgYXMgYSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc3BJZCAtIFRoZSBNZW1iZXJzaGlwIFNlcnZpY2UgUHJvdmlkZXIgSURcbiAqIEByZXR1cm4ge1Byb21pc2U8VXNlcj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIHVzZXJcbiAqIEBmdW5jdGlvbiBnZXRDQVVzZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENBVXNlcihcbiAgdXNlck5hbWU6IHN0cmluZyxcbiAgcHJpdmF0ZUtleTogc3RyaW5nLFxuICBjZXJ0aWZpY2F0ZTogc3RyaW5nLFxuICBtc3BJZDogc3RyaW5nXG4pOiBQcm9taXNlPFVzZXI+IHtcbiAgbG9nLmRlYnVnKFxuICAgIGBDcmVhdGluZyBhIENBICR7bXNwSWR9IHVzZXIgJHt1c2VyTmFtZX0gd2l0aCBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlfWBcbiAgKTtcbiAgY29uc3QgdXNlciA9IG5ldyBVc2VyKHVzZXJOYW1lKTtcbiAgY29uc3QgY3J5cHRvU3VpdGUgPSBVc2VyLm5ld0NyeXB0b1N1aXRlKCk7XG4gIHVzZXIuc2V0Q3J5cHRvU3VpdGUoY3J5cHRvU3VpdGUpO1xuICBjb25zdCBpbXBvcnRlZEtleSA9IGNyeXB0b1N1aXRlLmNyZWF0ZUtleUZyb21SYXcocHJpdmF0ZUtleSk7XG4gIGF3YWl0IHVzZXIuc2V0RW5yb2xsbWVudChpbXBvcnRlZEtleSwgY2VydGlmaWNhdGUsIG1zcElkKTtcbiAgcmV0dXJuIHVzZXI7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgYW4gaWRlbnRpdHkgZnJvbSBhIGNlcnRpZmljYXRlIGRpcmVjdG9yeVxuICogQHN1bW1hcnkgTG9hZHMgYSBjZXJ0aWZpY2F0ZSBmcm9tIGEgZGlyZWN0b3J5IGFuZCBjcmVhdGVzIGFuIElkZW50aXR5IG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IG1zcElkIC0gVGhlIE1lbWJlcnNoaXAgU2VydmljZSBQcm92aWRlciBJRFxuICogQHBhcmFtIHtzdHJpbmd9IGNlcnREaXJlY3RvcnlQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGNlcnRpZmljYXRlXG4gKiBAcmV0dXJuIHtQcm9taXNlPElkZW50aXR5Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGlkZW50aXR5XG4gKiBAZnVuY3Rpb24gZ2V0SWRlbnRpdHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldElkZW50aXR5KFxuICBtc3BJZDogc3RyaW5nLFxuICBjZXJ0RGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPElkZW50aXR5PiB7XG4gIGNvbnN0IGlkZW50aXR5RmlsZVJlYWRlciA9IGFzeW5jIChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB7IHByb21pc2VzIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KFwiZnNcIikpO1xuICAgIGNvbnN0IGNlcnRQYXRoID0gYXdhaXQgZ2V0Rmlyc3REaXJGaWxlTmFtZShwYXRoKTtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IHByb21pc2VzLnJlYWRGaWxlKGNlcnRQYXRoKTtcbiAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gIH07XG5cbiAgY29uc3QgY3JlZGVudGlhbHM6IFVpbnQ4QXJyYXkgPSAoYXdhaXQgY29udGVudE9mTG9hZEZpbGUoXG4gICAgY2VydERpcmVjdG9yeVBhdGgsXG4gICAgaWRlbnRpdHlGaWxlUmVhZGVyXG4gICkpIGFzIFVpbnQ4QXJyYXk7XG5cbiAgcmV0dXJuIHsgbXNwSWQsIGNyZWRlbnRpYWxzIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIGZ1bGwgcGF0aCBvZiB0aGUgZmlyc3QgZmlsZSBpbiBhIGRpcmVjdG9yeVxuICogQHN1bW1hcnkgUmVhZHMgYSBkaXJlY3RvcnkgYW5kIHJldHVybnMgdGhlIHBhdGggdG8gdGhlIGZpcnN0IGZpbGUgZm91bmRcbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXJQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5XG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBmdWxsIHBhdGggb2YgdGhlIGZpcnN0IGZpbGVcbiAqIEBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lKGRpclBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgcHJvbWlzZXMgfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJmc1wiKSk7XG4gIGNvbnN0IHsgam9pbiB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcInBhdGhcIikpO1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IHByb21pc2VzLnJlYWRkaXIoZGlyUGF0aCk7XG4gIHJldHVybiBqb2luKGRpclBhdGgsIGZpbGVzWzBdKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgY29udGVudCBvZiB0aGUgZmlyc3QgZmlsZSBpbiBhIGRpcmVjdG9yeVxuICogQHN1bW1hcnkgUmVhZHMgYSBkaXJlY3RvcnksIGZpbmRzIHRoZSBmaXJzdCBmaWxlLCBhbmQgcmV0dXJucyBpdHMgY29udGVudCBhcyBhIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGRpclBhdGggLSBQYXRoIHRvIHRoZSBkaXJlY3RvcnlcbiAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGZpcnN0IGZpbGVcbiAqIEBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lQ29udGVudFxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Rmlyc3REaXJGaWxlTmFtZUNvbnRlbnQoXG4gIGRpclBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgeyBwcm9taXNlcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcImZzXCIpKTtcbiAgY29uc3QgeyBqb2luIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KFwicGF0aFwiKSk7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgcHJvbWlzZXMucmVhZGRpcihkaXJQYXRoKTtcbiAgcmV0dXJuIChhd2FpdCBwcm9taXNlcy5yZWFkRmlsZShqb2luKGRpclBhdGgsIGZpbGVzWzBdKSkpLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgYSBzaWduZXIgZnJvbSBhIGtleSBkaXJlY3RvcnlcbiAqIEBzdW1tYXJ5IExvYWRzIGEgcHJpdmF0ZSBrZXkgZnJvbSBhIGRpcmVjdG9yeSBhbmQgY3JlYXRlcyBhIFNpZ25lciBmb3IgRmFicmljIHRyYW5zYWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGtleURpcmVjdG9yeVBhdGggLSBQYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJpdmF0ZSBrZXlcbiAqIEByZXR1cm4ge1Byb21pc2U8U2lnbmVyPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHNpZ25lclxuICogQGZ1bmN0aW9uIGdldFNpZ25lclxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmVyKGtleURpcmVjdG9yeVBhdGg6IHN0cmluZyk6IFByb21pc2U8U2lnbmVyPiB7XG4gIGNvbnN0IHNpZ25lckZpbGVSZWFkZXIgPSBhc3luYyAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBwcm9taXNlcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcImZzXCIpKTtcbiAgICBjb25zdCBrZXlQYXRoID0gYXdhaXQgZ2V0Rmlyc3REaXJGaWxlTmFtZShwYXRoKTtcbiAgICByZXR1cm4gYXdhaXQgcHJvbWlzZXMucmVhZEZpbGUoa2V5UGF0aCk7XG4gIH07XG5cbiAgY29uc3QgcHJpdmF0ZUtleVBlbSA9IChhd2FpdCBjb250ZW50T2ZMb2FkRmlsZShcbiAgICBrZXlEaXJlY3RvcnlQYXRoLFxuICAgIHNpZ25lckZpbGVSZWFkZXJcbiAgKSkgYXMgQnVmZmVyO1xuICAvLyBOb2RlIGJhc2VkIGltcGxlbWVudGF0aW9uXG4gIC8vIHByaXZhdGVLZXkgPSBjcmVhdGVQcml2YXRlS2V5KHByaXZhdGVLZXlQZW0pO1xuICAvLyAtLVxuXG4gIC8vIHdlYiBiYXNlZCBpbXBsZW1lbnRhdGlvblxuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgZXh0cmFjdFByaXZhdGVLZXkocHJpdmF0ZUtleVBlbSk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHByaXZhdGVLZXkpO1xuICBjb25zdCBrID0gKHByaXZhdGVLZXkgYXMgYW55KVtrZXlzWzBdXTtcbiAgLy8gLS1cblxuICByZXR1cm4gc2lnbmVycy5uZXdQcml2YXRlS2V5U2lnbmVyKGsgYXMgYW55KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXh0cmFjdHMgYSBwcml2YXRlIGtleSBmcm9tIGEgUEVNIGJ1ZmZlclxuICogQHN1bW1hcnkgQ29udmVydHMgYSBQRU0tZW5jb2RlZCBwcml2YXRlIGtleSB0byBhIENyeXB0b0tleSBvYmplY3RcbiAqIEBwYXJhbSB7QnVmZmVyfSBwZW0gLSBUaGUgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXlcbiAqIEByZXR1cm4ge1Byb21pc2U8Q3J5cHRvS2V5Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIENyeXB0b0tleVxuICogQGZ1bmN0aW9uIGV4dHJhY3RQcml2YXRlS2V5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBFeHRyYWN0UHJpdmF0ZUtleVxuICogICBwYXJ0aWNpcGFudCBTdWJ0bGVDcnlwdG9cbiAqXG4gKiAgIENhbGxlci0+PkV4dHJhY3RQcml2YXRlS2V5OiBleHRyYWN0UHJpdmF0ZUtleShwZW0pXG4gKiAgIEV4dHJhY3RQcml2YXRlS2V5LT4+RXh0cmFjdFByaXZhdGVLZXk6IEdldCBTdWJ0bGVDcnlwdG8gaW1wbGVtZW50YXRpb25cbiAqICAgRXh0cmFjdFByaXZhdGVLZXktPj5FeHRyYWN0UHJpdmF0ZUtleTogUGFyc2UgUEVNIGZvcm1hdFxuICogICBFeHRyYWN0UHJpdmF0ZUtleS0+PkV4dHJhY3RQcml2YXRlS2V5OiBDb252ZXJ0IHRvIGJpbmFyeSBERVJcbiAqICAgRXh0cmFjdFByaXZhdGVLZXktPj5TdWJ0bGVDcnlwdG86IGltcG9ydEtleShwa2NzOCwgYmluYXJ5RGVyLCBvcHRpb25zKVxuICogICBTdWJ0bGVDcnlwdG8tLT4+RXh0cmFjdFByaXZhdGVLZXk6IENyeXB0b0tleVxuICogICBFeHRyYWN0UHJpdmF0ZUtleS0tPj5DYWxsZXI6IENyeXB0b0tleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFByaXZhdGVLZXkocGVtOiBCdWZmZXIpIHtcbiAgY29uc3QgbGliTmFtZSA9IFwiY3J5cHRvXCI7XG4gIGxldCBzdWJ0bGU7XG4gIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgIHN1YnRsZSA9IChnbG9iYWxUaGlzIGFzIGFueSkuY3J5cHRvLnN1YnRsZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsaWIgPSAoYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChsaWJOYW1lKSkpIGFzIGFueTtcbiAgICBzdWJ0bGUgPSBsaWIuc3VidGxlIHx8IGxpYi53ZWJjcnlwdG8uc3VidGxlO1xuICB9XG5cbiAgaWYgKCFzdWJ0bGUpIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBsb2FkIFN1YnRsZUNyeXB0byBtb2R1bGVcIik7XG5cbiAgZnVuY3Rpb24gc3RyMmFiKHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVmID0gbmV3IEFycmF5QnVmZmVyKHN0ci5sZW5ndGgpO1xuICAgIGNvbnN0IGJ1ZlZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgIGZvciAobGV0IGkgPSAwLCBzdHJMZW4gPSBzdHIubGVuZ3RoOyBpIDwgc3RyTGVuOyBpKyspIHtcbiAgICAgIGJ1ZlZpZXdbaV0gPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIGNvbnN0IHN0ciA9IHBlbVxuICAgIC50b1N0cmluZyhcInV0ZjhcIilcbiAgICAucmVwbGFjZShcIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVwiLCBcIlwiKVxuICAgIC5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXCIpXG4gICAgLnJlcGxhY2UoXCItLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXCIsIFwiXCIpO1xuICBjb25zdCBkZWNvZGVkID0gQnVmZmVyLmZyb20oc3RyLCBcImJhc2U2NFwiKS50b1N0cmluZyhcImJpbmFyeVwiKTtcbiAgY29uc3QgYmluYXJ5RGVyID0gc3RyMmFiKGRlY29kZWQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgc3VidGxlLmltcG9ydEtleShcbiAgICAgIFwicGtjczhcIixcbiAgICAgIGJpbmFyeURlcixcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJFQ0RTQVwiLFxuICAgICAgICBuYW1lZEN1cnZlOiBcIlAtMjU2XCIsXG4gICAgICB9LFxuICAgICAgdHJ1ZSxcbiAgICAgIFtcInNpZ25cIl1cbiAgICApO1xuXG4gICAgcmV0dXJuIGtleTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSk7XG4gIH1cbn1cbiJdfQ==
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmFicmljLWZzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsOENBTUM7QUFTRCw0QkFRQztBQVlELDhCQVFDO0FBVUQsa0NBU0M7QUFTRCxrREFLQztBQVNELGdFQUtDO0FBU0QsOEJBZ0JDO0FBc0JELDhDQXFDQztBQTdMRCwrQ0FBMEQ7QUFDMUQsaURBQXFDO0FBQ3JDLGdFQUFzRDtBQUN0RCwyREFBd0Q7QUFDeEQseUNBQWlEO0FBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksb0JBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN4Qzs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsVUFBVTtJQUM3RCxJQUFJLGFBQWEsWUFBWSxVQUFVO1FBQ25DLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQztRQUMzRixPQUFPLGFBQWEsQ0FBQztJQUN6QixPQUFPLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFDRDs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLFFBQVEsQ0FBQyxhQUFhO0lBQ3hDLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUTtRQUNqQyxPQUFPLGFBQWEsQ0FBQztJQUN6QixNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDOUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBQSxzQkFBZSxvREFBUSxJQUFJLElBQUUsQ0FBQztRQUN6RCxPQUFPLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUM7SUFDRixPQUFPLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFD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QUFDO0FBQ0QsODJpQkFBODJpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQnJvd3NlciwgTWluaUxvZ2dlciB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gXCJmYWJyaWMtY29tbW9uXCI7XG5pbXBvcnQgeyBzaWduZXJzIH0gZnJvbSBcIkBoeXBlcmxlZGdlci9mYWJyaWMtZ2F0ZXdheVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplSW1wb3J0IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5jb25zdCBsb2cgPSBuZXcgTWluaUxvZ2dlcihcImZhYnJpYy1mc1wiKTtcbi8qKlxuICogQGRlc2NyaXB0aW9uIExvYWRzIGNvbnRlbnQgZnJvbSBhIGZpbGUgb3IgcmV0dXJucyB0aGUgY29udGVudCBpZiBhbHJlYWR5IGxvYWRlZFxuICogQHN1bW1hcnkgRGV0ZXJtaW5lcyBpZiB0aGUgaW5wdXQgaXMgYWxyZWFkeSBjb250ZW50IG9yIGEgcGF0aCB0byBhIGZpbGUsIGFuZCBsb2FkcyB0aGUgZmlsZSBpZiBuZWVkZWRcbiAqIEBwYXJhbSB7c3RyaW5nIHwgVWludDhBcnJheX0gY29udGVudE9yUGF0aCAtIFRoZSBjb250ZW50IG9yIHBhdGggdG8gbG9hZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZmlsZVJlYWRlciAtIEZ1bmN0aW9uIHRvIHJlYWQgdGhlIGZpbGUgaWYgY29udGVudE9yUGF0aCBpcyBhIHBhdGhcbiAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nIHwgVWludDhBcnJheSB8IEJ1ZmZlcj59IFRoZSBjb250ZW50XG4gKiBAZnVuY3Rpb24gY29udGVudE9mTG9hZEZpbGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbnRlbnRPZkxvYWRGaWxlKGNvbnRlbnRPclBhdGgsIGZpbGVSZWFkZXIpIHtcbiAgICBpZiAoY29udGVudE9yUGF0aCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpXG4gICAgICAgIHJldHVybiBjb250ZW50T3JQYXRoO1xuICAgIGlmIChjb250ZW50T3JQYXRoLm1hdGNoKC8tLS0tLUJFR0lOIChDRVJUSUZJQ0FURXxLRVl8UFJJVkFURSBLRVkpLS0tLS0uKz8tLS0tLUVORCBcXDEtLS0tLSQvZ21zKSlcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRPclBhdGg7XG4gICAgcmV0dXJuIGF3YWl0IGZpbGVSZWFkZXIoY29udGVudE9yUGF0aCk7XG59XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWFkcyBhIGZpbGUgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAqIEBzdW1tYXJ5IExvYWRzIGEgZmlsZSB1c2luZyB0aGUgTm9kZS5qcyBmaWxlIHN5c3RlbSBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSBjb250ZW50T3JQYXRoIC0gVGhlIGNvbnRlbnQgb3IgcGF0aCB0byBsb2FkXG4gKiBAcmV0dXJuIHtQcm9taXNlPEJ1ZmZlcj59IFRoZSBmaWxlIGNvbnRlbnQgYXMgYSBCdWZmZXJcbiAqIEBmdW5jdGlvbiByZWFkRmlsZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZpbGUoY29udGVudE9yUGF0aCkge1xuICAgIGlmICh0eXBlb2YgY29udGVudE9yUGF0aCAhPT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRPclBhdGg7XG4gICAgY29uc3QgZmlsZVJlYWRlciA9IGFzeW5jIChwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcHJvbWlzZXMgfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJmc1wiKSk7XG4gICAgICAgIHJldHVybiBhd2FpdCBwcm9taXNlcy5yZWFkRmlsZShwYXRoKTtcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCBmaWxlUmVhZGVyKGNvbnRlbnRPclBhdGgpO1xufVxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIENlcnRpZmljYXRlIEF1dGhvcml0eSB1c2VyXG4gKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gY3JlZGVudGlhbHMgZm9yIGludGVyYWN0aW5nIHdpdGggYSBGYWJyaWMgQ0FcbiAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyTmFtZSAtIFRoZSB1c2VyIG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcml2YXRlS2V5IC0gVGhlIHByaXZhdGUga2V5IGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gY2VydGlmaWNhdGUgLSBUaGUgY2VydGlmaWNhdGUgYXMgYSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc3BJZCAtIFRoZSBNZW1iZXJzaGlwIFNlcnZpY2UgUHJvdmlkZXIgSURcbiAqIEByZXR1cm4ge1Byb21pc2U8VXNlcj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIHVzZXJcbiAqIEBmdW5jdGlvbiBnZXRDQVVzZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENBVXNlcih1c2VyTmFtZSwgcHJpdmF0ZUtleSwgY2VydGlmaWNhdGUsIG1zcElkKSB7XG4gICAgbG9nLmRlYnVnKGBDcmVhdGluZyBhIENBICR7bXNwSWR9IHVzZXIgJHt1c2VyTmFtZX0gd2l0aCBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlfWApO1xuICAgIGNvbnN0IHVzZXIgPSBuZXcgVXNlcih1c2VyTmFtZSk7XG4gICAgY29uc3QgY3J5cHRvU3VpdGUgPSBVc2VyLm5ld0NyeXB0b1N1aXRlKCk7XG4gICAgdXNlci5zZXRDcnlwdG9TdWl0ZShjcnlwdG9TdWl0ZSk7XG4gICAgY29uc3QgaW1wb3J0ZWRLZXkgPSBjcnlwdG9TdWl0ZS5jcmVhdGVLZXlGcm9tUmF3KHByaXZhdGVLZXkpO1xuICAgIGF3YWl0IHVzZXIuc2V0RW5yb2xsbWVudChpbXBvcnRlZEtleSwgY2VydGlmaWNhdGUsIG1zcElkKTtcbiAgICByZXR1cm4gdXNlcjtcbn1cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgYW4gaWRlbnRpdHkgZnJvbSBhIGNlcnRpZmljYXRlIGRpcmVjdG9yeVxuICogQHN1bW1hcnkgTG9hZHMgYSBjZXJ0aWZpY2F0ZSBmcm9tIGEgZGlyZWN0b3J5IGFuZCBjcmVhdGVzIGFuIElkZW50aXR5IG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IG1zcElkIC0gVGhlIE1lbWJlcnNoaXAgU2VydmljZSBQcm92aWRlciBJRFxuICogQHBhcmFtIHtzdHJpbmd9IGNlcnREaXJlY3RvcnlQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGNlcnRpZmljYXRlXG4gKiBAcmV0dXJuIHtQcm9taXNlPElkZW50aXR5Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGlkZW50aXR5XG4gKiBAZnVuY3Rpb24gZ2V0SWRlbnRpdHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldElkZW50aXR5KG1zcElkLCBjZXJ0RGlyZWN0b3J5UGF0aCkge1xuICAgIGNvbnN0IGlkZW50aXR5RmlsZVJlYWRlciA9IGFzeW5jIChwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcHJvbWlzZXMgfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJmc1wiKSk7XG4gICAgICAgIGNvbnN0IGNlcnRQYXRoID0gYXdhaXQgZ2V0Rmlyc3REaXJGaWxlTmFtZShwYXRoKTtcbiAgICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBwcm9taXNlcy5yZWFkRmlsZShjZXJ0UGF0aCk7XG4gICAgICAgIHJldHVybiBjcmVkZW50aWFscztcbiAgICB9O1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gKGF3YWl0IGNvbnRlbnRPZkxvYWRGaWxlKGNlcnREaXJlY3RvcnlQYXRoLCBpZGVudGl0eUZpbGVSZWFkZXIpKTtcbiAgICByZXR1cm4geyBtc3BJZCwgY3JlZGVudGlhbHMgfTtcbn1cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIGZ1bGwgcGF0aCBvZiB0aGUgZmlyc3QgZmlsZSBpbiBhIGRpcmVjdG9yeVxuICogQHN1bW1hcnkgUmVhZHMgYSBkaXJlY3RvcnkgYW5kIHJldHVybnMgdGhlIHBhdGggdG8gdGhlIGZpcnN0IGZpbGUgZm91bmRcbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXJQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5XG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBmdWxsIHBhdGggb2YgdGhlIGZpcnN0IGZpbGVcbiAqIEBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lKGRpclBhdGgpIHtcbiAgICBjb25zdCB7IHByb21pc2VzIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KFwiZnNcIikpO1xuICAgIGNvbnN0IHsgam9pbiB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcInBhdGhcIikpO1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcHJvbWlzZXMucmVhZGRpcihkaXJQYXRoKTtcbiAgICByZXR1cm4gam9pbihkaXJQYXRoLCBmaWxlc1swXSk7XG59XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSBjb250ZW50IG9mIHRoZSBmaXJzdCBmaWxlIGluIGEgZGlyZWN0b3J5XG4gKiBAc3VtbWFyeSBSZWFkcyBhIGRpcmVjdG9yeSwgZmluZHMgdGhlIGZpcnN0IGZpbGUsIGFuZCByZXR1cm5zIGl0cyBjb250ZW50IGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlyUGF0aCAtIFBhdGggdG8gdGhlIGRpcmVjdG9yeVxuICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29udGVudCBvZiB0aGUgZmlyc3QgZmlsZVxuICogQGZ1bmN0aW9uIGdldEZpcnN0RGlyRmlsZU5hbWVDb250ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lQ29udGVudChkaXJQYXRoKSB7XG4gICAgY29uc3QgeyBwcm9taXNlcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcImZzXCIpKTtcbiAgICBjb25zdCB7IGpvaW4gfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJwYXRoXCIpKTtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHByb21pc2VzLnJlYWRkaXIoZGlyUGF0aCk7XG4gICAgcmV0dXJuIChhd2FpdCBwcm9taXNlcy5yZWFkRmlsZShqb2luKGRpclBhdGgsIGZpbGVzWzBdKSkpLnRvU3RyaW5nKCk7XG59XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZXRzIGEgc2lnbmVyIGZyb20gYSBrZXkgZGlyZWN0b3J5XG4gKiBAc3VtbWFyeSBMb2FkcyBhIHByaXZhdGUga2V5IGZyb20gYSBkaXJlY3RvcnkgYW5kIGNyZWF0ZXMgYSBTaWduZXIgZm9yIEZhYnJpYyB0cmFuc2FjdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlEaXJlY3RvcnlQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHByaXZhdGUga2V5XG4gKiBAcmV0dXJuIHtQcm9taXNlPFNpZ25lcj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBzaWduZXJcbiAqIEBmdW5jdGlvbiBnZXRTaWduZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNpZ25lcihrZXlEaXJlY3RvcnlQYXRoKSB7XG4gICAgY29uc3Qgc2lnbmVyRmlsZVJlYWRlciA9IGFzeW5jIChwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcHJvbWlzZXMgfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJmc1wiKSk7XG4gICAgICAgIGNvbnN0IGtleVBhdGggPSBhd2FpdCBnZXRGaXJzdERpckZpbGVOYW1lKHBhdGgpO1xuICAgICAgICByZXR1cm4gYXdhaXQgcHJvbWlzZXMucmVhZEZpbGUoa2V5UGF0aCk7XG4gICAgfTtcbiAgICBjb25zdCBwcml2YXRlS2V5UGVtID0gKGF3YWl0IGNvbnRlbnRPZkxvYWRGaWxlKGtleURpcmVjdG9yeVBhdGgsIHNpZ25lckZpbGVSZWFkZXIpKTtcbiAgICAvLyBOb2RlIGJhc2VkIGltcGxlbWVudGF0aW9uXG4gICAgLy8gcHJpdmF0ZUtleSA9IGNyZWF0ZVByaXZhdGVLZXkocHJpdmF0ZUtleVBlbSk7XG4gICAgLy8gLS1cbiAgICAvLyB3ZWIgYmFzZWQgaW1wbGVtZW50YXRpb25cbiAgICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgZXh0cmFjdFByaXZhdGVLZXkocHJpdmF0ZUtleVBlbSk7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocHJpdmF0ZUtleSk7XG4gICAgY29uc3QgayA9IHByaXZhdGVLZXlba2V5c1swXV07XG4gICAgLy8gLS1cbiAgICByZXR1cm4gc2lnbmVycy5uZXdQcml2YXRlS2V5U2lnbmVyKGspO1xufVxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXh0cmFjdHMgYSBwcml2YXRlIGtleSBmcm9tIGEgUEVNIGJ1ZmZlclxuICogQHN1bW1hcnkgQ29udmVydHMgYSBQRU0tZW5jb2RlZCBwcml2YXRlIGtleSB0byBhIENyeXB0b0tleSBvYmplY3RcbiAqIEBwYXJhbSB7QnVmZmVyfSBwZW0gLSBUaGUgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXlcbiAqIEByZXR1cm4ge1Byb21pc2U8Q3J5cHRvS2V5Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIENyeXB0b0tleVxuICogQGZ1bmN0aW9uIGV4dHJhY3RQcml2YXRlS2V5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBFeHRyYWN0UHJpdmF0ZUtleVxuICogICBwYXJ0aWNpcGFudCBTdWJ0bGVDcnlwdG9cbiAqXG4gKiAgIENhbGxlci0+PkV4dHJhY3RQcml2YXRlS2V5OiBleHRyYWN0UHJpdmF0ZUtleShwZW0pXG4gKiAgIEV4dHJhY3RQcml2YXRlS2V5LT4+RXh0cmFjdFByaXZhdGVLZXk6IEdldCBTdWJ0bGVDcnlwdG8gaW1wbGVtZW50YXRpb25cbiAqICAgRXh0cmFjdFByaXZhdGVLZXktPj5FeHRyYWN0UHJpdmF0ZUtleTogUGFyc2UgUEVNIGZvcm1hdFxuICogICBFeHRyYWN0UHJpdmF0ZUtleS0+PkV4dHJhY3RQcml2YXRlS2V5OiBDb252ZXJ0IHRvIGJpbmFyeSBERVJcbiAqICAgRXh0cmFjdFByaXZhdGVLZXktPj5TdWJ0bGVDcnlwdG86IGltcG9ydEtleShwa2NzOCwgYmluYXJ5RGVyLCBvcHRpb25zKVxuICogICBTdWJ0bGVDcnlwdG8tLT4+RXh0cmFjdFByaXZhdGVLZXk6IENyeXB0b0tleVxuICogICBFeHRyYWN0UHJpdmF0ZUtleS0tPj5DYWxsZXI6IENyeXB0b0tleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFByaXZhdGVLZXkocGVtKSB7XG4gICAgY29uc3QgbGliTmFtZSA9IFwiY3J5cHRvXCI7XG4gICAgbGV0IHN1YnRsZTtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgICAgc3VidGxlID0gZ2xvYmFsVGhpcy5jcnlwdG8uc3VidGxlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgbGliID0gKGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQobGliTmFtZSkpKTtcbiAgICAgICAgc3VidGxlID0gbGliLnN1YnRsZSB8fCBsaWIud2ViY3J5cHRvLnN1YnRsZTtcbiAgICB9XG4gICAgaWYgKCFzdWJ0bGUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBsb2FkIFN1YnRsZUNyeXB0byBtb2R1bGVcIik7XG4gICAgZnVuY3Rpb24gc3RyMmFiKHN0cikge1xuICAgICAgICBjb25zdCBidWYgPSBuZXcgQXJyYXlCdWZmZXIoc3RyLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGJ1ZlZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgc3RyTGVuID0gc3RyLmxlbmd0aDsgaSA8IHN0ckxlbjsgaSsrKSB7XG4gICAgICAgICAgICBidWZWaWV3W2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgY29uc3Qgc3RyID0gcGVtXG4gICAgICAgIC50b1N0cmluZyhcInV0ZjhcIilcbiAgICAgICAgLnJlcGxhY2UoXCItLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS1cIiwgXCJcIilcbiAgICAgICAgLnJlcGxhY2VBbGwoXCJcXG5cIiwgXCJcIilcbiAgICAgICAgLnJlcGxhY2UoXCItLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXCIsIFwiXCIpO1xuICAgIGNvbnN0IGRlY29kZWQgPSBCdWZmZXIuZnJvbShzdHIsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwiYmluYXJ5XCIpO1xuICAgIGNvbnN0IGJpbmFyeURlciA9IHN0cjJhYihkZWNvZGVkKTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBzdWJ0bGUuaW1wb3J0S2V5KFwicGtjczhcIiwgYmluYXJ5RGVyLCB7XG4gICAgICAgICAgICBuYW1lOiBcIkVDRFNBXCIsXG4gICAgICAgICAgICBuYW1lZEN1cnZlOiBcIlAtMjU2XCIsXG4gICAgICAgIH0sIHRydWUsIFtcInNpZ25cIl0pO1xuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2labUZpY21sakxXWnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dmMzSmpMMk5zYVdWdWRDOW1ZV0p5YVdNdFpuTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxGTkJRVk1zUlVGQlJTeFZRVUZWTEVWQlFVVXNUVUZCVFN4dFFrRkJiVUlzUTBGQlF6dEJRVU14UkN4UFFVRlBMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzWlVGQlpTeERRVUZETzBGQlEzSkRMRTlCUVU4c1JVRkJiMElzVDBGQlR5eEZRVUZGTEUxQlFVMHNOa0pCUVRaQ0xFTkJRVU03UVVGRGVFVXNUMEZCVHl4RlFVRkZMR0ZCUVdFc1JVRkJSU3hOUVVGTkxIbENRVUY1UWl4RFFVRkRPMEZCUTNoRUxFOUJRVThzUlVGQlJTeGxRVUZsTEVWQlFVVXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVVZxUkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVVjRRenM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1EwRkJReXhMUVVGTExGVkJRVlVzYVVKQlFXbENMRU5CUTNKRExHRkJRV3RETEVWQlEyeERMRlZCUVcxRk8wbEJSVzVGTEVsQlFVa3NZVUZCWVN4WlFVRlpMRlZCUVZVN1VVRkJSU3hQUVVGUExHRkJRV0VzUTBGQlF6dEpRVU01UkN4SlFVTkZMR0ZCUVdFc1EwRkJReXhMUVVGTExFTkJRMnBDTEhORlFVRnpSU3hEUVVOMlJUdFJRVVZFTEU5QlFVOHNZVUZCWVN4RFFVRkRPMGxCUTNaQ0xFOUJRVThzVFVGQlRTeFZRVUZWTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1FVRkRla01zUTBGQlF6dEJRVVZFT3pzN096czdPMGRCVDBjN1FVRkRTQ3hOUVVGTkxFTkJRVU1zUzBGQlN5eFZRVUZWTEZGQlFWRXNRMEZCUXl4aFFVRTRRanRKUVVNelJDeEpRVUZKTEU5QlFVOHNZVUZCWVN4TFFVRkxMRkZCUVZFN1VVRkJSU3hQUVVGUExHRkJRV0VzUTBGQlF6dEpRVVUxUkN4TlFVRk5MRlZCUVZVc1IwRkJSeXhMUVVGTExFVkJRVVVzU1VGQldTeEZRVUZGTEVWQlFVVTdVVUZEZUVNc1RVRkJUU3hGUVVGRkxGRkJRVkVzUlVGQlJTeEhRVUZITEUxQlFVMHNaVUZCWlN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzcEVMRTlCUVU4c1RVRkJUU3hSUVVGUkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUTNaRExFTkJRVU1zUTBGQlF6dEpRVVZHTEU5QlFVOHNUVUZCVFN4VlFVRlZMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03UVVGRGVrTXNRMEZCUXp0QlFVVkVPenM3T3pzN096czdPMGRCVlVjN1FVRkRTQ3hOUVVGTkxFTkJRVU1zUzBGQlN5eFZRVUZWTEZOQlFWTXNRMEZETjBJc1VVRkJaMElzUlVGRGFFSXNWVUZCYTBJc1JVRkRiRUlzVjBGQmJVSXNSVUZEYmtJc1MwRkJZVHRKUVVWaUxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlExQXNhVUpCUVdsQ0xFdEJRVXNzVTBGQlV5eFJRVUZSTEhGQ1FVRnhRaXhYUVVGWExFVkJRVVVzUTBGRE1VVXNRMEZCUXp0SlFVTkdMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMGxCUTJoRExFMUJRVTBzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRKUVVNeFF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wbEJRMnBETEUxQlFVMHNWMEZCVnl4SFFVRkhMRmRCUVZjc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRKUVVNM1JDeE5RVUZOTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1YwRkJWeXhGUVVGRkxGZEJRVmNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTXhSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5rTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEUxQlFVMHNRMEZCUXl4TFFVRkxMRlZCUVZVc1YwRkJWeXhEUVVNdlFpeExRVUZoTEVWQlEySXNhVUpCUVhsQ08wbEJSWHBDTEUxQlFVMHNhMEpCUVd0Q0xFZEJRVWNzUzBGQlN5eEZRVUZGTEVsQlFWa3NSVUZCUlN4RlFVRkZPMUZCUTJoRUxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNSMEZCUnl4TlFVRk5MR1ZCUVdVc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjZSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEcxQ1FVRnRRaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEycEVMRTFCUVUwc1YwRkJWeXhIUVVGSExFMUJRVTBzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVOMFJDeFBRVUZQTEZkQlFWY3NRMEZCUXp0SlFVTnlRaXhEUVVGRExFTkJRVU03U1VGRlJpeE5RVUZOTEZkQlFWY3NSMEZCWlN4RFFVRkRMRTFCUVUwc2FVSkJRV2xDTEVOQlEzUkVMR2xDUVVGcFFpeEZRVU5xUWl4clFrRkJhMElzUTBGRGJrSXNRMEZCWlN4RFFVRkRPMGxCUldwQ0xFOUJRVThzUlVGQlJTeExRVUZMTEVWQlFVVXNWMEZCVnl4RlFVRkZMRU5CUVVNN1FVRkRhRU1zUTBGQlF6dEJRVVZFT3pzN096czdPMGRCVDBjN1FVRkRTQ3hOUVVGTkxFTkJRVU1zUzBGQlN5eFZRVUZWTEcxQ1FVRnRRaXhEUVVGRExFOUJRV1U3U1VGRGRrUXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSU3hIUVVGSExFMUJRVTBzWlVGQlpTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM3BFTEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhOUVVGTkxHVkJRV1VzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4TlFVRk5MRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZET1VNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnBETEVOQlFVTTdRVUZGUkRzN096czdPenRIUVU5SE8wRkJRMGdzVFVGQlRTeERRVUZETEV0QlFVc3NWVUZCVlN3d1FrRkJNRUlzUTBGRE9VTXNUMEZCWlR0SlFVVm1MRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzUjBGQlJ5eE5RVUZOTEdWQlFXVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU42UkN4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzVFVGQlRTeGxRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGRrUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1RVRkJUU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpsRExFOUJRVThzUTBGQlF5eE5RVUZOTEZGQlFWRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZEZGtVc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRU5CUVVNc1MwRkJTeXhWUVVGVkxGTkJRVk1zUTBGQlF5eG5Ra0ZCZDBJN1NVRkRkRVFzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhMUVVGTExFVkJRVVVzU1VGQldTeEZRVUZGTEVWQlFVVTdVVUZET1VNc1RVRkJUU3hGUVVGRkxGRkJRVkVzUlVGQlJTeEhRVUZITEUxQlFVMHNaVUZCWlN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzcEVMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzYlVKQlFXMUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGFFUXNUMEZCVHl4TlFVRk5MRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZETVVNc1EwRkJReXhEUVVGRE8wbEJSVVlzVFVGQlRTeGhRVUZoTEVkQlFVY3NRMEZCUXl4TlFVRk5MR2xDUVVGcFFpeERRVU0xUXl4blFrRkJaMElzUlVGRGFFSXNaMEpCUVdkQ0xFTkJRMnBDTEVOQlFWY3NRMEZCUXp0SlFVTmlMRFJDUVVFMFFqdEpRVU0xUWl4blJFRkJaMFE3U1VGRGFFUXNTMEZCU3p0SlFVVk1MREpDUVVFeVFqdEpRVU16UWl4TlFVRk5MRlZCUVZVc1IwRkJSeXhOUVVGTkxHbENRVUZwUWl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8wbEJRekZFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRTFCUVUwc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRKUVVOMFJDeE5RVUZOTEVOQlFVTXNSMEZCU1N4VlFVRnJRaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNaRExFdEJRVXM3U1VGRlRDeFBRVUZQTEU5QlFVOHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eERRVUZSTEVOQlFVTXNRMEZCUXp0QlFVTXZReXhEUVVGRE8wRkJSVVE3T3pzN096czdPenM3T3pzN096czdPenM3TzBkQmIwSkhPMEZCUTBnc1RVRkJUU3hEUVVGRExFdEJRVXNzVlVGQlZTeHBRa0ZCYVVJc1EwRkJReXhIUVVGWE8wbEJRMnBFTEUxQlFVMHNUMEZCVHl4SFFVRkhMRkZCUVZFc1EwRkJRenRKUVVONlFpeEpRVUZKTEUxQlFVMHNRMEZCUXp0SlFVTllMRWxCUVVrc1UwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5vUWl4TlFVRk5MRWRCUVVrc1ZVRkJhMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUXpkRExFTkJRVU03VTBGQlRTeERRVUZETzFGQlEwNHNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxHVkJRV1VzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJVU3hEUVVGRE8xRkJRelZFTEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUXpsRExFTkJRVU03U1VGRlJDeEpRVUZKTEVOQlFVTXNUVUZCVFR0UlFVRkZMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYjBOQlFXOURMRU5CUVVNc1EwRkJRenRKUVVWdVJTeFRRVUZUTEUxQlFVMHNRMEZCUXl4SFFVRlhPMUZCUTNwQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU40UXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTndReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGNrUXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha01zUTBGQlF6dFJRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVWRUxFMUJRVTBzUjBGQlJ5eEhRVUZITEVkQlFVYzdVMEZEV2l4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJRMmhDTEU5QlFVOHNRMEZCUXl3MlFrRkJOa0lzUlVGQlJTeEZRVUZGTEVOQlFVTTdVMEZETVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTTdVMEZEY0VJc1QwRkJUeXhEUVVGRExESkNRVUV5UWl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRelZETEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEpRVU01UkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZGYkVNc1NVRkJTU3hEUVVGRE8xRkJRMGdzVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVOb1F5eFBRVUZQTEVWQlExQXNVMEZCVXl4RlFVTlVPMWxCUTBVc1NVRkJTU3hGUVVGRkxFOUJRVTg3V1VGRFlpeFZRVUZWTEVWQlFVVXNUMEZCVHp0VFFVTndRaXhGUVVORUxFbEJRVWtzUlVGRFNpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVTlVMRU5CUVVNN1VVRkZSaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEVOQlFVTTdTVUZCUXl4UFFVRlBMRU5CUVUwc1JVRkJSU3hEUVVGRE8xRkJRMmhDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE4wSXNRMEZCUXp0QlFVTklMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QnBjMEp5YjNkelpYSXNJRTFwYm1sTWIyZG5aWElnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJ4dloyZHBibWRjSWp0Y2JtbHRjRzl5ZENCN0lGVnpaWElnZlNCbWNtOXRJRndpWm1GaWNtbGpMV052YlcxdmJsd2lPMXh1YVcxd2IzSjBJSHNnU1dSbGJuUnBkSGtzSUZOcFoyNWxjaXdnYzJsbmJtVnljeUI5SUdaeWIyMGdYQ0pBYUhsd1pYSnNaV1JuWlhJdlptRmljbWxqTFdkaGRHVjNZWGxjSWp0Y2JtbHRjRzl5ZENCN0lFbHVkR1Z5Ym1Gc1JYSnliM0lnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSaUxXUmxZMjl5WVhSdmNuTmNJanRjYm1sdGNHOXlkQ0I3SUc1dmNtMWhiR2w2WlVsdGNHOXlkQ0I5SUdaeWIyMGdYQ0pBWkdWallXWXRkSE12WTI5eVpWd2lPMXh1WEc1amIyNXpkQ0JzYjJjZ1BTQnVaWGNnVFdsdWFVeHZaMmRsY2loY0ltWmhZbkpwWXkxbWMxd2lLVHRjYmx4dUx5b3FYRzRnS2lCQVpHVnpZM0pwY0hScGIyNGdURzloWkhNZ1kyOXVkR1Z1ZENCbWNtOXRJR0VnWm1sc1pTQnZjaUJ5WlhSMWNtNXpJSFJvWlNCamIyNTBaVzUwSUdsbUlHRnNjbVZoWkhrZ2JHOWhaR1ZrWEc0Z0tpQkFjM1Z0YldGeWVTQkVaWFJsY20xcGJtVnpJR2xtSUhSb1pTQnBibkIxZENCcGN5QmhiSEpsWVdSNUlHTnZiblJsYm5RZ2IzSWdZU0J3WVhSb0lIUnZJR0VnWm1sc1pTd2dZVzVrSUd4dllXUnpJSFJvWlNCbWFXeGxJR2xtSUc1bFpXUmxaRnh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWNnZkNCVmFXNTBPRUZ5Y21GNWZTQmpiMjUwWlc1MFQzSlFZWFJvSUMwZ1ZHaGxJR052Ym5SbGJuUWdiM0lnY0dGMGFDQjBieUJzYjJGa1hHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JtYVd4bFVtVmhaR1Z5SUMwZ1JuVnVZM1JwYjI0Z2RHOGdjbVZoWkNCMGFHVWdabWxzWlNCcFppQmpiMjUwWlc1MFQzSlFZWFJvSUdseklHRWdjR0YwYUZ4dUlDb2dRSEpsZEhWeWJpQjdVSEp2YldselpUeHpkSEpwYm1jZ2ZDQlZhVzUwT0VGeWNtRjVJSHdnUW5WbVptVnlQbjBnVkdobElHTnZiblJsYm5SY2JpQXFJRUJtZFc1amRHbHZiaUJqYjI1MFpXNTBUMlpNYjJGa1JtbHNaVnh1SUNvZ1FHMWxiV0psY2s5bUlHMXZaSFZzWlRwbWIzSXRabUZpY21sakxtTnNhV1Z1ZEZ4dUlDb3ZYRzVsZUhCdmNuUWdZWE41Ym1NZ1puVnVZM1JwYjI0Z1kyOXVkR1Z1ZEU5bVRHOWhaRVpwYkdVb1hHNGdJR052Ym5SbGJuUlBjbEJoZEdnNklITjBjbWx1WnlCOElGVnBiblE0UVhKeVlYa3NYRzRnSUdacGJHVlNaV0ZrWlhJNklDaHdZWFJvT2lCemRISnBibWNwSUQwK0lGQnliMjFwYzJVOGMzUnlhVzVuSUh3Z1ZXbHVkRGhCY25KaGVTQjhJRUoxWm1abGNqNWNiaWtnZTF4dUlDQnBaaUFvWTI5dWRHVnVkRTl5VUdGMGFDQnBibk4wWVc1alpXOW1JRlZwYm5RNFFYSnlZWGtwSUhKbGRIVnliaUJqYjI1MFpXNTBUM0pRWVhSb08xeHVJQ0JwWmlBb1hHNGdJQ0FnWTI5dWRHVnVkRTl5VUdGMGFDNXRZWFJqYUNoY2JpQWdJQ0FnSUM4dExTMHRMVUpGUjBsT0lDaERSVkpVU1VaSlEwRlVSWHhMUlZsOFVGSkpWa0ZVUlNCTFJWa3BMUzB0TFMwdUt6OHRMUzB0TFVWT1JDQmNYREV0TFMwdExTUXZaMjF6WEc0Z0lDQWdLVnh1SUNBcFhHNGdJQ0FnY21WMGRYSnVJR052Ym5SbGJuUlBjbEJoZEdnN1hHNGdJSEpsZEhWeWJpQmhkMkZwZENCbWFXeGxVbVZoWkdWeUtHTnZiblJsYm5SUGNsQmhkR2dwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUJrWlhOamNtbHdkR2x2YmlCU1pXRmtjeUJoSUdacGJHVWdabkp2YlNCMGFHVWdabWxzWlNCemVYTjBaVzFjYmlBcUlFQnpkVzF0WVhKNUlFeHZZV1J6SUdFZ1ptbHNaU0IxYzJsdVp5QjBhR1VnVG05a1pTNXFjeUJtYVd4bElITjVjM1JsYlNCdGIyUjFiR1ZjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuSUh3Z1FuVm1abVZ5ZlNCamIyNTBaVzUwVDNKUVlYUm9JQzBnVkdobElHTnZiblJsYm5RZ2IzSWdjR0YwYUNCMGJ5QnNiMkZrWEc0Z0tpQkFjbVYwZFhKdUlIdFFjbTl0YVhObFBFSjFabVpsY2o1OUlGUm9aU0JtYVd4bElHTnZiblJsYm5RZ1lYTWdZU0JDZFdabVpYSmNiaUFxSUVCbWRXNWpkR2x2YmlCeVpXRmtSbWxzWlZ4dUlDb2dRRzFsYldKbGNrOW1JRzF2WkhWc1pUcG1iM0l0Wm1GaWNtbGpMbU5zYVdWdWRGeHVJQ292WEc1bGVIQnZjblFnWVhONWJtTWdablZ1WTNScGIyNGdjbVZoWkVacGJHVW9ZMjl1ZEdWdWRFOXlVR0YwYURvZ2MzUnlhVzVuSUh3Z1FuVm1abVZ5S1NCN1hHNGdJR2xtSUNoMGVYQmxiMllnWTI5dWRHVnVkRTl5VUdGMGFDQWhQVDBnWENKemRISnBibWRjSWlrZ2NtVjBkWEp1SUdOdmJuUmxiblJQY2xCaGRHZzdYRzVjYmlBZ1kyOXVjM1FnWm1sc1pWSmxZV1JsY2lBOUlHRnplVzVqSUNod1lYUm9PaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQjdJSEJ5YjIxcGMyVnpJSDBnUFNCaGQyRnBkQ0J1YjNKdFlXeHBlbVZKYlhCdmNuUW9hVzF3YjNKMEtGd2labk5jSWlrcE8xeHVJQ0FnSUhKbGRIVnliaUJoZDJGcGRDQndjbTl0YVhObGN5NXlaV0ZrUm1sc1pTaHdZWFJvS1R0Y2JpQWdmVHRjYmx4dUlDQnlaWFIxY200Z1lYZGhhWFFnWm1sc1pWSmxZV1JsY2loamIyNTBaVzUwVDNKUVlYUm9LVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTNKbFlYUmxjeUJoSUVObGNuUnBabWxqWVhSbElFRjFkR2h2Y21sMGVTQjFjMlZ5WEc0Z0tpQkFjM1Z0YldGeWVTQkpibWwwYVdGc2FYcGxjeUJoSUhWelpYSWdkMmwwYUNCMGFHVWdaMmwyWlc0Z1kzSmxaR1Z1ZEdsaGJITWdabTl5SUdsdWRHVnlZV04wYVc1bklIZHBkR2dnWVNCR1lXSnlhV01nUTBGY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjFjMlZ5VG1GdFpTQXRJRlJvWlNCMWMyVnlJRzVoYldWY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQndjbWwyWVhSbFMyVjVJQzBnVkdobElIQnlhWFpoZEdVZ2EyVjVJR0Z6SUdFZ2MzUnlhVzVuWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1kyVnlkR2xtYVdOaGRHVWdMU0JVYUdVZ1kyVnlkR2xtYVdOaGRHVWdZWE1nWVNCemRISnBibWRjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdGMzQkpaQ0F0SUZSb1pTQk5aVzFpWlhKemFHbHdJRk5sY25acFkyVWdVSEp2ZG1sa1pYSWdTVVJjYmlBcUlFQnlaWFIxY200Z2UxQnliMjFwYzJVOFZYTmxjajU5SUZCeWIyMXBjMlVnY21WemIyeDJhVzVuSUhSdklIUm9aU0JqY21WaGRHVmtJSFZ6WlhKY2JpQXFJRUJtZFc1amRHbHZiaUJuWlhSRFFWVnpaWEpjYmlBcUlFQnRaVzFpWlhKUFppQnRiMlIxYkdVNlptOXlMV1poWW5KcFl5NWpiR2xsYm5SY2JpQXFMMXh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlHZGxkRU5CVlhObGNpaGNiaUFnZFhObGNrNWhiV1U2SUhOMGNtbHVaeXhjYmlBZ2NISnBkbUYwWlV0bGVUb2djM1J5YVc1bkxGeHVJQ0JqWlhKMGFXWnBZMkYwWlRvZ2MzUnlhVzVuTEZ4dUlDQnRjM0JKWkRvZ2MzUnlhVzVuWEc0cE9pQlFjbTl0YVhObFBGVnpaWEkrSUh0Y2JpQWdiRzluTG1SbFluVm5LRnh1SUNBZ0lHQkRjbVZoZEdsdVp5QmhJRU5CSUNSN2JYTndTV1I5SUhWelpYSWdKSHQxYzJWeVRtRnRaWDBnZDJsMGFDQmpaWEowYVdacFkyRjBaU0FrZTJObGNuUnBabWxqWVhSbGZXQmNiaUFnS1R0Y2JpQWdZMjl1YzNRZ2RYTmxjaUE5SUc1bGR5QlZjMlZ5S0hWelpYSk9ZVzFsS1R0Y2JpQWdZMjl1YzNRZ1kzSjVjSFJ2VTNWcGRHVWdQU0JWYzJWeUxtNWxkME55ZVhCMGIxTjFhWFJsS0NrN1hHNGdJSFZ6WlhJdWMyVjBRM0o1Y0hSdlUzVnBkR1VvWTNKNWNIUnZVM1ZwZEdVcE8xeHVJQ0JqYjI1emRDQnBiWEJ2Y25SbFpFdGxlU0E5SUdOeWVYQjBiMU4xYVhSbExtTnlaV0YwWlV0bGVVWnliMjFTWVhjb2NISnBkbUYwWlV0bGVTazdYRzRnSUdGM1lXbDBJSFZ6WlhJdWMyVjBSVzV5YjJ4c2JXVnVkQ2hwYlhCdmNuUmxaRXRsZVN3Z1kyVnlkR2xtYVdOaGRHVXNJRzF6Y0Vsa0tUdGNiaUFnY21WMGRYSnVJSFZ6WlhJN1hHNTlYRzVjYmk4cUtseHVJQ29nUUdSbGMyTnlhWEIwYVc5dUlFZGxkSE1nWVc0Z2FXUmxiblJwZEhrZ1puSnZiU0JoSUdObGNuUnBabWxqWVhSbElHUnBjbVZqZEc5eWVWeHVJQ29nUUhOMWJXMWhjbmtnVEc5aFpITWdZU0JqWlhKMGFXWnBZMkYwWlNCbWNtOXRJR0VnWkdseVpXTjBiM0o1SUdGdVpDQmpjbVZoZEdWeklHRnVJRWxrWlc1MGFYUjVJRzlpYW1WamRGeHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzF6Y0Vsa0lDMGdWR2hsSUUxbGJXSmxjbk5vYVhBZ1UyVnlkbWxqWlNCUWNtOTJhV1JsY2lCSlJGeHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR05sY25SRWFYSmxZM1J2Y25sUVlYUm9JQzBnVUdGMGFDQjBieUIwYUdVZ1pHbHlaV04wYjNKNUlHTnZiblJoYVc1cGJtY2dkR2hsSUdObGNuUnBabWxqWVhSbFhHNGdLaUJBY21WMGRYSnVJSHRRY205dGFYTmxQRWxrWlc1MGFYUjVQbjBnVUhKdmJXbHpaU0J5WlhOdmJIWnBibWNnZEc4Z2RHaGxJR2xrWlc1MGFYUjVYRzRnS2lCQVpuVnVZM1JwYjI0Z1oyVjBTV1JsYm5ScGRIbGNiaUFxSUVCdFpXMWlaWEpQWmlCdGIyUjFiR1U2Wm05eUxXWmhZbkpwWXk1amJHbGxiblJjYmlBcUwxeHVaWGh3YjNKMElHRnplVzVqSUdaMWJtTjBhVzl1SUdkbGRFbGtaVzUwYVhSNUtGeHVJQ0J0YzNCSlpEb2djM1J5YVc1bkxGeHVJQ0JqWlhKMFJHbHlaV04wYjNKNVVHRjBhRG9nYzNSeWFXNW5YRzRwT2lCUWNtOXRhWE5sUEVsa1pXNTBhWFI1UGlCN1hHNGdJR052Ym5OMElHbGtaVzUwYVhSNVJtbHNaVkpsWVdSbGNpQTlJR0Z6ZVc1aklDaHdZWFJvT2lCemRISnBibWNwSUQwK0lIdGNiaUFnSUNCamIyNXpkQ0I3SUhCeWIyMXBjMlZ6SUgwZ1BTQmhkMkZwZENCdWIzSnRZV3hwZW1WSmJYQnZjblFvYVcxd2IzSjBLRndpWm5OY0lpa3BPMXh1SUNBZ0lHTnZibk4wSUdObGNuUlFZWFJvSUQwZ1lYZGhhWFFnWjJWMFJtbHljM1JFYVhKR2FXeGxUbUZ0WlNod1lYUm9LVHRjYmlBZ0lDQmpiMjV6ZENCamNtVmtaVzUwYVdGc2N5QTlJR0YzWVdsMElIQnliMjFwYzJWekxuSmxZV1JHYVd4bEtHTmxjblJRWVhSb0tUdGNiaUFnSUNCeVpYUjFjbTRnWTNKbFpHVnVkR2xoYkhNN1hHNGdJSDA3WEc1Y2JpQWdZMjl1YzNRZ1kzSmxaR1Z1ZEdsaGJITTZJRlZwYm5RNFFYSnlZWGtnUFNBb1lYZGhhWFFnWTI5dWRHVnVkRTltVEc5aFpFWnBiR1VvWEc0Z0lDQWdZMlZ5ZEVScGNtVmpkRzl5ZVZCaGRHZ3NYRzRnSUNBZ2FXUmxiblJwZEhsR2FXeGxVbVZoWkdWeVhHNGdJQ2twSUdGeklGVnBiblE0UVhKeVlYazdYRzVjYmlBZ2NtVjBkWEp1SUhzZ2JYTndTV1FzSUdOeVpXUmxiblJwWVd4eklIMDdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FHUmxjMk55YVhCMGFXOXVJRWRsZEhNZ2RHaGxJR1oxYkd3Z2NHRjBhQ0J2WmlCMGFHVWdabWx5YzNRZ1ptbHNaU0JwYmlCaElHUnBjbVZqZEc5eWVWeHVJQ29nUUhOMWJXMWhjbmtnVW1WaFpITWdZU0JrYVhKbFkzUnZjbmtnWVc1a0lISmxkSFZ5Ym5NZ2RHaGxJSEJoZEdnZ2RHOGdkR2hsSUdacGNuTjBJR1pwYkdVZ1ptOTFibVJjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCa2FYSlFZWFJvSUMwZ1VHRjBhQ0IwYnlCMGFHVWdaR2x5WldOMGIzSjVYRzRnS2lCQWNtVjBkWEp1SUh0UWNtOXRhWE5sUEhOMGNtbHVaejU5SUZCeWIyMXBjMlVnY21WemIyeDJhVzVuSUhSdklIUm9aU0JtZFd4c0lIQmhkR2dnYjJZZ2RHaGxJR1pwY25OMElHWnBiR1ZjYmlBcUlFQm1kVzVqZEdsdmJpQm5aWFJHYVhKemRFUnBja1pwYkdWT1lXMWxYRzRnS2lCQWJXVnRZbVZ5VDJZZ2JXOWtkV3hsT21admNpMW1ZV0p5YVdNdVkyeHBaVzUwWEc0Z0tpOWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCblpYUkdhWEp6ZEVScGNrWnBiR1ZPWVcxbEtHUnBjbEJoZEdnNklITjBjbWx1WnlrNklGQnliMjFwYzJVOGMzUnlhVzVuUGlCN1hHNGdJR052Ym5OMElIc2djSEp2YldselpYTWdmU0E5SUdGM1lXbDBJRzV2Y20xaGJHbDZaVWx0Y0c5eWRDaHBiWEJ2Y25Rb1hDSm1jMXdpS1NrN1hHNGdJR052Ym5OMElIc2dhbTlwYmlCOUlEMGdZWGRoYVhRZ2JtOXliV0ZzYVhwbFNXMXdiM0owS0dsdGNHOXlkQ2hjSW5CaGRHaGNJaWtwTzF4dUlDQmpiMjV6ZENCbWFXeGxjeUE5SUdGM1lXbDBJSEJ5YjIxcGMyVnpMbkpsWVdSa2FYSW9aR2x5VUdGMGFDazdYRzRnSUhKbGRIVnliaUJxYjJsdUtHUnBjbEJoZEdnc0lHWnBiR1Z6V3pCZEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCQVpHVnpZM0pwY0hScGIyNGdSMlYwY3lCMGFHVWdZMjl1ZEdWdWRDQnZaaUIwYUdVZ1ptbHljM1FnWm1sc1pTQnBiaUJoSUdScGNtVmpkRzl5ZVZ4dUlDb2dRSE4xYlcxaGNua2dVbVZoWkhNZ1lTQmthWEpsWTNSdmNua3NJR1pwYm1SeklIUm9aU0JtYVhKemRDQm1hV3hsTENCaGJtUWdjbVYwZFhKdWN5QnBkSE1nWTI5dWRHVnVkQ0JoY3lCaElITjBjbWx1WjF4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHUnBjbEJoZEdnZ0xTQlFZWFJvSUhSdklIUm9aU0JrYVhKbFkzUnZjbmxjYmlBcUlFQnlaWFIxY200Z2UxQnliMjFwYzJVOGMzUnlhVzVuUG4wZ1VISnZiV2x6WlNCeVpYTnZiSFpwYm1jZ2RHOGdkR2hsSUdOdmJuUmxiblFnYjJZZ2RHaGxJR1pwY25OMElHWnBiR1ZjYmlBcUlFQm1kVzVqZEdsdmJpQm5aWFJHYVhKemRFUnBja1pwYkdWT1lXMWxRMjl1ZEdWdWRGeHVJQ29nUUcxbGJXSmxjazltSUcxdlpIVnNaVHBtYjNJdFptRmljbWxqTG1Oc2FXVnVkRnh1SUNvdlhHNWxlSEJ2Y25RZ1lYTjVibU1nWm5WdVkzUnBiMjRnWjJWMFJtbHljM1JFYVhKR2FXeGxUbUZ0WlVOdmJuUmxiblFvWEc0Z0lHUnBjbEJoZEdnNklITjBjbWx1WjF4dUtUb2dVSEp2YldselpUeHpkSEpwYm1jK0lIdGNiaUFnWTI5dWMzUWdleUJ3Y205dGFYTmxjeUI5SUQwZ1lYZGhhWFFnYm05eWJXRnNhWHBsU1cxd2IzSjBLR2x0Y0c5eWRDaGNJbVp6WENJcEtUdGNiaUFnWTI5dWMzUWdleUJxYjJsdUlIMGdQU0JoZDJGcGRDQnViM0p0WVd4cGVtVkpiWEJ2Y25Rb2FXMXdiM0owS0Z3aWNHRjBhRndpS1NrN1hHNGdJR052Ym5OMElHWnBiR1Z6SUQwZ1lYZGhhWFFnY0hKdmJXbHpaWE11Y21WaFpHUnBjaWhrYVhKUVlYUm9LVHRjYmlBZ2NtVjBkWEp1SUNoaGQyRnBkQ0J3Y205dGFYTmxjeTV5WldGa1JtbHNaU2hxYjJsdUtHUnBjbEJoZEdnc0lHWnBiR1Z6V3pCZEtTa3BMblJ2VTNSeWFXNW5LQ2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVkbGRITWdZU0J6YVdkdVpYSWdabkp2YlNCaElHdGxlU0JrYVhKbFkzUnZjbmxjYmlBcUlFQnpkVzF0WVhKNUlFeHZZV1J6SUdFZ2NISnBkbUYwWlNCclpYa2dabkp2YlNCaElHUnBjbVZqZEc5eWVTQmhibVFnWTNKbFlYUmxjeUJoSUZOcFoyNWxjaUJtYjNJZ1JtRmljbWxqSUhSeVlXNXpZV04wYVc5dWMxeHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR3RsZVVScGNtVmpkRzl5ZVZCaGRHZ2dMU0JRWVhSb0lIUnZJSFJvWlNCa2FYSmxZM1J2Y25rZ1kyOXVkR0ZwYm1sdVp5QjBhR1VnY0hKcGRtRjBaU0JyWlhsY2JpQXFJRUJ5WlhSMWNtNGdlMUJ5YjIxcGMyVThVMmxuYm1WeVBuMGdVSEp2YldselpTQnlaWE52YkhacGJtY2dkRzhnZEdobElITnBaMjVsY2x4dUlDb2dRR1oxYm1OMGFXOXVJR2RsZEZOcFoyNWxjbHh1SUNvZ1FHMWxiV0psY2s5bUlHMXZaSFZzWlRwbWIzSXRabUZpY21sakxtTnNhV1Z1ZEZ4dUlDb3ZYRzVsZUhCdmNuUWdZWE41Ym1NZ1puVnVZM1JwYjI0Z1oyVjBVMmxuYm1WeUtHdGxlVVJwY21WamRHOXllVkJoZEdnNklITjBjbWx1WnlrNklGQnliMjFwYzJVOFUybG5ibVZ5UGlCN1hHNGdJR052Ym5OMElITnBaMjVsY2tacGJHVlNaV0ZrWlhJZ1BTQmhjM2x1WXlBb2NHRjBhRG9nYzNSeWFXNW5LU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJ3Y205dGFYTmxjeUI5SUQwZ1lYZGhhWFFnYm05eWJXRnNhWHBsU1cxd2IzSjBLR2x0Y0c5eWRDaGNJbVp6WENJcEtUdGNiaUFnSUNCamIyNXpkQ0JyWlhsUVlYUm9JRDBnWVhkaGFYUWdaMlYwUm1seWMzUkVhWEpHYVd4bFRtRnRaU2h3WVhSb0tUdGNiaUFnSUNCeVpYUjFjbTRnWVhkaGFYUWdjSEp2YldselpYTXVjbVZoWkVacGJHVW9hMlY1VUdGMGFDazdYRzRnSUgwN1hHNWNiaUFnWTI5dWMzUWdjSEpwZG1GMFpVdGxlVkJsYlNBOUlDaGhkMkZwZENCamIyNTBaVzUwVDJaTWIyRmtSbWxzWlNoY2JpQWdJQ0JyWlhsRWFYSmxZM1J2Y25sUVlYUm9MRnh1SUNBZ0lITnBaMjVsY2tacGJHVlNaV0ZrWlhKY2JpQWdLU2tnWVhNZ1FuVm1abVZ5TzF4dUlDQXZMeUJPYjJSbElHSmhjMlZrSUdsdGNHeGxiV1Z1ZEdGMGFXOXVYRzRnSUM4dklIQnlhWFpoZEdWTFpYa2dQU0JqY21WaGRHVlFjbWwyWVhSbFMyVjVLSEJ5YVhaaGRHVkxaWGxRWlcwcE8xeHVJQ0F2THlBdExWeHVYRzRnSUM4dklIZGxZaUJpWVhObFpDQnBiWEJzWlcxbGJuUmhkR2x2Ymx4dUlDQmpiMjV6ZENCd2NtbDJZWFJsUzJWNUlEMGdZWGRoYVhRZ1pYaDBjbUZqZEZCeWFYWmhkR1ZMWlhrb2NISnBkbUYwWlV0bGVWQmxiU2s3WEc0Z0lHTnZibk4wSUd0bGVYTWdQU0JQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsVGVXMWliMnh6S0hCeWFYWmhkR1ZMWlhrcE8xeHVJQ0JqYjI1emRDQnJJRDBnS0hCeWFYWmhkR1ZMWlhrZ1lYTWdZVzU1S1Z0clpYbHpXekJkWFR0Y2JpQWdMeThnTFMxY2JseHVJQ0J5WlhSMWNtNGdjMmxuYm1WeWN5NXVaWGRRY21sMllYUmxTMlY1VTJsbmJtVnlLR3NnWVhNZ1lXNTVLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnUlhoMGNtRmpkSE1nWVNCd2NtbDJZWFJsSUd0bGVTQm1jbTl0SUdFZ1VFVk5JR0oxWm1abGNseHVJQ29nUUhOMWJXMWhjbmtnUTI5dWRtVnlkSE1nWVNCUVJVMHRaVzVqYjJSbFpDQndjbWwyWVhSbElHdGxlU0IwYnlCaElFTnllWEIwYjB0bGVTQnZZbXBsWTNSY2JpQXFJRUJ3WVhKaGJTQjdRblZtWm1WeWZTQndaVzBnTFNCVWFHVWdVRVZOTFdWdVkyOWtaV1FnY0hKcGRtRjBaU0JyWlhsY2JpQXFJRUJ5WlhSMWNtNGdlMUJ5YjIxcGMyVThRM0o1Y0hSdlMyVjVQbjBnVUhKdmJXbHpaU0J5WlhOdmJIWnBibWNnZEc4Z2RHaGxJRU55ZVhCMGIwdGxlVnh1SUNvZ1FHWjFibU4wYVc5dUlHVjRkSEpoWTNSUWNtbDJZWFJsUzJWNVhHNGdLaUJBYldWdFltVnlUMllnYlc5a2RXeGxPbVp2Y2kxbVlXSnlhV011WTJ4cFpXNTBYRzRnS2lCQWJXVnliV0ZwWkZ4dUlDb2djMlZ4ZFdWdVkyVkVhV0ZuY21GdFhHNGdLaUFnSUhCaGNuUnBZMmx3WVc1MElFTmhiR3hsY2x4dUlDb2dJQ0J3WVhKMGFXTnBjR0Z1ZENCRmVIUnlZV04wVUhKcGRtRjBaVXRsZVZ4dUlDb2dJQ0J3WVhKMGFXTnBjR0Z1ZENCVGRXSjBiR1ZEY25sd2RHOWNiaUFxWEc0Z0tpQWdJRU5oYkd4bGNpMCtQa1Y0ZEhKaFkzUlFjbWwyWVhSbFMyVjVPaUJsZUhSeVlXTjBVSEpwZG1GMFpVdGxlU2h3WlcwcFhHNGdLaUFnSUVWNGRISmhZM1JRY21sMllYUmxTMlY1TFQ0K1JYaDBjbUZqZEZCeWFYWmhkR1ZMWlhrNklFZGxkQ0JUZFdKMGJHVkRjbmx3ZEc4Z2FXMXdiR1Z0Wlc1MFlYUnBiMjVjYmlBcUlDQWdSWGgwY21GamRGQnlhWFpoZEdWTFpYa3RQajVGZUhSeVlXTjBVSEpwZG1GMFpVdGxlVG9nVUdGeWMyVWdVRVZOSUdadmNtMWhkRnh1SUNvZ0lDQkZlSFJ5WVdOMFVISnBkbUYwWlV0bGVTMCtQa1Y0ZEhKaFkzUlFjbWwyWVhSbFMyVjVPaUJEYjI1MlpYSjBJSFJ2SUdKcGJtRnllU0JFUlZKY2JpQXFJQ0FnUlhoMGNtRmpkRkJ5YVhaaGRHVkxaWGt0UGo1VGRXSjBiR1ZEY25sd2RHODZJR2x0Y0c5eWRFdGxlU2h3YTJOek9Dd2dZbWx1WVhKNVJHVnlMQ0J2Y0hScGIyNXpLVnh1SUNvZ0lDQlRkV0owYkdWRGNubHdkRzh0TFQ0K1JYaDBjbUZqZEZCeWFYWmhkR1ZMWlhrNklFTnllWEIwYjB0bGVWeHVJQ29nSUNCRmVIUnlZV04wVUhKcGRtRjBaVXRsZVMwdFBqNURZV3hzWlhJNklFTnllWEIwYjB0bGVWeHVJQ292WEc1bGVIQnZjblFnWVhONWJtTWdablZ1WTNScGIyNGdaWGgwY21GamRGQnlhWFpoZEdWTFpYa29jR1Z0T2lCQ2RXWm1aWElwSUh0Y2JpQWdZMjl1YzNRZ2JHbGlUbUZ0WlNBOUlGd2lZM0o1Y0hSdlhDSTdYRzRnSUd4bGRDQnpkV0owYkdVN1hHNGdJR2xtSUNocGMwSnliM2R6WlhJb0tTa2dlMXh1SUNBZ0lITjFZblJzWlNBOUlDaG5iRzlpWVd4VWFHbHpJR0Z6SUdGdWVTa3VZM0o1Y0hSdkxuTjFZblJzWlR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCamIyNXpkQ0JzYVdJZ1BTQW9ZWGRoYVhRZ2JtOXliV0ZzYVhwbFNXMXdiM0owS0dsdGNHOXlkQ2hzYVdKT1lXMWxLU2twSUdGeklHRnVlVHRjYmlBZ0lDQnpkV0owYkdVZ1BTQnNhV0l1YzNWaWRHeGxJSHg4SUd4cFlpNTNaV0pqY25sd2RHOHVjM1ZpZEd4bE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0NGemRXSjBiR1VwSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSWtOdmRXeGtJRzV2ZENCc2IyRmtJRk4xWW5Sc1pVTnllWEIwYnlCdGIyUjFiR1ZjSWlrN1hHNWNiaUFnWm5WdVkzUnBiMjRnYzNSeU1tRmlLSE4wY2pvZ2MzUnlhVzVuS1NCN1hHNGdJQ0FnWTI5dWMzUWdZblZtSUQwZ2JtVjNJRUZ5Y21GNVFuVm1abVZ5S0hOMGNpNXNaVzVuZEdncE8xeHVJQ0FnSUdOdmJuTjBJR0oxWmxacFpYY2dQU0J1WlhjZ1ZXbHVkRGhCY25KaGVTaGlkV1lwTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnpkSEpNWlc0Z1BTQnpkSEl1YkdWdVozUm9PeUJwSUR3Z2MzUnlUR1Z1T3lCcEt5c3BJSHRjYmlBZ0lDQWdJR0oxWmxacFpYZGJhVjBnUFNCemRISXVZMmhoY2tOdlpHVkJkQ2hwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHSjFaanRjYmlBZ2ZWeHVYRzRnSUdOdmJuTjBJSE4wY2lBOUlIQmxiVnh1SUNBZ0lDNTBiMU4wY21sdVp5aGNJblYwWmpoY0lpbGNiaUFnSUNBdWNtVndiR0ZqWlNoY0lpMHRMUzB0UWtWSFNVNGdVRkpKVmtGVVJTQkxSVmt0TFMwdExWd2lMQ0JjSWx3aUtWeHVJQ0FnSUM1eVpYQnNZV05sUVd4c0tGd2lYRnh1WENJc0lGd2lYQ0lwWEc0Z0lDQWdMbkpsY0d4aFkyVW9YQ0l0TFMwdExVVk9SQ0JRVWtsV1FWUkZJRXRGV1MwdExTMHRYQ0lzSUZ3aVhDSXBPMXh1SUNCamIyNXpkQ0JrWldOdlpHVmtJRDBnUW5WbVptVnlMbVp5YjIwb2MzUnlMQ0JjSW1KaGMyVTJORndpS1M1MGIxTjBjbWx1WnloY0ltSnBibUZ5ZVZ3aUtUdGNiaUFnWTI5dWMzUWdZbWx1WVhKNVJHVnlJRDBnYzNSeU1tRmlLR1JsWTI5a1pXUXBPMXh1WEc0Z0lIUnllU0I3WEc0Z0lDQWdZMjl1YzNRZ2EyVjVJRDBnWVhkaGFYUWdjM1ZpZEd4bExtbHRjRzl5ZEV0bGVTaGNiaUFnSUNBZ0lGd2ljR3RqY3poY0lpeGNiaUFnSUNBZ0lHSnBibUZ5ZVVSbGNpeGNiaUFnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdibUZ0WlRvZ1hDSkZRMFJUUVZ3aUxGeHVJQ0FnSUNBZ0lDQnVZVzFsWkVOMWNuWmxPaUJjSWxBdE1qVTJYQ0lzWEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnZEhKMVpTeGNiaUFnSUNBZ0lGdGNJbk5wWjI1Y0lsMWNiaUFnSUNBcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUd0bGVUdGNiaUFnZlNCallYUmphQ0FvWlRvZ1lXNTVLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1pTazdYRzRnSUgxY2JuMWNiaUpkZlE9PSJdfQ==
|
|
234
|
+
//# sourceMappingURL=fabric-fs.js.map
|
|
235
|
+
//# sourceMappingURL=fabric-fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fabric-fs.js","sourceRoot":"","sources":["fabric-fs.js"],"names":[],"mappings":"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"}
|