@kontur.candy/tools 2.129.0 → 2.131.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 (249) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +6 -6
  3. package/distr/Common/AsyncUtils.js +1 -30
  4. package/distr/Common/CandyApiClient/CandyApiClient.js +56 -39
  5. package/distr/Common/CandyApiClient/CandyApiClientContext.js +1 -33
  6. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +0 -4
  7. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +0 -4
  8. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -29
  9. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +0 -4
  10. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -35
  11. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -35
  12. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -37
  13. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +1 -29
  14. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -34
  15. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +1 -28
  16. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +0 -4
  17. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +1 -33
  18. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -29
  19. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +1 -6
  20. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +0 -4
  21. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestResponse.js +0 -4
  22. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +22 -38
  23. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -5
  24. package/distr/Common/CandyApiClient/IsBuffer.js +1 -29
  25. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +0 -4
  26. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +0 -4
  27. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +0 -4
  28. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +0 -4
  29. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +0 -4
  30. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +1 -6
  31. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +0 -4
  32. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +0 -4
  33. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +11 -0
  34. package/distr/Common/CandyApiClient/Types/DraftFullId.js +0 -4
  35. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +0 -4
  36. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +1 -6
  37. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +0 -4
  38. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +0 -4
  39. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +1 -6
  40. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +0 -4
  41. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +0 -4
  42. package/distr/Common/CandyApiClient/Types/Guid.js +0 -4
  43. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +1 -6
  44. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +0 -4
  45. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +0 -4
  46. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +1 -6
  47. package/distr/Common/CommonConstants/SectionNames.js +1 -28
  48. package/distr/Common/Comparers.js +8 -30
  49. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +1 -29
  50. package/distr/Common/EndPoints.js +1 -34
  51. package/distr/Common/Errors.js +3 -71
  52. package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -30
  53. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +0 -4
  54. package/distr/Common/Funcs.js +1 -29
  55. package/distr/Common/GFV.js +0 -4
  56. package/distr/Common/Hooks/UseLocalStorage.js +42 -0
  57. package/distr/Common/HttpClient/AuthenticationMode.js +1 -32
  58. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +12 -0
  59. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +1 -29
  60. package/distr/Common/HttpClient/FetchImplementation/Fetch.js +0 -4
  61. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +1 -30
  62. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +3 -31
  63. package/distr/Common/HttpClient/HttpClient.js +12 -56
  64. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +0 -4
  65. package/distr/Common/HttpClient/IHttpClient.js +0 -4
  66. package/distr/Common/IndentString.js +18 -0
  67. package/distr/Common/IntRangeUtils.js +1 -31
  68. package/distr/Common/IterableUtils.js +23 -38
  69. package/distr/Common/KCLangRuntimeUtils.js +3 -38
  70. package/distr/Common/ModelPath/BuildIterationSequence.js +3 -31
  71. package/distr/Common/ModelPath/EachCurrentCollision.js +1 -6
  72. package/distr/Common/ModelPath/IEquatable.js +0 -4
  73. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +30 -0
  74. package/distr/Common/ModelPath/Map/Map2.js +103 -0
  75. package/distr/Common/ModelPath/Map/ModelPathMap.js +30 -0
  76. package/distr/Common/ModelPath/ModelPath.js +206 -206
  77. package/distr/Common/ModelPath/ModelPathBuilder.js +11 -40
  78. package/distr/Common/ModelPath/ModelPathHelper.js +13 -0
  79. package/distr/Common/ModelPath/PathMatcher.js +8 -37
  80. package/distr/Common/ModelPath/PathSplitHelper.js +26 -0
  81. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +40 -0
  82. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +40 -0
  83. package/distr/Common/ModelPath/Set/ModelPathSet.js +40 -0
  84. package/distr/Common/ModelPath/Set/Set2.js +60 -0
  85. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -34
  86. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +0 -4
  87. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -29
  88. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -34
  89. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -38
  90. package/distr/Common/NidusClient/INidusClient.js +1 -30
  91. package/distr/Common/NidusClient/NidusClientContext.js +1 -38
  92. package/distr/Common/NidusClient/NidusClientImpl.js +1 -34
  93. package/distr/Common/PathConstants.js +3 -31
  94. package/distr/Common/TypingUtils.js +6 -50
  95. package/distr/Common/UUID.js +1 -30
  96. package/distr/Common/UseAsyncEffect.js +1 -31
  97. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +3 -36
  98. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +1 -29
  99. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -30
  100. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +3 -36
  101. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +3 -36
  102. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -29
  103. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +3 -34
  104. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -28
  105. package/distr/Tools/src/BuildTasks/FSTask.js +3 -30
  106. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -32
  107. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +1 -37
  108. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -34
  109. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +3 -31
  110. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +1 -29
  111. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -31
  112. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +3 -36
  113. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +3 -37
  114. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +2 -37
  115. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +2 -34
  116. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +1 -5
  117. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +1 -5
  118. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +3 -33
  119. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +1 -28
  120. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +3 -30
  121. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +1 -34
  122. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +1 -45
  123. package/distr/Tools/src/BuildTasks/ReadFormSource.js +4 -39
  124. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +3 -33
  125. package/distr/Tools/src/BuildTasks/Version.js +1 -32
  126. package/distr/Tools/src/BuildTasks/WriteFormMeta.js +3 -31
  127. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +1 -30
  128. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +7 -34
  129. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +3 -33
  130. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +1 -34
  131. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +1 -29
  132. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +6 -37
  133. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +6 -47
  134. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +26 -43
  135. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +6 -40
  136. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +6 -38
  137. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +6 -37
  138. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +6 -39
  139. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +6 -37
  140. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +6 -39
  141. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +3 -36
  142. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +3 -36
  143. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +12 -37
  144. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +3 -31
  145. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +5 -35
  146. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +4 -36
  147. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +3 -31
  148. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +0 -4
  149. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +0 -4
  150. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +2 -42
  151. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +3 -36
  152. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -29
  153. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +0 -4
  154. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -30
  155. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +1 -29
  156. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +1 -29
  157. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +1 -30
  158. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +0 -4
  159. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +1 -28
  160. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +3 -31
  161. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +1 -28
  162. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +3 -31
  163. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +6 -40
  164. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}.calc.js +1 -30
  165. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/helpers/setKppValue.js +1 -29
  166. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +1 -34
  167. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +6 -37
  168. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/validations/kppValue.js +1 -29
  169. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +1 -28
  170. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -30
  171. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +1 -28
  172. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +3 -32
  173. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +1 -32
  174. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +1 -29
  175. package/distr/Tools/src/CandyCLI.js +3 -31
  176. package/distr/Tools/src/CheckNodeJsVersion.js +3 -33
  177. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +4 -35
  178. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -34
  179. package/distr/Tools/src/Commons/ErrorUntyped.js +0 -4
  180. package/distr/Tools/src/Commons/EventObject.js +2 -44
  181. package/distr/Tools/src/Commons/ExecUtils.js +1 -29
  182. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -29
  183. package/distr/Tools/src/Commons/FormGlobsUtils.js +3 -36
  184. package/distr/Tools/src/Commons/FsUtils.js +3 -34
  185. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -32
  186. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +2 -33
  187. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -34
  188. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -34
  189. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +0 -4
  190. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -34
  191. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -34
  192. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +2 -34
  193. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -34
  194. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +1 -36
  195. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -34
  196. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -34
  197. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -34
  198. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -34
  199. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +0 -4
  200. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -34
  201. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -34
  202. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +3 -57
  203. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +1 -28
  204. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +3 -36
  205. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +1 -34
  206. package/distr/Tools/src/Commons/Locks/Lock.js +3 -36
  207. package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -34
  208. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +3 -36
  209. package/distr/Tools/src/Commons/Logging/ELKLogger.js +3 -33
  210. package/distr/Tools/src/Commons/Logging/ILogger.js +1 -36
  211. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -41
  212. package/distr/Tools/src/Commons/Logging/Logger.js +3 -36
  213. package/distr/Tools/src/Commons/Logging/StaticLogger.js +1 -38
  214. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -30
  215. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +6 -53
  216. package/distr/Tools/src/Commons/PathPattern.js +1 -34
  217. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -34
  218. package/distr/Tools/src/Commons/TasksCore/BuildTask.js +0 -4
  219. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +3 -89
  220. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +3 -36
  221. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +1 -34
  222. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +3 -36
  223. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +3 -36
  224. package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -28
  225. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +1 -34
  226. package/distr/Tools/src/Commons/TimingUtils.js +1 -29
  227. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +55 -48
  228. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +8 -36
  229. package/distr/Tools/src/GenerateReadMe.js +1 -31
  230. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
  231. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  232. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  233. package/distr/Tools/src/Options/CandyToolOptions.js +1 -28
  234. package/distr/Tools/src/ReadFarmConfig.js +3 -31
  235. package/distr/Tools/src/SelfUpdate.js +4 -36
  236. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1000 -2036
  237. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  238. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +366 -361
  239. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  240. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +1 -5
  241. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1 -5
  242. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +1 -5
  243. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +1 -5
  244. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1 -5
  245. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +1 -5
  246. package/package.json +9 -8
  247. package/distr/Common/ModelPath/AbsoluteModelPathSet.js +0 -95
  248. package/distr/Common/ModelPath/ModelPathMap.js +0 -160
  249. package/distr/Common/ModelPath/ModelPathSet.js +0 -99
