taon-typeorm 18.0.23 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/shared/shared_folder_info.txt +1 -1
- package/package.json +1 -1
- package/tmp-environment.json +24 -3
- package/browser/esm2022/lib/index.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/browser/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/browser/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/browser/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/browser/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/browser/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/browser/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/browser/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/browser/esm2022/lib/typeorm/constants.mjs +0 -4
- package/browser/esm2022/lib/typeorm/container.mjs +0 -57
- package/browser/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/browser/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/browser/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/browser/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/browser/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/browser/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/browser/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/browser/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/browser/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/browser/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/browser/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/browser/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/browser/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/browser/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/browser/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/browser/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/browser/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/browser/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/browser/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/browser/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/browser/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/browser/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/browser/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/browser/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/browser/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/browser/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/browser/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/browser/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/browser/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/browser/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/browser/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/browser/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/browser/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/browser/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/browser/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/browser/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/browser/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/browser/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/browser/esm2022/lib/typeorm/globals.mjs +0 -165
- package/browser/esm2022/lib/typeorm/index.mjs +0 -157
- package/browser/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/browser/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/browser/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/browser/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/browser/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/browser/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/browser/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/browser/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/browser/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/browser/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/browser/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/browser/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/browser/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/browser/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/browser/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/browser/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/browser/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/browser/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/browser/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/browser/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/browser/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/browser/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/browser/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/browser/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/browser/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/browser/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/browser/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/browser/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/browser/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/browser/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/browser/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/browser/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/browser/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/browser/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/browser/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/browser/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/browser/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
- package/browser/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/browser/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/browser/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/browser/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/browser/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/browser/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/browser/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/browser/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/browser/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/browser/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/browser/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/browser/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/browser/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/browser/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/browser/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/browser/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/browser/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/browser/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/browser/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/browser/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/browser/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/browser/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/browser/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/browser/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/browser/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/browser/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/browser/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/browser/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/browser/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/browser/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/browser/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/browser/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/browser/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/browser/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/browser/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/browser/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/browser/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/browser/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/browser/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/browser/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/browser/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/browser/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/browser/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/browser/esm2022/public-api.mjs +0 -2
- package/browser/esm2022/taon-typeorm.mjs +0 -5
- package/client/esm2022/lib/index.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/client/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/client/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/client/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/client/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/client/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/client/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/client/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/client/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/client/esm2022/lib/typeorm/constants.mjs +0 -4
- package/client/esm2022/lib/typeorm/container.mjs +0 -57
- package/client/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/client/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/client/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/client/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/client/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/client/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/client/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/client/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/client/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/client/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/client/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/client/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/client/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/client/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/client/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/client/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/client/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/client/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/client/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/client/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/client/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/client/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/client/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/client/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/client/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/client/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/client/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/client/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/client/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/client/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/client/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/client/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/client/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/client/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/client/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/client/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/client/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/client/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/client/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/client/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/client/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/client/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/client/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/client/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/client/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/client/esm2022/lib/typeorm/globals.mjs +0 -165
- package/client/esm2022/lib/typeorm/index.mjs +0 -157
- package/client/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/client/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/client/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/client/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/client/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/client/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/client/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/client/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/client/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/client/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/client/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/client/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/client/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/client/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/client/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/client/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/client/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/client/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/client/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/client/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/client/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/client/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/client/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/client/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/client/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/client/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/client/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/client/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/client/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/client/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/client/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/client/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/client/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/client/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/client/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/client/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/client/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/client/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/client/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
- package/client/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/client/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/client/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/client/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/client/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/client/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/client/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/client/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/client/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/client/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/client/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/client/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/client/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/client/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/client/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/client/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/client/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/client/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/client/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/client/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/client/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/client/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/client/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/client/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/client/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/client/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/client/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/client/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/client/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/client/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/client/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/client/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/client/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/client/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/client/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/client/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/client/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/client/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/client/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/client/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/client/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/client/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/client/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/client/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/client/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/client/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/client/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/client/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/client/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/client/esm2022/public-api.mjs +0 -2
- package/client/esm2022/taon-typeorm.mjs +0 -5
- package/taon.jsonc +0 -8
- package/websql/esm2022/lib/index.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/websql/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/websql/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/websql/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/websql/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/websql/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/websql/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/websql/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/websql/esm2022/lib/typeorm/constants.mjs +0 -4
- package/websql/esm2022/lib/typeorm/container.mjs +0 -57
- package/websql/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/websql/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/websql/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/websql/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/websql/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/websql/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/websql/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/websql/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/websql/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/websql/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/websql/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/websql/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/websql/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/websql/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/websql/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/websql/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/websql/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/websql/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/websql/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/websql/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/websql/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/websql/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/websql/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/websql/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/websql/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/websql/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/websql/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/websql/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/websql/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/websql/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/websql/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/websql/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/websql/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/websql/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/websql/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/websql/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/websql/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/websql/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/websql/esm2022/lib/typeorm/globals.mjs +0 -165
- package/websql/esm2022/lib/typeorm/index.mjs +0 -157
- package/websql/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/websql/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/websql/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/websql/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/websql/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/websql/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/websql/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/websql/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/websql/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/websql/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/websql/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/websql/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/websql/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/websql/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/websql/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/websql/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/websql/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/websql/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/websql/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/websql/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/websql/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/websql/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/websql/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/websql/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/websql/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/websql/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/websql/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/websql/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/websql/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/websql/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/websql/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/websql/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/websql/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/websql/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/websql/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/websql/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/websql/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -331
- package/websql/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/websql/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/websql/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/websql/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/websql/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/websql/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/websql/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/websql/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/websql/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/websql/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/websql/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/websql/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/websql/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/websql/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/websql/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/websql/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/websql/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/websql/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/websql/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/websql/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/websql/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/websql/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/websql/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/websql/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/websql/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/websql/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/websql/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/websql/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/websql/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/websql/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/websql/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/websql/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/websql/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/websql/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/websql/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/websql/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/websql/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/websql/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/websql/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/websql/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/websql/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/websql/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/websql/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/websql/esm2022/public-api.mjs +0 -2
- package/websql/esm2022/taon-typeorm.mjs +0 -5
|
@@ -1,678 +0,0 @@
|
|
|
1
|
-
import { EntityMetadata } from "../metadata/EntityMetadata";
|
|
2
|
-
import { ColumnMetadata } from "../metadata/ColumnMetadata";
|
|
3
|
-
import { IndexMetadata } from "../metadata/IndexMetadata";
|
|
4
|
-
import { RelationMetadata } from "../metadata/RelationMetadata";
|
|
5
|
-
import { EmbeddedMetadata } from "../metadata/EmbeddedMetadata";
|
|
6
|
-
import { RelationIdMetadata } from "../metadata/RelationIdMetadata";
|
|
7
|
-
import { RelationCountMetadata } from "../metadata/RelationCountMetadata";
|
|
8
|
-
import { EventListenerTypes } from "../metadata/types/EventListenerTypes";
|
|
9
|
-
import { MetadataUtils } from "./MetadataUtils";
|
|
10
|
-
import { JunctionEntityMetadataBuilder } from "./JunctionEntityMetadataBuilder";
|
|
11
|
-
import { ClosureJunctionEntityMetadataBuilder } from "./ClosureJunctionEntityMetadataBuilder";
|
|
12
|
-
import { RelationJoinColumnBuilder } from "./RelationJoinColumnBuilder";
|
|
13
|
-
import { EntityListenerMetadata } from "../metadata/EntityListenerMetadata";
|
|
14
|
-
import { UniqueMetadata } from "../metadata/UniqueMetadata";
|
|
15
|
-
import { CheckMetadata } from "../metadata/CheckMetadata";
|
|
16
|
-
import { ExclusionMetadata } from "../metadata/ExclusionMetadata";
|
|
17
|
-
import { TypeORMError } from "../error";
|
|
18
|
-
import { DriverUtils } from "../driver/DriverUtils";
|
|
19
|
-
/**
|
|
20
|
-
* Builds EntityMetadata objects and all its sub-metadatas.
|
|
21
|
-
*/
|
|
22
|
-
export class EntityMetadataBuilder {
|
|
23
|
-
constructor(connection, metadataArgsStorage) {
|
|
24
|
-
this.connection = connection;
|
|
25
|
-
this.metadataArgsStorage = metadataArgsStorage;
|
|
26
|
-
this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(connection);
|
|
27
|
-
this.closureJunctionEntityMetadataBuilder =
|
|
28
|
-
new ClosureJunctionEntityMetadataBuilder(connection);
|
|
29
|
-
this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(connection);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Builds a complete entity metadatas for the given entity classes.
|
|
33
|
-
*/
|
|
34
|
-
build(entityClasses) {
|
|
35
|
-
const allTables = entityClasses
|
|
36
|
-
? this.metadataArgsStorage.filterTables(entityClasses)
|
|
37
|
-
: this.metadataArgsStorage.tables;
|
|
38
|
-
const realTables = allTables.filter((table) => table.type === "regular" ||
|
|
39
|
-
table.type === "closure" ||
|
|
40
|
-
table.type === "entity-child" ||
|
|
41
|
-
table.type === "view");
|
|
42
|
-
const entityMetadatas = realTables.map((tableArgs) => this.createEntityMetadata(tableArgs));
|
|
43
|
-
entityMetadatas.forEach((entityMetadata) => this.computeParentEntityMetadata(entityMetadatas, entityMetadata));
|
|
44
|
-
entityMetadatas.forEach((metadata) => {
|
|
45
|
-
metadata.childEntityMetadatas = entityMetadatas.filter((childMetadata) => {
|
|
46
|
-
return (typeof metadata.target === "function" &&
|
|
47
|
-
typeof childMetadata.target === "function" &&
|
|
48
|
-
MetadataUtils.isInherited(childMetadata.target, metadata.target));
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
entityMetadatas
|
|
52
|
-
.filter((entityMetadata) => entityMetadata.tableType !== "entity-child")
|
|
53
|
-
.forEach((entityMetadata) => entityMetadata.build());
|
|
54
|
-
entityMetadatas
|
|
55
|
-
.filter((entityMetadata) => entityMetadata.tableType === "entity-child")
|
|
56
|
-
.forEach((entityMetadata) => entityMetadata.build());
|
|
57
|
-
entityMetadatas
|
|
58
|
-
.filter((entityMetadata) => entityMetadata.tableType !== "entity-child")
|
|
59
|
-
.forEach((entityMetadata) => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));
|
|
60
|
-
entityMetadatas
|
|
61
|
-
.filter((entityMetadata) => entityMetadata.tableType === "entity-child")
|
|
62
|
-
.forEach((entityMetadata) => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));
|
|
63
|
-
entityMetadatas.forEach((entityMetadata) => this.computeEntityMetadataStep2(entityMetadata));
|
|
64
|
-
entityMetadatas.forEach((entityMetadata) => this.computeInverseProperties(entityMetadata, entityMetadatas));
|
|
65
|
-
entityMetadatas
|
|
66
|
-
.filter((entityMetadata) => entityMetadata.tableType !== "entity-child")
|
|
67
|
-
.forEach((entityMetadata) => {
|
|
68
|
-
entityMetadata.relations
|
|
69
|
-
.filter((relation) => relation.isOneToOne || relation.isManyToOne)
|
|
70
|
-
.forEach((relation) => {
|
|
71
|
-
const joinColumns = this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName);
|
|
72
|
-
const { foreignKey, columns, uniqueConstraint } = this.relationJoinColumnBuilder.build(joinColumns, relation); // create a foreign key based on its metadata args
|
|
73
|
-
if (foreignKey) {
|
|
74
|
-
relation.registerForeignKeys(foreignKey); // push it to the relation and thus register there a join column
|
|
75
|
-
entityMetadata.foreignKeys.push(foreignKey);
|
|
76
|
-
}
|
|
77
|
-
if (columns) {
|
|
78
|
-
relation.registerJoinColumns(columns);
|
|
79
|
-
}
|
|
80
|
-
if (uniqueConstraint) {
|
|
81
|
-
if (DriverUtils.isMySQLFamily(this.connection.driver) ||
|
|
82
|
-
this.connection.driver.options.type ===
|
|
83
|
-
"aurora-mysql" ||
|
|
84
|
-
this.connection.driver.options.type ===
|
|
85
|
-
"mssql" ||
|
|
86
|
-
this.connection.driver.options.type === "sap" ||
|
|
87
|
-
this.connection.driver.options.type ===
|
|
88
|
-
"spanner") {
|
|
89
|
-
const index = new IndexMetadata({
|
|
90
|
-
entityMetadata: uniqueConstraint.entityMetadata,
|
|
91
|
-
columns: uniqueConstraint.columns,
|
|
92
|
-
args: {
|
|
93
|
-
target: uniqueConstraint.target,
|
|
94
|
-
name: uniqueConstraint.name,
|
|
95
|
-
unique: true,
|
|
96
|
-
synchronize: true,
|
|
97
|
-
},
|
|
98
|
-
});
|
|
99
|
-
if (this.connection.driver.options.type ===
|
|
100
|
-
"mssql") {
|
|
101
|
-
index.where = index.columns
|
|
102
|
-
.map((column) => {
|
|
103
|
-
return `${this.connection.driver.escape(column.databaseName)} IS NOT NULL`;
|
|
104
|
-
})
|
|
105
|
-
.join(" AND ");
|
|
106
|
-
}
|
|
107
|
-
if (this.connection.driver.options.type ===
|
|
108
|
-
"spanner") {
|
|
109
|
-
index.isNullFiltered = true;
|
|
110
|
-
}
|
|
111
|
-
if (relation.embeddedMetadata) {
|
|
112
|
-
relation.embeddedMetadata.indices.push(index);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
relation.entityMetadata.ownIndices.push(index);
|
|
116
|
-
}
|
|
117
|
-
this.computeEntityMetadataStep2(entityMetadata);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
if (relation.embeddedMetadata) {
|
|
121
|
-
relation.embeddedMetadata.uniques.push(uniqueConstraint);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
relation.entityMetadata.ownUniques.push(uniqueConstraint);
|
|
125
|
-
}
|
|
126
|
-
this.computeEntityMetadataStep2(entityMetadata);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (foreignKey &&
|
|
130
|
-
this.connection.driver.options.type ===
|
|
131
|
-
"cockroachdb") {
|
|
132
|
-
const index = new IndexMetadata({
|
|
133
|
-
entityMetadata: relation.entityMetadata,
|
|
134
|
-
columns: foreignKey.columns,
|
|
135
|
-
args: {
|
|
136
|
-
target: relation.entityMetadata.target,
|
|
137
|
-
synchronize: true,
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
if (relation.embeddedMetadata) {
|
|
141
|
-
relation.embeddedMetadata.indices.push(index);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
relation.entityMetadata.ownIndices.push(index);
|
|
145
|
-
}
|
|
146
|
-
this.computeEntityMetadataStep2(entityMetadata);
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
entityMetadata.relations
|
|
150
|
-
.filter((relation) => relation.isManyToMany)
|
|
151
|
-
.forEach((relation) => {
|
|
152
|
-
const joinTable = this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName);
|
|
153
|
-
if (!joinTable)
|
|
154
|
-
return; // no join table set - no need to do anything (it means this is many-to-many inverse side)
|
|
155
|
-
const junctionEntityMetadata = this.junctionEntityMetadataBuilder.build(relation, joinTable);
|
|
156
|
-
relation.registerForeignKeys(...junctionEntityMetadata.foreignKeys);
|
|
157
|
-
relation.registerJoinColumns(junctionEntityMetadata.ownIndices[0].columns, junctionEntityMetadata.ownIndices[1].columns);
|
|
158
|
-
relation.registerJunctionEntityMetadata(junctionEntityMetadata);
|
|
159
|
-
this.computeEntityMetadataStep2(junctionEntityMetadata);
|
|
160
|
-
this.computeInverseProperties(junctionEntityMetadata, entityMetadatas);
|
|
161
|
-
entityMetadatas.push(junctionEntityMetadata);
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
entityMetadatas.forEach((entityMetadata) => {
|
|
165
|
-
entityMetadata.relationsWithJoinColumns =
|
|
166
|
-
entityMetadata.relations.filter((relation) => relation.isWithJoinColumn);
|
|
167
|
-
entityMetadata.hasNonNullableRelations =
|
|
168
|
-
entityMetadata.relationsWithJoinColumns.some((relation) => !relation.isNullable || relation.isPrimary);
|
|
169
|
-
});
|
|
170
|
-
entityMetadatas
|
|
171
|
-
.filter((metadata) => metadata.treeType === "closure-table")
|
|
172
|
-
.forEach((entityMetadata) => {
|
|
173
|
-
const closureJunctionEntityMetadata = this.closureJunctionEntityMetadataBuilder.build(entityMetadata);
|
|
174
|
-
entityMetadata.closureJunctionTable =
|
|
175
|
-
closureJunctionEntityMetadata;
|
|
176
|
-
this.computeEntityMetadataStep2(closureJunctionEntityMetadata);
|
|
177
|
-
this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas);
|
|
178
|
-
entityMetadatas.push(closureJunctionEntityMetadata);
|
|
179
|
-
});
|
|
180
|
-
entityMetadatas
|
|
181
|
-
.filter((metadata) => metadata.inheritancePattern === "STI" &&
|
|
182
|
-
metadata.discriminatorColumn)
|
|
183
|
-
.forEach((entityMetadata) => this.createKeysForTableInheritance(entityMetadata));
|
|
184
|
-
entityMetadatas.forEach((entityMetadata) => {
|
|
185
|
-
entityMetadata.indices.forEach((index) => index.build(this.connection.namingStrategy));
|
|
186
|
-
});
|
|
187
|
-
entityMetadatas.forEach((entityMetadata) => {
|
|
188
|
-
entityMetadata.uniques.forEach((unique) => unique.build(this.connection.namingStrategy));
|
|
189
|
-
});
|
|
190
|
-
entityMetadatas.forEach((entityMetadata) => {
|
|
191
|
-
entityMetadata.checks.forEach((check) => check.build(this.connection.namingStrategy));
|
|
192
|
-
});
|
|
193
|
-
entityMetadatas.forEach((entityMetadata) => {
|
|
194
|
-
entityMetadata.exclusions.forEach((exclusion) => exclusion.build(this.connection.namingStrategy));
|
|
195
|
-
});
|
|
196
|
-
entityMetadatas
|
|
197
|
-
.filter((metadata) => typeof metadata.target === "function")
|
|
198
|
-
.forEach((entityMetadata) => {
|
|
199
|
-
entityMetadata.relations
|
|
200
|
-
.filter((relation) => relation.isLazy)
|
|
201
|
-
.forEach((relation) => {
|
|
202
|
-
this.connection.relationLoader.enableLazyLoad(relation, entityMetadata.target.prototype);
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
entityMetadatas.forEach((entityMetadata) => {
|
|
206
|
-
entityMetadata.columns.forEach((column) => {
|
|
207
|
-
const generated = this.metadataArgsStorage.findGenerated(column.target, column.propertyName);
|
|
208
|
-
if (generated) {
|
|
209
|
-
column.isGenerated = true;
|
|
210
|
-
column.generationStrategy = generated.strategy;
|
|
211
|
-
if (generated.strategy === "uuid") {
|
|
212
|
-
column.type = "uuid";
|
|
213
|
-
}
|
|
214
|
-
else if (generated.strategy === "rowid") {
|
|
215
|
-
column.type = "int";
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
column.type = column.type || Number;
|
|
219
|
-
}
|
|
220
|
-
column.build(this.connection);
|
|
221
|
-
this.computeEntityMetadataStep2(entityMetadata);
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
return entityMetadatas;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Creates entity metadata from the given table args.
|
|
229
|
-
* Creates column, relation, etc. metadatas for everything this entity metadata owns.
|
|
230
|
-
*/
|
|
231
|
-
createEntityMetadata(tableArgs) {
|
|
232
|
-
const inheritanceTree = typeof tableArgs.target === "function"
|
|
233
|
-
? MetadataUtils.getInheritanceTree(tableArgs.target)
|
|
234
|
-
: [tableArgs.target]; // todo: implement later here inheritance for string-targets
|
|
235
|
-
const tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target);
|
|
236
|
-
const tableTree = this.metadataArgsStorage.findTree(tableArgs.target);
|
|
237
|
-
let singleTableChildrenTargets;
|
|
238
|
-
if ((tableInheritance && tableInheritance.pattern === "STI") ||
|
|
239
|
-
tableArgs.type === "entity-child") {
|
|
240
|
-
singleTableChildrenTargets = this.metadataArgsStorage
|
|
241
|
-
.filterSingleTableChildren(tableArgs.target)
|
|
242
|
-
.map((args) => args.target)
|
|
243
|
-
.filter((target) => typeof target === "function");
|
|
244
|
-
inheritanceTree.push(...singleTableChildrenTargets);
|
|
245
|
-
}
|
|
246
|
-
return new EntityMetadata({
|
|
247
|
-
connection: this.connection,
|
|
248
|
-
args: tableArgs,
|
|
249
|
-
inheritanceTree: inheritanceTree,
|
|
250
|
-
tableTree: tableTree,
|
|
251
|
-
inheritancePattern: tableInheritance
|
|
252
|
-
? tableInheritance.pattern
|
|
253
|
-
: undefined,
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
computeParentEntityMetadata(allEntityMetadatas, entityMetadata) {
|
|
257
|
-
if (entityMetadata.tableType === "entity-child") {
|
|
258
|
-
entityMetadata.parentEntityMetadata = allEntityMetadatas.find((allEntityMetadata) => {
|
|
259
|
-
return (allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target) !== -1 &&
|
|
260
|
-
allEntityMetadata.inheritancePattern === "STI");
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
computeEntityMetadataStep1(allEntityMetadatas, entityMetadata) {
|
|
265
|
-
const entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target);
|
|
266
|
-
const discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target);
|
|
267
|
-
if (typeof discriminatorValue !== "undefined") {
|
|
268
|
-
entityMetadata.discriminatorValue = discriminatorValue.value;
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
entityMetadata.discriminatorValue = entityMetadata.target.name;
|
|
272
|
-
}
|
|
273
|
-
entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree)).map((embedded) => {
|
|
274
|
-
if (entityMetadata.inheritancePattern === "STI") {
|
|
275
|
-
embedded.columns = embedded.columns.map((column) => {
|
|
276
|
-
column.isNullable = true;
|
|
277
|
-
return column;
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
return embedded;
|
|
281
|
-
});
|
|
282
|
-
entityMetadata.ownColumns = this.metadataArgsStorage
|
|
283
|
-
.filterColumns(entityMetadata.inheritanceTree)
|
|
284
|
-
.map((args) => {
|
|
285
|
-
if (entityMetadata.tableType === "entity-child")
|
|
286
|
-
return entityMetadata.parentEntityMetadata.ownColumns.find((column) => column.propertyName === args.propertyName);
|
|
287
|
-
const column = new ColumnMetadata({
|
|
288
|
-
connection: this.connection,
|
|
289
|
-
entityMetadata,
|
|
290
|
-
args,
|
|
291
|
-
});
|
|
292
|
-
const columnInSingleTableInheritedChild = allEntityMetadatas.find((otherEntityMetadata) => otherEntityMetadata.tableType === "entity-child" &&
|
|
293
|
-
otherEntityMetadata.target === args.target);
|
|
294
|
-
if (columnInSingleTableInheritedChild)
|
|
295
|
-
column.isNullable = true;
|
|
296
|
-
return column;
|
|
297
|
-
});
|
|
298
|
-
//
|
|
299
|
-
if (entityInheritance && entityInheritance.column) {
|
|
300
|
-
const discriminatorColumnName = entityInheritance.column && entityInheritance.column.name
|
|
301
|
-
? entityInheritance.column.name
|
|
302
|
-
: "type";
|
|
303
|
-
let discriminatorColumn = entityMetadata.ownColumns.find((column) => column.propertyName === discriminatorColumnName);
|
|
304
|
-
if (!discriminatorColumn) {
|
|
305
|
-
discriminatorColumn = new ColumnMetadata({
|
|
306
|
-
connection: this.connection,
|
|
307
|
-
entityMetadata: entityMetadata,
|
|
308
|
-
args: {
|
|
309
|
-
target: entityMetadata.target,
|
|
310
|
-
mode: "virtual",
|
|
311
|
-
propertyName: discriminatorColumnName,
|
|
312
|
-
options: entityInheritance.column || {
|
|
313
|
-
name: discriminatorColumnName,
|
|
314
|
-
type: "varchar",
|
|
315
|
-
nullable: false,
|
|
316
|
-
},
|
|
317
|
-
},
|
|
318
|
-
});
|
|
319
|
-
discriminatorColumn.isVirtual = true;
|
|
320
|
-
discriminatorColumn.isDiscriminator = true;
|
|
321
|
-
entityMetadata.ownColumns.push(discriminatorColumn);
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
discriminatorColumn.isDiscriminator = true;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
if (entityMetadata.tableType === "entity-child") {
|
|
328
|
-
const discriminatorColumn = entityMetadata.parentEntityMetadata.ownColumns.find((column) => column.isDiscriminator);
|
|
329
|
-
if (discriminatorColumn &&
|
|
330
|
-
!entityMetadata.ownColumns.find((column) => column === discriminatorColumn)) {
|
|
331
|
-
entityMetadata.ownColumns.push(discriminatorColumn);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
const { namingStrategy } = this.connection;
|
|
335
|
-
if (entityMetadata.treeType === "materialized-path") {
|
|
336
|
-
entityMetadata.ownColumns.push(new ColumnMetadata({
|
|
337
|
-
connection: this.connection,
|
|
338
|
-
entityMetadata: entityMetadata,
|
|
339
|
-
materializedPath: true,
|
|
340
|
-
args: {
|
|
341
|
-
target: entityMetadata.target,
|
|
342
|
-
mode: "virtual",
|
|
343
|
-
propertyName: "mpath",
|
|
344
|
-
options: /*tree.column || */ {
|
|
345
|
-
name: namingStrategy.materializedPathColumnName,
|
|
346
|
-
type: String,
|
|
347
|
-
nullable: true,
|
|
348
|
-
default: "",
|
|
349
|
-
},
|
|
350
|
-
},
|
|
351
|
-
}));
|
|
352
|
-
}
|
|
353
|
-
else if (entityMetadata.treeType === "nested-set") {
|
|
354
|
-
const { left, right } = namingStrategy.nestedSetColumnNames;
|
|
355
|
-
entityMetadata.ownColumns.push(new ColumnMetadata({
|
|
356
|
-
connection: this.connection,
|
|
357
|
-
entityMetadata: entityMetadata,
|
|
358
|
-
nestedSetLeft: true,
|
|
359
|
-
args: {
|
|
360
|
-
target: entityMetadata.target,
|
|
361
|
-
mode: "virtual",
|
|
362
|
-
propertyName: left,
|
|
363
|
-
options: /*tree.column || */ {
|
|
364
|
-
name: left,
|
|
365
|
-
type: Number,
|
|
366
|
-
nullable: false,
|
|
367
|
-
default: 1,
|
|
368
|
-
},
|
|
369
|
-
},
|
|
370
|
-
}));
|
|
371
|
-
entityMetadata.ownColumns.push(new ColumnMetadata({
|
|
372
|
-
connection: this.connection,
|
|
373
|
-
entityMetadata: entityMetadata,
|
|
374
|
-
nestedSetRight: true,
|
|
375
|
-
args: {
|
|
376
|
-
target: entityMetadata.target,
|
|
377
|
-
mode: "virtual",
|
|
378
|
-
propertyName: right,
|
|
379
|
-
options: /*tree.column || */ {
|
|
380
|
-
name: right,
|
|
381
|
-
type: Number,
|
|
382
|
-
nullable: false,
|
|
383
|
-
default: 2,
|
|
384
|
-
},
|
|
385
|
-
},
|
|
386
|
-
}));
|
|
387
|
-
}
|
|
388
|
-
entityMetadata.ownRelations = this.metadataArgsStorage
|
|
389
|
-
.filterRelations(entityMetadata.inheritanceTree)
|
|
390
|
-
.map((args) => {
|
|
391
|
-
if (entityMetadata.tableType === "entity-child") {
|
|
392
|
-
const parentRelation = entityMetadata.parentEntityMetadata.ownRelations.find((relation) => relation.propertyName === args.propertyName);
|
|
393
|
-
const type = typeof args.type === "function"
|
|
394
|
-
? args.type()
|
|
395
|
-
: args.type;
|
|
396
|
-
if (parentRelation.type !== type) {
|
|
397
|
-
const clone = Object.create(parentRelation);
|
|
398
|
-
clone.type = type;
|
|
399
|
-
return clone;
|
|
400
|
-
}
|
|
401
|
-
return parentRelation;
|
|
402
|
-
}
|
|
403
|
-
return new RelationMetadata({ entityMetadata, args });
|
|
404
|
-
});
|
|
405
|
-
entityMetadata.relationIds = this.metadataArgsStorage
|
|
406
|
-
.filterRelationIds(entityMetadata.inheritanceTree)
|
|
407
|
-
.map((args) => {
|
|
408
|
-
if (entityMetadata.tableType === "entity-child")
|
|
409
|
-
return entityMetadata.parentEntityMetadata.relationIds.find((relationId) => relationId.propertyName === args.propertyName);
|
|
410
|
-
return new RelationIdMetadata({ entityMetadata, args });
|
|
411
|
-
});
|
|
412
|
-
entityMetadata.relationCounts = this.metadataArgsStorage
|
|
413
|
-
.filterRelationCounts(entityMetadata.inheritanceTree)
|
|
414
|
-
.map((args) => {
|
|
415
|
-
if (entityMetadata.tableType === "entity-child")
|
|
416
|
-
return entityMetadata.parentEntityMetadata.relationCounts.find((relationCount) => relationCount.propertyName === args.propertyName);
|
|
417
|
-
return new RelationCountMetadata({ entityMetadata, args });
|
|
418
|
-
});
|
|
419
|
-
entityMetadata.ownListeners = this.metadataArgsStorage
|
|
420
|
-
.filterListeners(entityMetadata.inheritanceTree)
|
|
421
|
-
.map((args) => {
|
|
422
|
-
return new EntityListenerMetadata({
|
|
423
|
-
entityMetadata: entityMetadata,
|
|
424
|
-
args: args,
|
|
425
|
-
});
|
|
426
|
-
});
|
|
427
|
-
entityMetadata.checks = this.metadataArgsStorage
|
|
428
|
-
.filterChecks(entityMetadata.inheritanceTree)
|
|
429
|
-
.map((args) => {
|
|
430
|
-
return new CheckMetadata({ entityMetadata, args });
|
|
431
|
-
});
|
|
432
|
-
if (this.connection.driver.options.type === "postgres") {
|
|
433
|
-
entityMetadata.exclusions = this.metadataArgsStorage
|
|
434
|
-
.filterExclusions(entityMetadata.inheritanceTree)
|
|
435
|
-
.map((args) => {
|
|
436
|
-
return new ExclusionMetadata({ entityMetadata, args });
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
if (this.connection.driver.options.type === "cockroachdb") {
|
|
440
|
-
entityMetadata.ownIndices = this.metadataArgsStorage
|
|
441
|
-
.filterIndices(entityMetadata.inheritanceTree)
|
|
442
|
-
.filter((args) => !args.unique)
|
|
443
|
-
.map((args) => {
|
|
444
|
-
return new IndexMetadata({ entityMetadata, args });
|
|
445
|
-
});
|
|
446
|
-
const uniques = this.metadataArgsStorage
|
|
447
|
-
.filterIndices(entityMetadata.inheritanceTree)
|
|
448
|
-
.filter((args) => args.unique)
|
|
449
|
-
.map((args) => {
|
|
450
|
-
return new UniqueMetadata({
|
|
451
|
-
entityMetadata: entityMetadata,
|
|
452
|
-
args: {
|
|
453
|
-
target: args.target,
|
|
454
|
-
name: args.name,
|
|
455
|
-
columns: args.columns,
|
|
456
|
-
},
|
|
457
|
-
});
|
|
458
|
-
});
|
|
459
|
-
entityMetadata.ownUniques.push(...uniques);
|
|
460
|
-
}
|
|
461
|
-
else {
|
|
462
|
-
entityMetadata.ownIndices = this.metadataArgsStorage
|
|
463
|
-
.filterIndices(entityMetadata.inheritanceTree)
|
|
464
|
-
.map((args) => {
|
|
465
|
-
return new IndexMetadata({ entityMetadata, args });
|
|
466
|
-
});
|
|
467
|
-
}
|
|
468
|
-
if (DriverUtils.isMySQLFamily(this.connection.driver) ||
|
|
469
|
-
this.connection.driver.options.type === "aurora-mysql" ||
|
|
470
|
-
this.connection.driver.options.type === "sap" ||
|
|
471
|
-
this.connection.driver.options.type === "spanner") {
|
|
472
|
-
const indices = this.metadataArgsStorage
|
|
473
|
-
.filterUniques(entityMetadata.inheritanceTree)
|
|
474
|
-
.map((args) => {
|
|
475
|
-
return new IndexMetadata({
|
|
476
|
-
entityMetadata: entityMetadata,
|
|
477
|
-
args: {
|
|
478
|
-
target: args.target,
|
|
479
|
-
name: args.name,
|
|
480
|
-
columns: args.columns,
|
|
481
|
-
unique: true,
|
|
482
|
-
synchronize: true,
|
|
483
|
-
},
|
|
484
|
-
});
|
|
485
|
-
});
|
|
486
|
-
entityMetadata.ownIndices.push(...indices);
|
|
487
|
-
}
|
|
488
|
-
else {
|
|
489
|
-
const uniques = this.metadataArgsStorage
|
|
490
|
-
.filterUniques(entityMetadata.inheritanceTree)
|
|
491
|
-
.map((args) => {
|
|
492
|
-
return new UniqueMetadata({ entityMetadata, args });
|
|
493
|
-
});
|
|
494
|
-
entityMetadata.ownUniques.push(...uniques);
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
/**
|
|
498
|
-
* Creates from the given embedded metadata args real embedded metadatas with its columns and relations,
|
|
499
|
-
* and does the same for all its sub-embeddeds (goes recursively).
|
|
500
|
-
*/
|
|
501
|
-
createEmbeddedsRecursively(entityMetadata, embeddedArgs) {
|
|
502
|
-
return embeddedArgs.map((embeddedArgs) => {
|
|
503
|
-
const embeddedMetadata = new EmbeddedMetadata({
|
|
504
|
-
entityMetadata: entityMetadata,
|
|
505
|
-
args: embeddedArgs,
|
|
506
|
-
});
|
|
507
|
-
const targets = typeof embeddedMetadata.type === "function"
|
|
508
|
-
? MetadataUtils.getInheritanceTree(embeddedMetadata.type)
|
|
509
|
-
: [embeddedMetadata.type]; // todo: implement later here inheritance for string-targets
|
|
510
|
-
embeddedMetadata.columns = this.metadataArgsStorage
|
|
511
|
-
.filterColumns(targets)
|
|
512
|
-
.map((args) => {
|
|
513
|
-
return new ColumnMetadata({
|
|
514
|
-
connection: this.connection,
|
|
515
|
-
entityMetadata,
|
|
516
|
-
embeddedMetadata,
|
|
517
|
-
args,
|
|
518
|
-
});
|
|
519
|
-
});
|
|
520
|
-
embeddedMetadata.relations = this.metadataArgsStorage
|
|
521
|
-
.filterRelations(targets)
|
|
522
|
-
.map((args) => {
|
|
523
|
-
return new RelationMetadata({
|
|
524
|
-
entityMetadata,
|
|
525
|
-
embeddedMetadata,
|
|
526
|
-
args,
|
|
527
|
-
});
|
|
528
|
-
});
|
|
529
|
-
embeddedMetadata.listeners = this.metadataArgsStorage
|
|
530
|
-
.filterListeners(targets)
|
|
531
|
-
.map((args) => {
|
|
532
|
-
return new EntityListenerMetadata({
|
|
533
|
-
entityMetadata,
|
|
534
|
-
embeddedMetadata,
|
|
535
|
-
args,
|
|
536
|
-
});
|
|
537
|
-
});
|
|
538
|
-
embeddedMetadata.indices = this.metadataArgsStorage
|
|
539
|
-
.filterIndices(targets)
|
|
540
|
-
.map((args) => {
|
|
541
|
-
return new IndexMetadata({
|
|
542
|
-
entityMetadata,
|
|
543
|
-
embeddedMetadata,
|
|
544
|
-
args,
|
|
545
|
-
});
|
|
546
|
-
});
|
|
547
|
-
embeddedMetadata.uniques = this.metadataArgsStorage
|
|
548
|
-
.filterUniques(targets)
|
|
549
|
-
.map((args) => {
|
|
550
|
-
return new UniqueMetadata({
|
|
551
|
-
entityMetadata,
|
|
552
|
-
embeddedMetadata,
|
|
553
|
-
args,
|
|
554
|
-
});
|
|
555
|
-
});
|
|
556
|
-
embeddedMetadata.relationIds = this.metadataArgsStorage
|
|
557
|
-
.filterRelationIds(targets)
|
|
558
|
-
.map((args) => {
|
|
559
|
-
return new RelationIdMetadata({ entityMetadata, args });
|
|
560
|
-
});
|
|
561
|
-
embeddedMetadata.relationCounts = this.metadataArgsStorage
|
|
562
|
-
.filterRelationCounts(targets)
|
|
563
|
-
.map((args) => {
|
|
564
|
-
return new RelationCountMetadata({ entityMetadata, args });
|
|
565
|
-
});
|
|
566
|
-
embeddedMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(targets));
|
|
567
|
-
embeddedMetadata.embeddeds.forEach((subEmbedded) => (subEmbedded.parentEmbeddedMetadata = embeddedMetadata));
|
|
568
|
-
entityMetadata.allEmbeddeds.push(embeddedMetadata);
|
|
569
|
-
return embeddedMetadata;
|
|
570
|
-
});
|
|
571
|
-
}
|
|
572
|
-
/**
|
|
573
|
-
* Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc).
|
|
574
|
-
*/
|
|
575
|
-
computeEntityMetadataStep2(entityMetadata) {
|
|
576
|
-
entityMetadata.embeddeds.forEach((embedded) => embedded.build(this.connection));
|
|
577
|
-
entityMetadata.embeddeds.forEach((embedded) => {
|
|
578
|
-
embedded.columnsFromTree.forEach((column) => column.build(this.connection));
|
|
579
|
-
embedded.relationsFromTree.forEach((relation) => relation.build());
|
|
580
|
-
});
|
|
581
|
-
entityMetadata.ownColumns.forEach((column) => column.build(this.connection));
|
|
582
|
-
entityMetadata.ownRelations.forEach((relation) => relation.build());
|
|
583
|
-
entityMetadata.relations = entityMetadata.embeddeds.reduce((relations, embedded) => relations.concat(embedded.relationsFromTree), entityMetadata.ownRelations);
|
|
584
|
-
entityMetadata.eagerRelations = entityMetadata.relations.filter((relation) => relation.isEager);
|
|
585
|
-
entityMetadata.lazyRelations = entityMetadata.relations.filter((relation) => relation.isLazy);
|
|
586
|
-
entityMetadata.oneToOneRelations = entityMetadata.relations.filter((relation) => relation.isOneToOne);
|
|
587
|
-
entityMetadata.oneToManyRelations = entityMetadata.relations.filter((relation) => relation.isOneToMany);
|
|
588
|
-
entityMetadata.manyToOneRelations = entityMetadata.relations.filter((relation) => relation.isManyToOne);
|
|
589
|
-
entityMetadata.manyToManyRelations = entityMetadata.relations.filter((relation) => relation.isManyToMany);
|
|
590
|
-
entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter((relation) => relation.isOneToOneOwner);
|
|
591
|
-
entityMetadata.ownerManyToManyRelations =
|
|
592
|
-
entityMetadata.relations.filter((relation) => relation.isManyToManyOwner);
|
|
593
|
-
entityMetadata.treeParentRelation = entityMetadata.relations.find((relation) => relation.isTreeParent);
|
|
594
|
-
entityMetadata.treeChildrenRelation = entityMetadata.relations.find((relation) => relation.isTreeChildren);
|
|
595
|
-
entityMetadata.columns = entityMetadata.embeddeds.reduce((columns, embedded) => columns.concat(embedded.columnsFromTree), entityMetadata.ownColumns);
|
|
596
|
-
entityMetadata.listeners = entityMetadata.embeddeds.reduce((listeners, embedded) => listeners.concat(embedded.listenersFromTree), entityMetadata.ownListeners);
|
|
597
|
-
entityMetadata.afterLoadListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_LOAD);
|
|
598
|
-
entityMetadata.afterInsertListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_INSERT);
|
|
599
|
-
entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_UPDATE);
|
|
600
|
-
entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_REMOVE);
|
|
601
|
-
entityMetadata.afterSoftRemoveListeners =
|
|
602
|
-
entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_SOFT_REMOVE);
|
|
603
|
-
entityMetadata.afterRecoverListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_RECOVER);
|
|
604
|
-
entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_INSERT);
|
|
605
|
-
entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_UPDATE);
|
|
606
|
-
entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_REMOVE);
|
|
607
|
-
entityMetadata.beforeSoftRemoveListeners =
|
|
608
|
-
entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_SOFT_REMOVE);
|
|
609
|
-
entityMetadata.beforeRecoverListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_RECOVER);
|
|
610
|
-
entityMetadata.indices = entityMetadata.embeddeds.reduce((indices, embedded) => indices.concat(embedded.indicesFromTree), entityMetadata.ownIndices);
|
|
611
|
-
entityMetadata.uniques = entityMetadata.embeddeds.reduce((uniques, embedded) => uniques.concat(embedded.uniquesFromTree), entityMetadata.ownUniques);
|
|
612
|
-
entityMetadata.primaryColumns = entityMetadata.columns.filter((column) => column.isPrimary);
|
|
613
|
-
entityMetadata.nonVirtualColumns = entityMetadata.columns.filter((column) => !column.isVirtual);
|
|
614
|
-
entityMetadata.ancestorColumns = entityMetadata.columns.filter((column) => column.closureType === "ancestor");
|
|
615
|
-
entityMetadata.descendantColumns = entityMetadata.columns.filter((column) => column.closureType === "descendant");
|
|
616
|
-
entityMetadata.hasMultiplePrimaryKeys =
|
|
617
|
-
entityMetadata.primaryColumns.length > 1;
|
|
618
|
-
entityMetadata.generatedColumns = entityMetadata.columns.filter((column) => column.isGenerated || column.isObjectId);
|
|
619
|
-
entityMetadata.hasUUIDGeneratedColumns =
|
|
620
|
-
entityMetadata.columns.filter((column) => column.isGenerated || column.generationStrategy === "uuid").length > 0;
|
|
621
|
-
entityMetadata.createDateColumn = entityMetadata.columns.find((column) => column.isCreateDate);
|
|
622
|
-
entityMetadata.updateDateColumn = entityMetadata.columns.find((column) => column.isUpdateDate);
|
|
623
|
-
entityMetadata.deleteDateColumn = entityMetadata.columns.find((column) => column.isDeleteDate);
|
|
624
|
-
entityMetadata.versionColumn = entityMetadata.columns.find((column) => column.isVersion);
|
|
625
|
-
entityMetadata.discriminatorColumn = entityMetadata.columns.find((column) => column.isDiscriminator);
|
|
626
|
-
entityMetadata.treeLevelColumn = entityMetadata.columns.find((column) => column.isTreeLevel);
|
|
627
|
-
entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find((column) => column.isNestedSetLeft);
|
|
628
|
-
entityMetadata.nestedSetRightColumn = entityMetadata.columns.find((column) => column.isNestedSetRight);
|
|
629
|
-
entityMetadata.materializedPathColumn = entityMetadata.columns.find((column) => column.isMaterializedPath);
|
|
630
|
-
entityMetadata.objectIdColumn = entityMetadata.columns.find((column) => column.isObjectId);
|
|
631
|
-
entityMetadata.foreignKeys.forEach((foreignKey) => foreignKey.build(this.connection.namingStrategy));
|
|
632
|
-
entityMetadata.propertiesMap = entityMetadata.createPropertiesMap();
|
|
633
|
-
entityMetadata.relationIds.forEach((relationId) => relationId.build());
|
|
634
|
-
entityMetadata.relationCounts.forEach((relationCount) => relationCount.build());
|
|
635
|
-
entityMetadata.embeddeds.forEach((embedded) => {
|
|
636
|
-
embedded.relationIdsFromTree.forEach((relationId) => relationId.build());
|
|
637
|
-
embedded.relationCountsFromTree.forEach((relationCount) => relationCount.build());
|
|
638
|
-
});
|
|
639
|
-
}
|
|
640
|
-
/**
|
|
641
|
-
* Computes entity metadata's relations inverse side properties.
|
|
642
|
-
*/
|
|
643
|
-
computeInverseProperties(entityMetadata, entityMetadatas) {
|
|
644
|
-
entityMetadata.relations.forEach((relation) => {
|
|
645
|
-
const inverseEntityMetadata = entityMetadatas.find((m) => m.target === relation.type ||
|
|
646
|
-
(typeof relation.type === "string" &&
|
|
647
|
-
(m.targetName === relation.type ||
|
|
648
|
-
m.givenTableName === relation.type)));
|
|
649
|
-
if (!inverseEntityMetadata)
|
|
650
|
-
throw new TypeORMError("Entity metadata for " +
|
|
651
|
-
entityMetadata.name +
|
|
652
|
-
"#" +
|
|
653
|
-
relation.propertyPath +
|
|
654
|
-
" was not found. Check if you specified a correct entity object and if it's connected in the connection options.");
|
|
655
|
-
relation.inverseEntityMetadata = inverseEntityMetadata;
|
|
656
|
-
relation.inverseSidePropertyPath =
|
|
657
|
-
relation.buildInverseSidePropertyPath();
|
|
658
|
-
relation.inverseRelation = inverseEntityMetadata.relations.find((foundRelation) => foundRelation.propertyPath ===
|
|
659
|
-
relation.inverseSidePropertyPath);
|
|
660
|
-
});
|
|
661
|
-
}
|
|
662
|
-
/**
|
|
663
|
-
* Creates indices for the table of single table inheritance.
|
|
664
|
-
*/
|
|
665
|
-
createKeysForTableInheritance(entityMetadata) {
|
|
666
|
-
entityMetadata.indices.push(new IndexMetadata({
|
|
667
|
-
entityMetadata: entityMetadata,
|
|
668
|
-
columns: [entityMetadata.discriminatorColumn],
|
|
669
|
-
args: {
|
|
670
|
-
target: entityMetadata.target,
|
|
671
|
-
unique: false,
|
|
672
|
-
},
|
|
673
|
-
}));
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
;
|
|
677
|
-
({}); // @--end-of-file-for-module=taon-typeorm lib/typeorm/metadata-builder/EntityMetadataBuilder.ts
|
|
678
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5TWV0YWRhdGFCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24tdHlwZW9ybS9wcm9qZWN0cy90YW9uLXR5cGVvcm0vc3JjL2xpYi90eXBlb3JtL21ldGFkYXRhLWJ1aWxkZXIvRW50aXR5TWV0YWRhdGFCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBRy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM3RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUV2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FB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QUMsY0FBYyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNuRCxDQUFBO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQjtnQkFDdEIsTUFBTSxJQUFJLFlBQVksQ0FDbEIsc0JBQXNCO29CQUNsQixjQUFjLENBQUMsSUFBSTtvQkFDbkIsR0FBRztvQkFDSCxRQUFRLENBQUMsWUFBWTtvQkFDckIsaUhBQWlILENBQ3hILENBQUE7WUFFTCxRQUFRLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUE7WUFDdEQsUUFBUSxDQUFDLHVCQUF1QjtnQkFDNUIsUUFBUSxDQUFDLDRCQUE0QixFQUFFLENBQUE7WUFHM0MsUUFBUSxDQUFDLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUMzRCxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQ2QsYUFBYSxDQUFDLFlBQVk7Z0JBQzFCLFFBQVEsQ0FBQyx1QkFBdUIsQ0FDdkMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ08sNkJBQTZCLENBQUMsY0FBOEI7UUFDbEUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3ZCLElBQUksYUFBYSxDQUFDO1lBQ2QsY0FBYyxFQUFFLGNBQWM7WUFDOUIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDLG1CQUFvQixDQUFDO1lBQzlDLElBQUksRUFBRTtnQkFDRixNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU07Z0JBQzdCLE1BQU0sRUFBRSxLQUFLO2FBQ2hCO1NBQ0osQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDO0NBQ0o7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtGQUErRiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9FbnRpdHlNZXRhZGF0YVwiXG5pbXBvcnQgeyBDb2x1bW5NZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9Db2x1bW5NZXRhZGF0YVwiXG5pbXBvcnQgeyBJbmRleE1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL0luZGV4TWV0YWRhdGFcIlxuaW1wb3J0IHsgUmVsYXRpb25NZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9SZWxhdGlvbk1ldGFkYXRhXCJcbmltcG9ydCB7IEVtYmVkZGVkTWV0YWRhdGEgfSBmcm9tIFwiLi4vbWV0YWRhdGEvRW1iZWRkZWRNZXRhZGF0YVwiXG5pbXBvcnQgeyBNZXRhZGF0YUFyZ3NTdG9yYWdlIH0gZnJvbSBcIi4uL21ldGFkYXRhLWFyZ3MvTWV0YWRhdGFBcmdzU3RvcmFnZVwiXG5pbXBvcnQgeyBFbWJlZGRlZE1ldGFkYXRhQXJncyB9IGZyb20gXCIuLi9tZXRhZGF0YS1hcmdzL0VtYmVkZGVkTWV0YWRhdGFBcmdzXCJcbmltcG9ydCB7IFJlbGF0aW9uSWRNZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9SZWxhdGlvbklkTWV0YWRhdGFcIlxuaW1wb3J0IHsgUmVsYXRpb25Db3VudE1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL1JlbGF0aW9uQ291bnRNZXRhZGF0YVwiXG5pbXBvcnQgeyBFdmVudExpc3RlbmVyVHlwZXMgfSBmcm9tIFwiLi4vbWV0YWRhdGEvdHlwZXMvRXZlbnRMaXN0ZW5lclR5cGVzXCJcbmltcG9ydCB7IE1ldGFkYXRhVXRpbHMgfSBmcm9tIFwiLi9NZXRhZGF0YVV0aWxzXCJcbmltcG9ydCB7IFRhYmxlTWV0YWRhdGFBcmdzIH0gZnJvbSBcIi4uL21ldGFkYXRhLWFyZ3MvVGFibGVNZXRhZGF0YUFyZ3NcIlxuaW1wb3J0IHsgSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXIgfSBmcm9tIFwiLi9KdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlclwiXG5pbXBvcnQgeyBDbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXIgfSBmcm9tIFwiLi9DbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXJcIlxuaW1wb3J0IHsgUmVsYXRpb25Kb2luQ29sdW1uQnVpbGRlciB9IGZyb20gXCIuL1JlbGF0aW9uSm9pbkNvbHVtbkJ1aWxkZXJcIlxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gXCIuLi9kYXRhLXNvdXJjZS9EYXRhU291cmNlXCJcbmltcG9ydCB7IEVudGl0eUxpc3RlbmVyTWV0YWRhdGEgfSBmcm9tIFwiLi4vbWV0YWRhdGEvRW50aXR5TGlzdGVuZXJNZXRhZGF0YVwiXG5pbXBvcnQgeyBVbmlxdWVNZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9VbmlxdWVNZXRhZGF0YVwiXG5pbXBvcnQgeyBDaGVja01ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL0NoZWNrTWV0YWRhdGFcIlxuaW1wb3J0IHsgRXhjbHVzaW9uTWV0YWRhdGEgfSBmcm9tIFwiLi4vbWV0YWRhdGEvRXhjbHVzaW9uTWV0YWRhdGFcIlxuaW1wb3J0IHsgVHlwZU9STUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yXCJcbmltcG9ydCB7IERyaXZlclV0aWxzIH0gZnJvbSBcIi4uL2RyaXZlci9Ecml2ZXJVdGlsc1wiXG5cbi8qKlxuICogQnVpbGRzIEVudGl0eU1ldGFkYXRhIG9iamVjdHMgYW5kIGFsbCBpdHMgc3ViLW1ldGFkYXRhcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudGl0eU1ldGFkYXRhQnVpbGRlciB7XG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGJ1aWxkIGVudGl0eSBtZXRhZGF0YXMgb2YgdGhlIGp1bmN0aW9uIGVudGl0aWVzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBqdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlcjogSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXJcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gYnVpbGQgZW50aXR5IG1ldGFkYXRhcyBvZiB0aGUgY2xvc3VyZSBqdW5jdGlvbiBlbnRpdGllcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2xvc3VyZUp1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyOiBDbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXJcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gYnVpbGQgam9pbiBjb2x1bW5zIG9mIHRoZSByZWxhdGlvbnMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlbGF0aW9uSm9pbkNvbHVtbkJ1aWxkZXI6IFJlbGF0aW9uSm9pbkNvbHVtbkJ1aWxkZXJcblxuXG5cblxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29ubmVjdGlvbjogRGF0YVNvdXJjZSxcbiAgICAgICAgcHJpdmF0ZSBtZXRhZGF0YUFyZ3NTdG9yYWdlOiBNZXRhZGF0YUFyZ3NTdG9yYWdlLFxuICAgICkge1xuICAgICAgICB0aGlzLmp1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyID0gbmV3IEp1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyKFxuICAgICAgICAgICAgY29ubmVjdGlvbixcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmNsb3N1cmVKdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlciA9XG4gICAgICAgICAgICBuZXcgQ2xvc3VyZUp1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyKGNvbm5lY3Rpb24pXG4gICAgICAgIHRoaXMucmVsYXRpb25Kb2luQ29sdW1uQnVpbGRlciA9IG5ldyBSZWxhdGlvbkpvaW5Db2x1bW5CdWlsZGVyKFxuICAgICAgICAgICAgY29ubmVjdGlvbixcbiAgICAgICAgKVxuICAgIH1cblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIGEgY29tcGxldGUgZW50aXR5IG1ldGFkYXRhcyBmb3IgdGhlIGdpdmVuIGVudGl0eSBjbGFzc2VzLlxuICAgICAqL1xuICAgIGJ1aWxkKGVudGl0eUNsYXNzZXM/OiBGdW5jdGlvbltdKTogRW50aXR5TWV0YWRhdGFbXSB7XG5cbiAgICAgICAgY29uc3QgYWxsVGFibGVzID0gZW50aXR5Q2xhc3Nlc1xuICAgICAgICAgICAgPyB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2UuZmlsdGVyVGFibGVzKGVudGl0eUNsYXNzZXMpXG4gICAgICAgICAgICA6IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZS50YWJsZXNcblxuXG4gICAgICAgIGNvbnN0IHJlYWxUYWJsZXMgPSBhbGxUYWJsZXMuZmlsdGVyKFxuICAgICAgICAgICAgKHRhYmxlKSA9PlxuICAgICAgICAgICAgICAgIHRhYmxlLnR5cGUgPT09IFwicmVndWxhclwiIHx8XG4gICAgICAgICAgICAgICAgdGFibGUudHlwZSA9PT0gXCJjbG9zdXJlXCIgfHxcbiAgICAgICAgICAgICAgICB0YWJsZS50eXBlID09PSBcImVudGl0eS1jaGlsZFwiIHx8XG4gICAgICAgICAgICAgICAgdGFibGUudHlwZSA9PT0gXCJ2aWV3XCIsXG4gICAgICAgIClcblxuXG4gICAgICAgIGNvbnN0IGVudGl0eU1ldGFkYXRhcyA9IHJlYWxUYWJsZXMubWFwKCh0YWJsZUFyZ3MpID0+XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUVudGl0eU1ldGFkYXRhKHRhYmxlQXJncyksXG4gICAgICAgIClcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhcy5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT5cbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZVBhcmVudEVudGl0eU1ldGFkYXRhKGVudGl0eU1ldGFkYXRhcywgZW50aXR5TWV0YWRhdGEpLFxuICAgICAgICApXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXMuZm9yRWFjaCgobWV0YWRhdGEpID0+IHtcbiAgICAgICAgICAgIG1ldGFkYXRhLmNoaWxkRW50aXR5TWV0YWRhdGFzID0gZW50aXR5TWV0YWRhdGFzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoY2hpbGRNZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIG1ldGFkYXRhLnRhcmdldCA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY2hpbGRNZXRhZGF0YS50YXJnZXQgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGFVdGlscy5pc0luaGVyaXRlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE1ldGFkYXRhLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChlbnRpdHlNZXRhZGF0YSkgPT4gZW50aXR5TWV0YWRhdGEudGFibGVUeXBlICE9PSBcImVudGl0eS1jaGlsZFwiLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PiBlbnRpdHlNZXRhZGF0YS5idWlsZCgpKVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChlbnRpdHlNZXRhZGF0YSkgPT4gZW50aXR5TWV0YWRhdGEudGFibGVUeXBlID09PSBcImVudGl0eS1jaGlsZFwiLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PiBlbnRpdHlNZXRhZGF0YS5idWlsZCgpKVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChlbnRpdHlNZXRhZGF0YSkgPT4gZW50aXR5TWV0YWRhdGEudGFibGVUeXBlICE9PSBcImVudGl0eS1jaGlsZFwiLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUVudGl0eU1ldGFkYXRhU3RlcDEoXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhcyxcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhc1xuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZW50aXR5TWV0YWRhdGEpID0+IGVudGl0eU1ldGFkYXRhLnRhYmxlVHlwZSA9PT0gXCJlbnRpdHktY2hpbGRcIixcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAxKFxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YXMsXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXMuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+XG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAyKGVudGl0eU1ldGFkYXRhKSxcbiAgICAgICAgKVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PlxuICAgICAgICAgICAgdGhpcy5jb21wdXRlSW52ZXJzZVByb3BlcnRpZXMoZW50aXR5TWV0YWRhdGEsIGVudGl0eU1ldGFkYXRhcyksXG4gICAgICAgIClcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhc1xuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZW50aXR5TWV0YWRhdGEpID0+IGVudGl0eU1ldGFkYXRhLnRhYmxlVHlwZSAhPT0gXCJlbnRpdHktY2hpbGRcIixcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT4ge1xuXG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25zXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVsYXRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24uaXNPbmVUb09uZSB8fCByZWxhdGlvbi5pc01hbnlUb09uZSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpvaW5Db2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2UuZmlsdGVySm9pbkNvbHVtbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24ucHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9yZWlnbktleSwgY29sdW1ucywgdW5pcXVlQ29uc3RyYWludCB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aW9uSm9pbkNvbHVtbkJ1aWxkZXIuYnVpbGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5Db2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC8vIGNyZWF0ZSBhIGZvcmVpZ24ga2V5IGJhc2VkIG9uIGl0cyBtZXRhZGF0YSBhcmdzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9yZWlnbktleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnJlZ2lzdGVyRm9yZWlnbktleXMoZm9yZWlnbktleSkgLy8gcHVzaCBpdCB0byB0aGUgcmVsYXRpb24gYW5kIHRodXMgcmVnaXN0ZXIgdGhlcmUgYSBqb2luIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmZvcmVpZ25LZXlzLnB1c2goZm9yZWlnbktleSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24ucmVnaXN0ZXJKb2luQ29sdW1ucyhjb2x1bW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaXF1ZUNvbnN0cmFpbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlclV0aWxzLmlzTXlTUUxGYW1pbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXJvcmEtbXlzcWxcIiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibXNzcWxcIiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT0gXCJzYXBcIiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3Bhbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbmV3IEluZGV4TWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ29uc3RyYWludC5lbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHVuaXF1ZUNvbnN0cmFpbnQuY29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHVuaXF1ZUNvbnN0cmFpbnQudGFyZ2V0ISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1bmlxdWVDb25zdHJhaW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibXNzcWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LndoZXJlID0gaW5kZXguY29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5jb25uZWN0aW9uLmRyaXZlci5lc2NhcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZGF0YWJhc2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfSBJUyBOT1QgTlVMTGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiIEFORCBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleC5pc051bGxGaWx0ZXJlZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxhdGlvbi5lbWJlZGRlZE1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5lbWJlZGRlZE1ldGFkYXRhLmluZGljZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmVudGl0eU1ldGFkYXRhLm93bkluZGljZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAyKGVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxhdGlvbi5lbWJlZGRlZE1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5lbWJlZGRlZE1ldGFkYXRhLnVuaXF1ZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDb25zdHJhaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24uZW50aXR5TWV0YWRhdGEub3duVW5pcXVlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlRW50aXR5TWV0YWRhdGFTdGVwMihlbnRpdHlNZXRhZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlaWduS2V5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29ja3JvYWNoZGJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBuZXcgSW5kZXhNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhOiByZWxhdGlvbi5lbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogZm9yZWlnbktleS5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHJlbGF0aW9uLmVudGl0eU1ldGFkYXRhLnRhcmdldCEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxhdGlvbi5lbWJlZGRlZE1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmVtYmVkZGVkTWV0YWRhdGEuaW5kaWNlcy5wdXNoKGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmVudGl0eU1ldGFkYXRhLm93bkluZGljZXMucHVzaChpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlRW50aXR5TWV0YWRhdGFTdGVwMihlbnRpdHlNZXRhZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcblxuXG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25zXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc01hbnlUb01hbnkpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgam9pblRhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2UuZmluZEpvaW5UYWJsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24udGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSFcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgham9pblRhYmxlKSByZXR1cm4gLy8gbm8gam9pbiB0YWJsZSBzZXQgLSBubyBuZWVkIHRvIGRvIGFueXRoaW5nIChpdCBtZWFucyB0aGlzIGlzIG1hbnktdG8tbWFueSBpbnZlcnNlIHNpZGUpXG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganVuY3Rpb25FbnRpdHlNZXRhZGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlci5idWlsZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5UYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5yZWdpc3RlckZvcmVpZ25LZXlzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmp1bmN0aW9uRW50aXR5TWV0YWRhdGEuZm9yZWlnbktleXMsXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5yZWdpc3RlckpvaW5Db2x1bW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bmN0aW9uRW50aXR5TWV0YWRhdGEub3duSW5kaWNlc1swXS5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bmN0aW9uRW50aXR5TWV0YWRhdGEub3duSW5kaWNlc1sxXS5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24ucmVnaXN0ZXJKdW5jdGlvbkVudGl0eU1ldGFkYXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bmN0aW9uRW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICApXG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlRW50aXR5TWV0YWRhdGFTdGVwMihqdW5jdGlvbkVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlSW52ZXJzZVByb3BlcnRpZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVuY3Rpb25FbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YXMsXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YXMucHVzaChqdW5jdGlvbkVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhcy5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25zV2l0aEpvaW5Db2x1bW5zID1cbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAocmVsYXRpb24pID0+IHJlbGF0aW9uLmlzV2l0aEpvaW5Db2x1bW4sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEuaGFzTm9uTnVsbGFibGVSZWxhdGlvbnMgPVxuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnJlbGF0aW9uc1dpdGhKb2luQ29sdW1ucy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAocmVsYXRpb24pID0+ICFyZWxhdGlvbi5pc051bGxhYmxlIHx8IHJlbGF0aW9uLmlzUHJpbWFyeSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIH0pXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXNcbiAgICAgICAgICAgIC5maWx0ZXIoKG1ldGFkYXRhKSA9PiBtZXRhZGF0YS50cmVlVHlwZSA9PT0gXCJjbG9zdXJlLXRhYmxlXCIpXG4gICAgICAgICAgICAuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc3VyZUp1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyLmJ1aWxkKFxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5jbG9zdXJlSnVuY3Rpb25UYWJsZSA9XG4gICAgICAgICAgICAgICAgICAgIGNsb3N1cmVKdW5jdGlvbkVudGl0eU1ldGFkYXRhXG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlRW50aXR5TWV0YWRhdGFTdGVwMihjbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YSlcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVJbnZlcnNlUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICAgICAgY2xvc3VyZUp1bmN0aW9uRW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhcyxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGFzLnB1c2goY2xvc3VyZUp1bmN0aW9uRW50aXR5TWV0YWRhdGEpXG4gICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChtZXRhZGF0YSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuaW5oZXJpdGFuY2VQYXR0ZXJuID09PSBcIlNUSVwiICYmXG4gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRpc2NyaW1pbmF0b3JDb2x1bW4sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVLZXlzRm9yVGFibGVJbmhlcml0YW5jZShlbnRpdHlNZXRhZGF0YSksXG4gICAgICAgICAgICApXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXMuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+IHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmluZGljZXMuZm9yRWFjaCgoaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgaW5kZXguYnVpbGQodGhpcy5jb25uZWN0aW9uLm5hbWluZ1N0cmF0ZWd5KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhcy5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEudW5pcXVlcy5mb3JFYWNoKCh1bmlxdWUpID0+XG4gICAgICAgICAgICAgICAgdW5pcXVlLmJ1aWxkKHRoaXMuY29ubmVjdGlvbi5uYW1pbmdTdHJhdGVneSksXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXMuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+IHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmNoZWNrcy5mb3JFYWNoKChjaGVjaykgPT5cbiAgICAgICAgICAgICAgICBjaGVjay5idWlsZCh0aGlzLmNvbm5lY3Rpb24ubmFtaW5nU3RyYXRlZ3kpLFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5leGNsdXNpb25zLmZvckVhY2goKGV4Y2x1c2lvbikgPT5cbiAgICAgICAgICAgICAgICBleGNsdXNpb24uYnVpbGQodGhpcy5jb25uZWN0aW9uLm5hbWluZ1N0cmF0ZWd5KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhc1xuICAgICAgICAgICAgLmZpbHRlcigobWV0YWRhdGEpID0+IHR5cGVvZiBtZXRhZGF0YS50YXJnZXQgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnJlbGF0aW9uc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChyZWxhdGlvbikgPT4gcmVsYXRpb24uaXNMYXp5KVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5yZWxhdGlvbkxvYWRlci5lbmFibGVMYXp5TG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW50aXR5TWV0YWRhdGEudGFyZ2V0IGFzIEZ1bmN0aW9uKS5wcm90b3R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhcy5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRlZCA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZS5maW5kR2VuZXJhdGVkKFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4udGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4ucHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5pc0dlbmVyYXRlZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmdlbmVyYXRpb25TdHJhdGVneSA9IGdlbmVyYXRlZC5zdHJhdGVneVxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkLnN0cmF0ZWd5ID09PSBcInV1aWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLnR5cGUgPSBcInV1aWRcIlxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdlbmVyYXRlZC5zdHJhdGVneSA9PT0gXCJyb3dpZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4udHlwZSA9IFwiaW50XCJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi50eXBlID0gY29sdW1uLnR5cGUgfHwgTnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmJ1aWxkKHRoaXMuY29ubmVjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlRW50aXR5TWV0YWRhdGFTdGVwMihlbnRpdHlNZXRhZGF0YSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBlbnRpdHlNZXRhZGF0YXNcbiAgICB9XG5cblxuXG5cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgZW50aXR5IG1ldGFkYXRhIGZyb20gdGhlIGdpdmVuIHRhYmxlIGFyZ3MuXG4gICAgICogQ3JlYXRlcyBjb2x1bW4sIHJlbGF0aW9uLCBldGMuIG1ldGFkYXRhcyBmb3IgZXZlcnl0aGluZyB0aGlzIGVudGl0eSBtZXRhZGF0YSBvd25zLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVFbnRpdHlNZXRhZGF0YShcbiAgICAgICAgdGFibGVBcmdzOiBUYWJsZU1ldGFkYXRhQXJncyxcbiAgICApOiBFbnRpdHlNZXRhZGF0YSB7XG5cblxuXG4gICAgICAgIGNvbnN0IGluaGVyaXRhbmNlVHJlZTogYW55W10gPVxuICAgICAgICAgICAgdHlwZW9mIHRhYmxlQXJncy50YXJnZXQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgID8gTWV0YWRhdGFVdGlscy5nZXRJbmhlcml0YW5jZVRyZWUodGFibGVBcmdzLnRhcmdldClcbiAgICAgICAgICAgICAgICA6IFt0YWJsZUFyZ3MudGFyZ2V0XSAvLyB0b2RvOiBpbXBsZW1lbnQgbGF0ZXIgaGVyZSBpbmhlcml0YW5jZSBmb3Igc3RyaW5nLXRhcmdldHNcblxuICAgICAgICBjb25zdCB0YWJsZUluaGVyaXRhbmNlID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlLmZpbmRJbmhlcml0YW5jZVR5cGUoXG4gICAgICAgICAgICB0YWJsZUFyZ3MudGFyZ2V0LFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IHRhYmxlVHJlZSA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZS5maW5kVHJlZSh0YWJsZUFyZ3MudGFyZ2V0KVxuXG5cbiAgICAgICAgbGV0IHNpbmdsZVRhYmxlQ2hpbGRyZW5UYXJnZXRzOiBhbnlbXVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodGFibGVJbmhlcml0YW5jZSAmJiB0YWJsZUluaGVyaXRhbmNlLnBhdHRlcm4gPT09IFwiU1RJXCIpIHx8XG4gICAgICAgICAgICB0YWJsZUFyZ3MudHlwZSA9PT0gXCJlbnRpdHktY2hpbGRcIlxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNpbmdsZVRhYmxlQ2hpbGRyZW5UYXJnZXRzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlclNpbmdsZVRhYmxlQ2hpbGRyZW4odGFibGVBcmdzLnRhcmdldClcbiAgICAgICAgICAgICAgICAubWFwKChhcmdzKSA9PiBhcmdzLnRhcmdldClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh0YXJnZXQpID0+IHR5cGVvZiB0YXJnZXQgPT09IFwiZnVuY3Rpb25cIilcblxuICAgICAgICAgICAgaW5oZXJpdGFuY2VUcmVlLnB1c2goLi4uc2luZ2xlVGFibGVDaGlsZHJlblRhcmdldHMpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IEVudGl0eU1ldGFkYXRhKHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb246IHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgIGFyZ3M6IHRhYmxlQXJncyxcbiAgICAgICAgICAgIGluaGVyaXRhbmNlVHJlZTogaW5oZXJpdGFuY2VUcmVlLFxuICAgICAgICAgICAgdGFibGVUcmVlOiB0YWJsZVRyZWUsXG4gICAgICAgICAgICBpbmhlcml0YW5jZVBhdHRlcm46IHRhYmxlSW5oZXJpdGFuY2VcbiAgICAgICAgICAgICAgICA/IHRhYmxlSW5oZXJpdGFuY2UucGF0dGVyblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21wdXRlUGFyZW50RW50aXR5TWV0YWRhdGEoXG4gICAgICAgIGFsbEVudGl0eU1ldGFkYXRhczogRW50aXR5TWV0YWRhdGFbXSxcbiAgICAgICAgZW50aXR5TWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhLFxuICAgICkge1xuXG4gICAgICAgIGlmIChlbnRpdHlNZXRhZGF0YS50YWJsZVR5cGUgPT09IFwiZW50aXR5LWNoaWxkXCIpIHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnBhcmVudEVudGl0eU1ldGFkYXRhID0gYWxsRW50aXR5TWV0YWRhdGFzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGFsbEVudGl0eU1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxFbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUuaW5kZXhPZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS50YXJnZXQgYXMgRnVuY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICApICE9PSAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsRW50aXR5TWV0YWRhdGEuaW5oZXJpdGFuY2VQYXR0ZXJuID09PSBcIlNUSVwiXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSFcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21wdXRlRW50aXR5TWV0YWRhdGFTdGVwMShcbiAgICAgICAgYWxsRW50aXR5TWV0YWRhdGFzOiBFbnRpdHlNZXRhZGF0YVtdLFxuICAgICAgICBlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGEsXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGVudGl0eUluaGVyaXRhbmNlID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlLmZpbmRJbmhlcml0YW5jZVR5cGUoXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS50YXJnZXQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yVmFsdWUgPVxuICAgICAgICAgICAgdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlLmZpbmREaXNjcmltaW5hdG9yVmFsdWUoXG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEudGFyZ2V0LFxuICAgICAgICAgICAgKVxuXG4gICAgICAgIGlmICh0eXBlb2YgZGlzY3JpbWluYXRvclZhbHVlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5kaXNjcmltaW5hdG9yVmFsdWUgPSBkaXNjcmltaW5hdG9yVmFsdWUudmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmRpc2NyaW1pbmF0b3JWYWx1ZSA9IChcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS50YXJnZXQgYXMgYW55XG4gICAgICAgICAgICApLm5hbWVcbiAgICAgICAgfVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGEuZW1iZWRkZWRzID0gdGhpcy5jcmVhdGVFbWJlZGRlZHNSZWN1cnNpdmVseShcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlLmZpbHRlckVtYmVkZGVkcyhcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUsXG4gICAgICAgICAgICApLFxuICAgICAgICApLm1hcCgoZW1iZWRkZWQ6IEVtYmVkZGVkTWV0YWRhdGEpOiBFbWJlZGRlZE1ldGFkYXRhID0+IHtcbiAgICAgICAgICAgIGlmIChlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVBhdHRlcm4gPT09IFwiU1RJXCIpIHtcbiAgICAgICAgICAgICAgICBlbWJlZGRlZC5jb2x1bW5zID0gZW1iZWRkZWQuY29sdW1ucy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW46IENvbHVtbk1ldGFkYXRhKTogQ29sdW1uTWV0YWRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmlzTnVsbGFibGUgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVtYmVkZGVkXG4gICAgICAgIH0pXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGEub3duQ29sdW1ucyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgLmZpbHRlckNvbHVtbnMoZW50aXR5TWV0YWRhdGEuaW5oZXJpdGFuY2VUcmVlKVxuICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eU1ldGFkYXRhLnRhYmxlVHlwZSA9PT0gXCJlbnRpdHktY2hpbGRcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eU1ldGFkYXRhLnBhcmVudEVudGl0eU1ldGFkYXRhLm93bkNvbHVtbnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5wcm9wZXJ0eU5hbWUgPT09IGFyZ3MucHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICApIVxuXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gbmV3IENvbHVtbk1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbjogdGhpcy5jb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5JblNpbmdsZVRhYmxlSW5oZXJpdGVkQ2hpbGQgPVxuICAgICAgICAgICAgICAgICAgICBhbGxFbnRpdHlNZXRhZGF0YXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlckVudGl0eU1ldGFkYXRhKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyRW50aXR5TWV0YWRhdGEudGFibGVUeXBlID09PSBcImVudGl0eS1jaGlsZFwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJFbnRpdHlNZXRhZGF0YS50YXJnZXQgPT09IGFyZ3MudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbkluU2luZ2xlVGFibGVJbmhlcml0ZWRDaGlsZCkgY29sdW1uLmlzTnVsbGFibGUgPSB0cnVlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtblxuICAgICAgICAgICAgfSlcblxuXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChlbnRpdHlJbmhlcml0YW5jZSAmJiBlbnRpdHlJbmhlcml0YW5jZS5jb2x1bW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JDb2x1bW5OYW1lID1cbiAgICAgICAgICAgICAgICBlbnRpdHlJbmhlcml0YW5jZS5jb2x1bW4gJiYgZW50aXR5SW5oZXJpdGFuY2UuY29sdW1uLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBlbnRpdHlJbmhlcml0YW5jZS5jb2x1bW4ubmFtZVxuICAgICAgICAgICAgICAgICAgICA6IFwidHlwZVwiXG4gICAgICAgICAgICBsZXQgZGlzY3JpbWluYXRvckNvbHVtbiA9IGVudGl0eU1ldGFkYXRhLm93bkNvbHVtbnMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4ucHJvcGVydHlOYW1lID09PSBkaXNjcmltaW5hdG9yQ29sdW1uTmFtZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmICghZGlzY3JpbWluYXRvckNvbHVtbikge1xuICAgICAgICAgICAgICAgIGRpc2NyaW1pbmF0b3JDb2x1bW4gPSBuZXcgQ29sdW1uTWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uOiB0aGlzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhOiBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBlbnRpdHlNZXRhZGF0YS50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBcInZpcnR1YWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogZGlzY3JpbWluYXRvckNvbHVtbk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBlbnRpdHlJbmhlcml0YW5jZS5jb2x1bW4gfHwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGRpc2NyaW1pbmF0b3JDb2x1bW5OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidmFyY2hhclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBkaXNjcmltaW5hdG9yQ29sdW1uLmlzVmlydHVhbCA9IHRydWVcbiAgICAgICAgICAgICAgICBkaXNjcmltaW5hdG9yQ29sdW1uLmlzRGlzY3JpbWluYXRvciA9IHRydWVcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25Db2x1bW5zLnB1c2goZGlzY3JpbWluYXRvckNvbHVtbilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY3JpbWluYXRvckNvbHVtbi5pc0Rpc2NyaW1pbmF0b3IgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgaWYgKGVudGl0eU1ldGFkYXRhLnRhYmxlVHlwZSA9PT0gXCJlbnRpdHktY2hpbGRcIikge1xuICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvckNvbHVtbiA9XG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucGFyZW50RW50aXR5TWV0YWRhdGEub3duQ29sdW1ucy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4uaXNEaXNjcmltaW5hdG9yLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBkaXNjcmltaW5hdG9yQ29sdW1uICYmXG4gICAgICAgICAgICAgICAgIWVudGl0eU1ldGFkYXRhLm93bkNvbHVtbnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uID09PSBkaXNjcmltaW5hdG9yQ29sdW1uLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLm93bkNvbHVtbnMucHVzaChkaXNjcmltaW5hdG9yQ29sdW1uKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBuYW1pbmdTdHJhdGVneSB9ID0gdGhpcy5jb25uZWN0aW9uXG5cblxuICAgICAgICBpZiAoZW50aXR5TWV0YWRhdGEudHJlZVR5cGUgPT09IFwibWF0ZXJpYWxpemVkLXBhdGhcIikge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duQ29sdW1ucy5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBDb2x1bW5NZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb246IHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZWRQYXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGVudGl0eU1ldGFkYXRhLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IFwidmlydHVhbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBcIm1wYXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiAvKnRyZWUuY29sdW1uIHx8ICovIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1pbmdTdHJhdGVneS5tYXRlcmlhbGl6ZWRQYXRoQ29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSBpZiAoZW50aXR5TWV0YWRhdGEudHJlZVR5cGUgPT09IFwibmVzdGVkLXNldFwiKSB7XG4gICAgICAgICAgICBjb25zdCB7IGxlZnQsIHJpZ2h0IH0gPSBuYW1pbmdTdHJhdGVneS5uZXN0ZWRTZXRDb2x1bW5OYW1lc1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duQ29sdW1ucy5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBDb2x1bW5NZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb246IHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBuZXN0ZWRTZXRMZWZ0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGVudGl0eU1ldGFkYXRhLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IFwidmlydHVhbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBsZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogLyp0cmVlLmNvbHVtbiB8fCAqLyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duQ29sdW1ucy5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBDb2x1bW5NZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb246IHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBuZXN0ZWRTZXRSaWdodDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBlbnRpdHlNZXRhZGF0YS50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBcInZpcnR1YWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcmlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiAvKnRyZWUuY29sdW1uIHx8ICovIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiByaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGEub3duUmVsYXRpb25zID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAuZmlsdGVyUmVsYXRpb25zKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSlcbiAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcblxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlNZXRhZGF0YS50YWJsZVR5cGUgPT09IFwiZW50aXR5LWNoaWxkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50UmVsYXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucGFyZW50RW50aXR5TWV0YWRhdGEub3duUmVsYXRpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbGF0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5wcm9wZXJ0eU5hbWUgPT09IGFyZ3MucHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSFcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYXJncy50eXBlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChhcmdzLnR5cGUgYXMgKCkgPT4gYW55KSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcmdzLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFJlbGF0aW9uLnR5cGUgIT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lID0gT2JqZWN0LmNyZWF0ZShwYXJlbnRSZWxhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLnR5cGUgPSB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvbmVcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRSZWxhdGlvblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVsYXRpb25NZXRhZGF0YSh7IGVudGl0eU1ldGFkYXRhLCBhcmdzIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbklkcyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgLmZpbHRlclJlbGF0aW9uSWRzKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSlcbiAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcblxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlNZXRhZGF0YS50YWJsZVR5cGUgPT09IFwiZW50aXR5LWNoaWxkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHlNZXRhZGF0YS5wYXJlbnRFbnRpdHlNZXRhZGF0YS5yZWxhdGlvbklkcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlbGF0aW9uSWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25JZC5wcm9wZXJ0eU5hbWUgPT09IGFyZ3MucHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICApIVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWxhdGlvbklkTWV0YWRhdGEoeyBlbnRpdHlNZXRhZGF0YSwgYXJncyB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25Db3VudHMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgIC5maWx0ZXJSZWxhdGlvbkNvdW50cyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50aXR5TWV0YWRhdGEudGFibGVUeXBlID09PSBcImVudGl0eS1jaGlsZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5TWV0YWRhdGEucGFyZW50RW50aXR5TWV0YWRhdGEucmVsYXRpb25Db3VudHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZWxhdGlvbkNvdW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uQ291bnQucHJvcGVydHlOYW1lID09PSBhcmdzLnByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgKSFcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVsYXRpb25Db3VudE1ldGFkYXRhKHsgZW50aXR5TWV0YWRhdGEsIGFyZ3MgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm93bkxpc3RlbmVycyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgLmZpbHRlckxpc3RlbmVycyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFbnRpdHlMaXN0ZW5lck1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBhcmdzOiBhcmdzLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5jaGVja3MgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgIC5maWx0ZXJDaGVja3MoZW50aXR5TWV0YWRhdGEuaW5oZXJpdGFuY2VUcmVlKVxuICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ2hlY2tNZXRhZGF0YSh7IGVudGl0eU1ldGFkYXRhLCBhcmdzIH0pXG4gICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PSBcInBvc3RncmVzXCIpIHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmV4Y2x1c2lvbnMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyRXhjbHVzaW9ucyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEV4Y2x1c2lvbk1ldGFkYXRhKHsgZW50aXR5TWV0YWRhdGEsIGFyZ3MgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PSBcImNvY2tyb2FjaGRiXCIpIHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLm93bkluZGljZXMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVySW5kaWNlcyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYXJncykgPT4gIWFyZ3MudW5pcXVlKVxuICAgICAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmRleE1ldGFkYXRhKHsgZW50aXR5TWV0YWRhdGEsIGFyZ3MgfSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBjb25zdCB1bmlxdWVzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlckluZGljZXMoZW50aXR5TWV0YWRhdGEuaW5oZXJpdGFuY2VUcmVlKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGFyZ3MpID0+IGFyZ3MudW5pcXVlKVxuICAgICAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmlxdWVNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBhcmdzLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhcmdzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogYXJncy5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duVW5pcXVlcy5wdXNoKC4uLnVuaXF1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25JbmRpY2VzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlckluZGljZXMoZW50aXR5TWV0YWRhdGEuaW5oZXJpdGFuY2VUcmVlKVxuICAgICAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmRleE1ldGFkYXRhKHsgZW50aXR5TWV0YWRhdGEsIGFyZ3MgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9XG5cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBEcml2ZXJVdGlscy5pc015U1FMRmFtaWx5KHRoaXMuY29ubmVjdGlvbi5kcml2ZXIpIHx8XG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT0gXCJhdXJvcmEtbXlzcWxcIiB8fFxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwic2FwXCIgfHxcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PSBcInNwYW5uZXJcIlxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyVW5pcXVlcyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZGV4TWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogYXJncy50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYXJncy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGFyZ3MuY29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25JbmRpY2VzLnB1c2goLi4uaW5kaWNlcylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZXMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyVW5pcXVlcyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVuaXF1ZU1ldGFkYXRhKHsgZW50aXR5TWV0YWRhdGEsIGFyZ3MgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duVW5pcXVlcy5wdXNoKC4uLnVuaXF1ZXMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGZyb20gdGhlIGdpdmVuIGVtYmVkZGVkIG1ldGFkYXRhIGFyZ3MgcmVhbCBlbWJlZGRlZCBtZXRhZGF0YXMgd2l0aCBpdHMgY29sdW1ucyBhbmQgcmVsYXRpb25zLFxuICAgICAqIGFuZCBkb2VzIHRoZSBzYW1lIGZvciBhbGwgaXRzIHN1Yi1lbWJlZGRlZHMgKGdvZXMgcmVjdXJzaXZlbHkpLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVFbWJlZGRlZHNSZWN1cnNpdmVseShcbiAgICAgICAgZW50aXR5TWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhLFxuICAgICAgICBlbWJlZGRlZEFyZ3M6IEVtYmVkZGVkTWV0YWRhdGFBcmdzW10sXG4gICAgKTogRW1iZWRkZWRNZXRhZGF0YVtdIHtcbiAgICAgICAgcmV0dXJuIGVtYmVkZGVkQXJncy5tYXAoKGVtYmVkZGVkQXJncykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW1iZWRkZWRNZXRhZGF0YSA9IG5ldyBFbWJlZGRlZE1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgYXJnczogZW1iZWRkZWRBcmdzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldHM6IGFueVtdID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgZW1iZWRkZWRNZXRhZGF0YS50eXBlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgPyBNZXRhZGF0YVV0aWxzLmdldEluaGVyaXRhbmNlVHJlZShlbWJlZGRlZE1ldGFkYXRhLnR5cGUpXG4gICAgICAgICAgICAgICAgICAgIDogW2VtYmVkZGVkTWV0YWRhdGEudHlwZV0gLy8gdG9kbzogaW1wbGVtZW50IGxhdGVyIGhlcmUgaW5oZXJpdGFuY2UgZm9yIHN0cmluZy10YXJnZXRzXG5cbiAgICAgICAgICAgIGVtYmVkZGVkTWV0YWRhdGEuY29sdW1ucyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgICAgIC5maWx0ZXJDb2x1bW5zKHRhcmdldHMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbHVtbk1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb246IHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVtYmVkZGVkTWV0YWRhdGEucmVsYXRpb25zID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlclJlbGF0aW9ucyh0YXJnZXRzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWxhdGlvbk1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVtYmVkZGVkTWV0YWRhdGEubGlzdGVuZXJzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlckxpc3RlbmVycyh0YXJnZXRzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFbnRpdHlMaXN0ZW5lck1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVtYmVkZGVkTWV0YWRhdGEuaW5kaWNlcyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgICAgIC5maWx0ZXJJbmRpY2VzKHRhcmdldHMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZGV4TWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YS51bmlxdWVzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlclVuaXF1ZXModGFyZ2V0cylcbiAgICAgICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVW5pcXVlTWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YS5yZWxhdGlvbklkcyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgICAgIC5maWx0ZXJSZWxhdGlvbklkcyh0YXJnZXRzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWxhdGlvbklkTWV0YWRhdGEoeyBlbnRpdHlNZXRhZGF0YSwgYXJncyB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLnJlbGF0aW9uQ291bnRzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlclJlbGF0aW9uQ291bnRzKHRhcmdldHMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbGF0aW9uQ291bnRNZXRhZGF0YSh7IGVudGl0eU1ldGFkYXRhLCBhcmdzIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVtYmVkZGVkTWV0YWRhdGEuZW1iZWRkZWRzID0gdGhpcy5jcmVhdGVFbWJlZGRlZHNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2UuZmlsdGVyRW1iZWRkZWRzKHRhcmdldHMpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YS5lbWJlZGRlZHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAoc3ViRW1iZWRkZWQpID0+XG4gICAgICAgICAgICAgICAgICAgIChzdWJFbWJlZGRlZC5wYXJlbnRFbWJlZGRlZE1ldGFkYXRhID0gZW1iZWRkZWRNZXRhZGF0YSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5hbGxFbWJlZGRlZHMucHVzaChlbWJlZGRlZE1ldGFkYXRhKVxuICAgICAgICAgICAgcmV0dXJuIGVtYmVkZGVkTWV0YWRhdGFcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBhbGwgZW50aXR5IG1ldGFkYXRhJ3MgY29tcHV0ZWQgcHJvcGVydGllcywgYW5kIGFsbCBpdHMgc3ViLW1ldGFkYXRhcyAocmVsYXRpb25zLCBjb2x1bW5zLCBlbWJlZHMsIGV0YykuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAyKGVudGl0eU1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YSkge1xuICAgICAgICBlbnRpdHlNZXRhZGF0YS5lbWJlZGRlZHMuZm9yRWFjaCgoZW1iZWRkZWQpID0+XG4gICAgICAgICAgICBlbWJlZGRlZC5idWlsZCh0aGlzLmNvbm5lY3Rpb24pLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmVtYmVkZGVkcy5mb3JFYWNoKChlbWJlZGRlZCkgPT4ge1xuICAgICAgICAgICAgZW1iZWRkZWQuY29sdW1uc0Zyb21UcmVlLmZvckVhY2goKGNvbHVtbikgPT5cbiAgICAgICAgICAgICAgICBjb2x1bW4uYnVpbGQodGhpcy5jb25uZWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVtYmVkZGVkLnJlbGF0aW9uc0Zyb21UcmVlLmZvckVhY2goKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5idWlsZCgpKVxuICAgICAgICB9KVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25Db2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5idWlsZCh0aGlzLmNvbm5lY3Rpb24pLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm93blJlbGF0aW9ucy5mb3JFYWNoKChyZWxhdGlvbikgPT4gcmVsYXRpb24uYnVpbGQoKSlcbiAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25zID0gZW50aXR5TWV0YWRhdGEuZW1iZWRkZWRzLnJlZHVjZShcbiAgICAgICAgICAgIChyZWxhdGlvbnMsIGVtYmVkZGVkKSA9PlxuICAgICAgICAgICAgICAgIHJlbGF0aW9ucy5jb25jYXQoZW1iZWRkZWQucmVsYXRpb25zRnJvbVRyZWUpLFxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duUmVsYXRpb25zLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmVhZ2VyUmVsYXRpb25zID0gZW50aXR5TWV0YWRhdGEucmVsYXRpb25zLmZpbHRlcihcbiAgICAgICAgICAgIChyZWxhdGlvbikgPT4gcmVsYXRpb24uaXNFYWdlcixcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5sYXp5UmVsYXRpb25zID0gZW50aXR5TWV0YWRhdGEucmVsYXRpb25zLmZpbHRlcihcbiAgICAgICAgICAgIChyZWxhdGlvbikgPT4gcmVsYXRpb24uaXNMYXp5LFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm9uZVRvT25lUmVsYXRpb25zID0gZW50aXR5TWV0YWRhdGEucmVsYXRpb25zLmZpbHRlcihcbiAgICAgICAgICAgIChyZWxhdGlvbikgPT4gcmVsYXRpb24uaXNPbmVUb09uZSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5vbmVUb01hbnlSZWxhdGlvbnMgPSBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc09uZVRvTWFueSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5tYW55VG9PbmVSZWxhdGlvbnMgPSBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc01hbnlUb09uZSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5tYW55VG9NYW55UmVsYXRpb25zID0gZW50aXR5TWV0YWRhdGEucmVsYXRpb25zLmZpbHRlcihcbiAgICAgICAgICAgIChyZWxhdGlvbikgPT4gcmVsYXRpb24uaXNNYW55VG9NYW55LFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm93bmVyT25lVG9PbmVSZWxhdGlvbnMgPSBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc09uZVRvT25lT3duZXIsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEub3duZXJNYW55VG9NYW55UmVsYXRpb25zID1cbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnJlbGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc01hbnlUb01hbnlPd25lcixcbiAgICAgICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEudHJlZVBhcmVudFJlbGF0aW9uID0gZW50aXR5TWV0YWRhdGEucmVsYXRpb25zLmZpbmQoXG4gICAgICAgICAgICAocmVsYXRpb24pID0+IHJlbGF0aW9uLmlzVHJlZVBhcmVudCxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS50cmVlQ2hpbGRyZW5SZWxhdGlvbiA9IGVudGl0eU1ldGFkYXRhLnJlbGF0aW9ucy5maW5kKFxuICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc1RyZWVDaGlsZHJlbixcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zID0gZW50aXR5TWV0YWRhdGEuZW1iZWRkZWRzLnJlZHVjZShcbiAgICAgICAgICAgIChjb2x1bW5zLCBlbWJlZGRlZCkgPT4gY29sdW1ucy5jb25jYXQoZW1iZWRkZWQuY29sdW1uc0Zyb21UcmVlKSxcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLm93bkNvbHVtbnMsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEubGlzdGVuZXJzID0gZW50aXR5TWV0YWRhdGEuZW1iZWRkZWRzLnJlZHVjZShcbiAgICAgICAgICAgIChsaXN0ZW5lcnMsIGVtYmVkZGVkKSA9PlxuICAgICAgICAgICAgICAgIGxpc3RlbmVycy5jb25jYXQoZW1iZWRkZWQubGlzdGVuZXJzRnJvbVRyZWUpLFxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duTGlzdGVuZXJzLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmFmdGVyTG9hZExpc3RlbmVycyA9IGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAobGlzdGVuZXIpID0+IGxpc3RlbmVyLnR5cGUgPT09IEV2ZW50TGlzdGVuZXJUeXBlcy5BRlRFUl9MT0FELFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmFmdGVySW5zZXJ0TGlzdGVuZXJzID0gZW50aXR5TWV0YWRhdGEubGlzdGVuZXJzLmZpbHRlcihcbiAgICAgICAgICAgIChsaXN0ZW5lcikgPT4gbGlzdGVuZXIudHlwZSA9PT0gRXZlbnRMaXN0ZW5lclR5cGVzLkFGVEVSX0lOU0VSVCxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5hZnRlclVwZGF0ZUxpc3RlbmVycyA9IGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAobGlzdGVuZXIpID0+IGxpc3RlbmVyLnR5cGUgPT09IEV2ZW50TGlzdGVuZXJUeXBlcy5BRlRFUl9VUERBVEUsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuYWZ0ZXJSZW1vdmVMaXN0ZW5lcnMgPSBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQUZURVJfUkVNT1ZFLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmFmdGVyU29mdFJlbW92ZUxpc3RlbmVycyA9XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChsaXN0ZW5lcikgPT5cbiAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIudHlwZSA9PT0gRXZlbnRMaXN0ZW5lclR5cGVzLkFGVEVSX1NPRlRfUkVNT1ZFLFxuICAgICAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5hZnRlclJlY292ZXJMaXN0ZW5lcnMgPSBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQUZURVJfUkVDT1ZFUixcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5iZWZvcmVJbnNlcnRMaXN0ZW5lcnMgPSBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQkVGT1JFX0lOU0VSVCxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5iZWZvcmVVcGRhdGVMaXN0ZW5lcnMgPSBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQkVGT1JFX1VQREFURSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5iZWZvcmVSZW1vdmVMaXN0ZW5lcnMgPSBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQkVGT1JFX1JFTU9WRSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5iZWZvcmVTb2Z0UmVtb3ZlTGlzdGVuZXJzID1cbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpc3RlbmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQkVGT1JFX1NPRlRfUkVNT1ZFLFxuICAgICAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5iZWZvcmVSZWNvdmVyTGlzdGVuZXJzID0gZW50aXR5TWV0YWRhdGEubGlzdGVuZXJzLmZpbHRlcihcbiAgICAgICAgICAgIChsaXN0ZW5lcikgPT4gbGlzdGVuZXIudHlwZSA9PT0gRXZlbnRMaXN0ZW5lclR5cGVzLkJFRk9SRV9SRUNPVkVSLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmluZGljZXMgPSBlbnRpdHlNZXRhZGF0YS5lbWJlZGRlZHMucmVkdWNlKFxuICAgICAgICAgICAgKGluZGljZXMsIGVtYmVkZGVkKSA9PiBpbmRpY2VzLmNvbmNhdChlbWJlZGRlZC5pbmRpY2VzRnJvbVRyZWUpLFxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duSW5kaWNlcyxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS51bmlxdWVzID0gZW50aXR5TWV0YWRhdGEuZW1iZWRkZWRzLnJlZHVjZShcbiAgICAgICAgICAgICh1bmlxdWVzLCBlbWJlZGRlZCkgPT4gdW5pcXVlcy5jb25jYXQoZW1iZWRkZWQudW5pcXVlc0Zyb21UcmVlKSxcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLm93blVuaXF1ZXMsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEucHJpbWFyeUNvbHVtbnMgPSBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc1ByaW1hcnksXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEubm9uVmlydHVhbENvbHVtbnMgPSBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgICAgIChjb2x1bW4pID0+ICFjb2x1bW4uaXNWaXJ0dWFsLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmFuY2VzdG9yQ29sdW1ucyA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmNsb3N1cmVUeXBlID09PSBcImFuY2VzdG9yXCIsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuZGVzY2VuZGFudENvbHVtbnMgPSBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5jbG9zdXJlVHlwZSA9PT0gXCJkZXNjZW5kYW50XCIsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuaGFzTXVsdGlwbGVQcmltYXJ5S2V5cyA9XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5wcmltYXJ5Q29sdW1ucy5sZW5ndGggPiAxXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmdlbmVyYXRlZENvbHVtbnMgPSBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc0dlbmVyYXRlZCB8fCBjb2x1bW4uaXNPYmplY3RJZCxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5oYXNVVUlER2VuZXJhdGVkQ29sdW1ucyA9XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoY29sdW1uKSA9PlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uaXNHZW5lcmF0ZWQgfHwgY29sdW1uLmdlbmVyYXRpb25TdHJhdGVneSA9PT0gXCJ1dWlkXCIsXG4gICAgICAgICAgICApLmxlbmd0aCA+IDBcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuY3JlYXRlRGF0ZUNvbHVtbiA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmluZChcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc0NyZWF0ZURhdGUsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEudXBkYXRlRGF0ZUNvbHVtbiA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmluZChcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc1VwZGF0ZURhdGUsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuZGVsZXRlRGF0ZUNvbHVtbiA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmluZChcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc0RlbGV0ZURhdGUsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEudmVyc2lvbkNvbHVtbiA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmluZChcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc1ZlcnNpb24sXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuZGlzY3JpbWluYXRvckNvbHVtbiA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmluZChcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc0Rpc2NyaW1pbmF0b3IsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEudHJlZUxldmVsQ29sdW1uID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maW5kKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzVHJlZUxldmVsLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm5lc3RlZFNldExlZnRDb2x1bW4gPSBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbmQoXG4gICAgICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4uaXNOZXN0ZWRTZXRMZWZ0LFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm5lc3RlZFNldFJpZ2h0Q29sdW1uID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maW5kKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzTmVzdGVkU2V0UmlnaHQsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEubWF0ZXJpYWxpemVkUGF0aENvbHVtbiA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmluZChcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc01hdGVyaWFsaXplZFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEub2JqZWN0SWRDb2x1bW4gPSBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbmQoXG4gICAgICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4uaXNPYmplY3RJZCxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5mb3JlaWduS2V5cy5mb3JFYWNoKChmb3JlaWduS2V5KSA9PlxuICAgICAgICAgICAgZm9yZWlnbktleS5idWlsZCh0aGlzLmNvbm5lY3Rpb24ubmFtaW5nU3RyYXRlZ3kpLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLnByb3BlcnRpZXNNYXAgPSBlbnRpdHlNZXRhZGF0YS5jcmVhdGVQcm9wZXJ0aWVzTWFwKClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25JZHMuZm9yRWFjaCgocmVsYXRpb25JZCkgPT4gcmVsYXRpb25JZC5idWlsZCgpKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbkNvdW50cy5mb3JFYWNoKChyZWxhdGlvbkNvdW50KSA9PlxuICAgICAgICAgICAgcmVsYXRpb25Db3VudC5idWlsZCgpLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmVtYmVkZGVkcy5mb3JFYWNoKChlbWJlZGRlZCkgPT4ge1xuICAgICAgICAgICAgZW1iZWRkZWQucmVsYXRpb25JZHNGcm9tVHJlZS5mb3JFYWNoKChyZWxhdGlvbklkKSA9PlxuICAgICAgICAgICAgICAgIHJlbGF0aW9uSWQuYnVpbGQoKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVtYmVkZGVkLnJlbGF0aW9uQ291bnRzRnJvbVRyZWUuZm9yRWFjaCgocmVsYXRpb25Db3VudCkgPT5cbiAgICAgICAgICAgICAgICByZWxhdGlvbkNvdW50LmJ1aWxkKCksXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgZW50aXR5IG1ldGFkYXRhJ3MgcmVsYXRpb25zIGludmVyc2Ugc2lkZSBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wdXRlSW52ZXJzZVByb3BlcnRpZXMoXG4gICAgICAgIGVudGl0eU1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgZW50aXR5TWV0YWRhdGFzOiBFbnRpdHlNZXRhZGF0YVtdLFxuICAgICkge1xuICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcblxuICAgICAgICAgICAgY29uc3QgaW52ZXJzZUVudGl0eU1ldGFkYXRhID0gZW50aXR5TWV0YWRhdGFzLmZpbmQoXG4gICAgICAgICAgICAgICAgKG0pID0+XG4gICAgICAgICAgICAgICAgICAgIG0udGFyZ2V0ID09PSByZWxhdGlvbi50eXBlIHx8XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcmVsYXRpb24udHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKG0udGFyZ2V0TmFtZSA9PT0gcmVsYXRpb24udHlwZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0uZ2l2ZW5UYWJsZU5hbWUgPT09IHJlbGF0aW9uLnR5cGUpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmICghaW52ZXJzZUVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIFwiRW50aXR5IG1ldGFkYXRhIGZvciBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5uYW1lICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiI1wiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnByb3BlcnR5UGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiB3YXMgbm90IGZvdW5kLiBDaGVjayBpZiB5b3Ugc3BlY2lmaWVkIGEgY29ycmVjdCBlbnRpdHkgb2JqZWN0IGFuZCBpZiBpdCdzIGNvbm5lY3RlZCBpbiB0aGUgY29ubmVjdGlvbiBvcHRpb25zLlwiLFxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgcmVsYXRpb24uaW52ZXJzZUVudGl0eU1ldGFkYXRhID0gaW52ZXJzZUVudGl0eU1ldGFkYXRhXG4gICAgICAgICAgICByZWxhdGlvbi5pbnZlcnNlU2lkZVByb3BlcnR5UGF0aCA9XG4gICAgICAgICAgICAgICAgcmVsYXRpb24uYnVpbGRJbnZlcnNlU2lkZVByb3BlcnR5UGF0aCgpXG5cblxuICAgICAgICAgICAgcmVsYXRpb24uaW52ZXJzZVJlbGF0aW9uID0gaW52ZXJzZUVudGl0eU1ldGFkYXRhLnJlbGF0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChmb3VuZFJlbGF0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3VuZFJlbGF0aW9uLnByb3BlcnR5UGF0aCA9PT1cbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24uaW52ZXJzZVNpZGVQcm9wZXJ0eVBhdGgsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBpbmRpY2VzIGZvciB0aGUgdGFibGUgb2Ygc2luZ2xlIHRhYmxlIGluaGVyaXRhbmNlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVLZXlzRm9yVGFibGVJbmhlcml0YW5jZShlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGEpIHtcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuaW5kaWNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IEluZGV4TWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhOiBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBbZW50aXR5TWV0YWRhdGEuZGlzY3JpbWluYXRvckNvbHVtbiFdLFxuICAgICAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBlbnRpdHlNZXRhZGF0YS50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIHVuaXF1ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi10eXBlb3JtIGxpYi90eXBlb3JtL21ldGFkYXRhLWJ1aWxkZXIvRW50aXR5TWV0YWRhdGFCdWlsZGVyLnRzIl19
|