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.
Files changed (1216) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/package.json +1 -1
  3. package/tmp-environment.json +24 -3
  4. package/browser/esm2022/lib/index.mjs +0 -4
  5. package/browser/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  6. package/browser/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  7. package/browser/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  8. package/browser/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  9. package/browser/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  10. package/browser/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  11. package/browser/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  12. package/browser/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  13. package/browser/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  14. package/browser/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  15. package/browser/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  16. package/browser/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  17. package/browser/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  18. package/browser/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  19. package/browser/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  20. package/browser/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  21. package/browser/esm2022/lib/typeorm/constants.mjs +0 -4
  22. package/browser/esm2022/lib/typeorm/container.mjs +0 -57
  23. package/browser/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  24. package/browser/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  25. package/browser/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  26. package/browser/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  27. package/browser/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  28. package/browser/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  29. package/browser/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  30. package/browser/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  31. package/browser/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  32. package/browser/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  33. package/browser/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  34. package/browser/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  35. package/browser/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  36. package/browser/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  37. package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  38. package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  39. package/browser/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  40. package/browser/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  41. package/browser/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  42. package/browser/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  43. package/browser/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  44. package/browser/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  45. package/browser/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  46. package/browser/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  47. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  48. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  49. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  50. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  51. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  52. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  53. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  54. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  55. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  56. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  57. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  58. package/browser/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  59. package/browser/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  60. package/browser/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  61. package/browser/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  62. package/browser/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  63. package/browser/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  64. package/browser/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  65. package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  66. package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  67. package/browser/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  68. package/browser/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  69. package/browser/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  70. package/browser/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  71. package/browser/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  72. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  73. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  74. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  75. package/browser/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  76. package/browser/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  77. package/browser/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  78. package/browser/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  79. package/browser/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  80. package/browser/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  81. package/browser/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  82. package/browser/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  83. package/browser/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  84. package/browser/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  85. package/browser/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  86. package/browser/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  87. package/browser/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  88. package/browser/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  89. package/browser/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  90. package/browser/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  91. package/browser/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  92. package/browser/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  93. package/browser/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  94. package/browser/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  95. package/browser/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  96. package/browser/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  97. package/browser/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  98. package/browser/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  99. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  100. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  101. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  102. package/browser/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  103. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  104. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  105. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  106. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  107. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  108. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  109. package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  110. package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  111. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  112. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  113. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  114. package/browser/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  115. package/browser/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  116. package/browser/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  117. package/browser/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  118. package/browser/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  119. package/browser/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  120. package/browser/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  121. package/browser/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  122. package/browser/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  123. package/browser/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  124. package/browser/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  125. package/browser/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  126. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  127. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  128. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  129. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  130. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  131. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  132. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  133. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  134. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  135. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  136. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  137. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  138. package/browser/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  139. package/browser/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  140. package/browser/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  141. package/browser/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  142. package/browser/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  143. package/browser/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  144. package/browser/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  145. package/browser/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  146. package/browser/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  147. package/browser/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  148. package/browser/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  149. package/browser/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  150. package/browser/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  151. package/browser/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  152. package/browser/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  153. package/browser/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  154. package/browser/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  155. package/browser/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  156. package/browser/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  157. package/browser/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  158. package/browser/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  159. package/browser/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  160. package/browser/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  161. package/browser/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  162. package/browser/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  163. package/browser/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  164. package/browser/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  165. package/browser/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  166. package/browser/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  167. package/browser/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  168. package/browser/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  169. package/browser/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  170. package/browser/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  171. package/browser/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  172. package/browser/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  173. package/browser/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  174. package/browser/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  175. package/browser/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  176. package/browser/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  177. package/browser/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  178. package/browser/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  179. package/browser/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  180. package/browser/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  181. package/browser/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  182. package/browser/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  183. package/browser/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  184. package/browser/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  185. package/browser/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  186. package/browser/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  187. package/browser/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  188. package/browser/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  189. package/browser/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  190. package/browser/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  191. package/browser/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  192. package/browser/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  193. package/browser/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  194. package/browser/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  195. package/browser/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  196. package/browser/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  197. package/browser/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  198. package/browser/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  199. package/browser/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  200. package/browser/esm2022/lib/typeorm/error/index.mjs +0 -63
  201. package/browser/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  202. package/browser/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  203. package/browser/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  204. package/browser/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  205. package/browser/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  206. package/browser/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  207. package/browser/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  208. package/browser/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  209. package/browser/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  210. package/browser/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  211. package/browser/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  212. package/browser/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  213. package/browser/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  214. package/browser/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  215. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  216. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  217. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  218. package/browser/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  219. package/browser/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  220. package/browser/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  221. package/browser/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  222. package/browser/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  223. package/browser/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  224. package/browser/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  225. package/browser/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  226. package/browser/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  227. package/browser/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  228. package/browser/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  229. package/browser/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  230. package/browser/esm2022/lib/typeorm/globals.mjs +0 -165
  231. package/browser/esm2022/lib/typeorm/index.mjs +0 -157
  232. package/browser/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  233. package/browser/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  234. package/browser/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  235. package/browser/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  236. package/browser/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  237. package/browser/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  238. package/browser/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  239. package/browser/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  240. package/browser/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  241. package/browser/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  242. package/browser/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  243. package/browser/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  244. package/browser/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  245. package/browser/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  246. package/browser/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  247. package/browser/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  248. package/browser/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  249. package/browser/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  250. package/browser/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  251. package/browser/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  252. package/browser/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  253. package/browser/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  254. package/browser/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  255. package/browser/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  256. package/browser/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  257. package/browser/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  258. package/browser/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  259. package/browser/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  260. package/browser/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  261. package/browser/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  262. package/browser/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  263. package/browser/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  264. package/browser/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  265. package/browser/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  266. package/browser/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  267. package/browser/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  268. package/browser/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  269. package/browser/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  270. package/browser/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  271. package/browser/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  272. package/browser/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  273. package/browser/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  274. package/browser/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  275. package/browser/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  276. package/browser/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  277. package/browser/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  278. package/browser/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  279. package/browser/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  280. package/browser/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  281. package/browser/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  282. package/browser/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  283. package/browser/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  284. package/browser/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  285. package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  286. package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  287. package/browser/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  288. package/browser/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  289. package/browser/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  290. package/browser/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  291. package/browser/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  292. package/browser/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  293. package/browser/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  294. package/browser/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  295. package/browser/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  296. package/browser/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  297. package/browser/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  298. package/browser/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  299. package/browser/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  300. package/browser/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  301. package/browser/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  302. package/browser/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  303. package/browser/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  304. package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  305. package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  306. package/browser/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  307. package/browser/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  308. package/browser/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  309. package/browser/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
  310. package/browser/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  311. package/browser/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  312. package/browser/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  313. package/browser/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  314. package/browser/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  315. package/browser/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  316. package/browser/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  317. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  318. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  319. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  320. package/browser/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  321. package/browser/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  322. package/browser/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  323. package/browser/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  324. package/browser/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  325. package/browser/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  326. package/browser/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  327. package/browser/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  328. package/browser/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  329. package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  330. package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  331. package/browser/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  332. package/browser/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  333. package/browser/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  334. package/browser/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  335. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  336. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  337. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  338. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  339. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  340. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  341. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  342. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  343. package/browser/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  344. package/browser/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  345. package/browser/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  346. package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  347. package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  348. package/browser/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  349. package/browser/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  350. package/browser/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  351. package/browser/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  352. package/browser/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  353. package/browser/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  354. package/browser/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  355. package/browser/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  356. package/browser/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  357. package/browser/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  358. package/browser/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  359. package/browser/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  360. package/browser/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  361. package/browser/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  362. package/browser/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  363. package/browser/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  364. package/browser/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  365. package/browser/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  366. package/browser/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  367. package/browser/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  368. package/browser/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  369. package/browser/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  370. package/browser/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  371. package/browser/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  372. package/browser/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  373. package/browser/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  374. package/browser/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  375. package/browser/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  376. package/browser/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  377. package/browser/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  378. package/browser/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  379. package/browser/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  380. package/browser/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  381. package/browser/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  382. package/browser/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  383. package/browser/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  384. package/browser/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  385. package/browser/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  386. package/browser/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  387. package/browser/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  388. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  389. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  390. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  391. package/browser/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  392. package/browser/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  393. package/browser/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  394. package/browser/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  395. package/browser/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  396. package/browser/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  397. package/browser/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  398. package/browser/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  399. package/browser/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  400. package/browser/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  401. package/browser/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  402. package/browser/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  403. package/browser/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  404. package/browser/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  405. package/browser/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  406. package/browser/esm2022/public-api.mjs +0 -2
  407. package/browser/esm2022/taon-typeorm.mjs +0 -5
  408. package/client/esm2022/lib/index.mjs +0 -4
  409. package/client/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  410. package/client/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  411. package/client/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  412. package/client/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  413. package/client/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  414. package/client/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  415. package/client/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  416. package/client/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  417. package/client/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  418. package/client/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  419. package/client/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  420. package/client/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  421. package/client/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  422. package/client/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  423. package/client/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  424. package/client/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  425. package/client/esm2022/lib/typeorm/constants.mjs +0 -4
  426. package/client/esm2022/lib/typeorm/container.mjs +0 -57
  427. package/client/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  428. package/client/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  429. package/client/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  430. package/client/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  431. package/client/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  432. package/client/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  433. package/client/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  434. package/client/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  435. package/client/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  436. package/client/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  437. package/client/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  438. package/client/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  439. package/client/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  440. package/client/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  441. package/client/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  442. package/client/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  443. package/client/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  444. package/client/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  445. package/client/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  446. package/client/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  447. package/client/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  448. package/client/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  449. package/client/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  450. package/client/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  451. package/client/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  452. package/client/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  453. package/client/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  454. package/client/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  455. package/client/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  456. package/client/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  457. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  458. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  459. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  460. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  461. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  462. package/client/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  463. package/client/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  464. package/client/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  465. package/client/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  466. package/client/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  467. package/client/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  468. package/client/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  469. package/client/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  470. package/client/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  471. package/client/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  472. package/client/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  473. package/client/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  474. package/client/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  475. package/client/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  476. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  477. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  478. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  479. package/client/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  480. package/client/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  481. package/client/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  482. package/client/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  483. package/client/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  484. package/client/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  485. package/client/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  486. package/client/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  487. package/client/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  488. package/client/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  489. package/client/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  490. package/client/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  491. package/client/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  492. package/client/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  493. package/client/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  494. package/client/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  495. package/client/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  496. package/client/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  497. package/client/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  498. package/client/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  499. package/client/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  500. package/client/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  501. package/client/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  502. package/client/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  503. package/client/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  504. package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  505. package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  506. package/client/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  507. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  508. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  509. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  510. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  511. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  512. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  513. package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  514. package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  515. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  516. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  517. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  518. package/client/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  519. package/client/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  520. package/client/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  521. package/client/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  522. package/client/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  523. package/client/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  524. package/client/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  525. package/client/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  526. package/client/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  527. package/client/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  528. package/client/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  529. package/client/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  530. package/client/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  531. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  532. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  533. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  534. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  535. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  536. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  537. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  538. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  539. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  540. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  541. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  542. package/client/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  543. package/client/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  544. package/client/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  545. package/client/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  546. package/client/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  547. package/client/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  548. package/client/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  549. package/client/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  550. package/client/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  551. package/client/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  552. package/client/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  553. package/client/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  554. package/client/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  555. package/client/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  556. package/client/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  557. package/client/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  558. package/client/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  559. package/client/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  560. package/client/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  561. package/client/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  562. package/client/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  563. package/client/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  564. package/client/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  565. package/client/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  566. package/client/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  567. package/client/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  568. package/client/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  569. package/client/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  570. package/client/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  571. package/client/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  572. package/client/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  573. package/client/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  574. package/client/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  575. package/client/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  576. package/client/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  577. package/client/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  578. package/client/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  579. package/client/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  580. package/client/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  581. package/client/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  582. package/client/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  583. package/client/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  584. package/client/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  585. package/client/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  586. package/client/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  587. package/client/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  588. package/client/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  589. package/client/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  590. package/client/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  591. package/client/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  592. package/client/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  593. package/client/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  594. package/client/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  595. package/client/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  596. package/client/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  597. package/client/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  598. package/client/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  599. package/client/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  600. package/client/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  601. package/client/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  602. package/client/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  603. package/client/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  604. package/client/esm2022/lib/typeorm/error/index.mjs +0 -63
  605. package/client/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  606. package/client/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  607. package/client/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  608. package/client/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  609. package/client/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  610. package/client/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  611. package/client/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  612. package/client/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  613. package/client/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  614. package/client/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  615. package/client/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  616. package/client/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  617. package/client/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  618. package/client/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  619. package/client/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  620. package/client/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  621. package/client/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  622. package/client/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  623. package/client/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  624. package/client/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  625. package/client/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  626. package/client/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  627. package/client/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  628. package/client/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  629. package/client/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  630. package/client/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  631. package/client/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  632. package/client/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  633. package/client/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  634. package/client/esm2022/lib/typeorm/globals.mjs +0 -165
  635. package/client/esm2022/lib/typeorm/index.mjs +0 -157
  636. package/client/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  637. package/client/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  638. package/client/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  639. package/client/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  640. package/client/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  641. package/client/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  642. package/client/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  643. package/client/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  644. package/client/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  645. package/client/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  646. package/client/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  647. package/client/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  648. package/client/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  649. package/client/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  650. package/client/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  651. package/client/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  652. package/client/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  653. package/client/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  654. package/client/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  655. package/client/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  656. package/client/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  657. package/client/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  658. package/client/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  659. package/client/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  660. package/client/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  661. package/client/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  662. package/client/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  663. package/client/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  664. package/client/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  665. package/client/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  666. package/client/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  667. package/client/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  668. package/client/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  669. package/client/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  670. package/client/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  671. package/client/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  672. package/client/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  673. package/client/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  674. package/client/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  675. package/client/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  676. package/client/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  677. package/client/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  678. package/client/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  679. package/client/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  680. package/client/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  681. package/client/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  682. package/client/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  683. package/client/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  684. package/client/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  685. package/client/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  686. package/client/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  687. package/client/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  688. package/client/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  689. package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  690. package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  691. package/client/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  692. package/client/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  693. package/client/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  694. package/client/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  695. package/client/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  696. package/client/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  697. package/client/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  698. package/client/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  699. package/client/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  700. package/client/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  701. package/client/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  702. package/client/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  703. package/client/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  704. package/client/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  705. package/client/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  706. package/client/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  707. package/client/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  708. package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  709. package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  710. package/client/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  711. package/client/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  712. package/client/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  713. package/client/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
  714. package/client/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  715. package/client/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  716. package/client/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  717. package/client/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  718. package/client/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  719. package/client/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  720. package/client/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  721. package/client/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  722. package/client/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  723. package/client/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  724. package/client/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  725. package/client/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  726. package/client/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  727. package/client/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  728. package/client/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  729. package/client/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  730. package/client/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  731. package/client/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  732. package/client/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  733. package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  734. package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  735. package/client/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  736. package/client/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  737. package/client/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  738. package/client/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  739. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  740. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  741. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  742. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  743. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  744. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  745. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  746. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  747. package/client/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  748. package/client/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  749. package/client/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  750. package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  751. package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  752. package/client/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  753. package/client/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  754. package/client/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  755. package/client/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  756. package/client/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  757. package/client/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  758. package/client/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  759. package/client/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  760. package/client/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  761. package/client/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  762. package/client/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  763. package/client/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  764. package/client/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  765. package/client/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  766. package/client/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  767. package/client/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  768. package/client/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  769. package/client/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  770. package/client/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  771. package/client/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  772. package/client/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  773. package/client/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  774. package/client/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  775. package/client/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  776. package/client/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  777. package/client/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  778. package/client/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  779. package/client/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  780. package/client/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  781. package/client/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  782. package/client/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  783. package/client/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  784. package/client/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  785. package/client/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  786. package/client/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  787. package/client/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  788. package/client/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  789. package/client/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  790. package/client/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  791. package/client/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  792. package/client/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  793. package/client/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  794. package/client/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  795. package/client/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  796. package/client/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  797. package/client/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  798. package/client/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  799. package/client/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  800. package/client/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  801. package/client/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  802. package/client/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  803. package/client/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  804. package/client/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  805. package/client/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  806. package/client/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  807. package/client/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  808. package/client/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  809. package/client/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  810. package/client/esm2022/public-api.mjs +0 -2
  811. package/client/esm2022/taon-typeorm.mjs +0 -5
  812. package/taon.jsonc +0 -8
  813. package/websql/esm2022/lib/index.mjs +0 -4
  814. package/websql/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  815. package/websql/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  816. package/websql/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  817. package/websql/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  818. package/websql/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  819. package/websql/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  820. package/websql/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  821. package/websql/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  822. package/websql/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  823. package/websql/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  824. package/websql/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  825. package/websql/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  826. package/websql/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  827. package/websql/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  828. package/websql/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  829. package/websql/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  830. package/websql/esm2022/lib/typeorm/constants.mjs +0 -4
  831. package/websql/esm2022/lib/typeorm/container.mjs +0 -57
  832. package/websql/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  833. package/websql/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  834. package/websql/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  835. package/websql/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  836. package/websql/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  837. package/websql/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  838. package/websql/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  839. package/websql/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  840. package/websql/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  841. package/websql/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  842. package/websql/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  843. package/websql/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  844. package/websql/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  845. package/websql/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  846. package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  847. package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  848. package/websql/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  849. package/websql/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  850. package/websql/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  851. package/websql/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  852. package/websql/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  853. package/websql/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  854. package/websql/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  855. package/websql/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  856. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  857. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  858. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  859. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  860. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  861. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  862. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  863. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  864. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  865. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  866. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  867. package/websql/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  868. package/websql/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  869. package/websql/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  870. package/websql/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  871. package/websql/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  872. package/websql/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  873. package/websql/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  874. package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  875. package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  876. package/websql/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  877. package/websql/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  878. package/websql/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  879. package/websql/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  880. package/websql/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  881. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  882. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  883. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  884. package/websql/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  885. package/websql/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  886. package/websql/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  887. package/websql/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  888. package/websql/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  889. package/websql/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  890. package/websql/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  891. package/websql/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  892. package/websql/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  893. package/websql/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  894. package/websql/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  895. package/websql/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  896. package/websql/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  897. package/websql/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  898. package/websql/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  899. package/websql/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  900. package/websql/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  901. package/websql/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  902. package/websql/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  903. package/websql/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  904. package/websql/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  905. package/websql/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  906. package/websql/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  907. package/websql/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  908. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  909. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  910. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  911. package/websql/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  912. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  913. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  914. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  915. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  916. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  917. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  918. package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  919. package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  920. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  921. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  922. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  923. package/websql/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  924. package/websql/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  925. package/websql/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  926. package/websql/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  927. package/websql/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  928. package/websql/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  929. package/websql/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  930. package/websql/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  931. package/websql/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  932. package/websql/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  933. package/websql/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  934. package/websql/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  935. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  936. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  937. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  938. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  939. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  940. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  941. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  942. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  943. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  944. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  945. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  946. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  947. package/websql/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  948. package/websql/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  949. package/websql/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  950. package/websql/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  951. package/websql/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  952. package/websql/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  953. package/websql/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  954. package/websql/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  955. package/websql/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  956. package/websql/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  957. package/websql/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  958. package/websql/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  959. package/websql/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  960. package/websql/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  961. package/websql/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  962. package/websql/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  963. package/websql/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  964. package/websql/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  965. package/websql/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  966. package/websql/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  967. package/websql/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  968. package/websql/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  969. package/websql/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  970. package/websql/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  971. package/websql/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  972. package/websql/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  973. package/websql/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  974. package/websql/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  975. package/websql/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  976. package/websql/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  977. package/websql/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  978. package/websql/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  979. package/websql/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  980. package/websql/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  981. package/websql/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  982. package/websql/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  983. package/websql/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  984. package/websql/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  985. package/websql/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  986. package/websql/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  987. package/websql/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  988. package/websql/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  989. package/websql/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  990. package/websql/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  991. package/websql/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  992. package/websql/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  993. package/websql/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  994. package/websql/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  995. package/websql/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  996. package/websql/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  997. package/websql/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  998. package/websql/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  999. package/websql/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  1000. package/websql/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  1001. package/websql/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  1002. package/websql/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  1003. package/websql/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  1004. package/websql/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  1005. package/websql/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  1006. package/websql/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  1007. package/websql/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  1008. package/websql/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  1009. package/websql/esm2022/lib/typeorm/error/index.mjs +0 -63
  1010. package/websql/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  1011. package/websql/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  1012. package/websql/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  1013. package/websql/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  1014. package/websql/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  1015. package/websql/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  1016. package/websql/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  1017. package/websql/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  1018. package/websql/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  1019. package/websql/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  1020. package/websql/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  1021. package/websql/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  1022. package/websql/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  1023. package/websql/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  1024. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  1025. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  1026. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  1027. package/websql/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  1028. package/websql/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  1029. package/websql/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  1030. package/websql/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  1031. package/websql/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  1032. package/websql/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  1033. package/websql/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  1034. package/websql/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  1035. package/websql/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  1036. package/websql/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  1037. package/websql/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  1038. package/websql/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  1039. package/websql/esm2022/lib/typeorm/globals.mjs +0 -165
  1040. package/websql/esm2022/lib/typeorm/index.mjs +0 -157
  1041. package/websql/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  1042. package/websql/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  1043. package/websql/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  1044. package/websql/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  1045. package/websql/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  1046. package/websql/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  1047. package/websql/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  1048. package/websql/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  1049. package/websql/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  1050. package/websql/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  1051. package/websql/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  1052. package/websql/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  1053. package/websql/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  1054. package/websql/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  1055. package/websql/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  1056. package/websql/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  1057. package/websql/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  1058. package/websql/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  1059. package/websql/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  1060. package/websql/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  1061. package/websql/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  1062. package/websql/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  1063. package/websql/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  1064. package/websql/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  1065. package/websql/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  1066. package/websql/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  1067. package/websql/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  1068. package/websql/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  1069. package/websql/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  1070. package/websql/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  1071. package/websql/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  1072. package/websql/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  1073. package/websql/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  1074. package/websql/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  1075. package/websql/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  1076. package/websql/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  1077. package/websql/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  1078. package/websql/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  1079. package/websql/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  1080. package/websql/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  1081. package/websql/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  1082. package/websql/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  1083. package/websql/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  1084. package/websql/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  1085. package/websql/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  1086. package/websql/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  1087. package/websql/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  1088. package/websql/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  1089. package/websql/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  1090. package/websql/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  1091. package/websql/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  1092. package/websql/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  1093. package/websql/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  1094. package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  1095. package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  1096. package/websql/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  1097. package/websql/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  1098. package/websql/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  1099. package/websql/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  1100. package/websql/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  1101. package/websql/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  1102. package/websql/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  1103. package/websql/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  1104. package/websql/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  1105. package/websql/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  1106. package/websql/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  1107. package/websql/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  1108. package/websql/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  1109. package/websql/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  1110. package/websql/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  1111. package/websql/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  1112. package/websql/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  1113. package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  1114. package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  1115. package/websql/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  1116. package/websql/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  1117. package/websql/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  1118. package/websql/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -331
  1119. package/websql/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  1120. package/websql/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  1121. package/websql/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  1122. package/websql/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  1123. package/websql/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  1124. package/websql/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  1125. package/websql/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  1126. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  1127. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  1128. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  1129. package/websql/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  1130. package/websql/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  1131. package/websql/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  1132. package/websql/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  1133. package/websql/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  1134. package/websql/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  1135. package/websql/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  1136. package/websql/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  1137. package/websql/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  1138. package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  1139. package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  1140. package/websql/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  1141. package/websql/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  1142. package/websql/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  1143. package/websql/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  1144. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  1145. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  1146. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  1147. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  1148. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  1149. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  1150. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  1151. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  1152. package/websql/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  1153. package/websql/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  1154. package/websql/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  1155. package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  1156. package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  1157. package/websql/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  1158. package/websql/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  1159. package/websql/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  1160. package/websql/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  1161. package/websql/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  1162. package/websql/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  1163. package/websql/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  1164. package/websql/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  1165. package/websql/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  1166. package/websql/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  1167. package/websql/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  1168. package/websql/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  1169. package/websql/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  1170. package/websql/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  1171. package/websql/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  1172. package/websql/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  1173. package/websql/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  1174. package/websql/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  1175. package/websql/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  1176. package/websql/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  1177. package/websql/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  1178. package/websql/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  1179. package/websql/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  1180. package/websql/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  1181. package/websql/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  1182. package/websql/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  1183. package/websql/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  1184. package/websql/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  1185. package/websql/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  1186. package/websql/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  1187. package/websql/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  1188. package/websql/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  1189. package/websql/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  1190. package/websql/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  1191. package/websql/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  1192. package/websql/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  1193. package/websql/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  1194. package/websql/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  1195. package/websql/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  1196. package/websql/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  1197. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  1198. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  1199. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  1200. package/websql/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  1201. package/websql/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  1202. package/websql/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  1203. package/websql/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  1204. package/websql/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  1205. package/websql/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  1206. package/websql/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  1207. package/websql/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  1208. package/websql/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  1209. package/websql/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  1210. package/websql/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  1211. package/websql/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  1212. package/websql/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  1213. package/websql/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  1214. package/websql/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  1215. package/websql/esm2022/public-api.mjs +0 -2
  1216. package/websql/esm2022/taon-typeorm.mjs +0 -5