@@ -1,9 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
4
- return a;
5
- };
6
-
7
3
  !function (t) {
8
4
  function n(r) {
9
5
  if (e[r]) return e[r].exports;
@@ -269,4 +265,4 @@ var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoader
269
265
  }.bind(void 0));
270
266
  }).call(n, e(0));
271
267
  }]);
272
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9TdGF0aWNGaWxlc0ZvclByb2R1Y3Rpb25SZXNvdXJjZXNEaXIvdGVzdGluZy5taW4uanMiXSwibmFtZXMiOlsidCIsIm4iLCJyIiwiZSIsImV4cG9ydHMiLCJpIiwibCIsImNhbGwiLCJtIiwiYyIsImQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJvIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIkZ1bmN0aW9uIiwiZXZhbCIsIndpbmRvdyIsIlR5cGVFcnJvciIsImFzc2lnbiIsImtleXMiLCJBcnJheSIsImlzQXJyYXkiLCJTeW1ib2wiLCJpdGVyYXRvciIsInUiLCJsZW5ndGgiLCJuZXh0IiwiZG9uZSIsInZhbHVlIiwiYSIsIl9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyIsImluamVjdCIsInN1cHBvcnRzRmliZXIiLCJvbkNvbW1pdEZpYmVyUm9vdCIsInBhcmVudCIsIk1vdW50IiwiYmluZCIsIlJlY29uY2lsZXIiLCJyZWNlaXZlQ29tcG9uZW50IiwiX2N1cnJlbnRFbGVtZW50IiwiX2NvbnRleHQiLCJ0eXBlIiwiZiIsIm1vdW50Q29tcG9uZW50IiwiYXJndW1lbnRzIiwidiIsImFwcGx5IiwiY29uY2F0IiwiXyIsIm91dGVySFRNTCIsIm5vZGUiLCJKU09OIiwic3RyaW5naWZ5IiwibWFwIiwic3RhcnRzV2l0aCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImNoaWxkTm9kZXMiLCJfcm9vdE5vZGVJRCIsImdldE5vZGUiLCJuYW1lIiwic2V0QXR0cmlidXRlIiwic3BsaXQiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsIlN0cmluZyIsIl9vd25lciIsInByb3BzIiwiX2hvc3ROb2RlIiwiX3JlbmRlcmVkQ29tcG9uZW50IiwiUmVhY3RUZXN0aW5nIiwiYWRkUmVuZGVyQ29udGFpbmVyIiwicmVtb3ZlUmVuZGVyQ29udGFpbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFsdEtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImNvZGUiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInJlbW92ZSIsImNsYXNzTGlzdCIsImFkZCIsImdldEF0dHJpYnV0ZSIsImNsaXBib2FyZERhdGEiLCJzZXREYXRhIiwidGFyZ2V0IiwiaW5uZXJUZXh0IiwicHJldmVudERlZmF1bHQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZXhlY0NvbW1hbmQiLCJhcHBlbmRDaGlsZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztBQUVBLENBQUMsVUFBVUEsQ0FBVixFQUFhO0FBQ1osV0FBU0MsQ0FBVCxDQUFXQyxDQUFYLEVBQWM7QUFDWixRQUFJQyxDQUFDLENBQUNELENBQUQsQ0FBTCxFQUFVLE9BQU9DLENBQUMsQ0FBQ0QsQ0FBRCxDQUFELENBQUtFLE9BQVo7QUFDVixRQUFJQyxDQUFDLEdBQUdGLENBQUMsQ0FBQ0QsQ0FBRCxDQUFELEdBQU87QUFDYkcsTUFBQUEsQ0FBQyxFQUFFSCxDQURVO0FBRWJJLE1BQUFBLENBQUMsRUFBRSxDQUFDLENBRlM7QUFHYkYsTUFBQUEsT0FBTyxFQUFFO0FBSEksS0FBZjtBQUtBLFdBQU9KLENBQUMsQ0FBQ0UsQ0FBRCxDQUFELENBQUtLLElBQUwsQ0FBVUYsQ0FBQyxDQUFDRCxPQUFaLEVBQXFCQyxDQUFyQixFQUF3QkEsQ0FBQyxDQUFDRCxPQUExQixFQUFtQ0gsQ0FBbkMsR0FBdUNJLENBQUMsQ0FBQ0MsQ0FBRixHQUFNLENBQUMsQ0FBOUMsRUFBaURELENBQUMsQ0FBQ0QsT0FBMUQ7QUFDRDs7QUFFRCxNQUFJRCxDQUFDLEdBQUcsRUFBUjtBQUNBLFNBQU9GLENBQUMsQ0FBQ08sQ0FBRixHQUFNUixDQUFOLEVBQVNDLENBQUMsQ0FBQ1EsQ0FBRixHQUFNTixDQUFmLEVBQWtCRixDQUFDLENBQUNJLENBQUYsR0FBTSxVQUFVTCxDQUFWLEVBQWE7QUFDMUMsV0FBT0EsQ0FBUDtB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LEdBQXNDMkQsUUFBUSxDQUFDb0MsV0FBVCxDQUFxQixNQUFyQixDQUF0QztBQUNELFNBUjBJLENBUXpJdkQsSUFSeUksQ0FRcEksS0FBSyxDQVIrSCxDQUE1QixDQUEvRyxFQVFpQjNDLENBQUMsQ0FBQ21HLFdBQUYsQ0FBY2hHLENBQWQsQ0FSakI7QUFTRCxPQVpxRSxDQVlwRXdDLElBWm9FLENBWS9ELEtBQUssQ0FaMEQsQ0FBckQsQ0FGRSxDQUpuQjtBQW1CRCxLQXBCNkMsQ0FvQjVDQSxJQXBCNEMsQ0FvQnZDLEtBQUssQ0FwQmtDLENBQXJDLENBWFQ7QUFnQ0QsR0E5TkQsRUE4TkdwQyxJQTlOSCxDQThOUU4sQ0E5TlIsRUE4TldFLENBQUMsQ0FBQyxDQUFELENBOU5aO0FBK05ELENBaFBDLENBdkJELENBQUQiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuIWZ1bmN0aW9uICh0KSB7XG4gIGZ1bmN0aW9uIG4ocikge1xuICAgIGlmIChlW3JdKSByZXR1cm4gZVtyXS5leHBvcnRzO1xuICAgIHZhciBpID0gZVtyXSA9IHtcbiAgICAgIGk6IHIsXG4gICAgICBsOiAhMSxcbiAgICAgIGV4cG9ydHM6IHt9XG4gICAgfTtcbiAgICByZXR1cm4gdFtyXS5jYWxsKGkuZXhwb3J0cywgaSwgaS5leHBvcnRzLCBuKSwgaS5sID0gITAsIGkuZXhwb3J0cztcbiAgfVxuXG4gIHZhciBlID0ge307XG4gIHJldHVybiBuLm0gPSB0LCBuLmMgPSBlLCBuLmkgPSBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0O1xuICB9LCBuLmQgPSBmdW5jdGlvbiAodCwgbiwgZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBuLCB7XG4gICAgICBjb25maWd1cmFibGU6ICExLFxuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGVcbiAgICB9KTtcbiAgfSwgbi5vID0gZnVuY3Rpb24gKHQsIG4pIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIG4pO1xuICB9LCBuLnAgPSBcIlwiLCBuKG4ucyA9IDEpO1xufShbZnVuY3Rpb24gKHQsIG4pIHtcbiAgdmFyIGU7XG5cbiAgZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSgpO1xuXG4gIHRyeSB7XG4gICAgZSA9IGUgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpIHx8ICgwLCBldmFsKShcInRoaXNcIik7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICBcIm9iamVjdFwiID09IHR5cGVvZiB3aW5kb3cgJiYgKGUgPSB3aW5kb3cpO1xuICB9XG5cbiAgdC5leHBvcnRzID0gZTtcbn0sIGZ1bmN0aW9uICh0LCBuLCBlKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIChmdW5jdGlvbiAodCkge1xuICAgIGZ1bmN0aW9uIG4odCwgbikge1xuICAgICAgaWYgKHQgIT09IG4pIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgaW5zdGFudGlhdGUgYW4gYXJyb3cgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZSh0LCBuKSB7XG4gICAgICBmb3IgKHZhciBlID0gT2JqZWN0LmFzc2lnbih7fSwgdCksIHIgPSBPYmplY3Qua2V5cyhuKSwgaSA9IEFycmF5LmlzQXJyYXkociksIG8gPSAwLCByID0gaSA/IHIgOiByW1N5bWJvbC5pdGVyYXRvcl0oKTs7KSB7XG4gICAgICAgIHZhciB1O1xuXG4gICAgICAgIGlmIChpKSB7XG4gICAgICAgICAgaWYgKG8gPj0gci5sZW5ndGgpIGJyZWFrO1xuICAgICAgICAgIHUgPSByW28rK107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG8gPSByLm5leHQoKSwgby5kb25lKSBicmVhaztcbiAgICAgICAgICB1ID0gby52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhID0gdTtcbiAgICAgICAgdFthXSA9IG5bYV0oZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICB2YXIgciA9IHRoaXM7XG4gICAgICBcbiAgICAgIGlmICghdC5fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pIHtcbiAgICAgICAgdC5fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPSB7XG4gICAgICAgICAgICBpbmplY3Q6ICgpID0+IHt9LFxuICAgICAgICAgICAgc3VwcG9ydHNGaWJlcjogdHJ1ZSxcbiAgICAgICAgICAgIG9uQ29tbWl0RmliZXJSb290OiAoKSA9PiB7fSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHQuX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID0gdC5wYXJlbnQuX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgaWYgKHQuX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKSB7XG4gICAgICAgIHZhciBpID0gdC5fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0O1xuXG4gICAgICAgIHQuX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgbih0aGlzLCByKTtcbiAgICAgICAgICB0Lk1vdW50O1xuICAgICAgICAgIGkgJiYgaSh0KSwgZSh0KTtcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGkodCkge1xuICAgICAgdmFyIHIgPSB0aGlzLFxuICAgICAgICAgIGkgPSB0Lk1vdW50LFxuICAgICAgICAgIG8gPSB0LlJlY29uY2lsZXIsXG4gICAgICAgICAgYyA9IGk7XG4gICAgICBlKG8sIHtcbiAgICAgICAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGZ1bmN0aW9uIHQodCkge1xuICAgICAgICAgICAgcmV0dXJuIG4odGhpcywgciksIGZ1bmN0aW9uIChlLCBpLCBvLCB1KSB7XG4gICAgICAgICAgICAgIG4odGhpcywgciksIHQucmVjZWl2ZUNvbXBvbmVudChlLCBpLCBvLCB1KTtcbiAgICAgICAgICAgICAgdmFyIGQgPSBlLl9jdXJyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgICBpZiAoKGkgIT09IGQgfHwgdSAhPT0gZS5fY29udGV4dCkgJiYgZS5fY3VycmVudEVsZW1lbnQgJiYgZS5fY3VycmVudEVsZW1lbnQudHlwZSkge1xuICAgICAgICAgICAgICAgIHZhciBzID0gYShlLCBjKTtcbiAgICAgICAgICAgICAgICBmKHMsIGUsICExKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0O1xuICAgICAgICB9KCkuYmluZCh0aGlzKSxcbiAgICAgICAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBmdW5jdGlvbiB0KHQpIHtcbiAgICAgICAgICAgIHJldHVybiBuKHRoaXMsIHIpLCBmdW5jdGlvbiAoZSwgaSwgbywgYSwgYywgZCkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBzID0gYXJndW1lbnRzLmxlbmd0aCwgbCA9IEFycmF5KHMgPiA2ID8gcyAtIDYgOiAwKSwgdiA9IDY7IHYgPCBzOyB2KyspIGxbdiAtIDZdID0gYXJndW1lbnRzW3ZdO1xuXG4gICAgICAgICAgICAgIG4odGhpcywgcik7XG4gICAgICAgICAgICAgIHZhciBwID0gdC5tb3VudENvbXBvbmVudC5hcHBseSh0LCBbZSwgaSwgbywgYSwgYywgZF0uY29uY2F0KGwpKTtcblxuICAgICAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcCkge1xuICAgICAgICAgICAgICAgIHZhciBfID0gdShwKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfID8gKGYoXywgZSwgITApLCBfLm91dGVySFRNTCkgOiBwO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHAubm9kZSAmJiBmKHAubm9kZSwgZSwgITApLCBwO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0O1xuICAgICAgICB9KCkuYmluZCh0aGlzKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbyh0KSB7XG4gICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCkgcmV0dXJuIHQ7XG4gICAgICBpZiAodm9pZCAwID09PSB0IHx8IG51bGwgPT09IHQpIHJldHVybiBcIlwiO1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodCk7XG4gICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkgJiYgdC5sZW5ndGggPiAwICYmIEFycmF5LmlzQXJyYXkodFswXSkpIHJldHVybiBKU09OLnN0cmluZ2lmeSh0Lm1hcChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgcmV0dXJuIG4odGhpcywgZSksIHRbMF07XG4gICAgICAgICAgfS5iaW5kKHRoaXMpKSk7XG4gICAgICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHUodCkge1xuICAgICAgdmFyIG4gPSB2b2lkIDA7XG4gICAgICByZXR1cm4gbiA9IHQuc3RhcnRzV2l0aChcIjx0Ym9keVwiKSB8fCB0LnN0YXJ0c1dpdGgoXCI8dGZvb3RcIikgfHwgdC5zdGFydHNXaXRoKFwiPHRoZWFkXCIpID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRhYmxlXCIpIDogdC5zdGFydHNXaXRoKFwiPHRoXCIpIHx8IHQuc3RhcnRzV2l0aChcIjx0ZFwiKSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0clwiKSA6IHQuc3RhcnRzV2l0aChcIjx0clwiKSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0aGVhZFwiKSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksIG4uaW5uZXJIVE1MID0gdCwgbi5jaGlsZE5vZGVzWzBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGEodCwgbikge1xuICAgICAgdmFyIGUgPSBfKHQpO1xuXG4gICAgICBpZiAoIWUgJiYgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdC5fcm9vdE5vZGVJRCkgdHJ5IHtcbiAgICAgICAgZSA9IG4uZ2V0Tm9kZSh0Ll9yb290Tm9kZUlEKTtcbiAgICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjKHQpIHtcbiAgICAgIHJldHVybiB0Ll9jdXJyZW50RWxlbWVudCAmJiB0Ll9jdXJyZW50RWxlbWVudC50eXBlID8gdC5fY3VycmVudEVsZW1lbnQudHlwZS5uYW1lIDogbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkKHQsIG4sIGUpIHtcbiAgICAgIHJldHVybiAhbi5zdGFydHNXaXRoKFwiJCRcIikgJiYgIW4uc3RhcnRzV2l0aChcIm9uXCIpICYmIFwiY2hpbGRyZW5cIiAhPT0gbiAmJiBcImRhdGEtdGlkLWF1dG9cIiAhPT0gbiAmJiBcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZih0LCBuLCBlKSB7XG4gICAgICBpZiAodCAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHQuc2V0QXR0cmlidXRlKSB7XG4gICAgICAgIHZhciByID0gbCh7fSwgbik7XG5cbiAgICAgICAgZm9yICh2YXIgaSBpbiByKSB0LnNldEF0dHJpYnV0ZShpLCByW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzKHQsIGUsIHIpIHtcbiAgICAgIHZhciBpID0gdGhpcztcblxuICAgICAgaWYgKG51bGwgIT09IHIpIHtcbiAgICAgICAgdmFyIG8gPSB0W2VdLFxuICAgICAgICAgICAgdSA9IChvIHx8IFwiXCIpLnNwbGl0KFwiIFwiKS5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICByZXR1cm4gbih0aGlzLCBpKSwgXCJcIiAhPT0gdDtcbiAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdS5pbmNsdWRlcyhyKSB8fCAodFtlXSA9IChvID8gU3RyaW5nKG8pICsgXCIgXCIgOiBcIlwiKSArIHIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGwodCwgbikge1xuICAgICAgdCA9IHYodCwgbik7XG4gICAgICB2YXIgZSA9IG4uX2N1cnJlbnRFbGVtZW50ICYmIG4uX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgIHJldHVybiBlICYmIHAoZSwgbikgJiYgKHQgPSBsKHQsIGUpKSwgdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2KHQsIG4pIHtcbiAgICAgIHZhciBlID0gbi5fY3VycmVudEVsZW1lbnQgJiYgbi5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAgIGlmIChjKG4pICYmIHModCwgXCJkYXRhLWNvbXAtbmFtZVwiLCBjKG4pKSwgZSkge1xuICAgICAgICBlW1wiZGF0YS10aWQtYXV0b1wiXSAmJiBzKHQsIFwiZGF0YS10aWQtYXV0b1wiLCBlW1wiZGF0YS10aWQtYXV0b1wiXSk7XG5cbiAgICAgICAgZm9yICh2YXIgciBpbiBlKSBkKG4sIHIsIGVbcl0pICYmICh0W1wiZGF0YS1wcm9wLVwiICsgcl0gPSBvKGVbcl0pKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcCh0LCBuKSB7XG4gICAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgdC5fcm9vdE5vZGVJRCB8fCBcInN0cmluZ1wiID09IHR5cGVvZiBuLl9yb290Tm9kZUlEKSB7XG4gICAgICAgIHZhciBlID0gdC5fcm9vdE5vZGVJRCxcbiAgICAgICAgICAgIHIgPSBuLl9yb290Tm9kZUlEO1xuICAgICAgICBpZiAobnVsbCAhPT0gZSAmJiBudWxsICE9PSByKSByZXR1cm4gZSA9PT0gcjtcbiAgICAgIH1cblxuICAgICAgdmFyIGkgPSBfKHQpLFxuICAgICAgICAgIG8gPSBfKG4pO1xuXG4gICAgICByZXR1cm4gbnVsbCAhPT0gaSAmJiBudWxsICE9PSBvICYmIGkgPT09IG87XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gXyh0KSB7XG4gICAgICByZXR1cm4gdC5faG9zdE5vZGUgPyB0Ll9ob3N0Tm9kZSA6IHQuX3JlbmRlcmVkQ29tcG9uZW50ID8gXyh0Ll9yZW5kZXJlZENvbXBvbmVudCkgOiBudWxsO1xuICAgIH1cblxuICAgIHQuUmVhY3RUZXN0aW5nID0ge1xuICAgICAgYWRkUmVuZGVyQ29udGFpbmVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIHQoKSB7fVxuXG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfSgpLFxuICAgICAgcmVtb3ZlUmVuZGVyQ29udGFpbmVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIHQoKSB7fVxuXG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfSgpXG4gICAgfSwgcihpKSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgIG4odm9pZCAwLCB2b2lkIDApLCB0LmFsdEtleSAmJiB0LmN0cmxLZXkgJiYgdC5zaGlmdEtleSAmJiBcIktleUhcIiA9PSB0LmNvZGUgPyAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi50aWQtd3JhcHBlclwiKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiBuKHZvaWQgMCwgdm9pZCAwKSwgdC5yZW1vdmUoKTtcbiAgICAgIH0uYmluZCh2b2lkIDApKSwgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLXRpZC1hdXRvXVwiKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiBuKHZvaWQgMCwgdm9pZCAwKSwgdC5jbGFzc0xpc3QucmVtb3ZlKFwid2l0aC10aWQtd3JhcHBlclwiKTtcbiAgICAgIH0uYmluZCh2b2lkIDApKSkgOiB0LmFsdEtleSAmJiB0LmN0cmxLZXkgJiYgXCJLZXlIXCIgPT0gdC5jb2RlICYmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnRpZC13cmFwcGVyXCIpLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIG4odm9pZCAwLCB2b2lkIDApLCB0LnJlbW92ZSgpO1xuICAgICAgfS5iaW5kKHZvaWQgMCkpLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGlkLWF1dG9dXCIpLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgbih2b2lkIDAsIHZvaWQgMCksIHQuY2xhc3NMaXN0LmFkZChcIndpdGgtdGlkLXdyYXBwZXJcIik7XG4gICAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgZS5jbGFzc0xpc3QuYWRkKFwidGlkLXdyYXBwZXJcIiksIGUuaW5uZXJIVE1MID0gXCI8ZGl2PjxkaXY+XCIgKyB0LmdldEF0dHJpYnV0ZShcImRhdGEtdGlkLWF1dG9cIikgKyBcIjwvZGl2PjwvZGl2PlwiLCBlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgIG4odm9pZCAwLCB2b2lkIDApO1xuXG4gICAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgbih2b2lkIDAsIHZvaWQgMCksIHIuY2xpcGJvYXJkRGF0YS5zZXREYXRhKFwidGV4dC9wbGFpblwiLCB0LnRhcmdldC5pbm5lclRleHQpLCByLnByZXZlbnREZWZhdWx0KCksIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb3B5XCIsIGUpO1xuICAgICAgICAgIH0uYmluZCh2b2lkIDApO1xuXG4gICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvcHlcIiwgZSksIGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcbiAgICAgICAgfS5iaW5kKHZvaWQgMCkpLCB0LmFwcGVuZENoaWxkKGUpO1xuICAgICAgfS5iaW5kKHZvaWQgMCkpKTtcbiAgICB9LmJpbmQodm9pZCAwKSk7XG4gIH0pLmNhbGwobiwgZSgwKSk7XG59XSk7Il19
268
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9TdGF0aWNGaWxlc0ZvclByb2R1Y3Rpb25SZXNvdXJjZXNEaXIvdGVzdGluZy5taW4uanMiXSwibmFtZXMiOlsidCIsIm4iLCJyIiwiZSIsImV4cG9ydHMiLCJpIiwibCIsImNhbGwiLCJtIiwiYyIsImQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJvIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIkZ1bmN0aW9uIiwiZXZhbCIsIndpbmRvdyIsIlR5cGVFcnJvciIsImFzc2lnbiIsImtleXMiLCJBcnJheSIsImlzQXJyYXkiLCJTeW1ib2wiLCJpdGVyYXRvciIsInUiLCJsZW5ndGgiLCJuZXh0IiwiZG9uZSIsInZhbHVlIiwiYSIsIl9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyIsImluamVjdCIsInN1cHBvcnRzRmliZXIiLCJvbkNvbW1pdEZpYmVyUm9vdCIsInBhcmVudCIsIk1vdW50IiwiYmluZCIsIlJlY29uY2lsZXIiLCJyZWNlaXZlQ29tcG9uZW50IiwiX2N1cnJlbnRFbGVtZW50IiwiX2NvbnRleHQiLCJ0eXBlIiwiZiIsIm1vdW50Q29tcG9uZW50IiwiYXJndW1lbnRzIiwidiIsImFwcGx5IiwiY29uY2F0IiwiXyIsIm91dGVySFRNTCIsIm5vZGUiLCJKU09OIiwic3RyaW5naWZ5IiwibWFwIiwic3RhcnRzV2l0aCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImNoaWxkTm9kZXMiLCJfcm9vdE5vZGVJRCIsImdldE5vZGUiLCJuYW1lIiwic2V0QXR0cmlidXRlIiwic3BsaXQiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsIlN0cmluZyIsIl9vd25lciIsInByb3BzIiwiX2hvc3ROb2RlIiwiX3JlbmRlcmVkQ29tcG9uZW50IiwiUmVhY3RUZXN0aW5nIiwiYWRkUmVuZGVyQ29udGFpbmVyIiwicmVtb3ZlUmVuZGVyQ29udGFpbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFsdEtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImNvZGUiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInJlbW92ZSIsImNsYXNzTGlzdCIsImFkZCIsImdldEF0dHJpYnV0ZSIsImNsaXBib2FyZERhdGEiLCJzZXREYXRhIiwidGFyZ2V0IiwiaW5uZXJUZXh0IiwicHJldmVudERlZmF1bHQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZXhlY0NvbW1hbmQiLCJhcHBlbmRDaGlsZCJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsQ0FBQyxVQUFVQSxDQUFWLEVBQWE7QUFDWixXQUFTQyxDQUFULENBQVdDLENBQVgsRUFBYztBQUNaLFFBQUlDLENBQUMsQ0FBQ0QsQ0FBRCxDQUFMLEVBQVUsT0FBT0MsQ0FBQyxDQUFDRCxDQUFELENBQUQsQ0FBS0UsT0FBWjtBQUNWLFFBQUlDLENBQUMsR0FBR0YsQ0FBQyxDQUFDRCxDQUFELENBQUQsR0FBTztBQUNiRyxNQUFBQSxDQUFDLEVBQUVILENBRFU7QUFFYkksTUFBQUEsQ0FBQyxFQUFFLENBQUMsQ0FGUztBQUdiRixNQUFBQSxPQUFPLEVBQUU7QUFISSxLQUFmO0FBS0EsV0FBT0osQ0FBQyxDQUFDRSxDQUFELENBQUQsQ0FBS0ssSUFBTCxDQUFVRixDQUFDLENBQUNELE9BQVosRUFBcUJDLENBQXJCLEVBQXdCQSxDQUFDLENBQUNELE9BQTFCLEVBQW1DSCxDQUFuQyxHQUF1Q0ksQ0FBQyxDQUFDQyxDQUFGLEdBQU0sQ0FBQyxDQUE5QyxFQUFpREQsQ0FBQyxDQUFDRCxPQUExRDtBQUNEOztBQUVELE1BQUlELENBQUMsR0FBRyxFQUFSO0FBQ0EsU0FBT0YsQ0FBQyxDQUFDTyxDQUFGLEdBQU1SLENBQU4sRUFBU0MsQ0FBQyxDQUFDUSxDQUFGLEdBQU1OLENBQWYsRUFBa0JGLENBQUMsQ0FBQ0ksQ0FBRixHQUFNLFVBQVVMLENBQVYsRUFBYTtBQUMxQyxXQUFPQSxDQUFQO0FBQ0Qs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c0MyRCxRQUFRLENBQUNvQyxXQUFULENBQXFCLE1BQXJCLENBQXRDO0FBQ0QsU0FSMEksQ0FRekl2RCxJQVJ5SSxDQVFwSSxLQUFLLENBUitILENBQTVCLENBQS9HLEVBUWlCM0MsQ0FBQyxDQUFDbUcsV0FBRixDQUFjaEcsQ0FBZCxDQVJqQjtBQVNELE9BWnFFLENBWXBFd0MsSUFab0UsQ0FZL0QsS0FBSyxDQVowRCxDQUFyRCxDQUZFLENBSm5CO0FBbUJELEtBcEI2QyxDQW9CNUNBLElBcEI0QyxDQW9CdkMsS0FBSyxDQXBCa0MsQ0FBckMsQ0FYVDtBQWdDRCxHQTlORCxFQThOR3BDLElBOU5ILENBOE5RTixDQTlOUixFQThOV0UsQ0FBQyxDQUFDLENBQUQsQ0E5Tlo7QUErTkQsQ0FoUEMsQ0F2QkQsQ0FBRCIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG4hZnVuY3Rpb24gKHQpIHtcbiAgZnVuY3Rpb24gbihyKSB7XG4gICAgaWYgKGVbcl0pIHJldHVybiBlW3JdLmV4cG9ydHM7XG4gICAgdmFyIGkgPSBlW3JdID0ge1xuICAgICAgaTogcixcbiAgICAgIGw6ICExLFxuICAgICAgZXhwb3J0czoge31cbiAgICB9O1xuICAgIHJldHVybiB0W3JdLmNhbGwoaS5leHBvcnRzLCBpLCBpLmV4cG9ydHMsIG4pLCBpLmwgPSAhMCwgaS5leHBvcnRzO1xuICB9XG5cbiAgdmFyIGUgPSB7fTtcbiAgcmV0dXJuIG4ubSA9IHQsIG4uYyA9IGUsIG4uaSA9IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQ7XG4gIH0sIG4uZCA9IGZ1bmN0aW9uICh0LCBuLCBlKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIG4sIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZVxuICAgIH0pO1xuICB9LCBuLm8gPSBmdW5jdGlvbiAodCwgbikge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgbik7XG4gIH0sIG4ucCA9IFwiXCIsIG4obi5zID0gMSk7XG59KFtmdW5jdGlvbiAodCwgbikge1xuICB2YXIgZTtcblxuICBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KCk7XG5cbiAgdHJ5IHtcbiAgICBlID0gZSB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkgfHwgKDAsIGV2YWwpKFwidGhpc1wiKTtcbiAgfSBjYXRjaCAocikge1xuICAgIFwib2JqZWN0XCIgPT0gdHlwZW9mIHdpbmRvdyAmJiAoZSA9IHdpbmRvdyk7XG4gIH1cblxuICB0LmV4cG9ydHMgPSBlO1xufSwgZnVuY3Rpb24gKHQsIG4sIGUpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgKGZ1bmN0aW9uICh0KSB7XG4gICAgZnVuY3Rpb24gbih0LCBuKSB7XG4gICAgICBpZiAodCAhPT0gbikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBpbnN0YW50aWF0ZSBhbiBhcnJvdyBmdW5jdGlvblwiKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlKHQsIG4pIHtcbiAgICAgIGZvciAodmFyIGUgPSBPYmplY3QuYXNzaWduKHt9LCB0KSwgciA9IE9iamVjdC5rZXlzKG4pLCBpID0gQXJyYXkuaXNBcnJheShyKSwgbyA9IDAsIHIgPSBpID8gciA6IHJbU3ltYm9sLml0ZXJhdG9yXSgpOzspIHtcbiAgICAgICAgdmFyIHU7XG5cbiAgICAgICAgaWYgKGkpIHtcbiAgICAgICAgICBpZiAobyA+PSByLmxlbmd0aCkgYnJlYWs7XG4gICAgICAgICAgdSA9IHJbbysrXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobyA9IHIubmV4dCgpLCBvLmRvbmUpIGJyZWFrO1xuICAgICAgICAgIHUgPSBvLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGEgPSB1O1xuICAgICAgICB0W2FdID0gblthXShlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByKGUpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIFxuICAgICAgaWYgKCF0Ll9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXykge1xuICAgICAgICB0Ll9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9IHtcbiAgICAgICAgICAgIGluamVjdDogKCkgPT4ge30sXG4gICAgICAgICAgICBzdXBwb3J0c0ZpYmVyOiB0cnVlLFxuICAgICAgICAgICAgb25Db21taXRGaWJlclJvb3Q6ICgpID0+IHt9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgdC5fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPSB0LnBhcmVudC5fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG4gICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICBpZiAodC5fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pIHtcbiAgICAgICAgdmFyIGkgPSB0Ll9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Q7XG5cbiAgICAgICAgdC5fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0ID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBuKHRoaXMsIHIpO1xuICAgICAgICAgIHQuTW91bnQ7XG4gICAgICAgICAgaSAmJiBpKHQpLCBlKHQpO1xuICAgICAgICB9LmJpbmQodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaSh0KSB7XG4gICAgICB2YXIgciA9IHRoaXMsXG4gICAgICAgICAgaSA9IHQuTW91bnQsXG4gICAgICAgICAgbyA9IHQuUmVjb25jaWxlcixcbiAgICAgICAgICBjID0gaTtcbiAgICAgIGUobywge1xuICAgICAgICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZnVuY3Rpb24gdCh0KSB7XG4gICAgICAgICAgICByZXR1cm4gbih0aGlzLCByKSwgZnVuY3Rpb24gKGUsIGksIG8sIHUpIHtcbiAgICAgICAgICAgICAgbih0aGlzLCByKSwgdC5yZWNlaXZlQ29tcG9uZW50KGUsIGksIG8sIHUpO1xuICAgICAgICAgICAgICB2YXIgZCA9IGUuX2N1cnJlbnRFbGVtZW50O1xuXG4gICAgICAgICAgICAgIGlmICgoaSAhPT0gZCB8fCB1ICE9PSBlLl9jb250ZXh0KSAmJiBlLl9jdXJyZW50RWxlbWVudCAmJiBlLl9jdXJyZW50RWxlbWVudC50eXBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHMgPSBhKGUsIGMpO1xuICAgICAgICAgICAgICAgIGYocywgZSwgITEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LmJpbmQodGhpcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgIH0oKS5iaW5kKHRoaXMpLFxuICAgICAgICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGZ1bmN0aW9uIHQodCkge1xuICAgICAgICAgICAgcmV0dXJuIG4odGhpcywgciksIGZ1bmN0aW9uIChlLCBpLCBvLCBhLCBjLCBkKSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIHMgPSBhcmd1bWVudHMubGVuZ3RoLCBsID0gQXJyYXkocyA+IDYgPyBzIC0gNiA6IDApLCB2ID0gNjsgdiA8IHM7IHYrKykgbFt2IC0gNl0gPSBhcmd1bWVudHNbdl07XG5cbiAgICAgICAgICAgICAgbih0aGlzLCByKTtcbiAgICAgICAgICAgICAgdmFyIHAgPSB0Lm1vdW50Q29tcG9uZW50LmFwcGx5KHQsIFtlLCBpLCBvLCBhLCBjLCBkXS5jb25jYXQobCkpO1xuXG4gICAgICAgICAgICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiBwKSB7XG4gICAgICAgICAgICAgICAgdmFyIF8gPSB1KHApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF8gPyAoZihfLCBlLCAhMCksIF8ub3V0ZXJIVE1MKSA6IHA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gcC5ub2RlICYmIGYocC5ub2RlLCBlLCAhMCksIHA7XG4gICAgICAgICAgICB9LmJpbmQodGhpcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgIH0oKS5iaW5kKHRoaXMpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvKHQpIHtcbiAgICAgIHZhciBlID0gdGhpcztcbiAgICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiB0KSByZXR1cm4gdDtcbiAgICAgIGlmICh2b2lkIDAgPT09IHQgfHwgbnVsbCA9PT0gdCkgcmV0dXJuIFwiXCI7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0KTtcbiAgICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0KSAmJiB0Lmxlbmd0aCA+IDAgJiYgQXJyYXkuaXNBcnJheSh0WzBdKSkgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gbih0aGlzLCBlKSwgdFswXTtcbiAgICAgICAgICB9LmJpbmQodGhpcykpKTtcbiAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdSh0KSB7XG4gICAgICB2YXIgbiA9IHZvaWQgMDtcbiAgICAgIHJldHVybiBuID0gdC5zdGFydHNXaXRoKFwiPHRib2R5XCIpIHx8IHQuc3RhcnRzV2l0aChcIjx0Zm9vdFwiKSB8fCB0LnN0YXJ0c1dpdGgoXCI8dGhlYWRcIikgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGFibGVcIikgOiB0LnN0YXJ0c1dpdGgoXCI8dGhcIikgfHwgdC5zdGFydHNXaXRoKFwiPHRkXCIpID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRyXCIpIDogdC5zdGFydHNXaXRoKFwiPHRyXCIpID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRoZWFkXCIpIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSwgbi5pbm5lckhUTUwgPSB0LCBuLmNoaWxkTm9kZXNbMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYSh0LCBuKSB7XG4gICAgICB2YXIgZSA9IF8odCk7XG5cbiAgICAgIGlmICghZSAmJiBcInN0cmluZ1wiID09IHR5cGVvZiB0Ll9yb290Tm9kZUlEKSB0cnkge1xuICAgICAgICBlID0gbi5nZXROb2RlKHQuX3Jvb3ROb2RlSUQpO1xuICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGModCkge1xuICAgICAgcmV0dXJuIHQuX2N1cnJlbnRFbGVtZW50ICYmIHQuX2N1cnJlbnRFbGVtZW50LnR5cGUgPyB0Ll9jdXJyZW50RWxlbWVudC50eXBlLm5hbWUgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGQodCwgbiwgZSkge1xuICAgICAgcmV0dXJuICFuLnN0YXJ0c1dpdGgoXCIkJFwiKSAmJiAhbi5zdGFydHNXaXRoKFwib25cIikgJiYgXCJjaGlsZHJlblwiICE9PSBuICYmIFwiZGF0YS10aWQtYXV0b1wiICE9PSBuICYmIFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmKHQsIG4sIGUpIHtcbiAgICAgIGlmICh0ICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdC5zZXRBdHRyaWJ1dGUpIHtcbiAgICAgICAgdmFyIHIgPSBsKHt9LCBuKTtcblxuICAgICAgICBmb3IgKHZhciBpIGluIHIpIHQuc2V0QXR0cmlidXRlKGksIHJbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHModCwgZSwgcikge1xuICAgICAgdmFyIGkgPSB0aGlzO1xuXG4gICAgICBpZiAobnVsbCAhPT0gcikge1xuICAgICAgICB2YXIgbyA9IHRbZV0sXG4gICAgICAgICAgICB1ID0gKG8gfHwgXCJcIikuc3BsaXQoXCIgXCIpLmZpbHRlcihmdW5jdGlvbiAodCkge1xuICAgICAgICAgIHJldHVybiBuKHRoaXMsIGkpLCBcIlwiICE9PSB0O1xuICAgICAgICB9LmJpbmQodGhpcykpO1xuICAgICAgICB1LmluY2x1ZGVzKHIpIHx8ICh0W2VdID0gKG8gPyBTdHJpbmcobykgKyBcIiBcIiA6IFwiXCIpICsgcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbCh0LCBuKSB7XG4gICAgICB0ID0gdih0LCBuKTtcbiAgICAgIHZhciBlID0gbi5fY3VycmVudEVsZW1lbnQgJiYgbi5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgcmV0dXJuIGUgJiYgcChlLCBuKSAmJiAodCA9IGwodCwgZSkpLCB0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHYodCwgbikge1xuICAgICAgdmFyIGUgPSBuLl9jdXJyZW50RWxlbWVudCAmJiBuLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgICAgaWYgKGMobikgJiYgcyh0LCBcImRhdGEtY29tcC1uYW1lXCIsIGMobikpLCBlKSB7XG4gICAgICAgIGVbXCJkYXRhLXRpZC1hdXRvXCJdICYmIHModCwgXCJkYXRhLXRpZC1hdXRvXCIsIGVbXCJkYXRhLXRpZC1hdXRvXCJdKTtcblxuICAgICAgICBmb3IgKHZhciByIGluIGUpIGQobiwgciwgZVtyXSkgJiYgKHRbXCJkYXRhLXByb3AtXCIgKyByXSA9IG8oZVtyXSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwKHQsIG4pIHtcbiAgICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiB0Ll9yb290Tm9kZUlEIHx8IFwic3RyaW5nXCIgPT0gdHlwZW9mIG4uX3Jvb3ROb2RlSUQpIHtcbiAgICAgICAgdmFyIGUgPSB0Ll9yb290Tm9kZUlELFxuICAgICAgICAgICAgciA9IG4uX3Jvb3ROb2RlSUQ7XG4gICAgICAgIGlmIChudWxsICE9PSBlICYmIG51bGwgIT09IHIpIHJldHVybiBlID09PSByO1xuICAgICAgfVxuXG4gICAgICB2YXIgaSA9IF8odCksXG4gICAgICAgICAgbyA9IF8obik7XG5cbiAgICAgIHJldHVybiBudWxsICE9PSBpICYmIG51bGwgIT09IG8gJiYgaSA9PT0gbztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfKHQpIHtcbiAgICAgIHJldHVybiB0Ll9ob3N0Tm9kZSA/IHQuX2hvc3ROb2RlIDogdC5fcmVuZGVyZWRDb21wb25lbnQgPyBfKHQuX3JlbmRlcmVkQ29tcG9uZW50KSA6IG51bGw7XG4gICAgfVxuXG4gICAgdC5SZWFjdFRlc3RpbmcgPSB7XG4gICAgICBhZGRSZW5kZXJDb250YWluZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZnVuY3Rpb24gdCgpIHt9XG5cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9KCksXG4gICAgICByZW1vdmVSZW5kZXJDb250YWluZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZnVuY3Rpb24gdCgpIHt9XG5cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9KClcbiAgICB9LCByKGkpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbiAodCkge1xuICAgICAgbih2b2lkIDAsIHZvaWQgMCksIHQuYWx0S2V5ICYmIHQuY3RybEtleSAmJiB0LnNoaWZ0S2V5ICYmIFwiS2V5SFwiID09IHQuY29kZSA/IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnRpZC13cmFwcGVyXCIpLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIG4odm9pZCAwLCB2b2lkIDApLCB0LnJlbW92ZSgpO1xuICAgICAgfS5iaW5kKHZvaWQgMCkpLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGlkLWF1dG9dXCIpLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIG4odm9pZCAwLCB2b2lkIDApLCB0LmNsYXNzTGlzdC5yZW1vdmUoXCJ3aXRoLXRpZC13cmFwcGVyXCIpO1xuICAgICAgfS5iaW5kKHZvaWQgMCkpKSA6IHQuYWx0S2V5ICYmIHQuY3RybEtleSAmJiBcIktleUhcIiA9PSB0LmNvZGUgJiYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudGlkLXdyYXBwZXJcIikuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gbih2b2lkIDAsIHZvaWQgMCksIHQucmVtb3ZlKCk7XG4gICAgICB9LmJpbmQodm9pZCAwKSksIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS10aWQtYXV0b11cIikuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICBuKHZvaWQgMCwgdm9pZCAwKSwgdC5jbGFzc0xpc3QuYWRkKFwid2l0aC10aWQtd3JhcHBlclwiKTtcbiAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBlLmNsYXNzTGlzdC5hZGQoXCJ0aWQtd3JhcHBlclwiKSwgZS5pbm5lckhUTUwgPSBcIjxkaXY+PGRpdj5cIiArIHQuZ2V0QXR0cmlidXRlKFwiZGF0YS10aWQtYXV0b1wiKSArIFwiPC9kaXY+PC9kaXY+XCIsIGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgbih2b2lkIDAsIHZvaWQgMCk7XG5cbiAgICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICBuKHZvaWQgMCwgdm9pZCAwKSwgci5jbGlwYm9hcmREYXRhLnNldERhdGEoXCJ0ZXh0L3BsYWluXCIsIHQudGFyZ2V0LmlubmVyVGV4dCksIHIucHJldmVudERlZmF1bHQoKSwgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvcHlcIiwgZSk7XG4gICAgICAgICAgfS5iaW5kKHZvaWQgMCk7XG5cbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29weVwiLCBlKSwgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgICB9LmJpbmQodm9pZCAwKSksIHQuYXBwZW5kQ2hpbGQoZSk7XG4gICAgICB9LmJpbmQodm9pZCAwKSkpO1xuICAgIH0uYmluZCh2b2lkIDApKTtcbiAgfSkuY2FsbChuLCBlKDApKTtcbn1dKTsiXX0=