@@ -1,743 +0,0 @@
1
- import { EntityNotFoundError } from "../error/EntityNotFoundError";
2
- import { QueryRunnerProviderAlreadyReleasedError } from "../error/QueryRunnerProviderAlreadyReleasedError";
3
- import { NoNeedToReleaseEntityManagerError } from "../error/NoNeedToReleaseEntityManagerError";
4
- /* */
5
- /* */
6
- import { TreeRepository } from "../repository/TreeRepository";
7
- import { Repository } from "../repository/Repository";
8
- import { FindOptionsUtils } from "../find-options/FindOptionsUtils";
9
- import { PlainObjectToNewEntityTransformer } from "../query-builder/transformer/PlainObjectToNewEntityTransformer";
10
- import { PlainObjectToDatabaseEntityTransformer } from "../query-builder/transformer/PlainObjectToDatabaseEntityTransformer";
11
- import { CustomRepositoryCannotInheritRepositoryError, CustomRepositoryNotFoundError, TreeRepositoryNotSupportedError, TypeORMError, } from "../error"; /* */
12
- /* */
13
- /* */
14
- /* */
15
- /* */
16
- import { AbstractRepository } from "../repository/AbstractRepository";
17
- import { EntityPersistExecutor } from "../persistence/EntityPersistExecutor";
18
- import { ObjectUtils } from "../util/ObjectUtils";
19
- import { getMetadataArgsStorage } from "../globals";
20
- import { InstanceChecker } from "../util/InstanceChecker";
21
- /**
22
- * Entity manager supposed to work with any entity, automatically find its repository and call its methods,
23
- * whatever entity type are you passing.
24
- */
25
- export class EntityManager {
26
- constructor(connection, queryRunner) {
27
- this["@instanceof"] = Symbol.for("EntityManager");
28
- /**
29
- * Once created and then reused by repositories.
30
- */
31
- this.repositories = [];
32
- /**
33
- * Once created and then reused by repositories.
34
- */
35
- this.treeRepositories = [];
36
- /**
37
- * Plain to object transformer used in create and merge operations.
38
- */
39
- this.plainObjectToEntityTransformer = new PlainObjectToNewEntityTransformer();
40
- this.connection = connection;
41
- if (queryRunner) {
42
- this.queryRunner = queryRunner;
43
- ObjectUtils.assign(this.queryRunner, { manager: this });
44
- }
45
- }
46
- /**
47
- * Wraps given function execution (and all operations made there) in a transaction.
48
- * All database operations must be executed using provided entity manager.
49
- */
50
- async transaction(isolationOrRunInTransaction, runInTransactionParam) {
51
- const isolation = typeof isolationOrRunInTransaction === "string"
52
- ? isolationOrRunInTransaction
53
- : undefined;
54
- const runInTransaction = typeof isolationOrRunInTransaction === "function"
55
- ? isolationOrRunInTransaction
56
- : runInTransactionParam;
57
- if (!runInTransaction) {
58
- throw new TypeORMError(`Transaction method requires callback in second parameter if isolation level is supplied.`);
59
- }
60
- if (this.queryRunner && this.queryRunner.isReleased)
61
- throw new QueryRunnerProviderAlreadyReleasedError();
62
- const queryRunner = this.queryRunner || this.connection.createQueryRunner();
63
- try {
64
- await queryRunner.startTransaction(isolation);
65
- const result = await runInTransaction(queryRunner.manager);
66
- await queryRunner.commitTransaction();
67
- return result;
68
- }
69
- catch (err) {
70
- try {
71
- await queryRunner.rollbackTransaction();
72
- }
73
- catch (rollbackError) { }
74
- throw err;
75
- }
76
- finally {
77
- if (!this.queryRunner)
78
- await queryRunner.release();
79
- }
80
- }
81
- /**
82
- * Executes raw SQL query and returns raw database results.
83
- */
84
- async query(query, parameters) {
85
- return this.connection.query(query, parameters, this.queryRunner);
86
- }
87
- /**
88
- * Creates a new query builder that can be used to build a SQL query.
89
- */
90
- createQueryBuilder(entityClass, alias, queryRunner) {
91
- if (alias) {
92
- return this.connection.createQueryBuilder(entityClass, alias, queryRunner || this.queryRunner);
93
- }
94
- else {
95
- return this.connection.createQueryBuilder(entityClass ||
96
- queryRunner ||
97
- this.queryRunner);
98
- }
99
- }
100
- /**
101
- * Checks if entity has an id by its Function type or schema name.
102
- */
103
- hasId(targetOrEntity, maybeEntity) {
104
- const target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;
105
- const entity = arguments.length === 2 ? maybeEntity : targetOrEntity;
106
- const metadata = this.connection.getMetadata(target);
107
- return metadata.hasId(entity);
108
- }
109
- /**
110
- * Gets entity mixed id.
111
- */
112
- getId(targetOrEntity, maybeEntity) {
113
- const target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;
114
- const entity = arguments.length === 2 ? maybeEntity : targetOrEntity;
115
- const metadata = this.connection.getMetadata(target);
116
- return metadata.getEntityIdMixedMap(entity);
117
- }
118
- /**
119
- * Creates a new entity instance or instances.
120
- * Can copy properties from the given object into new entities.
121
- */
122
- create(entityClass, plainObjectOrObjects) {
123
- const metadata = this.connection.getMetadata(entityClass);
124
- if (!plainObjectOrObjects)
125
- return metadata.create(this.queryRunner);
126
- if (Array.isArray(plainObjectOrObjects))
127
- return plainObjectOrObjects.map((plainEntityLike) => this.create(entityClass, plainEntityLike));
128
- const mergeIntoEntity = metadata.create(this.queryRunner);
129
- this.plainObjectToEntityTransformer.transform(mergeIntoEntity, plainObjectOrObjects, metadata, true);
130
- return mergeIntoEntity;
131
- }
132
- /**
133
- * Merges two entities into one new entity.
134
- */
135
- merge(entityClass, mergeIntoEntity, ...entityLikes) {
136
- const metadata = this.connection.getMetadata(entityClass);
137
- entityLikes.forEach((object) => this.plainObjectToEntityTransformer.transform(mergeIntoEntity, object, metadata));
138
- return mergeIntoEntity;
139
- }
140
- /**
141
- * Creates a new entity from the given plain javascript object. If entity already exist in the database, then
142
- * it loads it (and everything related to it), replaces all values with the new ones from the given object
143
- * and returns this new entity. This new entity is actually a loaded from the db entity with all properties
144
- * replaced from the new object.
145
- */
146
- async preload(entityClass, entityLike) {
147
- const metadata = this.connection.getMetadata(entityClass);
148
- const plainObjectToDatabaseEntityTransformer = new PlainObjectToDatabaseEntityTransformer(this.connection.manager);
149
- const transformedEntity = await plainObjectToDatabaseEntityTransformer.transform(entityLike, metadata);
150
- if (transformedEntity)
151
- return this.merge(entityClass, transformedEntity, entityLike);
152
- return undefined;
153
- }
154
- /**
155
- * Saves a given entity in the database.
156
- */
157
- save(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
158
- let target = arguments.length > 1 &&
159
- (typeof targetOrEntity === "function" ||
160
- InstanceChecker.isEntitySchema(targetOrEntity) ||
161
- typeof targetOrEntity === "string")
162
- ? targetOrEntity
163
- : undefined;
164
- const entity = target
165
- ? maybeEntityOrOptions
166
- : targetOrEntity;
167
- const options = target
168
- ? maybeOptions
169
- : maybeEntityOrOptions;
170
- if (InstanceChecker.isEntitySchema(target))
171
- target = target.options.name;
172
- if (Array.isArray(entity) && entity.length === 0)
173
- return Promise.resolve(entity);
174
- return new EntityPersistExecutor(this.connection, this.queryRunner, "save", target, entity, options)
175
- .execute()
176
- .then(() => entity);
177
- }
178
- /**
179
- * Removes a given entity from the database.
180
- */
181
- remove(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
182
- const target = arguments.length > 1 &&
183
- (typeof targetOrEntity === "function" ||
184
- InstanceChecker.isEntitySchema(targetOrEntity) ||
185
- typeof targetOrEntity === "string")
186
- ? targetOrEntity
187
- : undefined;
188
- const entity = target
189
- ? maybeEntityOrOptions
190
- : targetOrEntity;
191
- const options = target
192
- ? maybeOptions
193
- : maybeEntityOrOptions;
194
- if (Array.isArray(entity) && entity.length === 0)
195
- return Promise.resolve(entity);
196
- return new EntityPersistExecutor(this.connection, this.queryRunner, "remove", target, entity, options)
197
- .execute()
198
- .then(() => entity);
199
- }
200
- /**
201
- * Records the delete date of one or many given entities.
202
- */
203
- softRemove(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
204
- let target = arguments.length > 1 &&
205
- (typeof targetOrEntity === "function" ||
206
- InstanceChecker.isEntitySchema(targetOrEntity) ||
207
- typeof targetOrEntity === "string")
208
- ? targetOrEntity
209
- : undefined;
210
- const entity = target
211
- ? maybeEntityOrOptions
212
- : targetOrEntity;
213
- const options = target
214
- ? maybeOptions
215
- : maybeEntityOrOptions;
216
- if (InstanceChecker.isEntitySchema(target))
217
- target = target.options.name;
218
- if (Array.isArray(entity) && entity.length === 0)
219
- return Promise.resolve(entity);
220
- return new EntityPersistExecutor(this.connection, this.queryRunner, "soft-remove", target, entity, options)
221
- .execute()
222
- .then(() => entity);
223
- }
224
- /**
225
- * Recovers one or many given entities.
226
- */
227
- recover(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
228
- let target = arguments.length > 1 &&
229
- (typeof targetOrEntity === "function" ||
230
- InstanceChecker.isEntitySchema(targetOrEntity) ||
231
- typeof targetOrEntity === "string")
232
- ? targetOrEntity
233
- : undefined;
234
- const entity = target
235
- ? maybeEntityOrOptions
236
- : targetOrEntity;
237
- const options = target
238
- ? maybeOptions
239
- : maybeEntityOrOptions;
240
- if (InstanceChecker.isEntitySchema(target))
241
- target = target.options.name;
242
- if (Array.isArray(entity) && entity.length === 0)
243
- return Promise.resolve(entity);
244
- return new EntityPersistExecutor(this.connection, this.queryRunner, "recover", target, entity, options)
245
- .execute()
246
- .then(() => entity);
247
- }
248
- /**
249
- * Inserts a given entity into the database.
250
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
251
- * Executes fast and efficient INSERT query.
252
- * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.
253
- * You can execute bulk inserts using this method.
254
- */
255
- async insert(target, entity) {
256
- return this.createQueryBuilder()
257
- .insert()
258
- .into(target)
259
- .values(entity)
260
- .execute();
261
- }
262
- async upsert(target, entityOrEntities, conflictPathsOrOptions) {
263
- const metadata = this.connection.getMetadata(target);
264
- let options;
265
- if (Array.isArray(conflictPathsOrOptions)) {
266
- options = {
267
- conflictPaths: conflictPathsOrOptions,
268
- };
269
- }
270
- else {
271
- options = conflictPathsOrOptions;
272
- }
273
- let entities;
274
- if (!Array.isArray(entityOrEntities)) {
275
- entities = [entityOrEntities];
276
- }
277
- else {
278
- entities = entityOrEntities;
279
- }
280
- const conflictColumns = metadata.mapPropertyPathsToColumns(options.conflictPaths);
281
- const overwriteColumns = metadata.columns.filter((col) => !conflictColumns.includes(col) &&
282
- entities.some((entity) => typeof col.getEntityValue(entity) !== "undefined"));
283
- return this.createQueryBuilder()
284
- .insert()
285
- .into(target)
286
- .values(entities)
287
- .orUpdate([...conflictColumns, ...overwriteColumns].map((col) => col.databaseName), conflictColumns.map((col) => col.databaseName), {
288
- skipUpdateIfNoValuesChanged: options.skipUpdateIfNoValuesChanged,
289
- })
290
- .execute();
291
- }
292
- /**
293
- * Updates entity partially. Entity can be found by a given condition(s).
294
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
295
- * Executes fast and efficient UPDATE query.
296
- * Does not check if entity exist in the database.
297
- * Condition(s) cannot be empty.
298
- */
299
- update(target, criteria, partialEntity) {
300
- if (criteria === undefined ||
301
- criteria === null ||
302
- criteria === "" ||
303
- (Array.isArray(criteria) && criteria.length === 0)) {
304
- return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the update method.`));
305
- }
306
- if (typeof criteria === "string" ||
307
- typeof criteria === "number" ||
308
- criteria instanceof Date ||
309
- Array.isArray(criteria)) {
310
- return this.createQueryBuilder()
311
- .update(target)
312
- .set(partialEntity)
313
- .whereInIds(criteria)
314
- .execute();
315
- }
316
- else {
317
- return this.createQueryBuilder()
318
- .update(target)
319
- .set(partialEntity)
320
- .where(criteria)
321
- .execute();
322
- }
323
- }
324
- /**
325
- * Deletes entities by a given condition(s).
326
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
327
- * Executes fast and efficient DELETE query.
328
- * Does not check if entity exist in the database.
329
- * Condition(s) cannot be empty.
330
- */
331
- delete(targetOrEntity, criteria) {
332
- if (criteria === undefined ||
333
- criteria === null ||
334
- criteria === "" ||
335
- (Array.isArray(criteria) && criteria.length === 0)) {
336
- return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
337
- }
338
- if (typeof criteria === "string" ||
339
- typeof criteria === "number" ||
340
- criteria instanceof Date ||
341
- Array.isArray(criteria)) {
342
- return this.createQueryBuilder()
343
- .delete()
344
- .from(targetOrEntity)
345
- .whereInIds(criteria)
346
- .execute();
347
- }
348
- else {
349
- return this.createQueryBuilder()
350
- .delete()
351
- .from(targetOrEntity)
352
- .where(criteria)
353
- .execute();
354
- }
355
- }
356
- /**
357
- * Records the delete date of entities by a given condition(s).
358
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
359
- * Executes fast and efficient DELETE query.
360
- * Does not check if entity exist in the database.
361
- * Condition(s) cannot be empty.
362
- */
363
- softDelete(targetOrEntity, criteria) {
364
- if (criteria === undefined ||
365
- criteria === null ||
366
- criteria === "" ||
367
- (Array.isArray(criteria) && criteria.length === 0)) {
368
- return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
369
- }
370
- if (typeof criteria === "string" ||
371
- typeof criteria === "number" ||
372
- criteria instanceof Date ||
373
- Array.isArray(criteria)) {
374
- return this.createQueryBuilder()
375
- .softDelete()
376
- .from(targetOrEntity)
377
- .whereInIds(criteria)
378
- .execute();
379
- }
380
- else {
381
- return this.createQueryBuilder()
382
- .softDelete()
383
- .from(targetOrEntity)
384
- .where(criteria)
385
- .execute();
386
- }
387
- }
388
- /**
389
- * Restores entities by a given condition(s).
390
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
391
- * Executes fast and efficient DELETE query.
392
- * Does not check if entity exist in the database.
393
- * Condition(s) cannot be empty.
394
- */
395
- restore(targetOrEntity, criteria) {
396
- if (criteria === undefined ||
397
- criteria === null ||
398
- criteria === "" ||
399
- (Array.isArray(criteria) && criteria.length === 0)) {
400
- return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
401
- }
402
- if (typeof criteria === "string" ||
403
- typeof criteria === "number" ||
404
- criteria instanceof Date ||
405
- Array.isArray(criteria)) {
406
- return this.createQueryBuilder()
407
- .restore()
408
- .from(targetOrEntity)
409
- .whereInIds(criteria)
410
- .execute();
411
- }
412
- else {
413
- return this.createQueryBuilder()
414
- .restore()
415
- .from(targetOrEntity)
416
- .where(criteria)
417
- .execute();
418
- }
419
- }
420
- /**
421
- * Counts entities that match given options.
422
- * Useful for pagination.
423
- */
424
- count(entityClass, options) {
425
- const metadata = this.connection.getMetadata(entityClass);
426
- return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
427
- metadata.name)
428
- .setFindOptions(options || {})
429
- .getCount();
430
- }
431
- /**
432
- * Counts entities that match given conditions.
433
- * Useful for pagination.
434
- */
435
- countBy(entityClass, where) {
436
- const metadata = this.connection.getMetadata(entityClass);
437
- return this.createQueryBuilder(entityClass, metadata.name)
438
- .setFindOptions({ where })
439
- .getCount();
440
- }
441
- /**
442
- * Finds entities that match given find options.
443
- */
444
- async find(entityClass, options) {
445
- const metadata = this.connection.getMetadata(entityClass);
446
- return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
447
- metadata.name)
448
- .setFindOptions(options || {})
449
- .getMany();
450
- }
451
- /**
452
- * Finds entities that match given find options.
453
- */
454
- async findBy(entityClass, where) {
455
- const metadata = this.connection.getMetadata(entityClass);
456
- return this.createQueryBuilder(entityClass, metadata.name)
457
- .setFindOptions({ where: where })
458
- .getMany();
459
- }
460
- /**
461
- * Finds entities that match given find options.
462
- * Also counts all entities that match given conditions,
463
- * but ignores pagination settings (from and take options).
464
- */
465
- findAndCount(entityClass, options) {
466
- const metadata = this.connection.getMetadata(entityClass);
467
- return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
468
- metadata.name)
469
- .setFindOptions(options || {})
470
- .getManyAndCount();
471
- }
472
- /**
473
- * Finds entities that match given WHERE conditions.
474
- * Also counts all entities that match given conditions,
475
- * but ignores pagination settings (from and take options).
476
- */
477
- findAndCountBy(entityClass, where) {
478
- const metadata = this.connection.getMetadata(entityClass);
479
- return this.createQueryBuilder(entityClass, metadata.name)
480
- .setFindOptions({ where })
481
- .getManyAndCount();
482
- }
483
- /**
484
- * Finds entities with ids.
485
- * Optionally find options or conditions can be applied.
486
- *
487
- * @deprecated use `findBy` method instead in conjunction with `In` operator, for example:
488
- *
489
- * .findBy({
490
- * id: In([1, 2, 3])
491
- * })
492
- */
493
- async findByIds(entityClass, ids) {
494
- if (!ids.length)
495
- return Promise.resolve([]);
496
- const metadata = this.connection.getMetadata(entityClass);
497
- return this.createQueryBuilder(entityClass, metadata.name)
498
- .andWhereInIds(ids)
499
- .getMany();
500
- }
501
- /**
502
- * Finds first entity by a given find options.
503
- * If entity was not found in the database - returns null.
504
- */
505
- async findOne(entityClass, options) {
506
- const metadata = this.connection.getMetadata(entityClass);
507
- let alias = metadata.name;
508
- if (options && options.join) {
509
- alias = options.join.alias;
510
- }
511
- if (!options.where) {
512
- throw new Error(`You must provide selection conditions in order to find a single row.`);
513
- }
514
- return this.createQueryBuilder(entityClass, alias)
515
- .setFindOptions({
516
- ...options,
517
- take: 1,
518
- })
519
- .getOne();
520
- }
521
- /**
522
- * Finds first entity that matches given where condition.
523
- * If entity was not found in the database - returns null.
524
- */
525
- async findOneBy(entityClass, where) {
526
- const metadata = this.connection.getMetadata(entityClass);
527
- return this.createQueryBuilder(entityClass, metadata.name)
528
- .setFindOptions({
529
- where,
530
- take: 1,
531
- })
532
- .getOne();
533
- }
534
- /**
535
- * Finds first entity that matches given id.
536
- * If entity was not found in the database - returns null.
537
- *
538
- * @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:
539
- *
540
- * .findOneBy({
541
- * id: 1 // where "id" is your primary column name
542
- * })
543
- */
544
- async findOneById(entityClass, id) {
545
- const metadata = this.connection.getMetadata(entityClass);
546
- return this.createQueryBuilder(entityClass, metadata.name)
547
- .setFindOptions({
548
- take: 1,
549
- })
550
- .whereInIds(metadata.ensureEntityIdMap(id))
551
- .getOne();
552
- }
553
- /**
554
- * Finds first entity by a given find options.
555
- * If entity was not found in the database - rejects with error.
556
- */
557
- async findOneOrFail(entityClass, options) {
558
- return this.findOne(entityClass, options).then((value) => {
559
- if (value === null) {
560
- return Promise.reject(new EntityNotFoundError(entityClass, options));
561
- }
562
- return Promise.resolve(value);
563
- });
564
- }
565
- /**
566
- * Finds first entity that matches given where condition.
567
- * If entity was not found in the database - rejects with error.
568
- */
569
- async findOneByOrFail(entityClass, where) {
570
- return this.findOneBy(entityClass, where).then((value) => {
571
- if (value === null) {
572
- return Promise.reject(new EntityNotFoundError(entityClass, where));
573
- }
574
- return Promise.resolve(value);
575
- });
576
- }
577
- /**
578
- * Clears all the data from the given table (truncates/drops it).
579
- *
580
- * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.
581
- * @see https://stackoverflow.com/a/5972738/925151
582
- */
583
- async clear(entityClass) {
584
- const metadata = this.connection.getMetadata(entityClass);
585
- const queryRunner = this.queryRunner || this.connection.createQueryRunner();
586
- try {
587
- return await queryRunner.clearTable(metadata.tablePath); // await is needed here because we are using finally
588
- }
589
- finally {
590
- if (!this.queryRunner)
591
- await queryRunner.release();
592
- }
593
- }
594
- /**
595
- * Increments some column by provided value of the entities matched given conditions.
596
- */
597
- async increment(entityClass, conditions, propertyPath, value) {
598
- const metadata = this.connection.getMetadata(entityClass);
599
- const column = metadata.findColumnWithPropertyPath(propertyPath);
600
- if (!column)
601
- throw new TypeORMError(`Column ${propertyPath} was not found in ${metadata.targetName} entity.`);
602
- if (isNaN(Number(value)))
603
- throw new TypeORMError(`Value "${value}" is not a number.`);
604
- const values = propertyPath
605
- .split(".")
606
- .reduceRight((value, key) => ({ [key]: value }), () => this.connection.driver.escape(column.databaseName) +
607
- " + " +
608
- value);
609
- return this.createQueryBuilder(entityClass, "entity")
610
- .update(entityClass)
611
- .set(values)
612
- .where(conditions)
613
- .execute();
614
- }
615
- /**
616
- * Decrements some column by provided value of the entities matched given conditions.
617
- */
618
- async decrement(entityClass, conditions, propertyPath, value) {
619
- const metadata = this.connection.getMetadata(entityClass);
620
- const column = metadata.findColumnWithPropertyPath(propertyPath);
621
- if (!column)
622
- throw new TypeORMError(`Column ${propertyPath} was not found in ${metadata.targetName} entity.`);
623
- if (isNaN(Number(value)))
624
- throw new TypeORMError(`Value "${value}" is not a number.`);
625
- const values = propertyPath
626
- .split(".")
627
- .reduceRight((value, key) => ({ [key]: value }), () => this.connection.driver.escape(column.databaseName) +
628
- " - " +
629
- value);
630
- return this.createQueryBuilder(entityClass, "entity")
631
- .update(entityClass)
632
- .set(values)
633
- .where(conditions)
634
- .execute();
635
- }
636
- /**
637
- * Gets repository for the given entity class or name.
638
- * If single database connection mode is used, then repository is obtained from the
639
- * repository aggregator, where each repository is individually created for this entity manager.
640
- * When single database connection is not used, repository is being obtained from the connection.
641
- */
642
- getRepository(target) {
643
- const repository = this.repositories.find((repository) => repository.target === target);
644
- if (repository)
645
- return repository;
646
- if (this.connection.driver.options.type === "mongodb") {
647
- /* */
648
- /* */
649
- /* */
650
- /* */
651
- /* */
652
- /* */
653
- /* */
654
- /* */
655
- return (void 0);
656
- }
657
- else {
658
- const newRepository = new Repository(target, this, this.queryRunner);
659
- this.repositories.push(newRepository);
660
- return newRepository;
661
- }
662
- }
663
- /**
664
- * Gets tree repository for the given entity class or name.
665
- * If single database connection mode is used, then repository is obtained from the
666
- * repository aggregator, where each repository is individually created for this entity manager.
667
- * When single database connection is not used, repository is being obtained from the connection.
668
- */
669
- getTreeRepository(target) {
670
- if (this.connection.driver.treeSupport === false)
671
- throw new TreeRepositoryNotSupportedError(this.connection.driver);
672
- const repository = this.treeRepositories.find((repository) => repository.target === target);
673
- if (repository)
674
- return repository;
675
- const newRepository = new TreeRepository(target, this, this.queryRunner);
676
- this.treeRepositories.push(newRepository);
677
- return newRepository;
678
- }
679
- /* */
680
- /* */
681
- /* */
682
- /* */
683
- /* */
684
- /* */
685
- /* */
686
- /* */
687
- /* */
688
- /**
689
- * Creates a new repository instance out of a given Repository and
690
- * sets current EntityManager instance to it. Used to work with custom repositories
691
- * in transactions.
692
- */
693
- withRepository(repository) {
694
- const repositoryConstructor = repository.constructor;
695
- const { target, manager, queryRunner, ...otherRepositoryProperties } = repository;
696
- return Object.assign(new repositoryConstructor(repository.target, this), {
697
- ...otherRepositoryProperties,
698
- });
699
- }
700
- /**
701
- * Gets custom entity repository marked with @EntityRepository decorator.
702
- *
703
- * @deprecated use Repository.extend to create custom repositories
704
- */
705
- getCustomRepository(customRepository) {
706
- const entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find((repository) => {
707
- return (repository.target ===
708
- (typeof customRepository === "function"
709
- ? customRepository
710
- : customRepository.constructor));
711
- });
712
- if (!entityRepositoryMetadataArgs)
713
- throw new CustomRepositoryNotFoundError(customRepository);
714
- const entityMetadata = entityRepositoryMetadataArgs.entity
715
- ? this.connection.getMetadata(entityRepositoryMetadataArgs.entity)
716
- : undefined;
717
- const entityRepositoryInstance = new entityRepositoryMetadataArgs.target(this, entityMetadata);
718
- if (entityRepositoryInstance instanceof AbstractRepository) {
719
- if (!entityRepositoryInstance["manager"])
720
- entityRepositoryInstance["manager"] = this;
721
- }
722
- else {
723
- if (!entityMetadata)
724
- throw new CustomRepositoryCannotInheritRepositoryError(customRepository);
725
- entityRepositoryInstance["manager"] = this;
726
- entityRepositoryInstance["metadata"] = entityMetadata;
727
- }
728
- return entityRepositoryInstance;
729
- }
730
- /**
731
- * Releases all resources used by entity manager.
732
- * This is used when entity manager is created with a single query runner,
733
- * and this single query runner needs to be released after job with entity manager is done.
734
- */
735
- async release() {
736
- if (!this.queryRunner)
737
- throw new NoNeedToReleaseEntityManagerError();
738
- return this.queryRunner.release();
739
- }
740
- }
741
- ;
742
- ({}); // @--end-of-file-for-module=taon-typeorm lib/typeorm/entity-manager/EntityManager.ts
743
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uLXR5cGVvcm0vcHJvamVjdHMvdGFvbi10eXBlb3JtL3NyYy9saWIvdHlwZW9ybS9lbnRpdHktbWFuYWdlci9FbnRpdHlNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2xFLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLGtEQUFrRCxDQUFBO0FBSzFHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQzlGLEtBQUs7QUFDTCxLQUFLO0FBRUwsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQTtBQUM1SCxPQUFPLEVBQU0sNENBQTRDLEVBQU0sNkJBQTZCLEVBQU0sK0JBQStCLEVBQU0sWUFBWSxHQUFHLE1BQU0sVUFBVSxDQUFBLENBQUEsS0FBSztBQUMzSyxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBRUwsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFJckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFPNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVu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SUFBSSw0Q0FBNEMsQ0FDbEQsZ0JBQWdCLENBQ25CLENBQ0o7WUFBQyx3QkFBZ0MsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQ25EO1lBQUMsd0JBQWdDLENBQUMsVUFBVSxDQUFDLEdBQUcsY0FBYyxDQUFBO1FBQ25FLENBQUM7UUFFRCxPQUFPLHdCQUF3QixDQUFBO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQU87UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksaUNBQWlDLEVBQUUsQ0FBQTtRQUVwRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDckMsQ0FBQztDQUNKO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxxRkFBcUYiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gXCIuLi9kYXRhLXNvdXJjZS9EYXRhU291cmNlXCJcbmltcG9ydCB7IEZpbmRNYW55T3B0aW9ucyB9IGZyb20gXCIuLi9maW5kLW9wdGlvbnMvRmluZE1hbnlPcHRpb25zXCJcbmltcG9ydCB7IEVudGl0eVRhcmdldCB9IGZyb20gXCIuLi9jb21tb24vRW50aXR5VGFyZ2V0XCJcbmltcG9ydCB7IE9iamVjdFR5cGUgfSBmcm9tIFwiLi4vY29tbW9uL09iamVjdFR5cGVcIlxuaW1wb3J0IHsgRW50aXR5Tm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi9lcnJvci9FbnRpdHlOb3RGb3VuZEVycm9yXCJcbmltcG9ydCB7IFF1ZXJ5UnVubmVyUHJvdmlkZXJBbHJlYWR5UmVsZWFzZWRFcnJvciB9IGZyb20gXCIuLi9lcnJvci9RdWVyeVJ1bm5lclByb3ZpZGVyQWxyZWFkeVJlbGVhc2VkRXJyb3JcIlxuaW1wb3J0IHsgRmluZE9uZU9wdGlvbnMgfSBmcm9tIFwiLi4vZmluZC1vcHRpb25zL0ZpbmRPbmVPcHRpb25zXCJcbmltcG9ydCB7IERlZXBQYXJ0aWFsIH0gZnJvbSBcIi4uL2NvbW1vbi9EZWVwUGFydGlhbFwiXG5pbXBvcnQgeyBSZW1vdmVPcHRpb25zIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVtb3ZlT3B0aW9uc1wiXG5pbXBvcnQgeyBTYXZlT3B0aW9ucyB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1NhdmVPcHRpb25zXCJcbmltcG9ydCB7IE5vTmVlZFRvUmVsZWFzZUVudGl0eU1hbmFnZXJFcnJvciB9IGZyb20gXCIuLi9lcnJvci9Ob05lZWRUb1JlbGVhc2VFbnRpdHlNYW5hZ2VyRXJyb3JcIlxuLyogKi9cbi8qICovXG4gIFxuaW1wb3J0IHsgVHJlZVJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9UcmVlUmVwb3NpdG9yeVwiXG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiXG5pbXBvcnQgeyBGaW5kT3B0aW9uc1V0aWxzIH0gZnJvbSBcIi4uL2ZpbmQtb3B0aW9ucy9GaW5kT3B0aW9uc1V0aWxzXCJcbmltcG9ydCB7IFBsYWluT2JqZWN0VG9OZXdFbnRpdHlUcmFuc2Zvcm1lciB9IGZyb20gXCIuLi9xdWVyeS1idWlsZGVyL3RyYW5zZm9ybWVyL1BsYWluT2JqZWN0VG9OZXdFbnRpdHlUcmFuc2Zvcm1lclwiXG5pbXBvcnQgeyBQbGFpbk9iamVjdFRvRGF0YWJhc2VFbnRpdHlUcmFuc2Zvcm1lciB9IGZyb20gXCIuLi9xdWVyeS1idWlsZGVyL3RyYW5zZm9ybWVyL1BsYWluT2JqZWN0VG9EYXRhYmFzZUVudGl0eVRyYW5zZm9ybWVyXCJcbmltcG9ydCB7ICAgICBDdXN0b21SZXBvc2l0b3J5Q2Fubm90SW5oZXJpdFJlcG9zaXRvcnlFcnJvciwgICAgIEN1c3RvbVJlcG9zaXRvcnlOb3RGb3VuZEVycm9yLCAgICAgVHJlZVJlcG9zaXRvcnlOb3RTdXBwb3J0ZWRFcnJvciwgICAgIFR5cGVPUk1FcnJvciwgfSBmcm9tIFwiLi4vZXJyb3JcIi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBBYnN0cmFjdFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9BYnN0cmFjdFJlcG9zaXRvcnlcIlxuaW1wb3J0IHsgUXVlcnlSdW5uZXIgfSBmcm9tIFwiLi4vcXVlcnktcnVubmVyL1F1ZXJ5UnVubmVyXCJcbmltcG9ydCB7IFNlbGVjdFF1ZXJ5QnVpbGRlciB9IGZyb20gXCIuLi9xdWVyeS1idWlsZGVyL1NlbGVjdFF1ZXJ5QnVpbGRlclwiXG5pbXBvcnQgeyBRdWVyeURlZXBQYXJ0aWFsRW50aXR5IH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvUXVlcnlQYXJ0aWFsRW50aXR5XCJcbmltcG9ydCB7IEVudGl0eVBlcnNpc3RFeGVjdXRvciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9FbnRpdHlQZXJzaXN0RXhlY3V0b3JcIlxuaW1wb3J0IHsgT2JqZWN0SUQgfSBmcm9tIFwiLi4vZHJpdmVyL21vbmdvZGIvdHlwaW5nc1wiXG5pbXBvcnQgeyBJbnNlcnRSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnktYnVpbGRlci9yZXN1bHQvSW5zZXJ0UmVzdWx0XCJcbmltcG9ydCB7IFVwZGF0ZVJlc3VsdCB9IGZyb20gXCIuLi9xdWVyeS1idWlsZGVyL3Jlc3VsdC9VcGRhdGVSZXN1bHRcIlxuaW1wb3J0IHsgRGVsZXRlUmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvcmVzdWx0L0RlbGV0ZVJlc3VsdFwiXG5pbXBvcnQgeyBGaW5kT3B0aW9uc1doZXJlIH0gZnJvbSBcIi4uL2ZpbmQtb3B0aW9ucy9GaW5kT3B0aW9uc1doZXJlXCJcbmltcG9ydCB7IElzb2xhdGlvbkxldmVsIH0gZnJvbSBcIi4uL2RyaXZlci90eXBlcy9Jc29sYXRpb25MZXZlbFwiXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gXCIuLi91dGlsL09iamVjdFV0aWxzXCJcbmltcG9ydCB7IGdldE1ldGFkYXRhQXJnc1N0b3JhZ2UgfSBmcm9tIFwiLi4vZ2xvYmFsc1wiXG5pbXBvcnQgeyBVcHNlcnRPcHRpb25zIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvVXBzZXJ0T3B0aW9uc1wiXG5pbXBvcnQgeyBJbnN0YW5jZUNoZWNrZXIgfSBmcm9tIFwiLi4vdXRpbC9JbnN0YW5jZUNoZWNrZXJcIlxuaW1wb3J0IHsgT2JqZWN0TGl0ZXJhbCB9IGZyb20gXCIuLi9jb21tb24vT2JqZWN0TGl0ZXJhbFwiXG5cbi8qKlxuICogRW50aXR5IG1hbmFnZXIgc3VwcG9zZWQgdG8gd29yayB3aXRoIGFueSBlbnRpdHksIGF1dG9tYXRpY2FsbHkgZmluZCBpdHMgcmVwb3NpdG9yeSBhbmQgY2FsbCBpdHMgbWV0aG9kcyxcbiAqIHdoYXRldmVyIGVudGl0eSB0eXBlIGFyZSB5b3UgcGFzc2luZy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudGl0eU1hbmFnZXIge1xuICAgIHJlYWRvbmx5IFwiQGluc3RhbmNlb2ZcIiA9IFN5bWJvbC5mb3IoXCJFbnRpdHlNYW5hZ2VyXCIpXG5cblxuXG5cblxuICAgIC8qKlxuICAgICAqIENvbm5lY3Rpb24gdXNlZCBieSB0aGlzIGVudGl0eSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvbm5lY3Rpb246IERhdGFTb3VyY2VcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBxdWVyeSBydW5uZXIgdG8gYmUgdXNlZCBmb3Igb3BlcmF0aW9ucyBpbiB0aGlzIGVudGl0eSBtYW5hZ2VyLlxuICAgICAqIFVzZWQgb25seSBpbiBub24tZ2xvYmFsIGVudGl0eSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHF1ZXJ5UnVubmVyPzogUXVlcnlSdW5uZXJcblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogT25jZSBjcmVhdGVkIGFuZCB0aGVuIHJldXNlZCBieSByZXBvc2l0b3JpZXMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlcG9zaXRvcmllczogUmVwb3NpdG9yeTxhbnk+W10gPSBbXVxuXG4gICAgLyoqXG4gICAgICogT25jZSBjcmVhdGVkIGFuZCB0aGVuIHJldXNlZCBieSByZXBvc2l0b3JpZXMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHRyZWVSZXBvc2l0b3JpZXM6IFRyZWVSZXBvc2l0b3J5PGFueT5bXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBQbGFpbiB0byBvYmplY3QgdHJhbnNmb3JtZXIgdXNlZCBpbiBjcmVhdGUgYW5kIG1lcmdlIG9wZXJhdGlvbnMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHBsYWluT2JqZWN0VG9FbnRpdHlUcmFuc2Zvcm1lciA9XG4gICAgICAgIG5ldyBQbGFpbk9iamVjdFRvTmV3RW50aXR5VHJhbnNmb3JtZXIoKVxuXG5cblxuXG5cbiAgICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uOiBEYXRhU291cmNlLCBxdWVyeVJ1bm5lcj86IFF1ZXJ5UnVubmVyKSB7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25cbiAgICAgICAgaWYgKHF1ZXJ5UnVubmVyKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyID0gcXVlcnlSdW5uZXJcblxuICAgICAgICAgICAgT2JqZWN0VXRpbHMuYXNzaWduKHRoaXMucXVlcnlSdW5uZXIsIHsgbWFuYWdlcjogdGhpcyB9KVxuICAgICAgICB9XG4gICAgfVxuXG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBXcmFwcyBnaXZlbiBmdW5jdGlvbiBleGVjdXRpb24gKGFuZCBhbGwgb3BlcmF0aW9ucyBtYWRlIHRoZXJlKSBpbiBhIHRyYW5zYWN0aW9uLlxuICAgICAqIEFsbCBkYXRhYmFzZSBvcGVyYXRpb25zIG11c3QgYmUgZXhlY3V0ZWQgdXNpbmcgcHJvdmlkZWQgZW50aXR5IG1hbmFnZXIuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNhY3Rpb248VD4oXG4gICAgICAgIHJ1bkluVHJhbnNhY3Rpb246IChlbnRpdHlNYW5hZ2VyOiBFbnRpdHlNYW5hZ2VyKSA9PiBQcm9taXNlPFQ+LFxuICAgICk6IFByb21pc2U8VD5cblxuICAgIC8qKlxuICAgICAqIFdyYXBzIGdpdmVuIGZ1bmN0aW9uIGV4ZWN1dGlvbiAoYW5kIGFsbCBvcGVyYXRpb25zIG1hZGUgdGhlcmUpIGluIGEgdHJhbnNhY3Rpb24uXG4gICAgICogQWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgbXVzdCBiZSBleGVjdXRlZCB1c2luZyBwcm92aWRlZCBlbnRpdHkgbWFuYWdlci5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2FjdGlvbjxUPihcbiAgICAgICAgaXNvbGF0aW9uTGV2ZWw6IElzb2xhdGlvbkxldmVsLFxuICAgICAgICBydW5JblRyYW5zYWN0aW9uOiAoZW50aXR5TWFuYWdlcjogRW50aXR5TWFuYWdlcikgPT4gUHJvbWlzZTxUPixcbiAgICApOiBQcm9taXNlPFQ+XG5cbiAgICAvKipcbiAgICAgKiBXcmFwcyBnaXZlbiBmdW5jdGlvbiBleGVjdXRpb24gKGFuZCBhbGwgb3BlcmF0aW9ucyBtYWRlIHRoZXJlKSBpbiBhIHRyYW5zYWN0aW9uLlxuICAgICAqIEFsbCBkYXRhYmFzZSBvcGVyYXRpb25zIG11c3QgYmUgZXhlY3V0ZWQgdXNpbmcgcHJvdmlkZWQgZW50aXR5IG1hbmFnZXIuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNhY3Rpb248VD4oXG4gICAgICAgIGlzb2xhdGlvbk9yUnVuSW5UcmFuc2FjdGlvbjpcbiAgICAgICAgICAgIHwgSXNvbGF0aW9uTGV2ZWxcbiAgICAgICAgICAgIHwgKChlbnRpdHlNYW5hZ2VyOiBFbnRpdHlNYW5hZ2VyKSA9PiBQcm9taXNlPFQ+KSxcbiAgICAgICAgcnVuSW5UcmFuc2FjdGlvblBhcmFtPzogKGVudGl0eU1hbmFnZXI6IEVudGl0eU1hbmFnZXIpID0+IFByb21pc2U8VD4sXG4gICAgKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IGlzb2xhdGlvbiA9XG4gICAgICAgICAgICB0eXBlb2YgaXNvbGF0aW9uT3JSdW5JblRyYW5zYWN0aW9uID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgPyBpc29sYXRpb25PclJ1bkluVHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICBjb25zdCBydW5JblRyYW5zYWN0aW9uID1cbiAgICAgICAgICAgIHR5cGVvZiBpc29sYXRpb25PclJ1bkluVHJhbnNhY3Rpb24gPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgID8gaXNvbGF0aW9uT3JSdW5JblRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgICAgOiBydW5JblRyYW5zYWN0aW9uUGFyYW1cblxuICAgICAgICBpZiAoIXJ1bkluVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRyYW5zYWN0aW9uIG1ldGhvZCByZXF1aXJlcyBjYWxsYmFjayBpbiBzZWNvbmQgcGFyYW1ldGVyIGlmIGlzb2xhdGlvbiBsZXZlbCBpcyBzdXBwbGllZC5gLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucXVlcnlSdW5uZXIgJiYgdGhpcy5xdWVyeVJ1bm5lci5pc1JlbGVhc2VkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5UnVubmVyUHJvdmlkZXJBbHJlYWR5UmVsZWFzZWRFcnJvcigpXG5cblxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UnVubmVyID1cbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIgfHwgdGhpcy5jb25uZWN0aW9uLmNyZWF0ZVF1ZXJ5UnVubmVyKClcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuc3RhcnRUcmFuc2FjdGlvbihpc29sYXRpb24pXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5JblRyYW5zYWN0aW9uKHF1ZXJ5UnVubmVyLm1hbmFnZXIpXG4gICAgICAgICAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb21taXRUcmFuc2FjdGlvbigpXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdHJ5IHtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKVxuICAgICAgICAgICAgfSBjYXRjaCAocm9sbGJhY2tFcnJvcikge31cbiAgICAgICAgICAgIHRocm93IGVyclxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnF1ZXJ5UnVubmVyKVxuXG4gICAgICAgICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyByYXcgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIHJhdyBkYXRhYmFzZSByZXN1bHRzLlxuICAgICAqL1xuICAgIGFzeW5jIHF1ZXJ5KHF1ZXJ5OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnlbXSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucXVlcnkocXVlcnksIHBhcmFtZXRlcnMsIHRoaXMucXVlcnlSdW5uZXIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBxdWVyeSBidWlsZGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBTUUwgcXVlcnkuXG4gICAgICovXG4gICAgY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGFsaWFzOiBzdHJpbmcsXG4gICAgICAgIHF1ZXJ5UnVubmVyPzogUXVlcnlSdW5uZXIsXG4gICAgKTogU2VsZWN0UXVlcnlCdWlsZGVyPEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcXVlcnkgYnVpbGRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgU1FMIHF1ZXJ5LlxuICAgICAqL1xuICAgIGNyZWF0ZVF1ZXJ5QnVpbGRlcihxdWVyeVJ1bm5lcj86IFF1ZXJ5UnVubmVyKTogU2VsZWN0UXVlcnlCdWlsZGVyPGFueT5cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcXVlcnkgYnVpbGRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgU1FMIHF1ZXJ5LlxuICAgICAqL1xuICAgIGNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M/OiBFbnRpdHlUYXJnZXQ8RW50aXR5PiB8IFF1ZXJ5UnVubmVyLFxuICAgICAgICBhbGlhcz86IHN0cmluZyxcbiAgICAgICAgcXVlcnlSdW5uZXI/OiBRdWVyeVJ1bm5lcixcbiAgICApOiBTZWxlY3RRdWVyeUJ1aWxkZXI8RW50aXR5PiB7XG4gICAgICAgIGlmIChhbGlhcykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5jcmVhdGVRdWVyeUJ1aWxkZXIoXG4gICAgICAgICAgICAgICAgZW50aXR5Q2xhc3MgYXMgRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgICAgICAgICAgYWxpYXMsXG4gICAgICAgICAgICAgICAgcXVlcnlSdW5uZXIgfHwgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uY3JlYXRlUXVlcnlCdWlsZGVyKFxuICAgICAgICAgICAgICAgIChlbnRpdHlDbGFzcyBhcyBRdWVyeVJ1bm5lciB8IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlSdW5uZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBlbnRpdHkgaGFzIGFuIGlkLlxuICAgICAqL1xuICAgIGhhc0lkKGVudGl0eTogYW55KTogYm9vbGVhblxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGVudGl0eSBvZiBnaXZlbiBzY2hlbWEgbmFtZSBoYXMgYW4gaWQuXG4gICAgICovXG4gICAgaGFzSWQodGFyZ2V0OiBGdW5jdGlvbiB8IHN0cmluZywgZW50aXR5OiBhbnkpOiBib29sZWFuXG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgZW50aXR5IGhhcyBhbiBpZCBieSBpdHMgRnVuY3Rpb24gdHlwZSBvciBzY2hlbWEgbmFtZS5cbiAgICAgKi9cbiAgICBoYXNJZCh0YXJnZXRPckVudGl0eTogYW55IHwgRnVuY3Rpb24gfCBzdHJpbmcsIG1heWJlRW50aXR5PzogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgICAgICBhcmd1bWVudHMubGVuZ3RoID09PSAyID8gdGFyZ2V0T3JFbnRpdHkgOiB0YXJnZXRPckVudGl0eS5jb25zdHJ1Y3RvclxuICAgICAgICBjb25zdCBlbnRpdHkgPSBhcmd1bWVudHMubGVuZ3RoID09PSAyID8gbWF5YmVFbnRpdHkgOiB0YXJnZXRPckVudGl0eVxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YSh0YXJnZXQpXG4gICAgICAgIHJldHVybiBtZXRhZGF0YS5oYXNJZChlbnRpdHkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBlbnRpdHkgbWl4ZWQgaWQuXG4gICAgICovXG4gICAgZ2V0SWQoZW50aXR5OiBhbnkpOiBhbnlcblxuICAgIC8qKlxuICAgICAqIEdldHMgZW50aXR5IG1peGVkIGlkLlxuICAgICAqL1xuICAgIGdldElkKHRhcmdldDogRW50aXR5VGFyZ2V0PGFueT4sIGVudGl0eTogYW55KTogYW55XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGVudGl0eSBtaXhlZCBpZC5cbiAgICAgKi9cbiAgICBnZXRJZCh0YXJnZXRPckVudGl0eTogYW55IHwgRW50aXR5VGFyZ2V0PGFueT4sIG1heWJlRW50aXR5PzogYW55KTogYW55IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyB0YXJnZXRPckVudGl0eSA6IHRhcmdldE9yRW50aXR5LmNvbnN0cnVjdG9yXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyBtYXliZUVudGl0eSA6IHRhcmdldE9yRW50aXR5XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKHRhcmdldClcbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhLmdldEVudGl0eUlkTWl4ZWRNYXAoZW50aXR5KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgZW50aXR5IGluc3RhbmNlIGFuZCBjb3BpZXMgYWxsIGVudGl0eSBwcm9wZXJ0aWVzIGZyb20gdGhpcyBvYmplY3QgaW50byBhIG5ldyBlbnRpdHkuXG4gICAgICogTm90ZSB0aGF0IGl0IGNvcGllcyBvbmx5IHByb3BlcnRpZXMgdGhhdCBwcmVzZW50IGluIGVudGl0eSBzY2hlbWEuXG4gICAgICovXG4gICAgY3JlYXRlPEVudGl0eT4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgcGxhaW5PYmplY3Q/OiBEZWVwUGFydGlhbDxFbnRpdHk+LFxuICAgICk6IEVudGl0eVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBlbnRpdGllcyBhbmQgY29waWVzIGFsbCBlbnRpdHkgcHJvcGVydGllcyBmcm9tIGdpdmVuIG9iamVjdHMgaW50byB0aGVpciBuZXcgZW50aXRpZXMuXG4gICAgICogTm90ZSB0aGF0IGl0IGNvcGllcyBvbmx5IHByb3BlcnRpZXMgdGhhdCBwcmVzZW50IGluIGVudGl0eSBzY2hlbWEuXG4gICAgICovXG4gICAgY3JlYXRlPEVudGl0eT4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgcGxhaW5PYmplY3RzPzogRGVlcFBhcnRpYWw8RW50aXR5PltdLFxuICAgICk6IEVudGl0eVtdXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0eSBpbnN0YW5jZSBvciBpbnN0YW5jZXMuXG4gICAgICogQ2FuIGNvcHkgcHJvcGVydGllcyBmcm9tIHRoZSBnaXZlbiBvYmplY3QgaW50byBuZXcgZW50aXRpZXMuXG4gICAgICovXG4gICAgY3JlYXRlPEVudGl0eT4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgcGxhaW5PYmplY3RPck9iamVjdHM/OiBEZWVwUGFydGlhbDxFbnRpdHk+IHwgRGVlcFBhcnRpYWw8RW50aXR5PltdLFxuICAgICk6IEVudGl0eSB8IEVudGl0eVtdIHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG5cbiAgICAgICAgaWYgKCFwbGFpbk9iamVjdE9yT2JqZWN0cykgcmV0dXJuIG1ldGFkYXRhLmNyZWF0ZSh0aGlzLnF1ZXJ5UnVubmVyKVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBsYWluT2JqZWN0T3JPYmplY3RzKSlcbiAgICAgICAgICAgIHJldHVybiAocGxhaW5PYmplY3RPck9iamVjdHMgYXMgRGVlcFBhcnRpYWw8RW50aXR5PltdKS5tYXAoXG4gICAgICAgICAgICAgICAgKHBsYWluRW50aXR5TGlrZSkgPT4gdGhpcy5jcmVhdGUoZW50aXR5Q2xhc3MsIHBsYWluRW50aXR5TGlrZSksXG4gICAgICAgICAgICApXG5cbiAgICAgICAgY29uc3QgbWVyZ2VJbnRvRW50aXR5ID0gbWV0YWRhdGEuY3JlYXRlKHRoaXMucXVlcnlSdW5uZXIpXG4gICAgICAgIHRoaXMucGxhaW5PYmplY3RUb0VudGl0eVRyYW5zZm9ybWVyLnRyYW5zZm9ybShcbiAgICAgICAgICAgIG1lcmdlSW50b0VudGl0eSxcbiAgICAgICAgICAgIHBsYWluT2JqZWN0T3JPYmplY3RzLFxuICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICApXG4gICAgICAgIHJldHVybiBtZXJnZUludG9FbnRpdHlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgdHdvIGVudGl0aWVzIGludG8gb25lIG5ldyBlbnRpdHkuXG4gICAgICovXG4gICAgbWVyZ2U8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgbWVyZ2VJbnRvRW50aXR5OiBFbnRpdHksXG4gICAgICAgIC4uLmVudGl0eUxpa2VzOiBEZWVwUGFydGlhbDxFbnRpdHk+W11cbiAgICApOiBFbnRpdHkge1xuXG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICBlbnRpdHlMaWtlcy5mb3JFYWNoKChvYmplY3QpID0+XG4gICAgICAgICAgICB0aGlzLnBsYWluT2JqZWN0VG9FbnRpdHlUcmFuc2Zvcm1lci50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgbWVyZ2VJbnRvRW50aXR5LFxuICAgICAgICAgICAgICAgIG9iamVjdCxcbiAgICAgICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIG1lcmdlSW50b0VudGl0eVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgZW50aXR5IGZyb20gdGhlIGdpdmVuIHBsYWluIGphdmFzY3JpcHQgb2JqZWN0LiBJZiBlbnRpdHkgYWxyZWFkeSBleGlzdCBpbiB0aGUgZGF0YWJhc2UsIHRoZW5cbiAgICAgKiBpdCBsb2FkcyBpdCAoYW5kIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBpdCksIHJlcGxhY2VzIGFsbCB2YWx1ZXMgd2l0aCB0aGUgbmV3IG9uZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0XG4gICAgICogYW5kIHJldHVybnMgdGhpcyBuZXcgZW50aXR5LiBUaGlzIG5ldyBlbnRpdHkgaXMgYWN0dWFsbHkgYSBsb2FkZWQgZnJvbSB0aGUgZGIgZW50aXR5IHdpdGggYWxsIHByb3BlcnRpZXNcbiAgICAgKiByZXBsYWNlZCBmcm9tIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGFzeW5jIHByZWxvYWQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXR5TGlrZTogRGVlcFBhcnRpYWw8RW50aXR5PixcbiAgICApOiBQcm9taXNlPEVudGl0eSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgY29uc3QgcGxhaW5PYmplY3RUb0RhdGFiYXNlRW50aXR5VHJhbnNmb3JtZXIgPVxuICAgICAgICAgICAgbmV3IFBsYWluT2JqZWN0VG9EYXRhYmFzZUVudGl0eVRyYW5zZm9ybWVyKHRoaXMuY29ubmVjdGlvbi5tYW5hZ2VyKVxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZEVudGl0eSA9XG4gICAgICAgICAgICBhd2FpdCBwbGFpbk9iamVjdFRvRGF0YWJhc2VFbnRpdHlUcmFuc2Zvcm1lci50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgZW50aXR5TGlrZSxcbiAgICAgICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgIClcbiAgICAgICAgaWYgKHRyYW5zZm9ybWVkRW50aXR5KVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2UoXG4gICAgICAgICAgICAgICAgZW50aXR5Q2xhc3MgYXMgYW55LFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkRW50aXR5IGFzIEVudGl0eSxcbiAgICAgICAgICAgICAgICBlbnRpdHlMaWtlLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIElmIGVudGl0aWVzIGRvIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgdGhlbiBpbnNlcnRzLCBvdGhlcndpc2UgdXBkYXRlcy5cbiAgICAgKi9cbiAgICBzYXZlPEVudGl0eT4oZW50aXRpZXM6IEVudGl0eVtdLCBvcHRpb25zPzogU2F2ZU9wdGlvbnMpOiBQcm9taXNlPEVudGl0eVtdPlxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYWxsIGdpdmVuIGVudGl0aWVzIGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBJZiBlbnRpdGllcyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHk+KGVudGl0eTogRW50aXR5LCBvcHRpb25zPzogU2F2ZU9wdGlvbnMpOiBQcm9taXNlPEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGFsbCBnaXZlbiBlbnRpdGllcyBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogSWYgZW50aXRpZXMgZG8gbm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZSB0aGVuIGluc2VydHMsIG90aGVyd2lzZSB1cGRhdGVzLlxuICAgICAqL1xuICAgIHNhdmU8RW50aXR5LCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXRpZXM6IFRbXSxcbiAgICAgICAgb3B0aW9uczogU2F2ZU9wdGlvbnMgJiB7IHJlbG9hZDogZmFsc2UgfSxcbiAgICApOiBQcm9taXNlPFRbXT5cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGFsbCBnaXZlbiBlbnRpdGllcyBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogSWYgZW50aXRpZXMgZG8gbm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZSB0aGVuIGluc2VydHMsIG90aGVyd2lzZSB1cGRhdGVzLlxuICAgICAqL1xuICAgIHNhdmU8RW50aXR5LCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXRpZXM6IFRbXSxcbiAgICAgICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8KFQgJiBFbnRpdHkpW10+XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyBhIGdpdmVuIGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogSWYgZW50aXR5IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZSB0aGVuIGluc2VydHMsIG90aGVyd2lzZSB1cGRhdGVzLlxuICAgICAqL1xuICAgIHNhdmU8RW50aXR5LCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXR5OiBULFxuICAgICAgICBvcHRpb25zOiBTYXZlT3B0aW9ucyAmIHsgcmVsb2FkOiBmYWxzZSB9LFxuICAgICk6IFByb21pc2U8VD5cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGEgZ2l2ZW4gZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBJZiBlbnRpdHkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6IFQsXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFQgJiBFbnRpdHk+XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyBhIGdpdmVuIGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsLCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiAoVCB8IFRbXSkgfCBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgbWF5YmVFbnRpdHlPck9wdGlvbnM/OiBUIHwgVFtdLFxuICAgICAgICBtYXliZU9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFQgfCBUW10+IHtcblxuICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAodHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcImZ1bmN0aW9uXCIgfHxcbiAgICAgICAgICAgICAgICBJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0T3JFbnRpdHkpIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgID8gKHRhcmdldE9yRW50aXR5IGFzIEZ1bmN0aW9uIHwgc3RyaW5nKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eTogVCB8IFRbXSA9IHRhcmdldFxuICAgICAgICAgICAgPyAobWF5YmVFbnRpdHlPck9wdGlvbnMgYXMgVCB8IFRbXSlcbiAgICAgICAgICAgIDogKHRhcmdldE9yRW50aXR5IGFzIFQgfCBUW10pXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0YXJnZXRcbiAgICAgICAgICAgID8gbWF5YmVPcHRpb25zXG4gICAgICAgICAgICA6IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBTYXZlT3B0aW9ucylcblxuICAgICAgICBpZiAoSW5zdGFuY2VDaGVja2VyLmlzRW50aXR5U2NoZW1hKHRhcmdldCkpIHRhcmdldCA9IHRhcmdldC5vcHRpb25zLm5hbWVcblxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudGl0eSkgJiYgZW50aXR5Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KVxuXG5cbiAgICAgICAgcmV0dXJuIG5ldyBFbnRpdHlQZXJzaXN0RXhlY3V0b3IoXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgXCJzYXZlXCIsXG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApXG4gICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiBlbnRpdHkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGVudGl0eSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICByZW1vdmU8RW50aXR5PihlbnRpdHk6IEVudGl0eSwgb3B0aW9ucz86IFJlbW92ZU9wdGlvbnMpOiBQcm9taXNlPEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBnaXZlbiBlbnRpdHkgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAgICovXG4gICAgcmVtb3ZlPEVudGl0eT4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXR5OiBFbnRpdHksXG4gICAgICAgIG9wdGlvbnM/OiBSZW1vdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGVudGl0eSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICByZW1vdmU8RW50aXR5PihlbnRpdHk6IEVudGl0eVtdLCBvcHRpb25zPzogUmVtb3ZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGVudGl0eSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICByZW1vdmU8RW50aXR5PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6IEVudGl0eVtdLFxuICAgICAgICBvcHRpb25zPzogUmVtb3ZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPlxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGVudGl0eSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICByZW1vdmU8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiAoRW50aXR5IHwgRW50aXR5W10pIHwgRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIG1heWJlRW50aXR5T3JPcHRpb25zPzogRW50aXR5IHwgRW50aXR5W10sXG4gICAgICAgIG1heWJlT3B0aW9ucz86IFJlbW92ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxFbnRpdHkgfCBFbnRpdHlbXT4ge1xuXG4gICAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgICAgICBhcmd1bWVudHMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgKHR5cGVvZiB0YXJnZXRPckVudGl0eSA9PT0gXCJmdW5jdGlvblwiIHx8XG4gICAgICAgICAgICAgICAgSW5zdGFuY2VDaGVja2VyLmlzRW50aXR5U2NoZW1hKHRhcmdldE9yRW50aXR5KSB8fFxuICAgICAgICAgICAgICAgIHR5cGVvZiB0YXJnZXRPckVudGl0eSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICA/ICh0YXJnZXRPckVudGl0eSBhcyBGdW5jdGlvbiB8IHN0cmluZylcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICBjb25zdCBlbnRpdHk6IEVudGl0eSB8IEVudGl0eVtdID0gdGFyZ2V0XG4gICAgICAgICAgICA/IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBFbnRpdHkgfCBFbnRpdHlbXSlcbiAgICAgICAgICAgIDogKHRhcmdldE9yRW50aXR5IGFzIEVudGl0eSB8IEVudGl0eVtdKVxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGFyZ2V0XG4gICAgICAgICAgICA/IG1heWJlT3B0aW9uc1xuICAgICAgICAgICAgOiAobWF5YmVFbnRpdHlPck9wdGlvbnMgYXMgU2F2ZU9wdGlvbnMpXG5cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbnRpdHkpICYmIGVudGl0eS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudGl0eSlcblxuXG4gICAgICAgIHJldHVybiBuZXcgRW50aXR5UGVyc2lzdEV4ZWN1dG9yKFxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLFxuICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgIFwicmVtb3ZlXCIsXG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApXG4gICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiBlbnRpdHkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgYWxsIGdpdmVuIGVudGl0aWVzLlxuICAgICAqL1xuICAgIHNvZnRSZW1vdmU8RW50aXR5PihcbiAgICAgICAgZW50aXRpZXM6IEVudGl0eVtdLFxuICAgICAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxFbnRpdHlbXT5cblxuICAgIC8qKlxuICAgICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGEgZ2l2ZW4gZW50aXR5LlxuICAgICAqL1xuICAgIHNvZnRSZW1vdmU8RW50aXR5PihlbnRpdHk6IEVudGl0eSwgb3B0aW9ucz86IFNhdmVPcHRpb25zKTogUHJvbWlzZTxFbnRpdHk+XG5cbiAgICAvKipcbiAgICAgKiBSZWNvcmRzIHRoZSBkZWxldGUgZGF0ZSBvZiBhbGwgZ2l2ZW4gZW50aXRpZXMuXG4gICAgICovXG4gICAgc29mdFJlbW92ZTxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdGllczogVFtdLFxuICAgICAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxUW10+XG5cbiAgICAvKipcbiAgICAgKiBSZWNvcmRzIHRoZSBkZWxldGUgZGF0ZSBvZiBhIGdpdmVuIGVudGl0eS5cbiAgICAgKi9cbiAgICBzb2Z0UmVtb3ZlPEVudGl0eSwgVCBleHRlbmRzIERlZXBQYXJ0aWFsPEVudGl0eT4+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0eTogVCxcbiAgICAgICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VD5cblxuICAgIC8qKlxuICAgICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIG9uZSBvciBtYW55IGdpdmVuIGVudGl0aWVzLlxuICAgICAqL1xuICAgIHNvZnRSZW1vdmU8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbCwgVCBleHRlbmRzIERlZXBQYXJ0aWFsPEVudGl0eT4+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogKFQgfCBUW10pIHwgRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIG1heWJlRW50aXR5T3JPcHRpb25zPzogVCB8IFRbXSxcbiAgICAgICAgbWF5YmVPcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxUIHwgVFtdPiB7XG5cbiAgICAgICAgbGV0IHRhcmdldCA9XG4gICAgICAgICAgICBhcmd1bWVudHMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgKHR5cGVvZiB0YXJnZXRPckVudGl0eSA9PT0gXCJmdW5jdGlvblwiIHx8XG4gICAgICAgICAgICAgICAgSW5zdGFuY2VDaGVja2VyLmlzRW50aXR5U2NoZW1hKHRhcmdldE9yRW50aXR5KSB8fFxuICAgICAgICAgICAgICAgIHR5cGVvZiB0YXJnZXRPckVudGl0eSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICA/ICh0YXJnZXRPckVudGl0eSBhcyBGdW5jdGlvbiB8IHN0cmluZylcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICBjb25zdCBlbnRpdHk6IFQgfCBUW10gPSB0YXJnZXRcbiAgICAgICAgICAgID8gKG1heWJlRW50aXR5T3JPcHRpb25zIGFzIFQgfCBUW10pXG4gICAgICAgICAgICA6ICh0YXJnZXRPckVudGl0eSBhcyBUIHwgVFtdKVxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGFyZ2V0XG4gICAgICAgICAgICA/IG1heWJlT3B0aW9uc1xuICAgICAgICAgICAgOiAobWF5YmVFbnRpdHlPck9wdGlvbnMgYXMgU2F2ZU9wdGlvbnMpXG5cbiAgICAgICAgaWYgKEluc3RhbmNlQ2hlY2tlci5pc0VudGl0eVNjaGVtYSh0YXJnZXQpKSB0YXJnZXQgPSB0YXJnZXQub3B0aW9ucy5uYW1lXG5cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbnRpdHkpICYmIGVudGl0eS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudGl0eSlcblxuXG4gICAgICAgIHJldHVybiBuZXcgRW50aXR5UGVyc2lzdEV4ZWN1dG9yKFxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLFxuICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgIFwic29mdC1yZW1vdmVcIixcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyBhbGwgZ2l2ZW4gZW50aXRpZXMuXG4gICAgICovXG4gICAgcmVjb3ZlcjxFbnRpdHk+KFxuICAgICAgICBlbnRpdGllczogRW50aXR5W10sXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPlxuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgYSBnaXZlbiBlbnRpdHkuXG4gICAgICovXG4gICAgcmVjb3ZlcjxFbnRpdHk+KGVudGl0eTogRW50aXR5LCBvcHRpb25zPzogU2F2ZU9wdGlvbnMpOiBQcm9taXNlPEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIFJlY292ZXJzIGFsbCBnaXZlbiBlbnRpdGllcy5cbiAgICAgKi9cbiAgICByZWNvdmVyPEVudGl0eSwgVCBleHRlbmRzIERlZXBQYXJ0aWFsPEVudGl0eT4+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0aWVzOiBUW10sXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFRbXT5cblxuICAgIC8qKlxuICAgICAqIFJlY292ZXJzIGEgZ2l2ZW4gZW50aXR5LlxuICAgICAqL1xuICAgIHJlY292ZXI8RW50aXR5LCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXR5OiBULFxuICAgICAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxUPlxuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgb25lIG9yIG1hbnkgZ2l2ZW4gZW50aXRpZXMuXG4gICAgICovXG4gICAgcmVjb3ZlcjxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsLCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiAoVCB8IFRbXSkgfCBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgbWF5YmVFbnRpdHlPck9wdGlvbnM/OiBUIHwgVFtdLFxuICAgICAgICBtYXliZU9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFQgfCBUW10+IHtcblxuICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAodHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcImZ1bmN0aW9uXCIgfHxcbiAgICAgICAgICAgICAgICBJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0T3JFbnRpdHkpIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgID8gKHRhcmdldE9yRW50aXR5IGFzIEZ1bmN0aW9uIHwgc3RyaW5nKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eTogVCB8IFRbXSA9IHRhcmdldFxuICAgICAgICAgICAgPyAobWF5YmVFbnRpdHlPck9wdGlvbnMgYXMgVCB8IFRbXSlcbiAgICAgICAgICAgIDogKHRhcmdldE9yRW50aXR5IGFzIFQgfCBUW10pXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0YXJnZXRcbiAgICAgICAgICAgID8gbWF5YmVPcHRpb25zXG4gICAgICAgICAgICA6IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBTYXZlT3B0aW9ucylcblxuICAgICAgICBpZiAoSW5zdGFuY2VDaGVja2VyLmlzRW50aXR5U2NoZW1hKHRhcmdldCkpIHRhcmdldCA9IHRhcmdldC5vcHRpb25zLm5hbWVcblxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudGl0eSkgJiYgZW50aXR5Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KVxuXG5cbiAgICAgICAgcmV0dXJuIG5ldyBFbnRpdHlQZXJzaXN0RXhlY3V0b3IoXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgXCJyZWNvdmVyXCIsXG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApXG4gICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiBlbnRpdHkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyBhIGdpdmVuIGVudGl0eSBpbnRvIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBVbmxpa2Ugc2F2ZSBtZXRob2QgZXhlY3V0ZXMgYSBwcmltaXRpdmUgb3BlcmF0aW9uIHdpdGhvdXQgY2FzY2FkZXMsIHJlbGF0aW9ucyBhbmQgb3RoZXIgb3BlcmF0aW9ucyBpbmNsdWRlZC5cbiAgICAgKiBFeGVjdXRlcyBmYXN0IGFuZCBlZmZpY2llbnQgSU5TRVJUIHF1ZXJ5LlxuICAgICAqIERvZXMgbm90IGNoZWNrIGlmIGVudGl0eSBleGlzdCBpbiB0aGUgZGF0YWJhc2UsIHNvIHF1ZXJ5IHdpbGwgZmFpbCBpZiBkdXBsaWNhdGUgZW50aXR5IGlzIGJlaW5nIGluc2VydGVkLlxuICAgICAqIFlvdSBjYW4gZXhlY3V0ZSBidWxrIGluc2VydHMgdXNpbmcgdGhpcyBtZXRob2QuXG4gICAgICovXG4gICAgYXN5bmMgaW5zZXJ0PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICB0YXJnZXQ6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6XG4gICAgICAgICAgICB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PlxuICAgICAgICAgICAgfCBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT5bXSxcbiAgICApOiBQcm9taXNlPEluc2VydFJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgLmluc2VydCgpXG4gICAgICAgICAgICAuaW50byh0YXJnZXQpXG4gICAgICAgICAgICAudmFsdWVzKGVudGl0eSlcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICB9XG5cbiAgICBhc3luYyB1cHNlcnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldDogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0eU9yRW50aXRpZXM6XG4gICAgICAgICAgICB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PlxuICAgICAgICAgICAgfCBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT5bXSxcbiAgICAgICAgY29uZmxpY3RQYXRoc09yT3B0aW9uczogc3RyaW5nW10gfCBVcHNlcnRPcHRpb25zPEVudGl0eT4sXG4gICAgKTogUHJvbWlzZTxJbnNlcnRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEodGFyZ2V0KVxuXG4gICAgICAgIGxldCBvcHRpb25zOiBVcHNlcnRPcHRpb25zPEVudGl0eT5cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25mbGljdFBhdGhzT3JPcHRpb25zKSkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBjb25mbGljdFBhdGhzOiBjb25mbGljdFBhdGhzT3JPcHRpb25zLFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucyA9IGNvbmZsaWN0UGF0aHNPck9wdGlvbnNcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlbnRpdGllczogUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+W11cblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW50aXR5T3JFbnRpdGllcykpIHtcbiAgICAgICAgICAgIGVudGl0aWVzID0gW2VudGl0eU9yRW50aXRpZXNdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnRpdGllcyA9IGVudGl0eU9yRW50aXRpZXNcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0Q29sdW1ucyA9IG1ldGFkYXRhLm1hcFByb3BlcnR5UGF0aHNUb0NvbHVtbnMoXG4gICAgICAgICAgICBvcHRpb25zLmNvbmZsaWN0UGF0aHMsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBvdmVyd3JpdGVDb2x1bW5zID0gbWV0YWRhdGEuY29sdW1ucy5maWx0ZXIoXG4gICAgICAgICAgICAoY29sKSA9PlxuICAgICAgICAgICAgICAgICFjb25mbGljdENvbHVtbnMuaW5jbHVkZXMoY29sKSAmJlxuICAgICAgICAgICAgICAgIGVudGl0aWVzLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChlbnRpdHkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY29sLmdldEVudGl0eVZhbHVlKGVudGl0eSkgIT09IFwidW5kZWZpbmVkXCIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAuaW5zZXJ0KClcbiAgICAgICAgICAgIC5pbnRvKHRhcmdldClcbiAgICAgICAgICAgIC52YWx1ZXMoZW50aXRpZXMpXG4gICAgICAgICAgICAub3JVcGRhdGUoXG4gICAgICAgICAgICAgICAgWy4uLmNvbmZsaWN0Q29sdW1ucywgLi4ub3ZlcndyaXRlQ29sdW1uc10ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoY29sKSA9PiBjb2wuZGF0YWJhc2VOYW1lLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgY29uZmxpY3RDb2x1bW5zLm1hcCgoY29sKSA9PiBjb2wuZGF0YWJhc2VOYW1lKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNraXBVcGRhdGVJZk5vVmFsdWVzQ2hhbmdlZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2tpcFVwZGF0ZUlmTm9WYWx1ZXNDaGFuZ2VkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBlbnRpdHkgcGFydGlhbGx5LiBFbnRpdHkgY2FuIGJlIGZvdW5kIGJ5IGEgZ2l2ZW4gY29uZGl0aW9uKHMpLlxuICAgICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBVUERBVEUgcXVlcnkuXG4gICAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBDb25kaXRpb24ocykgY2Fubm90IGJlIGVtcHR5LlxuICAgICAqL1xuICAgIHVwZGF0ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgY3JpdGVyaWE6XG4gICAgICAgICAgICB8IHN0cmluZ1xuICAgICAgICAgICAgfCBzdHJpbmdbXVxuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgIHwgbnVtYmVyW11cbiAgICAgICAgICAgIHwgRGF0ZVxuICAgICAgICAgICAgfCBEYXRlW11cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICAgICAgICB8IGFueSxcbiAgICAgICAgcGFydGlhbEVudGl0eTogUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8VXBkYXRlUmVzdWx0PiB7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IG51bGwgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSBcIlwiIHx8XG4gICAgICAgICAgICAoQXJyYXkuaXNBcnJheShjcml0ZXJpYSkgJiYgY3JpdGVyaWEubGVuZ3RoID09PSAwKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICAgICAgICBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRW1wdHkgY3JpdGVyaWEocykgYXJlIG5vdCBhbGxvd2VkIGZvciB0aGUgdXBkYXRlIG1ldGhvZC5gLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgY3JpdGVyaWEgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICAgIHR5cGVvZiBjcml0ZXJpYSA9PT0gXCJudW1iZXJcIiB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGNyaXRlcmlhKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAgICAgLnVwZGF0ZSh0YXJnZXQpXG4gICAgICAgICAgICAgICAgLnNldChwYXJ0aWFsRW50aXR5KVxuICAgICAgICAgICAgICAgIC53aGVyZUluSWRzKGNyaXRlcmlhKVxuICAgICAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAgICAgLnVwZGF0ZSh0YXJnZXQpXG4gICAgICAgICAgICAgICAgLnNldChwYXJ0aWFsRW50aXR5KVxuICAgICAgICAgICAgICAgIC53aGVyZShjcml0ZXJpYSlcbiAgICAgICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGVudGl0aWVzIGJ5IGEgZ2l2ZW4gY29uZGl0aW9uKHMpLlxuICAgICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBERUxFVEUgcXVlcnkuXG4gICAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBDb25kaXRpb24ocykgY2Fubm90IGJlIGVtcHR5LlxuICAgICAqL1xuICAgIGRlbGV0ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBjcml0ZXJpYTpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8IHN0cmluZ1tdXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBudW1iZXJbXVxuICAgICAgICAgICAgfCBEYXRlXG4gICAgICAgICAgICB8IERhdGVbXVxuICAgICAgICAgICAgfCBPYmplY3RJRFxuICAgICAgICAgICAgfCBPYmplY3RJRFtdXG4gICAgICAgICAgICB8IGFueSxcbiAgICApOiBQcm9taXNlPERlbGV0ZVJlc3VsdD4ge1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSBudWxsIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gXCJcIiB8fFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpICYmIGNyaXRlcmlhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEVtcHR5IGNyaXRlcmlhKHMpIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhlIGRlbGV0ZSBtZXRob2QuYCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgICAgICB0eXBlb2YgY3JpdGVyaWEgPT09IFwibnVtYmVyXCIgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjcml0ZXJpYSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5kZWxldGUoKVxuICAgICAgICAgICAgICAgIC5mcm9tKHRhcmdldE9yRW50aXR5KVxuICAgICAgICAgICAgICAgIC53aGVyZUluSWRzKGNyaXRlcmlhKVxuICAgICAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAgICAgLmZyb20odGFyZ2V0T3JFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlKGNyaXRlcmlhKVxuICAgICAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGVudGl0aWVzIGJ5IGEgZ2l2ZW4gY29uZGl0aW9uKHMpLlxuICAgICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBERUxFVEUgcXVlcnkuXG4gICAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBDb25kaXRpb24ocykgY2Fubm90IGJlIGVtcHR5LlxuICAgICAqL1xuICAgIHNvZnREZWxldGU8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgY3JpdGVyaWE6XG4gICAgICAgICAgICB8IHN0cmluZ1xuICAgICAgICAgICAgfCBzdHJpbmdbXVxuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgIHwgbnVtYmVyW11cbiAgICAgICAgICAgIHwgRGF0ZVxuICAgICAgICAgICAgfCBEYXRlW11cbiAgICAgICAgICAgIHwgT2JqZWN0SURcbiAgICAgICAgICAgIHwgT2JqZWN0SURbXVxuICAgICAgICAgICAgfCBhbnksXG4gICAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IFwiXCIgfHxcbiAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGNyaXRlcmlhKSAmJiBjcml0ZXJpYS5sZW5ndGggPT09IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBFbXB0eSBjcml0ZXJpYShzKSBhcmUgbm90IGFsbG93ZWQgZm9yIHRoZSBkZWxldGUgbWV0aG9kLmAsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBjcml0ZXJpYSA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAuc29mdERlbGV0ZSgpXG4gICAgICAgICAgICAgICAgLmZyb20odGFyZ2V0T3JFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlSW5JZHMoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAuc29mdERlbGV0ZSgpXG4gICAgICAgICAgICAgICAgLmZyb20odGFyZ2V0T3JFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlKGNyaXRlcmlhKVxuICAgICAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc3RvcmVzIGVudGl0aWVzIGJ5IGEgZ2l2ZW4gY29uZGl0aW9uKHMpLlxuICAgICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBERUxFVEUgcXVlcnkuXG4gICAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBDb25kaXRpb24ocykgY2Fubm90IGJlIGVtcHR5LlxuICAgICAqL1xuICAgIHJlc3RvcmU8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgY3JpdGVyaWE6XG4gICAgICAgICAgICB8IHN0cmluZ1xuICAgICAgICAgICAgfCBzdHJpbmdbXVxuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgIHwgbnVtYmVyW11cbiAgICAgICAgICAgIHwgRGF0ZVxuICAgICAgICAgICAgfCBEYXRlW11cbiAgICAgICAgICAgIHwgT2JqZWN0SURcbiAgICAgICAgICAgIHwgT2JqZWN0SURbXVxuICAgICAgICAgICAgfCBhbnksXG4gICAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IFwiXCIgfHxcbiAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGNyaXRlcmlhKSAmJiBjcml0ZXJpYS5sZW5ndGggPT09IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBFbXB0eSBjcml0ZXJpYShzKSBhcmUgbm90IGFsbG93ZWQgZm9yIHRoZSBkZWxldGUgbWV0aG9kLmAsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBjcml0ZXJpYSA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAucmVzdG9yZSgpXG4gICAgICAgICAgICAgICAgLmZyb20odGFyZ2V0T3JFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlSW5JZHMoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAucmVzdG9yZSgpXG4gICAgICAgICAgICAgICAgLmZyb20odGFyZ2V0T3JFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlKGNyaXRlcmlhKVxuICAgICAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIG9wdGlvbnMuXG4gICAgICogVXNlZnVsIGZvciBwYWdpbmF0aW9uLlxuICAgICAqL1xuICAgIGNvdW50PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIG9wdGlvbnM/OiBGaW5kTWFueU9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKFxuICAgICAgICAgICAgZW50aXR5Q2xhc3MsXG4gICAgICAgICAgICBGaW5kT3B0aW9uc1V0aWxzLmV4dHJhY3RGaW5kTWFueU9wdGlvbnNBbGlhcyhvcHRpb25zKSB8fFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLm5hbWUsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zZXRGaW5kT3B0aW9ucyhvcHRpb25zIHx8IHt9KVxuICAgICAgICAgICAgLmdldENvdW50KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3VudHMgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBjb25kaXRpb25zLlxuICAgICAqIFVzZWZ1bCBmb3IgcGFnaW5hdGlvbi5cbiAgICAgKi9cbiAgICBjb3VudEJ5PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIHdoZXJlOiBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4gfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT5bXSxcbiAgICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKGVudGl0eUNsYXNzLCBtZXRhZGF0YS5uYW1lKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKHsgd2hlcmUgfSlcbiAgICAgICAgICAgIC5nZXRDb3VudCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBmaW5kIG9wdGlvbnMuXG4gICAgICovXG4gICAgYXN5bmMgZmluZDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBvcHRpb25zPzogRmluZE1hbnlPcHRpb25zPEVudGl0eT4sXG4gICAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oXG4gICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBhbnksXG4gICAgICAgICAgICBGaW5kT3B0aW9uc1V0aWxzLmV4dHJhY3RGaW5kTWFueU9wdGlvbnNBbGlhcyhvcHRpb25zKSB8fFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLm5hbWUsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zZXRGaW5kT3B0aW9ucyhvcHRpb25zIHx8IHt9KVxuICAgICAgICAgICAgLmdldE1hbnkoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRCeTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oXG4gICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBhbnksXG4gICAgICAgICAgICBtZXRhZGF0YS5uYW1lLFxuICAgICAgICApXG4gICAgICAgICAgICAuc2V0RmluZE9wdGlvbnMoeyB3aGVyZTogd2hlcmUgfSlcbiAgICAgICAgICAgIC5nZXRNYW55KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICAgKiBBbHNvIGNvdW50cyBhbGwgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBjb25kaXRpb25zLFxuICAgICAqIGJ1dCBpZ25vcmVzIHBhZ2luYXRpb24gc2V0dGluZ3MgKGZyb20gYW5kIHRha2Ugb3B0aW9ucykuXG4gICAgICovXG4gICAgZmluZEFuZENvdW50PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIG9wdGlvbnM/OiBGaW5kTWFueU9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPFtFbnRpdHlbXSwgbnVtYmVyXT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oXG4gICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBhbnksXG4gICAgICAgICAgICBGaW5kT3B0aW9uc1V0aWxzLmV4dHJhY3RGaW5kTWFueU9wdGlvbnNBbGlhcyhvcHRpb25zKSB8fFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLm5hbWUsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zZXRGaW5kT3B0aW9ucyhvcHRpb25zIHx8IHt9KVxuICAgICAgICAgICAgLmdldE1hbnlBbmRDb3VudCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBXSEVSRSBjb25kaXRpb25zLlxuICAgICAqIEFsc28gY291bnRzIGFsbCBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMsXG4gICAgICogYnV0IGlnbm9yZXMgcGFnaW5hdGlvbiBzZXR0aW5ncyAoZnJvbSBhbmQgdGFrZSBvcHRpb25zKS5cbiAgICAgKi9cbiAgICBmaW5kQW5kQ291bnRCeTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICAgKTogUHJvbWlzZTxbRW50aXR5W10sIG51bWJlcl0+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+KFxuICAgICAgICAgICAgZW50aXR5Q2xhc3MgYXMgYW55LFxuICAgICAgICAgICAgbWV0YWRhdGEubmFtZSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKHsgd2hlcmUgfSlcbiAgICAgICAgICAgIC5nZXRNYW55QW5kQ291bnQoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGVudGl0aWVzIHdpdGggaWRzLlxuICAgICAqIE9wdGlvbmFsbHkgZmluZCBvcHRpb25zIG9yIGNvbmRpdGlvbnMgY2FuIGJlIGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGZpbmRCeWAgbWV0aG9kIGluc3RlYWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSW5gIG9wZXJhdG9yLCBmb3IgZXhhbXBsZTpcbiAgICAgKlxuICAgICAqIC5maW5kQnkoe1xuICAgICAqICAgICBpZDogSW4oWzEsIDIsIDNdKVxuICAgICAqIH0pXG4gICAgICovXG4gICAgYXN5bmMgZmluZEJ5SWRzPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGlkczogYW55W10sXG4gICAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuXG4gICAgICAgIGlmICghaWRzLmxlbmd0aCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSlcblxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oXG4gICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBhbnksXG4gICAgICAgICAgICBtZXRhZGF0YS5uYW1lLFxuICAgICAgICApXG4gICAgICAgICAgICAuYW5kV2hlcmVJbklkcyhpZHMpXG4gICAgICAgICAgICAuZ2V0TWFueSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZmlyc3QgZW50aXR5IGJ5IGEgZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgICAqIElmIGVudGl0eSB3YXMgbm90IGZvdW5kIGluIHRoZSBkYXRhYmFzZSAtIHJldHVybnMgbnVsbC5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kT25lPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIG9wdGlvbnM6IEZpbmRPbmVPcHRpb25zPEVudGl0eT4sXG4gICAgKTogUHJvbWlzZTxFbnRpdHkgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuXG5cbiAgICAgICAgbGV0IGFsaWFzOiBzdHJpbmcgPSBtZXRhZGF0YS5uYW1lXG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuam9pbikge1xuICAgICAgICAgICAgYWxpYXMgPSBvcHRpb25zLmpvaW4uYWxpYXNcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0aW9ucy53aGVyZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBZb3UgbXVzdCBwcm92aWRlIHNlbGVjdGlvbiBjb25kaXRpb25zIGluIG9yZGVyIHRvIGZpbmQgYSBzaW5nbGUgcm93LmAsXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+KGVudGl0eUNsYXNzLCBhbGlhcylcbiAgICAgICAgICAgIC5zZXRGaW5kT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICB0YWtlOiAxLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5nZXRPbmUoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gd2hlcmUgY29uZGl0aW9uLlxuICAgICAqIElmIGVudGl0eSB3YXMgbm90IGZvdW5kIGluIHRoZSBkYXRhYmFzZSAtIHJldHVybnMgbnVsbC5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kT25lQnk8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICAgICk6IFByb21pc2U8RW50aXR5IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcblxuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+KGVudGl0eUNsYXNzLCBtZXRhZGF0YS5uYW1lKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICB3aGVyZSxcbiAgICAgICAgICAgICAgICB0YWtlOiAxLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5nZXRPbmUoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gaWQuXG4gICAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmV0dXJucyBudWxsLlxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGBmaW5kT25lQnlgIG1ldGhvZCBpbnN0ZWFkIGluIGNvbmp1bmN0aW9uIHdpdGggYEluYCBvcGVyYXRvciwgZm9yIGV4YW1wbGU6XG4gICAgICpcbiAgICAgKiAuZmluZE9uZUJ5KHtcbiAgICAgKiAgICAgaWQ6IDEgLy8gd2hlcmUgXCJpZFwiIGlzIHlvdXIgcHJpbWFyeSBjb2x1bW4gbmFtZVxuICAgICAqIH0pXG4gICAgICovXG4gICAgYXN5bmMgZmluZE9uZUJ5SWQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgaWQ6IG51bWJlciB8IHN0cmluZyB8IERhdGUgfCBPYmplY3RJRCxcbiAgICApOiBQcm9taXNlPEVudGl0eSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG5cblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihlbnRpdHlDbGFzcywgbWV0YWRhdGEubmFtZSlcbiAgICAgICAgICAgIC5zZXRGaW5kT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgdGFrZTogMSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2hlcmVJbklkcyhtZXRhZGF0YS5lbnN1cmVFbnRpdHlJZE1hcChpZCkpXG4gICAgICAgICAgICAuZ2V0T25lKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBmaXJzdCBlbnRpdHkgYnkgYSBnaXZlbiBmaW5kIG9wdGlvbnMuXG4gICAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmVqZWN0cyB3aXRoIGVycm9yLlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRPbmVPckZhaWw8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgb3B0aW9uczogRmluZE9uZU9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPEVudGl0eT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kT25lPEVudGl0eT4oZW50aXR5Q2xhc3MgYXMgYW55LCBvcHRpb25zKS50aGVuKFxuICAgICAgICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlOb3RGb3VuZEVycm9yKGVudGl0eUNsYXNzLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gd2hlcmUgY29uZGl0aW9uLlxuICAgICAqIElmIGVudGl0eSB3YXMgbm90IGZvdW5kIGluIHRoZSBkYXRhYmFzZSAtIHJlamVjdHMgd2l0aCBlcnJvci5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kT25lQnlPckZhaWw8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICAgICk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRPbmVCeTxFbnRpdHk+KGVudGl0eUNsYXNzIGFzIGFueSwgd2hlcmUpLnRoZW4oXG4gICAgICAgICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEVudGl0eU5vdEZvdW5kRXJyb3IoZW50aXR5Q2xhc3MsIHdoZXJlKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgZ2l2ZW4gdGFibGUgKHRydW5jYXRlcy9kcm9wcyBpdCkuXG4gICAgICpcbiAgICAgKiBOb3RlOiB0aGlzIG1ldGhvZCB1c2VzIFRSVU5DQVRFIGFuZCBtYXkgbm90IHdvcmsgYXMgeW91IGV4cGVjdCBpbiB0cmFuc2FjdGlvbnMgb24gc29tZSBwbGF0Zm9ybXMuXG4gICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTk3MjczOC85MjUxNTFcbiAgICAgKi9cbiAgICBhc3luYyBjbGVhcjxFbnRpdHk+KGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5Pik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgY29uc3QgcXVlcnlSdW5uZXIgPVxuICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lciB8fCB0aGlzLmNvbm5lY3Rpb24uY3JlYXRlUXVlcnlSdW5uZXIoKVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHF1ZXJ5UnVubmVyLmNsZWFyVGFibGUobWV0YWRhdGEudGFibGVQYXRoKSAvLyBhd2FpdCBpcyBuZWVkZWQgaGVyZSBiZWNhdXNlIHdlIGFyZSB1c2luZyBmaW5hbGx5XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucXVlcnlSdW5uZXIpIGF3YWl0IHF1ZXJ5UnVubmVyLnJlbGVhc2UoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5jcmVtZW50cyBzb21lIGNvbHVtbiBieSBwcm92aWRlZCB2YWx1ZSBvZiB0aGUgZW50aXRpZXMgbWF0Y2hlZCBnaXZlbiBjb25kaXRpb25zLlxuICAgICAqL1xuICAgIGFzeW5jIGluY3JlbWVudDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBjb25kaXRpb25zOiBhbnksXG4gICAgICAgIHByb3BlcnR5UGF0aDogc3RyaW5nLFxuICAgICAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLFxuICAgICk6IFByb21pc2U8VXBkYXRlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICBjb25zdCBjb2x1bW4gPSBtZXRhZGF0YS5maW5kQ29sdW1uV2l0aFByb3BlcnR5UGF0aChwcm9wZXJ0eVBhdGgpXG4gICAgICAgIGlmICghY29sdW1uKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICBgQ29sdW1uICR7cHJvcGVydHlQYXRofSB3YXMgbm90IGZvdW5kIGluICR7bWV0YWRhdGEudGFyZ2V0TmFtZX0gZW50aXR5LmAsXG4gICAgICAgICAgICApXG5cbiAgICAgICAgaWYgKGlzTmFOKE51bWJlcih2YWx1ZSkpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVPUk1FcnJvcihgVmFsdWUgXCIke3ZhbHVlfVwiIGlzIG5vdCBhIG51bWJlci5gKVxuXG5cbiAgICAgICAgY29uc3QgdmFsdWVzOiBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT4gPSBwcm9wZXJ0eVBhdGhcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5yZWR1Y2VSaWdodChcbiAgICAgICAgICAgICAgICAodmFsdWUsIGtleSkgPT4gKHsgW2tleV06IHZhbHVlIH0gYXMgYW55KSxcbiAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLmVzY2FwZShjb2x1bW4uZGF0YWJhc2VOYW1lKSArXG4gICAgICAgICAgICAgICAgICAgIFwiICsgXCIgK1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIClcblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihlbnRpdHlDbGFzcyBhcyBhbnksIFwiZW50aXR5XCIpXG4gICAgICAgICAgICAudXBkYXRlKGVudGl0eUNsYXNzKVxuICAgICAgICAgICAgLnNldCh2YWx1ZXMpXG4gICAgICAgICAgICAud2hlcmUoY29uZGl0aW9ucylcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNyZW1lbnRzIHNvbWUgY29sdW1uIGJ5IHByb3ZpZGVkIHZhbHVlIG9mIHRoZSBlbnRpdGllcyBtYXRjaGVkIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAgICovXG4gICAgYXN5bmMgZGVjcmVtZW50PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGNvbmRpdGlvbnM6IGFueSxcbiAgICAgICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICAgICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG1ldGFkYXRhLmZpbmRDb2x1bW5XaXRoUHJvcGVydHlQYXRoKHByb3BlcnR5UGF0aClcbiAgICAgICAgaWYgKCFjb2x1bW4pXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgIGBDb2x1bW4gJHtwcm9wZXJ0eVBhdGh9IHdhcyBub3QgZm91bmQgaW4gJHttZXRhZGF0YS50YXJnZXROYW1lfSBlbnRpdHkuYCxcbiAgICAgICAgICAgIClcblxuICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKHZhbHVlKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKGBWYWx1ZSBcIiR7dmFsdWV9XCIgaXMgbm90IGEgbnVtYmVyLmApXG5cblxuICAgICAgICBjb25zdCB2YWx1ZXM6IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PiA9IHByb3BlcnR5UGF0aFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnJlZHVjZVJpZ2h0KFxuICAgICAgICAgICAgICAgICh2YWx1ZSwga2V5KSA9PiAoeyBba2V5XTogdmFsdWUgfSBhcyBhbnkpLFxuICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIuZXNjYXBlKGNvbHVtbi5kYXRhYmFzZU5hbWUpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgLSBcIiArXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+KGVudGl0eUNsYXNzIGFzIGFueSwgXCJlbnRpdHlcIilcbiAgICAgICAgICAgIC51cGRhdGUoZW50aXR5Q2xhc3MpXG4gICAgICAgICAgICAuc2V0KHZhbHVlcylcbiAgICAgICAgICAgIC53aGVyZShjb25kaXRpb25zKVxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgcmVwb3NpdG9yeSBmb3IgdGhlIGdpdmVuIGVudGl0eSBjbGFzcyBvciBuYW1lLlxuICAgICAqIElmIHNpbmdsZSBkYXRhYmFzZSBjb25uZWN0aW9uIG1vZGUgaXMgdXNlZCwgdGhlbiByZXBvc2l0b3J5IGlzIG9idGFpbmVkIGZyb20gdGhlXG4gICAgICogcmVwb3NpdG9yeSBhZ2dyZWdhdG9yLCB3aGVyZSBlYWNoIHJlcG9zaXRvcnkgaXMgaW5kaXZpZHVhbGx5IGNyZWF0ZWQgZm9yIHRoaXMgZW50aXR5IG1hbmFnZXIuXG4gICAgICogV2hlbiBzaW5nbGUgZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBub3QgdXNlZCwgcmVwb3NpdG9yeSBpcyBiZWluZyBvYnRhaW5lZCBmcm9tIHRoZSBjb25uZWN0aW9uLlxuICAgICAqL1xuICAgIGdldFJlcG9zaXRvcnk8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldDogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgKTogUmVwb3NpdG9yeTxFbnRpdHk+IHtcblxuICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gdGhpcy5yZXBvc2l0b3JpZXMuZmluZChcbiAgICAgICAgICAgIChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5LnRhcmdldCA9PT0gdGFyZ2V0LFxuICAgICAgICApXG4gICAgICAgIGlmIChyZXBvc2l0b3J5KSByZXR1cm4gcmVwb3NpdG9yeVxuXG5cbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PSBcIm1vbmdvZGJcIikge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICAgICAgcmV0dXJuICh2b2lkIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmV3UmVwb3NpdG9yeSA9IG5ldyBSZXBvc2l0b3J5PGFueT4oXG4gICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHRoaXMucmVwb3NpdG9yaWVzLnB1c2gobmV3UmVwb3NpdG9yeSlcbiAgICAgICAgICAgIHJldHVybiBuZXdSZXBvc2l0b3J5XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRyZWUgcmVwb3NpdG9yeSBmb3IgdGhlIGdpdmVuIGVudGl0eSBjbGFzcyBvciBuYW1lLlxuICAgICAqIElmIHNpbmdsZSBkYXRhYmFzZSBjb25uZWN0aW9uIG1vZGUgaXMgdXNlZCwgdGhlbiByZXBvc2l0b3J5IGlzIG9idGFpbmVkIGZyb20gdGhlXG4gICAgICogcmVwb3NpdG9yeSBhZ2dyZWdhdG9yLCB3aGVyZSBlYWNoIHJlcG9zaXRvcnkgaXMgaW5kaXZpZHVhbGx5IGNyZWF0ZWQgZm9yIHRoaXMgZW50aXR5IG1hbmFnZXIuXG4gICAgICogV2hlbiBzaW5nbGUgZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBub3QgdXNlZCwgcmVwb3NpdG9yeSBpcyBiZWluZyBvYnRhaW5lZCBmcm9tIHRoZSBjb25uZWN0aW9uLlxuICAgICAqL1xuICAgIGdldFRyZWVSZXBvc2l0b3J5PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICB0YXJnZXQ6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICk6IFRyZWVSZXBvc2l0b3J5PEVudGl0eT4ge1xuXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLnRyZWVTdXBwb3J0ID09PSBmYWxzZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBUcmVlUmVwb3NpdG9yeU5vdFN1cHBvcnRlZEVycm9yKHRoaXMuY29ubmVjdGlvbi5kcml2ZXIpXG5cblxuICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gdGhpcy50cmVlUmVwb3NpdG9yaWVzLmZpbmQoXG4gICAgICAgICAgICAocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS50YXJnZXQgPT09IHRhcmdldCxcbiAgICAgICAgKVxuICAgICAgICBpZiAocmVwb3NpdG9yeSkgcmV0dXJuIHJlcG9zaXRvcnlcblxuXG4gICAgICAgIGNvbnN0IG5ld1JlcG9zaXRvcnkgPSBuZXcgVHJlZVJlcG9zaXRvcnkodGFyZ2V0LCB0aGlzLCB0aGlzLnF1ZXJ5UnVubmVyKVxuICAgICAgICB0aGlzLnRyZWVSZXBvc2l0b3JpZXMucHVzaChuZXdSZXBvc2l0b3J5KVxuICAgICAgICByZXR1cm4gbmV3UmVwb3NpdG9yeVxuICAgIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVwb3NpdG9yeSBpbnN0YW5jZSBvdXQgb2YgYSBnaXZlbiBSZXBvc2l0b3J5IGFuZFxuICAgICAqIHNldHMgY3VycmVudCBFbnRpdHlNYW5hZ2VyIGluc3RhbmNlIHRvIGl0LiBVc2VkIHRvIHdvcmsgd2l0aCBjdXN0b20gcmVwb3NpdG9yaWVzXG4gICAgICogaW4gdHJhbnNhY3Rpb25zLlxuICAgICAqL1xuICAgIHdpdGhSZXBvc2l0b3J5PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWwsIFIgZXh0ZW5kcyBSZXBvc2l0b3J5PGFueT4+KFxuICAgICAgICByZXBvc2l0b3J5OiBSICYgUmVwb3NpdG9yeTxFbnRpdHk+LFxuICAgICk6IFIge1xuICAgICAgICBjb25zdCByZXBvc2l0b3J5Q29uc3RydWN0b3IgPVxuICAgICAgICAgICAgcmVwb3NpdG9yeS5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgUmVwb3NpdG9yeVxuICAgICAgICBjb25zdCB7IHRhcmdldCwgbWFuYWdlciwgcXVlcnlSdW5uZXIsIC4uLm90aGVyUmVwb3NpdG9yeVByb3BlcnRpZXMgfSA9XG4gICAgICAgICAgICByZXBvc2l0b3J5XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgbmV3IHJlcG9zaXRvcnlDb25zdHJ1Y3RvcihyZXBvc2l0b3J5LnRhcmdldCwgdGhpcykgYXMgUixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5vdGhlclJlcG9zaXRvcnlQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgY3VzdG9tIGVudGl0eSByZXBvc2l0b3J5IG1hcmtlZCB3aXRoIEBFbnRpdHlSZXBvc2l0b3J5IGRlY29yYXRvci5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBSZXBvc2l0b3J5LmV4dGVuZCB0byBjcmVhdGUgY3VzdG9tIHJlcG9zaXRvcmllc1xuICAgICAqL1xuICAgIGdldEN1c3RvbVJlcG9zaXRvcnk8VD4oY3VzdG9tUmVwb3NpdG9yeTogT2JqZWN0VHlwZTxUPik6IFQge1xuICAgICAgICBjb25zdCBlbnRpdHlSZXBvc2l0b3J5TWV0YWRhdGFBcmdzID1cbiAgICAgICAgICAgIGdldE1ldGFkYXRhQXJnc1N0b3JhZ2UoKS5lbnRpdHlSZXBvc2l0b3JpZXMuZmluZCgocmVwb3NpdG9yeSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkudGFyZ2V0ID09PVxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGN1c3RvbVJlcG9zaXRvcnkgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjdXN0b21SZXBvc2l0b3J5XG4gICAgICAgICAgICAgICAgICAgICAgICA6IChjdXN0b21SZXBvc2l0b3J5IGFzIGFueSkuY29uc3RydWN0b3IpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgaWYgKCFlbnRpdHlSZXBvc2l0b3J5TWV0YWRhdGFBcmdzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEN1c3RvbVJlcG9zaXRvcnlOb3RGb3VuZEVycm9yKGN1c3RvbVJlcG9zaXRvcnkpXG5cbiAgICAgICAgY29uc3QgZW50aXR5TWV0YWRhdGEgPSBlbnRpdHlSZXBvc2l0b3J5TWV0YWRhdGFBcmdzLmVudGl0eVxuICAgICAgICAgICAgPyB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5UmVwb3NpdG9yeU1ldGFkYXRhQXJncy5lbnRpdHkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICBjb25zdCBlbnRpdHlSZXBvc2l0b3J5SW5zdGFuY2UgPVxuICAgICAgICAgICAgbmV3IChlbnRpdHlSZXBvc2l0b3J5TWV0YWRhdGFBcmdzLnRhcmdldCBhcyBhbnkpKFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICApXG5cblxuXG4gICAgICAgIGlmIChlbnRpdHlSZXBvc2l0b3J5SW5zdGFuY2UgaW5zdGFuY2VvZiBBYnN0cmFjdFJlcG9zaXRvcnkpIHtcbiAgICAgICAgICAgIGlmICghKGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZSBhcyBhbnkpW1wibWFuYWdlclwiXSlcbiAgICAgICAgICAgICAgICAoZW50aXR5UmVwb3NpdG9yeUluc3RhbmNlIGFzIGFueSlbXCJtYW5hZ2VyXCJdID0gdGhpc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFlbnRpdHlNZXRhZGF0YSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tUmVwb3NpdG9yeUNhbm5vdEluaGVyaXRSZXBvc2l0b3J5RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVJlcG9zaXRvcnksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOyhlbnRpdHlSZXBvc2l0b3J5SW5zdGFuY2UgYXMgYW55KVtcIm1hbmFnZXJcIl0gPSB0aGlzXG4gICAgICAgICAgICA7KGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZSBhcyBhbnkpW1wibWV0YWRhdGFcIl0gPSBlbnRpdHlNZXRhZGF0YVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbGVhc2VzIGFsbCByZXNvdXJjZXMgdXNlZCBieSBlbnRpdHkgbWFuYWdlci5cbiAgICAgKiBUaGlzIGlzIHVzZWQgd2hlbiBlbnRpdHkgbWFuYWdlciBpcyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgcXVlcnkgcnVubmVyLFxuICAgICAqIGFuZCB0aGlzIHNpbmdsZSBxdWVyeSBydW5uZXIgbmVlZHMgdG8gYmUgcmVsZWFzZWQgYWZ0ZXIgam9iIHdpdGggZW50aXR5IG1hbmFnZXIgaXMgZG9uZS5cbiAgICAgKi9cbiAgICBhc3luYyByZWxlYXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMucXVlcnlSdW5uZXIpIHRocm93IG5ldyBOb05lZWRUb1JlbGVhc2VFbnRpdHlNYW5hZ2VyRXJyb3IoKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5UnVubmVyLnJlbGVhc2UoKVxuICAgIH1cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZW9ybSBsaWIvdHlwZW9ybS9lbnRpdHktbWFuYWdlci9FbnRpdHlNYW5hZ2VyLnRzIl19