@kontur.candy/tools 2.210.1-cgroupv2.0 → 2.210.1-cgroupv2.1

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 (625) hide show
  1. package/distr/Common/AsyncUtils.js +18 -0
  2. package/distr/Common/AsyncUtils.js.map +1 -0
  3. package/distr/Common/AutoValidationUtils.js +8 -0
  4. package/distr/Common/AutoValidationUtils.js.map +1 -0
  5. package/distr/Common/CandyApiClient/CandyApiClient.js +578 -0
  6. package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -0
  7. package/distr/Common/CandyApiClient/CandyApiClientContext.js +18 -0
  8. package/distr/Common/CandyApiClient/CandyApiClientContext.js.map +1 -0
  9. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +6 -0
  10. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js.map +1 -0
  11. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +6 -0
  12. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js.map +1 -0
  13. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +12 -0
  14. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js.map +1 -0
  15. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +6 -0
  16. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js.map +1 -0
  17. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +33 -0
  18. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js.map +1 -0
  19. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +35 -0
  20. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js.map +1 -0
  21. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +20 -0
  22. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js.map +1 -0
  23. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +89 -0
  24. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js.map +1 -0
  25. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +42 -0
  26. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js.map +1 -0
  27. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +9 -0
  28. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js.map +1 -0
  29. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +6 -0
  30. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js.map +1 -0
  31. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +18 -0
  32. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js.map +1 -0
  33. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +15 -0
  34. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js.map +1 -0
  35. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +19 -0
  36. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js.map +1 -0
  37. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +6 -0
  38. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js.map +1 -0
  39. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +248 -0
  40. package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +1 -0
  41. package/distr/Common/CandyApiClient/ICandyApiClient.js +6 -0
  42. package/distr/Common/CandyApiClient/ICandyApiClient.js.map +1 -0
  43. package/distr/Common/CandyApiClient/IsBuffer.js +15 -0
  44. package/distr/Common/CandyApiClient/IsBuffer.js.map +1 -0
  45. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +6 -0
  46. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js.map +1 -0
  47. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +6 -0
  48. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js.map +1 -0
  49. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +6 -0
  50. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js.map +1 -0
  51. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +6 -0
  52. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js.map +1 -0
  53. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +6 -0
  54. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js.map +1 -0
  55. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +24 -0
  56. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js.map +1 -0
  57. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +6 -0
  58. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js.map +1 -0
  59. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +6 -0
  60. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js.map +1 -0
  61. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +9 -0
  62. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js.map +1 -0
  63. package/distr/Common/CandyApiClient/Types/DraftFullId.js +6 -0
  64. package/distr/Common/CandyApiClient/Types/DraftFullId.js.map +1 -0
  65. package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +12 -0
  66. package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js.map +1 -0
  67. package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js +6 -0
  68. package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js.map +1 -0
  69. package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js +6 -0
  70. package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js.map +1 -0
  71. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +17 -0
  72. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js.map +1 -0
  73. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +13 -0
  74. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js.map +1 -0
  75. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +6 -0
  76. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js.map +1 -0
  77. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +6 -0
  78. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js.map +1 -0
  79. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +15 -0
  80. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js.map +1 -0
  81. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +6 -0
  82. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js.map +1 -0
  83. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +9 -0
  84. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js.map +1 -0
  85. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +6 -0
  86. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js.map +1 -0
  87. package/distr/Common/CandyApiClient/Types/Guid.js +6 -0
  88. package/distr/Common/CandyApiClient/Types/Guid.js.map +1 -0
  89. package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +6 -0
  90. package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js.map +1 -0
  91. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +6 -0
  92. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js.map +1 -0
  93. package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +6 -0
  94. package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js.map +1 -0
  95. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +24 -0
  96. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js.map +1 -0
  97. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +6 -0
  98. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js.map +1 -0
  99. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +6 -0
  100. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js.map +1 -0
  101. package/distr/Common/CandyApiClient/Types/Print/PrintType.js +12 -0
  102. package/distr/Common/CandyApiClient/Types/Print/PrintType.js.map +1 -0
  103. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +15 -0
  104. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js.map +1 -0
  105. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +19 -0
  106. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js.map +1 -0
  107. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +15 -0
  108. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js.map +1 -0
  109. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +15 -0
  110. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js.map +1 -0
  111. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +13 -0
  112. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js.map +1 -0
  113. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +15 -0
  114. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js.map +1 -0
  115. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +15 -0
  116. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js.map +1 -0
  117. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +15 -0
  118. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js.map +1 -0
  119. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +21 -0
  120. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js.map +1 -0
  121. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +15 -0
  122. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js.map +1 -0
  123. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +19 -0
  124. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js.map +1 -0
  125. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +15 -0
  126. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js.map +1 -0
  127. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +6 -0
  128. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js.map +1 -0
  129. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +26 -0
  130. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js.map +1 -0
  131. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +6 -0
  132. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js.map +1 -0
  133. package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +16 -0
  134. package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js.map +1 -0
  135. package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +16 -0
  136. package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js.map +1 -0
  137. package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +6 -0
  138. package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js.map +1 -0
  139. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +6 -0
  140. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js.map +1 -0
  141. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +6 -0
  142. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js.map +1 -0
  143. package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +6 -0
  144. package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js.map +1 -0
  145. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +6 -0
  146. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js.map +1 -0
  147. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +14 -0
  148. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js.map +1 -0
  149. package/distr/Common/CollectionUtils.js +15 -0
  150. package/distr/Common/CollectionUtils.js.map +1 -0
  151. package/distr/Common/CommonConstants/SectionNames.js +11 -0
  152. package/distr/Common/CommonConstants/SectionNames.js.map +1 -0
  153. package/distr/Common/Comparers.js +63 -0
  154. package/distr/Common/Comparers.js.map +1 -0
  155. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +22 -0
  156. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js.map +1 -0
  157. package/distr/Common/EndPoints.js +16 -0
  158. package/distr/Common/EndPoints.js.map +1 -0
  159. package/distr/Common/Enums/ButtonSettingsTypeEnum.js +12 -0
  160. package/distr/Common/Enums/ButtonSettingsTypeEnum.js.map +1 -0
  161. package/distr/Common/Errors.js +44 -0
  162. package/distr/Common/Errors.js.map +1 -0
  163. package/distr/Common/ExtractGFVPath/ExtractGFVPath.js +31 -0
  164. package/distr/Common/ExtractGFVPath/ExtractGFVPath.js.map +1 -0
  165. package/distr/Common/FSPrinterClient/FSPrinterClient.js +153 -0
  166. package/distr/Common/FSPrinterClient/FSPrinterClient.js.map +1 -0
  167. package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +19 -0
  168. package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js.map +1 -0
  169. package/distr/Common/FSPrinterClient/IFSPrinterClient.js +39 -0
  170. package/distr/Common/FSPrinterClient/IFSPrinterClient.js.map +1 -0
  171. package/distr/Common/FormActionHandlers/ContextualActionNames.js +14 -0
  172. package/distr/Common/FormActionHandlers/ContextualActionNames.js.map +1 -0
  173. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +6 -0
  174. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js.map +1 -0
  175. package/distr/Common/FormPathUtils.js +21 -0
  176. package/distr/Common/FormPathUtils.js.map +1 -0
  177. package/distr/Common/Funcs.js +11 -0
  178. package/distr/Common/Funcs.js.map +1 -0
  179. package/distr/Common/GFV.js +6 -0
  180. package/distr/Common/GFV.js.map +1 -0
  181. package/distr/Common/GetRngSchemaFileExtension.js +26 -0
  182. package/distr/Common/GetRngSchemaFileExtension.js.map +1 -0
  183. package/distr/Common/Hooks/UseLocalStorage.js +35 -0
  184. package/distr/Common/Hooks/UseLocalStorage.js.map +1 -0
  185. package/distr/Common/HttpClient/AuthenticationMode.js +31 -0
  186. package/distr/Common/HttpClient/AuthenticationMode.js.map +1 -0
  187. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +9 -0
  188. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js.map +1 -0
  189. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +9 -0
  190. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js.map +1 -0
  191. package/distr/Common/HttpClient/FetchImplementation/Fetch.js +6 -0
  192. package/distr/Common/HttpClient/FetchImplementation/Fetch.js.map +1 -0
  193. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +8 -0
  194. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js.map +1 -0
  195. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +36 -0
  196. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js.map +1 -0
  197. package/distr/Common/HttpClient/HttpClient.js +313 -0
  198. package/distr/Common/HttpClient/HttpClient.js.map +1 -0
  199. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +6 -0
  200. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js.map +1 -0
  201. package/distr/Common/HttpClient/IHttpClient.js +6 -0
  202. package/distr/Common/HttpClient/IHttpClient.js.map +1 -0
  203. package/distr/Common/IndentString.js +16 -0
  204. package/distr/Common/IndentString.js.map +1 -0
  205. package/distr/Common/IntRangeUtils.js +32 -0
  206. package/distr/Common/IntRangeUtils.js.map +1 -0
  207. package/distr/Common/IterableUtils.js +288 -0
  208. package/distr/Common/IterableUtils.js.map +1 -0
  209. package/distr/Common/KCLangRuntimeUtils.js +266 -0
  210. package/distr/Common/KCLangRuntimeUtils.js.map +1 -0
  211. package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +55 -0
  212. package/distr/Common/ModelPath/AbsoluteModelFieldPath.js.map +1 -0
  213. package/distr/Common/ModelPath/BuildIterationSequence.js +41 -0
  214. package/distr/Common/ModelPath/BuildIterationSequence.js.map +1 -0
  215. package/distr/Common/ModelPath/EachCurrentCollision.js +12 -0
  216. package/distr/Common/ModelPath/EachCurrentCollision.js.map +1 -0
  217. package/distr/Common/ModelPath/IEquatable.js +6 -0
  218. package/distr/Common/ModelPath/IEquatable.js.map +1 -0
  219. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +23 -0
  220. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js.map +1 -0
  221. package/distr/Common/ModelPath/Map/Map2.js +99 -0
  222. package/distr/Common/ModelPath/Map/Map2.js.map +1 -0
  223. package/distr/Common/ModelPath/Map/ModelPathMap.js +23 -0
  224. package/distr/Common/ModelPath/Map/ModelPathMap.js.map +1 -0
  225. package/distr/Common/ModelPath/ModelPath.js +476 -0
  226. package/distr/Common/ModelPath/ModelPath.js.map +1 -0
  227. package/distr/Common/ModelPath/ModelPathBuilder.js +42 -0
  228. package/distr/Common/ModelPath/ModelPathBuilder.js.map +1 -0
  229. package/distr/Common/ModelPath/ModelPathHelper.js +34 -0
  230. package/distr/Common/ModelPath/ModelPathHelper.js.map +1 -0
  231. package/distr/Common/ModelPath/PathMatcher.js +95 -0
  232. package/distr/Common/ModelPath/PathMatcher.js.map +1 -0
  233. package/distr/Common/ModelPath/PathSplitHelper.js +21 -0
  234. package/distr/Common/ModelPath/PathSplitHelper.js.map +1 -0
  235. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +31 -0
  236. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js.map +1 -0
  237. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +31 -0
  238. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js.map +1 -0
  239. package/distr/Common/ModelPath/Set/ModelPathSet.js +31 -0
  240. package/distr/Common/ModelPath/Set/ModelPathSet.js.map +1 -0
  241. package/distr/Common/ModelPath/Set/Set2.js +59 -0
  242. package/distr/Common/ModelPath/Set/Set2.js.map +1 -0
  243. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +33 -0
  244. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js.map +1 -0
  245. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +6 -0
  246. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js.map +1 -0
  247. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +11 -0
  248. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js.map +1 -0
  249. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +66 -0
  250. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js.map +1 -0
  251. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +108 -0
  252. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js.map +1 -0
  253. package/distr/Common/NidusClient/INidusClient.js +14 -0
  254. package/distr/Common/NidusClient/INidusClient.js.map +1 -0
  255. package/distr/Common/NidusClient/NidusClientContext.js +34 -0
  256. package/distr/Common/NidusClient/NidusClientContext.js.map +1 -0
  257. package/distr/Common/NidusClient/NidusClientImpl.js +55 -0
  258. package/distr/Common/NidusClient/NidusClientImpl.js.map +1 -0
  259. package/distr/Common/PathConstants.js +11 -0
  260. package/distr/Common/PathConstants.js.map +1 -0
  261. package/distr/Common/PicklistApiClient/IPicklistApiClient.js +6 -0
  262. package/distr/Common/PicklistApiClient/IPicklistApiClient.js.map +1 -0
  263. package/distr/Common/PicklistApiClient/PicklistApiClient.js +31 -0
  264. package/distr/Common/PicklistApiClient/PicklistApiClient.js.map +1 -0
  265. package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +36 -0
  266. package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js.map +1 -0
  267. package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +53 -0
  268. package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js.map +1 -0
  269. package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +37 -0
  270. package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js.map +1 -0
  271. package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +6 -0
  272. package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js.map +1 -0
  273. package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +6 -0
  274. package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js.map +1 -0
  275. package/distr/Common/RngSchemeTypes/types.js +6 -0
  276. package/distr/Common/RngSchemeTypes/types.js.map +1 -0
  277. package/distr/Common/StringArrayKey.js +26 -0
  278. package/distr/Common/StringArrayKey.js.map +1 -0
  279. package/distr/Common/TextExtractor/TextExtractorTypes.js +6 -0
  280. package/distr/Common/TextExtractor/TextExtractorTypes.js.map +1 -0
  281. package/distr/Common/TypingUtils.js +118 -0
  282. package/distr/Common/TypingUtils.js.map +1 -0
  283. package/distr/Common/UUID.js +14 -0
  284. package/distr/Common/UUID.js.map +1 -0
  285. package/distr/Common/UseAsyncEffect.js +20 -0
  286. package/distr/Common/UseAsyncEffect.js.map +1 -0
  287. package/distr/Common/UseShowOnce.js +60 -0
  288. package/distr/Common/UseShowOnce.js.map +1 -0
  289. package/distr/Common/UseTypedSelector.js +10 -0
  290. package/distr/Common/UseTypedSelector.js.map +1 -0
  291. package/distr/Common/WellKnownDirectories.js +14 -0
  292. package/distr/Common/WellKnownDirectories.js.map +1 -0
  293. package/distr/Common/hashUtils.js +14 -0
  294. package/distr/Common/hashUtils.js.map +1 -0
  295. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +77 -0
  296. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js.map +1 -0
  297. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +14 -0
  298. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js.map +1 -0
  299. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +22 -0
  300. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js.map +1 -0
  301. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +88 -0
  302. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js.map +1 -0
  303. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +82 -0
  304. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js.map +1 -0
  305. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +10 -0
  306. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js.map +1 -0
  307. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +42 -0
  308. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js.map +1 -0
  309. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +30 -0
  310. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js.map +1 -0
  311. package/distr/Tools/src/BuildTasks/FSTask.js +67 -0
  312. package/distr/Tools/src/BuildTasks/FSTask.js.map +1 -0
  313. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +52 -0
  314. package/distr/Tools/src/BuildTasks/Form/CompileForm.js.map +1 -0
  315. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +44 -0
  316. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js.map +1 -0
  317. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +37 -0
  318. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js.map +1 -0
  319. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +25 -0
  320. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js.map +1 -0
  321. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +31 -0
  322. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js.map +1 -0
  323. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +27 -0
  324. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js.map +1 -0
  325. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +95 -0
  326. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js.map +1 -0
  327. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +126 -0
  328. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js.map +1 -0
  329. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +174 -0
  330. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js.map +1 -0
  331. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +121 -0
  332. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js.map +1 -0
  333. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +45 -0
  334. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js.map +1 -0
  335. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +52 -0
  336. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map +1 -0
  337. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +49 -0
  338. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js.map +1 -0
  339. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +19 -0
  340. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js.map +1 -0
  341. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +64 -0
  342. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js.map +1 -0
  343. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +84 -0
  344. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js.map +1 -0
  345. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +174 -0
  346. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js.map +1 -0
  347. package/distr/Tools/src/BuildTasks/ReadFormSource.js +112 -0
  348. package/distr/Tools/src/BuildTasks/ReadFormSource.js.map +1 -0
  349. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +107 -0
  350. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js.map +1 -0
  351. package/distr/Tools/src/BuildTasks/Version.js +41 -0
  352. package/distr/Tools/src/BuildTasks/Version.js.map +1 -0
  353. package/distr/Tools/src/BuildTasks/WriteFormMeta.js +27 -0
  354. package/distr/Tools/src/BuildTasks/WriteFormMeta.js.map +1 -0
  355. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +28 -0
  356. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js.map +1 -0
  357. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +169 -0
  358. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -0
  359. package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js +24 -0
  360. package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js.map +1 -0
  361. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +234 -0
  362. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -0
  363. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +36 -0
  364. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js.map +1 -0
  365. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +112 -0
  366. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js.map +1 -0
  367. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +158 -0
  368. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js.map +1 -0
  369. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +94 -0
  370. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +1 -0
  371. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +129 -0
  372. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js.map +1 -0
  373. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerCandyWidgetController.js +45 -0
  374. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerCandyWidgetController.js.map +1 -0
  375. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +76 -0
  376. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js.map +1 -0
  377. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +67 -0
  378. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js.map +1 -0
  379. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +65 -0
  380. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js.map +1 -0
  381. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +117 -0
  382. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js.map +1 -0
  383. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +22 -0
  384. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js.map +1 -0
  385. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +96 -0
  386. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js.map +1 -0
  387. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +231 -0
  388. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +1 -0
  389. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js +70 -0
  390. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js.map +1 -0
  391. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +57 -0
  392. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js.map +1 -0
  393. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +67 -0
  394. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js.map +1 -0
  395. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +21 -0
  396. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js.map +1 -0
  397. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +52 -0
  398. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js.map +1 -0
  399. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +80 -0
  400. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js.map +1 -0
  401. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +31 -0
  402. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js.map +1 -0
  403. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +6 -0
  404. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js.map +1 -0
  405. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +6 -0
  406. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js.map +1 -0
  407. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +184 -0
  408. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js.map +1 -0
  409. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +213 -0
  410. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js.map +1 -0
  411. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +28 -0
  412. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js.map +1 -0
  413. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +6 -0
  414. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js.map +1 -0
  415. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +110 -0
  416. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js.map +1 -0
  417. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +50 -0
  418. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js.map +1 -0
  419. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +19 -0
  420. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js.map +1 -0
  421. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +30 -0
  422. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js.map +1 -0
  423. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +6 -0
  424. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js.map +1 -0
  425. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +163 -0
  426. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js.map +1 -0
  427. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +112 -0
  428. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -0
  429. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +34 -0
  430. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js.map +1 -0
  431. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +50 -0
  432. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js.map +1 -0
  433. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +54 -0
  434. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js.map +1 -0
  435. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}./320/232/320/241.candy.js.kclang +0 -0
  436. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.AfterMerge.xslt +11 -0
  437. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.BeforePreload.xslt +11 -0
  438. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.fufPatcher.xslt +11 -0
  439. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.outer.inner.json +1 -0
  440. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js +2 -0
  441. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js.map +1 -0
  442. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/form.json +12 -0
  443. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/helpers/addPril1.txt +6 -0
  444. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/presentations.json +8 -0
  445. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/schemas/{gfv}.0.rng.xml +20 -0
  446. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/sugar/index.sugar.xml +10 -0
  447. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +16 -0
  448. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js.map +1 -0
  449. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +23 -0
  450. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js.map +1 -0
  451. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/validations/validations.KC.kclang +0 -0
  452. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +34 -0
  453. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js.map +1 -0
  454. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +117 -0
  455. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js.map +1 -0
  456. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +44 -0
  457. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js.map +1 -0
  458. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +73 -0
  459. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js.map +1 -0
  460. package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +25 -0
  461. package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js.map +1 -0
  462. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +38 -0
  463. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js.map +1 -0
  464. package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +36 -0
  465. package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js.map +1 -0
  466. package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +50 -0
  467. package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js.map +1 -0
  468. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +144 -0
  469. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js.map +1 -0
  470. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +78 -0
  471. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js.map +1 -0
  472. package/distr/Tools/src/CandyCLI.js +144 -0
  473. package/distr/Tools/src/CandyCLI.js.map +1 -0
  474. package/distr/Tools/src/CheckNodeJsVersion.js +32 -0
  475. package/distr/Tools/src/CheckNodeJsVersion.js.map +1 -0
  476. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +28 -0
  477. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js.map +1 -0
  478. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +93 -0
  479. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js.map +1 -0
  480. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +24 -0
  481. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js.map +1 -0
  482. package/distr/Tools/src/Commons/ErrorUntyped.js +6 -0
  483. package/distr/Tools/src/Commons/ErrorUntyped.js.map +1 -0
  484. package/distr/Tools/src/Commons/EventObject.js +74 -0
  485. package/distr/Tools/src/Commons/EventObject.js.map +1 -0
  486. package/distr/Tools/src/Commons/ExecUtils.js +38 -0
  487. package/distr/Tools/src/Commons/ExecUtils.js.map +1 -0
  488. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +21 -0
  489. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js.map +1 -0
  490. package/distr/Tools/src/Commons/FormGlobsUtils.js +137 -0
  491. package/distr/Tools/src/Commons/FormGlobsUtils.js.map +1 -0
  492. package/distr/Tools/src/Commons/FormLocationInfo.js +6 -0
  493. package/distr/Tools/src/Commons/FormLocationInfo.js.map +1 -0
  494. package/distr/Tools/src/Commons/FsUtils.js +35 -0
  495. package/distr/Tools/src/Commons/FsUtils.js.map +1 -0
  496. package/distr/Tools/src/Commons/GetCpuLimits.js +64 -0
  497. package/distr/Tools/src/Commons/GetCpuLimits.js.map +1 -0
  498. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +38 -0
  499. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js.map +1 -0
  500. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +57 -0
  501. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js.map +1 -0
  502. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +15 -0
  503. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js.map +1 -0
  504. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +18 -0
  505. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js.map +1 -0
  506. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +6 -0
  507. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js.map +1 -0
  508. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +14 -0
  509. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js.map +1 -0
  510. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +17 -0
  511. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js.map +1 -0
  512. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +22 -0
  513. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js.map +1 -0
  514. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +20 -0
  515. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js.map +1 -0
  516. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +46 -0
  517. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js.map +1 -0
  518. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +13 -0
  519. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js.map +1 -0
  520. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +18 -0
  521. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js.map +1 -0
  522. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +13 -0
  523. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js.map +1 -0
  524. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +13 -0
  525. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js.map +1 -0
  526. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +6 -0
  527. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js.map +1 -0
  528. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +13 -0
  529. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js.map +1 -0
  530. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +13 -0
  531. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js.map +1 -0
  532. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +113 -0
  533. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js.map +1 -0
  534. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +24 -0
  535. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js.map +1 -0
  536. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +106 -0
  537. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js.map +1 -0
  538. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +22 -0
  539. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js.map +1 -0
  540. package/distr/Tools/src/Commons/Locks/Lock.js +24 -0
  541. package/distr/Tools/src/Commons/Locks/Lock.js.map +1 -0
  542. package/distr/Tools/src/Commons/Locks/LockHandle.js +17 -0
  543. package/distr/Tools/src/Commons/Locks/LockHandle.js.map +1 -0
  544. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +31 -0
  545. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js.map +1 -0
  546. package/distr/Tools/src/Commons/Logging/ELKLogger.js +56 -0
  547. package/distr/Tools/src/Commons/Logging/ELKLogger.js.map +1 -0
  548. package/distr/Tools/src/Commons/Logging/ILogger.js +25 -0
  549. package/distr/Tools/src/Commons/Logging/ILogger.js.map +1 -0
  550. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +61 -0
  551. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js.map +1 -0
  552. package/distr/Tools/src/Commons/Logging/Logger.js +78 -0
  553. package/distr/Tools/src/Commons/Logging/Logger.js.map +1 -0
  554. package/distr/Tools/src/Commons/Logging/StaticLogger.js +37 -0
  555. package/distr/Tools/src/Commons/Logging/StaticLogger.js.map +1 -0
  556. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +2 -0
  557. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js.map +1 -0
  558. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +152 -0
  559. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js.map +1 -0
  560. package/distr/Tools/src/Commons/PathPattern.js +42 -0
  561. package/distr/Tools/src/Commons/PathPattern.js.map +1 -0
  562. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +16 -0
  563. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js.map +1 -0
  564. package/distr/Tools/src/Commons/TasksCore/BuildTask.js +6 -0
  565. package/distr/Tools/src/Commons/TasksCore/BuildTask.js.map +1 -0
  566. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +668 -0
  567. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js.map +1 -0
  568. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +77 -0
  569. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js.map +1 -0
  570. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +20 -0
  571. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js.map +1 -0
  572. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +48 -0
  573. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js.map +1 -0
  574. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +45 -0
  575. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js.map +1 -0
  576. package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js +25 -0
  577. package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js.map +1 -0
  578. package/distr/Tools/src/Commons/TasksCore/Observe.js +35 -0
  579. package/distr/Tools/src/Commons/TasksCore/Observe.js.map +1 -0
  580. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +29 -0
  581. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js.map +1 -0
  582. package/distr/Tools/src/Commons/TimingUtils.js +13 -0
  583. package/distr/Tools/src/Commons/TimingUtils.js.map +1 -0
  584. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +180 -0
  585. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js.map +1 -0
  586. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +145 -0
  587. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +1 -0
  588. package/distr/Tools/src/FormWebpackConfiguration/variables.less +132 -0
  589. package/distr/Tools/src/GenerateReadMe.js +54 -0
  590. package/distr/Tools/src/GenerateReadMe.js.map +1 -0
  591. package/distr/Tools/src/Keys/localhost-key.pem +116 -0
  592. package/distr/Tools/src/Keys/localhost.pem +35 -0
  593. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +2 -0
  594. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +49 -0
  595. package/distr/Tools/src/LocalServerFrontEndDist/favicon-16x16.png +0 -0
  596. package/distr/Tools/src/LocalServerFrontEndDist/favicon-32x32.png +0 -0
  597. package/distr/Tools/src/LocalServerFrontEndDist/favicon.ico +0 -0
  598. package/distr/Tools/src/LocalServerFrontEndDist/index.html +1 -0
  599. package/distr/Tools/src/LocalServerFrontEndDist/index.js +3 -0
  600. package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +60 -0
  601. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -0
  602. package/distr/Tools/src/Options/CandyToolOptions.js +20 -0
  603. package/distr/Tools/src/Options/CandyToolOptions.js.map +1 -0
  604. package/distr/Tools/src/ReadFarmConfig.js +18 -0
  605. package/distr/Tools/src/ReadFarmConfig.js.map +1 -0
  606. package/distr/Tools/src/SelfUpdate.js +121 -0
  607. package/distr/Tools/src/SelfUpdate.js.map +1 -0
  608. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1722 -0
  609. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.LICENSE.txt +1 -0
  610. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -0
  611. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +1076 -0
  612. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -0
  613. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +3328 -0
  614. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js.map +1 -0
  615. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +6517 -0
  616. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js.map +1 -0
  617. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +222 -0
  618. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js.map +1 -0
  619. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +3328 -0
  620. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js.map +1 -0
  621. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +6517 -0
  622. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js.map +1 -0
  623. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +222 -0
  624. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js.map +1 -0
  625. package/package.json +1 -1
@@ -0,0 +1,3328 @@
1
+ "use strict";
2
+
3
+ !function (global, factory) {
4
+ "object" == typeof module && "object" == typeof module.exports ? module.exports = global.document ? factory(global, !0) : function (w) {
5
+ if (!w.document) throw new Error("jQuery requires a window with a document");
6
+ return factory(w);
7
+ } : factory(global);
8
+ }("undefined" != typeof window ? window : void 0, function (window, noGlobal) {
9
+ function isArraylike(obj) {
10
+ var length = "length" in obj && obj.length,
11
+ type = jQuery.type(obj);
12
+ return "function" === type || jQuery.isWindow(obj) ? !1 : 1 === obj.nodeType && length ? !0 : "array" === type || 0 === length || "number" == typeof length && length > 0 && length - 1 in obj;
13
+ }
14
+ function winnow(elements, qualifier, not) {
15
+ if (jQuery.isFunction(qualifier)) return jQuery.grep(elements, function (elem, i) {
16
+ return !!qualifier.call(elem, i, elem) !== not;
17
+ });
18
+ if (qualifier.nodeType) return jQuery.grep(elements, function (elem) {
19
+ return elem === qualifier !== not;
20
+ });
21
+ if ("string" == typeof qualifier) {
22
+ if (risSimple.test(qualifier)) return jQuery.filter(qualifier, elements, not);
23
+ qualifier = jQuery.filter(qualifier, elements);
24
+ }
25
+ return jQuery.grep(elements, function (elem) {
26
+ return jQuery.inArray(elem, qualifier) >= 0 !== not;
27
+ });
28
+ }
29
+ function sibling(cur, dir) {
30
+ do cur = cur[dir]; while (cur && 1 !== cur.nodeType);
31
+ return cur;
32
+ }
33
+ function createOptions(options) {
34
+ var object = optionsCache[options] = {};
35
+ return jQuery.each(options.match(rnotwhite) || [], function (_, flag) {
36
+ object[flag] = !0;
37
+ }), object;
38
+ }
39
+ function detach() {
40
+ document.addEventListener ? (document.removeEventListener("DOMContentLoaded", completed, !1), window.removeEventListener("load", completed, !1)) : (document.detachEvent("onreadystatechange", completed), window.detachEvent("onload", completed));
41
+ }
42
+ function completed() {
43
+ (document.addEventListener || "load" === event.type || "complete" === document.readyState) && (detach(), jQuery.ready());
44
+ }
45
+ function dataAttr(elem, key, data) {
46
+ if (void 0 === data && 1 === elem.nodeType) {
47
+ var name = "data-" + key.replace(rmultiDash, "-$1").toLowerCase();
48
+ if (data = elem.getAttribute(name), "string" == typeof data) {
49
+ try {
50
+ data = "true" === data ? !0 : "false" === data ? !1 : "null" === data ? null : +data + "" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data;
51
+ } catch (e) {}
52
+ jQuery.data(elem, key, data);
53
+ } else data = void 0;
54
+ }
55
+ return data;
56
+ }
57
+ function isEmptyDataObject(obj) {
58
+ var name;
59
+ for (name in obj) if (("data" !== name || !jQuery.isEmptyObject(obj[name])) && "toJSON" !== name) return !1;
60
+ return !0;
61
+ }
62
+ function internalData(elem, name, data, pvt) {
63
+ if (jQuery.acceptData(elem)) {
64
+ var ret,
65
+ thisCache,
66
+ internalKey = jQuery.expando,
67
+ isNode = elem.nodeType,
68
+ cache = isNode ? jQuery.cache : elem,
69
+ id = isNode ? elem[internalKey] : elem[internalKey] && internalKey;
70
+ if (id && cache[id] && (pvt || cache[id].data) || void 0 !== data || "string" != typeof name) return id || (id = isNode ? elem[internalKey] = deletedIds.pop() || jQuery.guid++ : internalKey), cache[id] || (cache[id] = isNode ? {} : {
71
+ toJSON: jQuery.noop
72
+ }), ("object" == typeof name || "function" == typeof name) && (pvt ? cache[id] = jQuery.extend(cache[id], name) : cache[id].data = jQuery.extend(cache[id].data, name)), thisCache = cache[id], pvt || (thisCache.data || (thisCache.data = {}), thisCache = thisCache.data), void 0 !== data && (thisCache[jQuery.camelCase(name)] = data), "string" == typeof name ? (ret = thisCache[name], null == ret && (ret = thisCache[jQuery.camelCase(name)])) : ret = thisCache, ret;
73
+ }
74
+ }
75
+ function internalRemoveData(elem, name, pvt) {
76
+ if (jQuery.acceptData(elem)) {
77
+ var thisCache,
78
+ i,
79
+ isNode = elem.nodeType,
80
+ cache = isNode ? jQuery.cache : elem,
81
+ id = isNode ? elem[jQuery.expando] : jQuery.expando;
82
+ if (cache[id]) {
83
+ if (name && (thisCache = pvt ? cache[id] : cache[id].data)) {
84
+ jQuery.isArray(name) ? name = name.concat(jQuery.map(name, jQuery.camelCase)) : name in thisCache ? name = [name] : (name = jQuery.camelCase(name), name = name in thisCache ? [name] : name.split(" ")), i = name.length;
85
+ for (; i--;) delete thisCache[name[i]];
86
+ if (pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache)) return;
87
+ }
88
+ (pvt || (delete cache[id].data, isEmptyDataObject(cache[id]))) && (isNode ? jQuery.cleanData([elem], !0) : support.deleteExpando || cache != cache.window ? delete cache[id] : cache[id] = null);
89
+ }
90
+ }
91
+ }
92
+ function returnTrue() {
93
+ return !0;
94
+ }
95
+ function returnFalse() {
96
+ return !1;
97
+ }
98
+ function safeActiveElement() {
99
+ try {
100
+ return document.activeElement;
101
+ } catch (err) {}
102
+ }
103
+ function createSafeFragment(document) {
104
+ var list = nodeNames.split("|"),
105
+ safeFrag = document.createDocumentFragment();
106
+ if (safeFrag.createElement) for (; list.length;) safeFrag.createElement(list.pop());
107
+ return safeFrag;
108
+ }
109
+ function getAll(context, tag) {
110
+ var elems,
111
+ elem,
112
+ i = 0,
113
+ found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName(tag || "*") : typeof context.querySelectorAll !== strundefined ? context.querySelectorAll(tag || "*") : void 0;
114
+ if (!found) for (found = [], elems = context.childNodes || context; null != (elem = elems[i]); i++) !tag || jQuery.nodeName(elem, tag) ? found.push(elem) : jQuery.merge(found, getAll(elem, tag));
115
+ return void 0 === tag || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], found) : found;
116
+ }
117
+ function fixDefaultChecked(elem) {
118
+ rcheckableType.test(elem.type) && (elem.defaultChecked = elem.checked);
119
+ }
120
+ function manipulationTarget(elem, content) {
121
+ return jQuery.nodeName(elem, "table") && jQuery.nodeName(11 !== content.nodeType ? content : content.firstChild, "tr") ? elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem;
122
+ }
123
+ function disableScript(elem) {
124
+ return elem.type = (null !== jQuery.find.attr(elem, "type")) + "/" + elem.type, elem;
125
+ }
126
+ function restoreScript(elem) {
127
+ var match = rscriptTypeMasked.exec(elem.type);
128
+ return match ? elem.type = match[1] : elem.removeAttribute("type"), elem;
129
+ }
130
+ function setGlobalEval(elems, refElements) {
131
+ for (var elem, i = 0; null != (elem = elems[i]); i++) jQuery._data(elem, "globalEval", !refElements || jQuery._data(refElements[i], "globalEval"));
132
+ }
133
+ function cloneCopyEvent(src, dest) {
134
+ if (1 === dest.nodeType && jQuery.hasData(src)) {
135
+ var type,
136
+ i,
137
+ l,
138
+ oldData = jQuery._data(src),
139
+ curData = jQuery._data(dest, oldData),
140
+ events = oldData.events;
141
+ if (events) {
142
+ delete curData.handle, curData.events = {};
143
+ for (type in events) for (i = 0, l = events[type].length; l > i; i++) jQuery.event.add(dest, type, events[type][i]);
144
+ }
145
+ curData.data && (curData.data = jQuery.extend({}, curData.data));
146
+ }
147
+ }
148
+ function fixCloneNodeIssues(src, dest) {
149
+ var nodeName, e, data;
150
+ if (1 === dest.nodeType) {
151
+ if (nodeName = dest.nodeName.toLowerCase(), !support.noCloneEvent && dest[jQuery.expando]) {
152
+ data = jQuery._data(dest);
153
+ for (e in data.events) jQuery.removeEvent(dest, e, data.handle);
154
+ dest.removeAttribute(jQuery.expando);
155
+ }
156
+ "script" === nodeName && dest.text !== src.text ? (disableScript(dest).text = src.text, restoreScript(dest)) : "object" === nodeName ? (dest.parentNode && (dest.outerHTML = src.outerHTML), support.html5Clone && src.innerHTML && !jQuery.trim(dest.innerHTML) && (dest.innerHTML = src.innerHTML)) : "input" === nodeName && rcheckableType.test(src.type) ? (dest.defaultChecked = dest.checked = src.checked, dest.value !== src.value && (dest.value = src.value)) : "option" === nodeName ? dest.defaultSelected = dest.selected = src.defaultSelected : ("input" === nodeName || "textarea" === nodeName) && (dest.defaultValue = src.defaultValue);
157
+ }
158
+ }
159
+ function actualDisplay(name, doc) {
160
+ var style,
161
+ elem = jQuery(doc.createElement(name)).appendTo(doc.body),
162
+ display = window.getDefaultComputedStyle && (style = window.getDefaultComputedStyle(elem[0])) ? style.display : jQuery.css(elem[0], "display");
163
+ return elem.detach(), display;
164
+ }
165
+ function defaultDisplay(nodeName) {
166
+ var doc = document,
167
+ display = elemdisplay[nodeName];
168
+ return display || (display = actualDisplay(nodeName, doc), "none" !== display && display || (iframe = (iframe || jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement), doc = (iframe[0].contentWindow || iframe[0].contentDocument).document, doc.write(), doc.close(), display = actualDisplay(nodeName, doc), iframe.detach()), elemdisplay[nodeName] = display), display;
169
+ }
170
+ function addGetHookIf(conditionFn, hookFn) {
171
+ return {
172
+ get: function () {
173
+ var condition = conditionFn();
174
+ if (null != condition) return condition ? void delete this.get : (this.get = hookFn).apply(this, arguments);
175
+ }
176
+ };
177
+ }
178
+ function vendorPropName(style, name) {
179
+ if (name in style) return name;
180
+ for (var capName = name.charAt(0).toUpperCase() + name.slice(1), origName = name, i = cssPrefixes.length; i--;) if (name = cssPrefixes[i] + capName, name in style) return name;
181
+ return origName;
182
+ }
183
+ function showHide(elements, show) {
184
+ for (var display, elem, hidden, values = [], index = 0, length = elements.length; length > index; index++) elem = elements[index], elem.style && (values[index] = jQuery._data(elem, "olddisplay"), display = elem.style.display, show ? (values[index] || "none" !== display || (elem.style.display = ""), "" === elem.style.display && isHidden(elem) && (values[index] = jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)))) : (hidden = isHidden(elem), (display && "none" !== display || !hidden) && jQuery._data(elem, "olddisplay", hidden ? display : jQuery.css(elem, "display"))));
185
+ for (index = 0; length > index; index++) elem = elements[index], elem.style && (show && "none" !== elem.style.display && "" !== elem.style.display || (elem.style.display = show ? values[index] || "" : "none"));
186
+ return elements;
187
+ }
188
+ function setPositiveNumber(elem, value, subtract) {
189
+ var matches = rnumsplit.exec(value);
190
+ return matches ? Math.max(0, matches[1] - (subtract || 0)) + (matches[2] || "px") : value;
191
+ }
192
+ function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {
193
+ for (var i = extra === (isBorderBox ? "border" : "content") ? 4 : "width" === name ? 1 : 0, val = 0; 4 > i; i += 2) "margin" === extra && (val += jQuery.css(elem, extra + cssExpand[i], !0, styles)), isBorderBox ? ("content" === extra && (val -= jQuery.css(elem, "padding" + cssExpand[i], !0, styles)), "margin" !== extra && (val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles))) : (val += jQuery.css(elem, "padding" + cssExpand[i], !0, styles), "padding" !== extra && (val += jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles)));
194
+ return val;
195
+ }
196
+ function getWidthOrHeight(elem, name, extra) {
197
+ var valueIsBorderBox = !0,
198
+ val = "width" === name ? elem.offsetWidth : elem.offsetHeight,
199
+ styles = getStyles(elem),
200
+ isBorderBox = support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", !1, styles);
201
+ if (0 >= val || null == val) {
202
+ if (val = curCSS(elem, name, styles), (0 > val || null == val) && (val = elem.style[name]), rnumnonpx.test(val)) return val;
203
+ valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]), val = parseFloat(val) || 0;
204
+ }
205
+ return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles) + "px";
206
+ }
207
+ function Tween(elem, options, prop, end, easing) {
208
+ return new Tween.prototype.init(elem, options, prop, end, easing);
209
+ }
210
+ function createFxNow() {
211
+ return setTimeout(function () {
212
+ fxNow = void 0;
213
+ }), fxNow = jQuery.now();
214
+ }
215
+ function genFx(type, includeWidth) {
216
+ var which,
217
+ attrs = {
218
+ height: type
219
+ },
220
+ i = 0;
221
+ for (includeWidth = includeWidth ? 1 : 0; 4 > i; i += 2 - includeWidth) which = cssExpand[i], attrs["margin" + which] = attrs["padding" + which] = type;
222
+ return includeWidth && (attrs.opacity = attrs.width = type), attrs;
223
+ }
224
+ function createTween(value, prop, animation) {
225
+ for (var tween, collection = (tweeners[prop] || []).concat(tweeners["*"]), index = 0, length = collection.length; length > index; index++) if (tween = collection[index].call(animation, prop, value)) return tween;
226
+ }
227
+ function defaultPrefilter(elem, props, opts) {
228
+ var prop,
229
+ value,
230
+ toggle,
231
+ tween,
232
+ hooks,
233
+ oldfire,
234
+ display,
235
+ checkDisplay,
236
+ anim = this,
237
+ orig = {},
238
+ style = elem.style,
239
+ hidden = elem.nodeType && isHidden(elem),
240
+ dataShow = jQuery._data(elem, "fxshow");
241
+ opts.queue || (hooks = jQuery._queueHooks(elem, "fx"), null == hooks.unqueued && (hooks.unqueued = 0, oldfire = hooks.empty.fire, hooks.empty.fire = function () {
242
+ hooks.unqueued || oldfire();
243
+ }), hooks.unqueued++, anim.always(function () {
244
+ anim.always(function () {
245
+ hooks.unqueued--, jQuery.queue(elem, "fx").length || hooks.empty.fire();
246
+ });
247
+ })), 1 === elem.nodeType && ("height" in props || "width" in props) && (opts.overflow = [style.overflow, style.overflowX, style.overflowY], display = jQuery.css(elem, "display"), checkDisplay = "none" === display ? jQuery._data(elem, "olddisplay") || defaultDisplay(elem.nodeName) : display, "inline" === checkDisplay && "none" === jQuery.css(elem, "float") && (support.inlineBlockNeedsLayout && "inline" !== defaultDisplay(elem.nodeName) ? style.zoom = 1 : style.display = "inline-block")), opts.overflow && (style.overflow = "hidden", support.shrinkWrapBlocks() || anim.always(function () {
248
+ style.overflow = opts.overflow[0], style.overflowX = opts.overflow[1], style.overflowY = opts.overflow[2];
249
+ }));
250
+ for (prop in props) if (value = props[prop], rfxtypes.exec(value)) {
251
+ if (delete props[prop], toggle = toggle || "toggle" === value, value === (hidden ? "hide" : "show")) {
252
+ if ("show" !== value || !dataShow || void 0 === dataShow[prop]) continue;
253
+ hidden = !0;
254
+ }
255
+ orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
256
+ } else display = void 0;
257
+ if (jQuery.isEmptyObject(orig)) "inline" === ("none" === display ? defaultDisplay(elem.nodeName) : display) && (style.display = display);else {
258
+ dataShow ? "hidden" in dataShow && (hidden = dataShow.hidden) : dataShow = jQuery._data(elem, "fxshow", {}), toggle && (dataShow.hidden = !hidden), hidden ? jQuery(elem).show() : anim.done(function () {
259
+ jQuery(elem).hide();
260
+ }), anim.done(function () {
261
+ var prop;
262
+ jQuery._removeData(elem, "fxshow");
263
+ for (prop in orig) jQuery.style(elem, prop, orig[prop]);
264
+ });
265
+ for (prop in orig) tween = createTween(hidden ? dataShow[prop] : 0, prop, anim), prop in dataShow || (dataShow[prop] = tween.start, hidden && (tween.end = tween.start, tween.start = "width" === prop || "height" === prop ? 1 : 0));
266
+ }
267
+ }
268
+ function propFilter(props, specialEasing) {
269
+ var index, name, easing, value, hooks;
270
+ for (index in props) if (name = jQuery.camelCase(index), easing = specialEasing[name], value = props[index], jQuery.isArray(value) && (easing = value[1], value = props[index] = value[0]), index !== name && (props[name] = value, delete props[index]), hooks = jQuery.cssHooks[name], hooks && "expand" in hooks) {
271
+ value = hooks.expand(value), delete props[name];
272
+ for (index in value) index in props || (props[index] = value[index], specialEasing[index] = easing);
273
+ } else specialEasing[name] = easing;
274
+ }
275
+ function Animation(elem, properties, options) {
276
+ var result,
277
+ stopped,
278
+ index = 0,
279
+ length = animationPrefilters.length,
280
+ deferred = jQuery.Deferred().always(function () {
281
+ delete tick.elem;
282
+ }),
283
+ tick = function () {
284
+ if (stopped) return !1;
285
+ for (var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; length > index; index++) animation.tweens[index].run(percent);
286
+ return deferred.notifyWith(elem, [animation, percent, remaining]), 1 > percent && length ? remaining : (deferred.resolveWith(elem, [animation]), !1);
287
+ },
288
+ animation = deferred.promise({
289
+ elem: elem,
290
+ props: jQuery.extend({}, properties),
291
+ opts: jQuery.extend(!0, {
292
+ specialEasing: {}
293
+ }, options),
294
+ originalProperties: properties,
295
+ originalOptions: options,
296
+ startTime: fxNow || createFxNow(),
297
+ duration: options.duration,
298
+ tweens: [],
299
+ createTween: function (prop, end) {
300
+ var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
301
+ return animation.tweens.push(tween), tween;
302
+ },
303
+ stop: function (gotoEnd) {
304
+ var index = 0,
305
+ length = gotoEnd ? animation.tweens.length : 0;
306
+ if (stopped) return this;
307
+ for (stopped = !0; length > index; index++) animation.tweens[index].run(1);
308
+ return gotoEnd ? deferred.resolveWith(elem, [animation, gotoEnd]) : deferred.rejectWith(elem, [animation, gotoEnd]), this;
309
+ }
310
+ }),
311
+ props = animation.props;
312
+ for (propFilter(props, animation.opts.specialEasing); length > index; index++) if (result = animationPrefilters[index].call(animation, elem, props, animation.opts)) return result;
313
+ return jQuery.map(props, createTween, animation), jQuery.isFunction(animation.opts.start) && animation.opts.start.call(elem, animation), jQuery.fx.timer(jQuery.extend(tick, {
314
+ elem: elem,
315
+ anim: animation,
316
+ queue: animation.opts.queue
317
+ })), animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
318
+ }
319
+ function addToPrefiltersOrTransports(structure) {
320
+ return function (dataTypeExpression, func) {
321
+ "string" != typeof dataTypeExpression && (func = dataTypeExpression, dataTypeExpression = "*");
322
+ var dataType,
323
+ i = 0,
324
+ dataTypes = dataTypeExpression.toLowerCase().match(rnotwhite) || [];
325
+ if (jQuery.isFunction(func)) for (; dataType = dataTypes[i++];) "+" === dataType.charAt(0) ? (dataType = dataType.slice(1) || "*", (structure[dataType] = structure[dataType] || []).unshift(func)) : (structure[dataType] = structure[dataType] || []).push(func);
326
+ };
327
+ }
328
+ function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
329
+ function inspect(dataType) {
330
+ var selected;
331
+ return inspected[dataType] = !0, jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {
332
+ var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
333
+ return "string" != typeof dataTypeOrTransport || seekingTransport || inspected[dataTypeOrTransport] ? seekingTransport ? !(selected = dataTypeOrTransport) : void 0 : (options.dataTypes.unshift(dataTypeOrTransport), inspect(dataTypeOrTransport), !1);
334
+ }), selected;
335
+ }
336
+ var inspected = {},
337
+ seekingTransport = structure === transports;
338
+ return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
339
+ }
340
+ function ajaxExtend(target, src) {
341
+ var deep,
342
+ key,
343
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
344
+ for (key in src) void 0 !== src[key] && ((flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]);
345
+ return deep && jQuery.extend(!0, target, deep), target;
346
+ }
347
+ function ajaxHandleResponses(s, jqXHR, responses) {
348
+ for (var firstDataType, ct, finalDataType, type, contents = s.contents, dataTypes = s.dataTypes; "*" === dataTypes[0];) dataTypes.shift(), void 0 === ct && (ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"));
349
+ if (ct) for (type in contents) if (contents[type] && contents[type].test(ct)) {
350
+ dataTypes.unshift(type);
351
+ break;
352
+ }
353
+ if (dataTypes[0] in responses) finalDataType = dataTypes[0];else {
354
+ for (type in responses) {
355
+ if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
356
+ finalDataType = type;
357
+ break;
358
+ }
359
+ firstDataType || (firstDataType = type);
360
+ }
361
+ finalDataType = finalDataType || firstDataType;
362
+ }
363
+ return finalDataType ? (finalDataType !== dataTypes[0] && dataTypes.unshift(finalDataType), responses[finalDataType]) : void 0;
364
+ }
365
+ function ajaxConvert(s, response, jqXHR, isSuccess) {
366
+ var conv2,
367
+ current,
368
+ conv,
369
+ tmp,
370
+ prev,
371
+ converters = {},
372
+ dataTypes = s.dataTypes.slice();
373
+ if (dataTypes[1]) for (conv in s.converters) converters[conv.toLowerCase()] = s.converters[conv];
374
+ for (current = dataTypes.shift(); current;) if (s.responseFields[current] && (jqXHR[s.responseFields[current]] = response), !prev && isSuccess && s.dataFilter && (response = s.dataFilter(response, s.dataType)), prev = current, current = dataTypes.shift()) if ("*" === current) current = prev;else if ("*" !== prev && prev !== current) {
375
+ if (conv = converters[prev + " " + current] || converters["* " + current], !conv) for (conv2 in converters) if (tmp = conv2.split(" "), tmp[1] === current && (conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]])) {
376
+ conv === !0 ? conv = converters[conv2] : converters[conv2] !== !0 && (current = tmp[0], dataTypes.unshift(tmp[1]));
377
+ break;
378
+ }
379
+ if (conv !== !0) if (conv && s["throws"]) response = conv(response);else try {
380
+ response = conv(response);
381
+ } catch (e) {
382
+ return {
383
+ state: "parsererror",
384
+ error: conv ? e : "No conversion from " + prev + " to " + current
385
+ };
386
+ }
387
+ }
388
+ return {
389
+ state: "success",
390
+ data: response
391
+ };
392
+ }
393
+ function buildParams(prefix, obj, traditional, add) {
394
+ var name;
395
+ if (jQuery.isArray(obj)) jQuery.each(obj, function (i, v) {
396
+ traditional || rbracket.test(prefix) ? add(prefix, v) : buildParams(prefix + "[" + ("object" == typeof v ? i : "") + "]", v, traditional, add);
397
+ });else if (traditional || "object" !== jQuery.type(obj)) add(prefix, obj);else for (name in obj) buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
398
+ }
399
+ function createStandardXHR() {
400
+ try {
401
+ return new window.XMLHttpRequest();
402
+ } catch (e) {}
403
+ }
404
+ function createActiveXHR() {
405
+ try {
406
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
407
+ } catch (e) {}
408
+ }
409
+ function getWindow(elem) {
410
+ return jQuery.isWindow(elem) ? elem : 9 === elem.nodeType ? elem.defaultView || elem.parentWindow : !1;
411
+ }
412
+ var deletedIds = [],
413
+ slice = deletedIds.slice,
414
+ concat = deletedIds.concat,
415
+ push = deletedIds.push,
416
+ indexOf = deletedIds.indexOf,
417
+ class2type = {},
418
+ toString = class2type.toString,
419
+ hasOwn = class2type.hasOwnProperty,
420
+ support = {},
421
+ version = "1.11.3",
422
+ jQuery = function (selector, context) {
423
+ return new jQuery.fn.init(selector, context);
424
+ },
425
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
426
+ rmsPrefix = /^-ms-/,
427
+ rdashAlpha = /-([\da-z])/gi,
428
+ fcamelCase = function (all, letter) {
429
+ return letter.toUpperCase();
430
+ };
431
+ jQuery.fn = jQuery.prototype = {
432
+ jquery: version,
433
+ constructor: jQuery,
434
+ selector: "",
435
+ length: 0,
436
+ toArray: function () {
437
+ return slice.call(this);
438
+ },
439
+ get: function (num) {
440
+ return null != num ? 0 > num ? this[num + this.length] : this[num] : slice.call(this);
441
+ },
442
+ pushStack: function (elems) {
443
+ var ret = jQuery.merge(this.constructor(), elems);
444
+ return ret.prevObject = this, ret.context = this.context, ret;
445
+ },
446
+ each: function (callback, args) {
447
+ return jQuery.each(this, callback, args);
448
+ },
449
+ map: function (callback) {
450
+ return this.pushStack(jQuery.map(this, function (elem, i) {
451
+ return callback.call(elem, i, elem);
452
+ }));
453
+ },
454
+ slice: function () {
455
+ return this.pushStack(slice.apply(this, arguments));
456
+ },
457
+ first: function () {
458
+ return this.eq(0);
459
+ },
460
+ last: function () {
461
+ return this.eq(-1);
462
+ },
463
+ eq: function (i) {
464
+ var len = this.length,
465
+ j = +i + (0 > i ? len : 0);
466
+ return this.pushStack(j >= 0 && len > j ? [this[j]] : []);
467
+ },
468
+ end: function () {
469
+ return this.prevObject || this.constructor(null);
470
+ },
471
+ push: push,
472
+ sort: deletedIds.sort,
473
+ splice: deletedIds.splice
474
+ }, jQuery.extend = jQuery.fn.extend = function () {
475
+ var src,
476
+ copyIsArray,
477
+ copy,
478
+ name,
479
+ options,
480
+ clone,
481
+ target = arguments[0] || {},
482
+ i = 1,
483
+ length = arguments.length,
484
+ deep = !1;
485
+ for ("boolean" == typeof target && (deep = target, target = arguments[i] || {}, i++), "object" == typeof target || jQuery.isFunction(target) || (target = {}), i === length && (target = this, i--); length > i; i++) if (null != (options = arguments[i])) for (name in options) src = target[name], copy = options[name], target !== copy && (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy))) ? (copyIsArray ? (copyIsArray = !1, clone = src && jQuery.isArray(src) ? src : []) : clone = src && jQuery.isPlainObject(src) ? src : {}, target[name] = jQuery.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));
486
+ return target;
487
+ }, jQuery.extend({
488
+ expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
489
+ isReady: !0,
490
+ error: function (msg) {
491
+ throw new Error(msg);
492
+ },
493
+ noop: function () {},
494
+ isFunction: function (obj) {
495
+ return "function" === jQuery.type(obj);
496
+ },
497
+ isArray: Array.isArray || function (obj) {
498
+ return "array" === jQuery.type(obj);
499
+ },
500
+ isWindow: function (obj) {
501
+ return null != obj && obj == obj.window;
502
+ },
503
+ isNumeric: function (obj) {
504
+ return !jQuery.isArray(obj) && obj - parseFloat(obj) + 1 >= 0;
505
+ },
506
+ isEmptyObject: function (obj) {
507
+ var name;
508
+ for (name in obj) return !1;
509
+ return !0;
510
+ },
511
+ isPlainObject: function (obj) {
512
+ var key;
513
+ if (!obj || "object" !== jQuery.type(obj) || obj.nodeType || jQuery.isWindow(obj)) return !1;
514
+ try {
515
+ if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) return !1;
516
+ } catch (e) {
517
+ return !1;
518
+ }
519
+ if (support.ownLast) for (key in obj) return hasOwn.call(obj, key);
520
+ for (key in obj);
521
+ return void 0 === key || hasOwn.call(obj, key);
522
+ },
523
+ type: function (obj) {
524
+ return null == obj ? obj + "" : "object" == typeof obj || "function" == typeof obj ? class2type[toString.call(obj)] || "object" : typeof obj;
525
+ },
526
+ globalEval: function (data) {
527
+ data && jQuery.trim(data) && (window.execScript || function (data) {
528
+ window.eval.call(window, data);
529
+ })(data);
530
+ },
531
+ camelCase: function (string) {
532
+ return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
533
+ },
534
+ nodeName: function (elem, name) {
535
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
536
+ },
537
+ each: function (obj, callback, args) {
538
+ var value,
539
+ i = 0,
540
+ length = obj.length,
541
+ isArray = isArraylike(obj);
542
+ if (args) {
543
+ if (isArray) for (; length > i && (value = callback.apply(obj[i], args), value !== !1); i++);else for (i in obj) if (value = callback.apply(obj[i], args), value === !1) break;
544
+ } else if (isArray) for (; length > i && (value = callback.call(obj[i], i, obj[i]), value !== !1); i++);else for (i in obj) if (value = callback.call(obj[i], i, obj[i]), value === !1) break;
545
+ return obj;
546
+ },
547
+ trim: function (text) {
548
+ return null == text ? "" : (text + "").replace(rtrim, "");
549
+ },
550
+ makeArray: function (arr, results) {
551
+ var ret = results || [];
552
+ return null != arr && (isArraylike(Object(arr)) ? jQuery.merge(ret, "string" == typeof arr ? [arr] : arr) : push.call(ret, arr)), ret;
553
+ },
554
+ inArray: function (elem, arr, i) {
555
+ var len;
556
+ if (arr) {
557
+ if (indexOf) return indexOf.call(arr, elem, i);
558
+ for (len = arr.length, i = i ? 0 > i ? Math.max(0, len + i) : i : 0; len > i; i++) if (i in arr && arr[i] === elem) return i;
559
+ }
560
+ return -1;
561
+ },
562
+ merge: function (first, second) {
563
+ for (var len = +second.length, j = 0, i = first.length; len > j;) first[i++] = second[j++];
564
+ if (len !== len) for (; void 0 !== second[j];) first[i++] = second[j++];
565
+ return first.length = i, first;
566
+ },
567
+ grep: function (elems, callback, invert) {
568
+ for (var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; length > i; i++) callbackInverse = !callback(elems[i], i), callbackInverse !== callbackExpect && matches.push(elems[i]);
569
+ return matches;
570
+ },
571
+ map: function (elems, callback, arg) {
572
+ var value,
573
+ i = 0,
574
+ length = elems.length,
575
+ isArray = isArraylike(elems),
576
+ ret = [];
577
+ if (isArray) for (; length > i; i++) value = callback(elems[i], i, arg), null != value && ret.push(value);else for (i in elems) value = callback(elems[i], i, arg), null != value && ret.push(value);
578
+ return concat.apply([], ret);
579
+ },
580
+ guid: 1,
581
+ proxy: function (fn, context) {
582
+ var args, proxy, tmp;
583
+ return "string" == typeof context && (tmp = fn[context], context = fn, fn = tmp), jQuery.isFunction(fn) ? (args = slice.call(arguments, 2), proxy = function () {
584
+ return fn.apply(context || this, args.concat(slice.call(arguments)));
585
+ }, proxy.guid = fn.guid = fn.guid || jQuery.guid++, proxy) : void 0;
586
+ },
587
+ now: function () {
588
+ return +new Date();
589
+ },
590
+ support: support
591
+ }), jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (i, name) {
592
+ class2type["[object " + name + "]"] = name.toLowerCase();
593
+ });
594
+ var Sizzle = function (window) {
595
+ function Sizzle(selector, context, results, seed) {
596
+ var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;
597
+ if ((context ? context.ownerDocument || context : preferredDoc) !== document && setDocument(context), context = context || document, results = results || [], nodeType = context.nodeType, "string" != typeof selector || !selector || 1 !== nodeType && 9 !== nodeType && 11 !== nodeType) return results;
598
+ if (!seed && documentIsHTML) {
599
+ if (11 !== nodeType && (match = rquickExpr.exec(selector))) if (m = match[1]) {
600
+ if (9 === nodeType) {
601
+ if (elem = context.getElementById(m), !elem || !elem.parentNode) return results;
602
+ if (elem.id === m) return results.push(elem), results;
603
+ } else if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains(context, elem) && elem.id === m) return results.push(elem), results;
604
+ } else {
605
+ if (match[2]) return push.apply(results, context.getElementsByTagName(selector)), results;
606
+ if ((m = match[3]) && support.getElementsByClassName) return push.apply(results, context.getElementsByClassName(m)), results;
607
+ }
608
+ if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
609
+ if (nid = old = expando, newContext = context, newSelector = 1 !== nodeType && selector, 1 === nodeType && "object" !== context.nodeName.toLowerCase()) {
610
+ for (groups = tokenize(selector), (old = context.getAttribute("id")) ? nid = old.replace(rescape, "\\$&") : context.setAttribute("id", nid), nid = "[id='" + nid + "'] ", i = groups.length; i--;) groups[i] = nid + toSelector(groups[i]);
611
+ newContext = rsibling.test(selector) && testContext(context.parentNode) || context, newSelector = groups.join(",");
612
+ }
613
+ if (newSelector) try {
614
+ return push.apply(results, newContext.querySelectorAll(newSelector)), results;
615
+ } catch (qsaError) {} finally {
616
+ old || context.removeAttribute("id");
617
+ }
618
+ }
619
+ }
620
+ return select(selector.replace(rtrim, "$1"), context, results, seed);
621
+ }
622
+ function createCache() {
623
+ function cache(key, value) {
624
+ return keys.push(key + " ") > Expr.cacheLength && delete cache[keys.shift()], cache[key + " "] = value;
625
+ }
626
+ var keys = [];
627
+ return cache;
628
+ }
629
+ function markFunction(fn) {
630
+ return fn[expando] = !0, fn;
631
+ }
632
+ function assert(fn) {
633
+ var div = document.createElement("div");
634
+ try {
635
+ return !!fn(div);
636
+ } catch (e) {
637
+ return !1;
638
+ } finally {
639
+ div.parentNode && div.parentNode.removeChild(div), div = null;
640
+ }
641
+ }
642
+ function addHandle(attrs, handler) {
643
+ for (var arr = attrs.split("|"), i = attrs.length; i--;) Expr.attrHandle[arr[i]] = handler;
644
+ }
645
+ function siblingCheck(a, b) {
646
+ var cur = b && a,
647
+ diff = cur && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);
648
+ if (diff) return diff;
649
+ if (cur) for (; cur = cur.nextSibling;) if (cur === b) return -1;
650
+ return a ? 1 : -1;
651
+ }
652
+ function createInputPseudo(type) {
653
+ return function (elem) {
654
+ var name = elem.nodeName.toLowerCase();
655
+ return "input" === name && elem.type === type;
656
+ };
657
+ }
658
+ function createButtonPseudo(type) {
659
+ return function (elem) {
660
+ var name = elem.nodeName.toLowerCase();
661
+ return ("input" === name || "button" === name) && elem.type === type;
662
+ };
663
+ }
664
+ function createPositionalPseudo(fn) {
665
+ return markFunction(function (argument) {
666
+ return argument = +argument, markFunction(function (seed, matches) {
667
+ for (var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; i--;) seed[j = matchIndexes[i]] && (seed[j] = !(matches[j] = seed[j]));
668
+ });
669
+ });
670
+ }
671
+ function testContext(context) {
672
+ return context && "undefined" != typeof context.getElementsByTagName && context;
673
+ }
674
+ function setFilters() {}
675
+ function toSelector(tokens) {
676
+ for (var i = 0, len = tokens.length, selector = ""; len > i; i++) selector += tokens[i].value;
677
+ return selector;
678
+ }
679
+ function addCombinator(matcher, combinator, base) {
680
+ var dir = combinator.dir,
681
+ checkNonElements = base && "parentNode" === dir,
682
+ doneName = done++;
683
+ return combinator.first ? function (elem, context, xml) {
684
+ for (; elem = elem[dir];) if (1 === elem.nodeType || checkNonElements) return matcher(elem, context, xml);
685
+ } : function (elem, context, xml) {
686
+ var oldCache,
687
+ outerCache,
688
+ newCache = [dirruns, doneName];
689
+ if (xml) {
690
+ for (; elem = elem[dir];) if ((1 === elem.nodeType || checkNonElements) && matcher(elem, context, xml)) return !0;
691
+ } else for (; elem = elem[dir];) if (1 === elem.nodeType || checkNonElements) {
692
+ if (outerCache = elem[expando] || (elem[expando] = {}), (oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) return newCache[2] = oldCache[2];
693
+ if (outerCache[dir] = newCache, newCache[2] = matcher(elem, context, xml)) return !0;
694
+ }
695
+ };
696
+ }
697
+ function elementMatcher(matchers) {
698
+ return matchers.length > 1 ? function (elem, context, xml) {
699
+ for (var i = matchers.length; i--;) if (!matchers[i](elem, context, xml)) return !1;
700
+ return !0;
701
+ } : matchers[0];
702
+ }
703
+ function multipleContexts(selector, contexts, results) {
704
+ for (var i = 0, len = contexts.length; len > i; i++) Sizzle(selector, contexts[i], results);
705
+ return results;
706
+ }
707
+ function condense(unmatched, map, filter, context, xml) {
708
+ for (var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = null != map; len > i; i++) (elem = unmatched[i]) && (!filter || filter(elem, context, xml)) && (newUnmatched.push(elem), mapped && map.push(i));
709
+ return newUnmatched;
710
+ }
711
+ function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
712
+ return postFilter && !postFilter[expando] && (postFilter = setMatcher(postFilter)), postFinder && !postFinder[expando] && (postFinder = setMatcher(postFinder, postSelector)), markFunction(function (seed, results, context, xml) {
713
+ var temp,
714
+ i,
715
+ elem,
716
+ preMap = [],
717
+ postMap = [],
718
+ preexisting = results.length,
719
+ elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),
720
+ matcherIn = !preFilter || !seed && selector ? elems : condense(elems, preMap, preFilter, context, xml),
721
+ matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
722
+ if (matcher && matcher(matcherIn, matcherOut, context, xml), postFilter) for (temp = condense(matcherOut, postMap), postFilter(temp, [], context, xml), i = temp.length; i--;) (elem = temp[i]) && (matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem));
723
+ if (seed) {
724
+ if (postFinder || preFilter) {
725
+ if (postFinder) {
726
+ for (temp = [], i = matcherOut.length; i--;) (elem = matcherOut[i]) && temp.push(matcherIn[i] = elem);
727
+ postFinder(null, matcherOut = [], temp, xml);
728
+ }
729
+ for (i = matcherOut.length; i--;) (elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1 && (seed[temp] = !(results[temp] = elem));
730
+ }
731
+ } else matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut), postFinder ? postFinder(null, results, matcherOut, xml) : push.apply(results, matcherOut);
732
+ });
733
+ }
734
+ function matcherFromTokens(tokens) {
735
+ for (var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) {
736
+ return elem === checkContext;
737
+ }, implicitRelative, !0), matchAnyContext = addCombinator(function (elem) {
738
+ return indexOf(checkContext, elem) > -1;
739
+ }, implicitRelative, !0), matchers = [function (elem, context, xml) {
740
+ var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
741
+ return checkContext = null, ret;
742
+ }]; len > i; i++) if (matcher = Expr.relative[tokens[i].type]) matchers = [addCombinator(elementMatcher(matchers), matcher)];else {
743
+ if (matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches), matcher[expando]) {
744
+ for (j = ++i; len > j && !Expr.relative[tokens[j].type]; j++);
745
+ return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({
746
+ value: " " === tokens[i - 2].type ? "*" : ""
747
+ })).replace(rtrim, "$1"), matcher, j > i && matcherFromTokens(tokens.slice(i, j)), len > j && matcherFromTokens(tokens = tokens.slice(j)), len > j && toSelector(tokens));
748
+ }
749
+ matchers.push(matcher);
750
+ }
751
+ return elementMatcher(matchers);
752
+ }
753
+ function matcherFromGroupMatchers(elementMatchers, setMatchers) {
754
+ var bySet = setMatchers.length > 0,
755
+ byElement = elementMatchers.length > 0,
756
+ superMatcher = function (seed, context, xml, results, outermost) {
757
+ var elem,
758
+ j,
759
+ matcher,
760
+ matchedCount = 0,
761
+ i = "0",
762
+ unmatched = seed && [],
763
+ setMatched = [],
764
+ contextBackup = outermostContext,
765
+ elems = seed || byElement && Expr.find.TAG("*", outermost),
766
+ dirrunsUnique = dirruns += null == contextBackup ? 1 : Math.random() || .1,
767
+ len = elems.length;
768
+ for (outermost && (outermostContext = context !== document && context); i !== len && null != (elem = elems[i]); i++) {
769
+ if (byElement && elem) {
770
+ for (j = 0; matcher = elementMatchers[j++];) if (matcher(elem, context, xml)) {
771
+ results.push(elem);
772
+ break;
773
+ }
774
+ outermost && (dirruns = dirrunsUnique);
775
+ }
776
+ bySet && ((elem = !matcher && elem) && matchedCount--, seed && unmatched.push(elem));
777
+ }
778
+ if (matchedCount += i, bySet && i !== matchedCount) {
779
+ for (j = 0; matcher = setMatchers[j++];) matcher(unmatched, setMatched, context, xml);
780
+ if (seed) {
781
+ if (matchedCount > 0) for (; i--;) unmatched[i] || setMatched[i] || (setMatched[i] = pop.call(results));
782
+ setMatched = condense(setMatched);
783
+ }
784
+ push.apply(results, setMatched), outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1 && Sizzle.uniqueSort(results);
785
+ }
786
+ return outermost && (dirruns = dirrunsUnique, outermostContext = contextBackup), unmatched;
787
+ };
788
+ return bySet ? markFunction(superMatcher) : superMatcher;
789
+ }
790
+ var i,
791
+ support,
792
+ Expr,
793
+ getText,
794
+ isXML,
795
+ tokenize,
796
+ compile,
797
+ select,
798
+ outermostContext,
799
+ sortInput,
800
+ hasDuplicate,
801
+ setDocument,
802
+ document,
803
+ docElem,
804
+ documentIsHTML,
805
+ rbuggyQSA,
806
+ rbuggyMatches,
807
+ matches,
808
+ contains,
809
+ expando = "sizzle" + 1 * new Date(),
810
+ preferredDoc = window.document,
811
+ dirruns = 0,
812
+ done = 0,
813
+ classCache = createCache(),
814
+ tokenCache = createCache(),
815
+ compilerCache = createCache(),
816
+ sortOrder = function (a, b) {
817
+ return a === b && (hasDuplicate = !0), 0;
818
+ },
819
+ MAX_NEGATIVE = 1 << 31,
820
+ hasOwn = {}.hasOwnProperty,
821
+ arr = [],
822
+ pop = arr.pop,
823
+ push_native = arr.push,
824
+ push = arr.push,
825
+ slice = arr.slice,
826
+ indexOf = function (list, elem) {
827
+ for (var i = 0, len = list.length; len > i; i++) if (list[i] === elem) return i;
828
+ return -1;
829
+ },
830
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
831
+ whitespace = "[\\x20\\t\\r\\n\\f]",
832
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
833
+ identifier = characterEncoding.replace("w", "w#"),
834
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]",
835
+ pseudos = ":(" + characterEncoding + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|.*)\\)|)",
836
+ rwhitespace = new RegExp(whitespace + "+", "g"),
837
+ rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"),
838
+ rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
839
+ rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
840
+ rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"),
841
+ rpseudo = new RegExp(pseudos),
842
+ ridentifier = new RegExp("^" + identifier + "$"),
843
+ matchExpr = {
844
+ ID: new RegExp("^#(" + characterEncoding + ")"),
845
+ CLASS: new RegExp("^\\.(" + characterEncoding + ")"),
846
+ TAG: new RegExp("^(" + characterEncoding.replace("w", "w*") + ")"),
847
+ ATTR: new RegExp("^" + attributes),
848
+ PSEUDO: new RegExp("^" + pseudos),
849
+ CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
850
+ bool: new RegExp("^(?:" + booleans + ")$", "i"),
851
+ needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
852
+ },
853
+ rinputs = /^(?:input|select|textarea|button)$/i,
854
+ rheader = /^h\d$/i,
855
+ rnative = /^[^{]+\{\s*\[native \w/,
856
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
857
+ rsibling = /[+~]/,
858
+ rescape = /'|\\/g,
859
+ runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"),
860
+ funescape = function (_, escaped, escapedWhitespace) {
861
+ var high = "0x" + escaped - 65536;
862
+ return high !== high || escapedWhitespace ? escaped : 0 > high ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, 1023 & high | 56320);
863
+ },
864
+ unloadHandler = function () {
865
+ setDocument();
866
+ };
867
+ try {
868
+ push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes), arr[preferredDoc.childNodes.length].nodeType;
869
+ } catch (e) {
870
+ push = {
871
+ apply: arr.length ? function (target, els) {
872
+ push_native.apply(target, slice.call(els));
873
+ } : function (target, els) {
874
+ for (var j = target.length, i = 0; target[j++] = els[i++];);
875
+ target.length = j - 1;
876
+ }
877
+ };
878
+ }
879
+ support = Sizzle.support = {}, isXML = Sizzle.isXML = function (elem) {
880
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
881
+ return documentElement ? "HTML" !== documentElement.nodeName : !1;
882
+ }, setDocument = Sizzle.setDocument = function (node) {
883
+ var hasCompare,
884
+ parent,
885
+ doc = node ? node.ownerDocument || node : preferredDoc;
886
+ return doc !== document && 9 === doc.nodeType && doc.documentElement ? (document = doc, docElem = doc.documentElement, parent = doc.defaultView, parent && parent !== parent.top && (parent.addEventListener ? parent.addEventListener("unload", unloadHandler, !1) : parent.attachEvent && parent.attachEvent("onunload", unloadHandler)), documentIsHTML = !isXML(doc), support.attributes = assert(function (div) {
887
+ return div.className = "i", !div.getAttribute("className");
888
+ }), support.getElementsByTagName = assert(function (div) {
889
+ return div.appendChild(doc.createComment("")), !div.getElementsByTagName("*").length;
890
+ }), support.getElementsByClassName = rnative.test(doc.getElementsByClassName), support.getById = assert(function (div) {
891
+ return docElem.appendChild(div).id = expando, !doc.getElementsByName || !doc.getElementsByName(expando).length;
892
+ }), support.getById ? (Expr.find.ID = function (id, context) {
893
+ if ("undefined" != typeof context.getElementById && documentIsHTML) {
894
+ var m = context.getElementById(id);
895
+ return m && m.parentNode ? [m] : [];
896
+ }
897
+ }, Expr.filter.ID = function (id) {
898
+ var attrId = id.replace(runescape, funescape);
899
+ return function (elem) {
900
+ return elem.getAttribute("id") === attrId;
901
+ };
902
+ }) : (delete Expr.find.ID, Expr.filter.ID = function (id) {
903
+ var attrId = id.replace(runescape, funescape);
904
+ return function (elem) {
905
+ var node = "undefined" != typeof elem.getAttributeNode && elem.getAttributeNode("id");
906
+ return node && node.value === attrId;
907
+ };
908
+ }), Expr.find.TAG = support.getElementsByTagName ? function (tag, context) {
909
+ return "undefined" != typeof context.getElementsByTagName ? context.getElementsByTagName(tag) : support.qsa ? context.querySelectorAll(tag) : void 0;
910
+ } : function (tag, context) {
911
+ var elem,
912
+ tmp = [],
913
+ i = 0,
914
+ results = context.getElementsByTagName(tag);
915
+ if ("*" === tag) {
916
+ for (; elem = results[i++];) 1 === elem.nodeType && tmp.push(elem);
917
+ return tmp;
918
+ }
919
+ return results;
920
+ }, Expr.find.CLASS = support.getElementsByClassName && function (className, context) {
921
+ return documentIsHTML ? context.getElementsByClassName(className) : void 0;
922
+ }, rbuggyMatches = [], rbuggyQSA = [], (support.qsa = rnative.test(doc.querySelectorAll)) && (assert(function (div) {
923
+ docElem.appendChild(div).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\f]' msallowcapture=''><option selected=''></option></select>", div.querySelectorAll("[msallowcapture^='']").length && rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")"), div.querySelectorAll("[selected]").length || rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"), div.querySelectorAll("[id~=" + expando + "-]").length || rbuggyQSA.push("~="), div.querySelectorAll(":checked").length || rbuggyQSA.push(":checked"), div.querySelectorAll("a#" + expando + "+*").length || rbuggyQSA.push(".#.+[+~]");
924
+ }), assert(function (div) {
925
+ var input = doc.createElement("input");
926
+ input.setAttribute("type", "hidden"), div.appendChild(input).setAttribute("name", "D"), div.querySelectorAll("[name=d]").length && rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="), div.querySelectorAll(":enabled").length || rbuggyQSA.push(":enabled", ":disabled"), div.querySelectorAll("*,:x"), rbuggyQSA.push(",.*:");
927
+ })), (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) && assert(function (div) {
928
+ support.disconnectedMatch = matches.call(div, "div"), matches.call(div, "[s!='']:x"), rbuggyMatches.push("!=", pseudos);
929
+ }), rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")), rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")), hasCompare = rnative.test(docElem.compareDocumentPosition), contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {
930
+ var adown = 9 === a.nodeType ? a.documentElement : a,
931
+ bup = b && b.parentNode;
932
+ return a === bup || !(!bup || 1 !== bup.nodeType || !(adown.contains ? adown.contains(bup) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(bup)));
933
+ } : function (a, b) {
934
+ if (b) for (; b = b.parentNode;) if (b === a) return !0;
935
+ return !1;
936
+ }, sortOrder = hasCompare ? function (a, b) {
937
+ if (a === b) return hasDuplicate = !0, 0;
938
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
939
+ return compare ? compare : (compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & compare || !support.sortDetached && b.compareDocumentPosition(a) === compare ? a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ? -1 : b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0 : 4 & compare ? -1 : 1);
940
+ } : function (a, b) {
941
+ if (a === b) return hasDuplicate = !0, 0;
942
+ var cur,
943
+ i = 0,
944
+ aup = a.parentNode,
945
+ bup = b.parentNode,
946
+ ap = [a],
947
+ bp = [b];
948
+ if (!aup || !bup) return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
949
+ if (aup === bup) return siblingCheck(a, b);
950
+ for (cur = a; cur = cur.parentNode;) ap.unshift(cur);
951
+ for (cur = b; cur = cur.parentNode;) bp.unshift(cur);
952
+ for (; ap[i] === bp[i];) i++;
953
+ return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;
954
+ }, doc) : document;
955
+ }, Sizzle.matches = function (expr, elements) {
956
+ return Sizzle(expr, null, null, elements);
957
+ }, Sizzle.matchesSelector = function (elem, expr) {
958
+ if ((elem.ownerDocument || elem) !== document && setDocument(elem), expr = expr.replace(rattributeQuotes, "='$1']"), support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) try {
959
+ var ret = matches.call(elem, expr);
960
+ if (ret || support.disconnectedMatch || elem.document && 11 !== elem.document.nodeType) return ret;
961
+ } catch (e) {}
962
+ return Sizzle(expr, document, null, [elem]).length > 0;
963
+ }, Sizzle.contains = function (context, elem) {
964
+ return (context.ownerDocument || context) !== document && setDocument(context), contains(context, elem);
965
+ }, Sizzle.attr = function (elem, name) {
966
+ (elem.ownerDocument || elem) !== document && setDocument(elem);
967
+ var fn = Expr.attrHandle[name.toLowerCase()],
968
+ val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0;
969
+ return void 0 !== val ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
970
+ }, Sizzle.error = function (msg) {
971
+ throw new Error("Syntax error, unrecognized expression: " + msg);
972
+ }, Sizzle.uniqueSort = function (results) {
973
+ var elem,
974
+ duplicates = [],
975
+ j = 0,
976
+ i = 0;
977
+ if (hasDuplicate = !support.detectDuplicates, sortInput = !support.sortStable && results.slice(0), results.sort(sortOrder), hasDuplicate) {
978
+ for (; elem = results[i++];) elem === results[i] && (j = duplicates.push(i));
979
+ for (; j--;) results.splice(duplicates[j], 1);
980
+ }
981
+ return sortInput = null, results;
982
+ }, getText = Sizzle.getText = function (elem) {
983
+ var node,
984
+ ret = "",
985
+ i = 0,
986
+ nodeType = elem.nodeType;
987
+ if (nodeType) {
988
+ if (1 === nodeType || 9 === nodeType || 11 === nodeType) {
989
+ if ("string" == typeof elem.textContent) return elem.textContent;
990
+ for (elem = elem.firstChild; elem; elem = elem.nextSibling) ret += getText(elem);
991
+ } else if (3 === nodeType || 4 === nodeType) return elem.nodeValue;
992
+ } else for (; node = elem[i++];) ret += getText(node);
993
+ return ret;
994
+ }, Expr = Sizzle.selectors = {
995
+ cacheLength: 50,
996
+ createPseudo: markFunction,
997
+ match: matchExpr,
998
+ attrHandle: {},
999
+ find: {},
1000
+ relative: {
1001
+ ">": {
1002
+ dir: "parentNode",
1003
+ first: !0
1004
+ },
1005
+ " ": {
1006
+ dir: "parentNode"
1007
+ },
1008
+ "+": {
1009
+ dir: "previousSibling",
1010
+ first: !0
1011
+ },
1012
+ "~": {
1013
+ dir: "previousSibling"
1014
+ }
1015
+ },
1016
+ preFilter: {
1017
+ ATTR: function (match) {
1018
+ return match[1] = match[1].replace(runescape, funescape), match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape), "~=" === match[2] && (match[3] = " " + match[3] + " "), match.slice(0, 4);
1019
+ },
1020
+ CHILD: function (match) {
1021
+ return match[1] = match[1].toLowerCase(), "nth" === match[1].slice(0, 3) ? (match[3] || Sizzle.error(match[0]), match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * ("even" === match[3] || "odd" === match[3])), match[5] = +(match[7] + match[8] || "odd" === match[3])) : match[3] && Sizzle.error(match[0]), match;
1022
+ },
1023
+ PSEUDO: function (match) {
1024
+ var excess,
1025
+ unquoted = !match[6] && match[2];
1026
+ return matchExpr.CHILD.test(match[0]) ? null : (match[3] ? match[2] = match[4] || match[5] || "" : unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, !0)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) && (match[0] = match[0].slice(0, excess), match[2] = unquoted.slice(0, excess)), match.slice(0, 3));
1027
+ }
1028
+ },
1029
+ filter: {
1030
+ TAG: function (nodeNameSelector) {
1031
+ var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
1032
+ return "*" === nodeNameSelector ? function () {
1033
+ return !0;
1034
+ } : function (elem) {
1035
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1036
+ };
1037
+ },
1038
+ CLASS: function (className) {
1039
+ var pattern = classCache[className + " "];
1040
+ return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function (elem) {
1041
+ return pattern.test("string" == typeof elem.className && elem.className || "undefined" != typeof elem.getAttribute && elem.getAttribute("class") || "");
1042
+ });
1043
+ },
1044
+ ATTR: function (name, operator, check) {
1045
+ return function (elem) {
1046
+ var result = Sizzle.attr(elem, name);
1047
+ return null == result ? "!=" === operator : operator ? (result += "", "=" === operator ? result === check : "!=" === operator ? result !== check : "^=" === operator ? check && 0 === result.indexOf(check) : "*=" === operator ? check && result.indexOf(check) > -1 : "$=" === operator ? check && result.slice(-check.length) === check : "~=" === operator ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : "|=" === operator ? result === check || result.slice(0, check.length + 1) === check + "-" : !1) : !0;
1048
+ };
1049
+ },
1050
+ CHILD: function (type, what, argument, first, last) {
1051
+ var simple = "nth" !== type.slice(0, 3),
1052
+ forward = "last" !== type.slice(-4),
1053
+ ofType = "of-type" === what;
1054
+ return 1 === first && 0 === last ? function (elem) {
1055
+ return !!elem.parentNode;
1056
+ } : function (elem, context, xml) {
1057
+ var cache,
1058
+ outerCache,
1059
+ node,
1060
+ diff,
1061
+ nodeIndex,
1062
+ start,
1063
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
1064
+ parent = elem.parentNode,
1065
+ name = ofType && elem.nodeName.toLowerCase(),
1066
+ useCache = !xml && !ofType;
1067
+ if (parent) {
1068
+ if (simple) {
1069
+ for (; dir;) {
1070
+ for (node = elem; node = node[dir];) if (ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) return !1;
1071
+ start = dir = "only" === type && !start && "nextSibling";
1072
+ }
1073
+ return !0;
1074
+ }
1075
+ if (start = [forward ? parent.firstChild : parent.lastChild], forward && useCache) {
1076
+ for (outerCache = parent[expando] || (parent[expando] = {}), cache = outerCache[type] || [], nodeIndex = cache[0] === dirruns && cache[1], diff = cache[0] === dirruns && cache[2], node = nodeIndex && parent.childNodes[nodeIndex]; node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop();) if (1 === node.nodeType && ++diff && node === elem) {
1077
+ outerCache[type] = [dirruns, nodeIndex, diff];
1078
+ break;
1079
+ }
1080
+ } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) diff = cache[1];else for (; (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) && ((ofType ? node.nodeName.toLowerCase() !== name : 1 !== node.nodeType) || !++diff || (useCache && ((node[expando] || (node[expando] = {}))[type] = [dirruns, diff]), node !== elem)););
1081
+ return diff -= last, diff === first || diff % first === 0 && diff / first >= 0;
1082
+ }
1083
+ };
1084
+ },
1085
+ PSEUDO: function (pseudo, argument) {
1086
+ var args,
1087
+ fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo);
1088
+ return fn[expando] ? fn(argument) : fn.length > 1 ? (args = [pseudo, pseudo, "", argument], Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
1089
+ for (var idx, matched = fn(seed, argument), i = matched.length; i--;) idx = indexOf(seed, matched[i]), seed[idx] = !(matches[idx] = matched[i]);
1090
+ }) : function (elem) {
1091
+ return fn(elem, 0, args);
1092
+ }) : fn;
1093
+ }
1094
+ },
1095
+ pseudos: {
1096
+ not: markFunction(function (selector) {
1097
+ var input = [],
1098
+ results = [],
1099
+ matcher = compile(selector.replace(rtrim, "$1"));
1100
+ return matcher[expando] ? markFunction(function (seed, matches, context, xml) {
1101
+ for (var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; i--;) (elem = unmatched[i]) && (seed[i] = !(matches[i] = elem));
1102
+ }) : function (elem, context, xml) {
1103
+ return input[0] = elem, matcher(input, null, xml, results), input[0] = null, !results.pop();
1104
+ };
1105
+ }),
1106
+ has: markFunction(function (selector) {
1107
+ return function (elem) {
1108
+ return Sizzle(selector, elem).length > 0;
1109
+ };
1110
+ }),
1111
+ contains: markFunction(function (text) {
1112
+ return text = text.replace(runescape, funescape), function (elem) {
1113
+ return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;
1114
+ };
1115
+ }),
1116
+ lang: markFunction(function (lang) {
1117
+ return ridentifier.test(lang || "") || Sizzle.error("unsupported lang: " + lang), lang = lang.replace(runescape, funescape).toLowerCase(), function (elem) {
1118
+ var elemLang;
1119
+ do if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) return elemLang = elemLang.toLowerCase(), elemLang === lang || 0 === elemLang.indexOf(lang + "-"); while ((elem = elem.parentNode) && 1 === elem.nodeType);
1120
+ return !1;
1121
+ };
1122
+ }),
1123
+ target: function (elem) {
1124
+ var hash = window.location && window.location.hash;
1125
+ return hash && hash.slice(1) === elem.id;
1126
+ },
1127
+ root: function (elem) {
1128
+ return elem === docElem;
1129
+ },
1130
+ focus: function (elem) {
1131
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
1132
+ },
1133
+ enabled: function (elem) {
1134
+ return elem.disabled === !1;
1135
+ },
1136
+ disabled: function (elem) {
1137
+ return elem.disabled === !0;
1138
+ },
1139
+ checked: function (elem) {
1140
+ var nodeName = elem.nodeName.toLowerCase();
1141
+ return "input" === nodeName && !!elem.checked || "option" === nodeName && !!elem.selected;
1142
+ },
1143
+ selected: function (elem) {
1144
+ return elem.parentNode && elem.parentNode.selectedIndex, elem.selected === !0;
1145
+ },
1146
+ empty: function (elem) {
1147
+ for (elem = elem.firstChild; elem; elem = elem.nextSibling) if (elem.nodeType < 6) return !1;
1148
+ return !0;
1149
+ },
1150
+ parent: function (elem) {
1151
+ return !Expr.pseudos.empty(elem);
1152
+ },
1153
+ header: function (elem) {
1154
+ return rheader.test(elem.nodeName);
1155
+ },
1156
+ input: function (elem) {
1157
+ return rinputs.test(elem.nodeName);
1158
+ },
1159
+ button: function (elem) {
1160
+ var name = elem.nodeName.toLowerCase();
1161
+ return "input" === name && "button" === elem.type || "button" === name;
1162
+ },
1163
+ text: function (elem) {
1164
+ var attr;
1165
+ return "input" === elem.nodeName.toLowerCase() && "text" === elem.type && (null == (attr = elem.getAttribute("type")) || "text" === attr.toLowerCase());
1166
+ },
1167
+ first: createPositionalPseudo(function () {
1168
+ return [0];
1169
+ }),
1170
+ last: createPositionalPseudo(function (matchIndexes, length) {
1171
+ return [length - 1];
1172
+ }),
1173
+ eq: createPositionalPseudo(function (matchIndexes, length, argument) {
1174
+ return [0 > argument ? argument + length : argument];
1175
+ }),
1176
+ even: createPositionalPseudo(function (matchIndexes, length) {
1177
+ for (var i = 0; length > i; i += 2) matchIndexes.push(i);
1178
+ return matchIndexes;
1179
+ }),
1180
+ odd: createPositionalPseudo(function (matchIndexes, length) {
1181
+ for (var i = 1; length > i; i += 2) matchIndexes.push(i);
1182
+ return matchIndexes;
1183
+ }),
1184
+ lt: createPositionalPseudo(function (matchIndexes, length, argument) {
1185
+ for (var i = 0 > argument ? argument + length : argument; --i >= 0;) matchIndexes.push(i);
1186
+ return matchIndexes;
1187
+ }),
1188
+ gt: createPositionalPseudo(function (matchIndexes, length, argument) {
1189
+ for (var i = 0 > argument ? argument + length : argument; ++i < length;) matchIndexes.push(i);
1190
+ return matchIndexes;
1191
+ })
1192
+ }
1193
+ }, Expr.pseudos.nth = Expr.pseudos.eq;
1194
+ for (i in {
1195
+ radio: !0,
1196
+ checkbox: !0,
1197
+ file: !0,
1198
+ password: !0,
1199
+ image: !0
1200
+ }) Expr.pseudos[i] = createInputPseudo(i);
1201
+ for (i in {
1202
+ submit: !0,
1203
+ reset: !0
1204
+ }) Expr.pseudos[i] = createButtonPseudo(i);
1205
+ return setFilters.prototype = Expr.filters = Expr.pseudos, Expr.setFilters = new setFilters(), tokenize = Sizzle.tokenize = function (selector, parseOnly) {
1206
+ var matched,
1207
+ match,
1208
+ tokens,
1209
+ type,
1210
+ soFar,
1211
+ groups,
1212
+ preFilters,
1213
+ cached = tokenCache[selector + " "];
1214
+ if (cached) return parseOnly ? 0 : cached.slice(0);
1215
+ for (soFar = selector, groups = [], preFilters = Expr.preFilter; soFar;) {
1216
+ (!matched || (match = rcomma.exec(soFar))) && (match && (soFar = soFar.slice(match[0].length) || soFar), groups.push(tokens = [])), matched = !1, (match = rcombinators.exec(soFar)) && (matched = match.shift(), tokens.push({
1217
+ value: matched,
1218
+ type: match[0].replace(rtrim, " ")
1219
+ }), soFar = soFar.slice(matched.length));
1220
+ for (type in Expr.filter) !(match = matchExpr[type].exec(soFar)) || preFilters[type] && !(match = preFilters[type](match)) || (matched = match.shift(), tokens.push({
1221
+ value: matched,
1222
+ type: type,
1223
+ matches: match
1224
+ }), soFar = soFar.slice(matched.length));
1225
+ if (!matched) break;
1226
+ }
1227
+ return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);
1228
+ }, compile = Sizzle.compile = function (selector, match) {
1229
+ var i,
1230
+ setMatchers = [],
1231
+ elementMatchers = [],
1232
+ cached = compilerCache[selector + " "];
1233
+ if (!cached) {
1234
+ for (match || (match = tokenize(selector)), i = match.length; i--;) cached = matcherFromTokens(match[i]), cached[expando] ? setMatchers.push(cached) : elementMatchers.push(cached);
1235
+ cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)), cached.selector = selector;
1236
+ }
1237
+ return cached;
1238
+ }, select = Sizzle.select = function (selector, context, results, seed) {
1239
+ var i,
1240
+ tokens,
1241
+ token,
1242
+ type,
1243
+ find,
1244
+ compiled = "function" == typeof selector && selector,
1245
+ match = !seed && tokenize(selector = compiled.selector || selector);
1246
+ if (results = results || [], 1 === match.length) {
1247
+ if (tokens = match[0] = match[0].slice(0), tokens.length > 2 && "ID" === (token = tokens[0]).type && support.getById && 9 === context.nodeType && documentIsHTML && Expr.relative[tokens[1].type]) {
1248
+ if (context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0], !context) return results;
1249
+ compiled && (context = context.parentNode), selector = selector.slice(tokens.shift().value.length);
1250
+ }
1251
+ for (i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; i-- && (token = tokens[i], !Expr.relative[type = token.type]);) if ((find = Expr.find[type]) && (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context))) {
1252
+ if (tokens.splice(i, 1), selector = seed.length && toSelector(tokens), !selector) return push.apply(results, seed), results;
1253
+ break;
1254
+ }
1255
+ }
1256
+ return (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context), results;
1257
+ }, support.sortStable = expando.split("").sort(sortOrder).join("") === expando, support.detectDuplicates = !!hasDuplicate, setDocument(), support.sortDetached = assert(function (div1) {
1258
+ return 1 & div1.compareDocumentPosition(document.createElement("div"));
1259
+ }), assert(function (div) {
1260
+ return div.innerHTML = "<a href='#'></a>", "#" === div.firstChild.getAttribute("href");
1261
+ }) || addHandle("type|href|height|width", function (elem, name, isXML) {
1262
+ return isXML ? void 0 : elem.getAttribute(name, "type" === name.toLowerCase() ? 1 : 2);
1263
+ }), support.attributes && assert(function (div) {
1264
+ return div.innerHTML = "<input/>", div.firstChild.setAttribute("value", ""), "" === div.firstChild.getAttribute("value");
1265
+ }) || addHandle("value", function (elem, name, isXML) {
1266
+ return isXML || "input" !== elem.nodeName.toLowerCase() ? void 0 : elem.defaultValue;
1267
+ }), assert(function (div) {
1268
+ return null == div.getAttribute("disabled");
1269
+ }) || addHandle(booleans, function (elem, name, isXML) {
1270
+ var val;
1271
+ return isXML ? void 0 : elem[name] === !0 ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
1272
+ }), Sizzle;
1273
+ }(window);
1274
+ jQuery.find = Sizzle, jQuery.expr = Sizzle.selectors, jQuery.expr[":"] = jQuery.expr.pseudos, jQuery.unique = Sizzle.uniqueSort, jQuery.text = Sizzle.getText, jQuery.isXMLDoc = Sizzle.isXML, jQuery.contains = Sizzle.contains;
1275
+ var rneedsContext = jQuery.expr.match.needsContext,
1276
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
1277
+ risSimple = /^.[^:#\[\.,]*$/;
1278
+ jQuery.filter = function (expr, elems, not) {
1279
+ var elem = elems[0];
1280
+ return not && (expr = ":not(" + expr + ")"), 1 === elems.length && 1 === elem.nodeType ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {
1281
+ return 1 === elem.nodeType;
1282
+ }));
1283
+ }, jQuery.fn.extend({
1284
+ find: function (selector) {
1285
+ var i,
1286
+ ret = [],
1287
+ self = this,
1288
+ len = self.length;
1289
+ if ("string" != typeof selector) return this.pushStack(jQuery(selector).filter(function () {
1290
+ for (i = 0; len > i; i++) if (jQuery.contains(self[i], this)) return !0;
1291
+ }));
1292
+ for (i = 0; len > i; i++) jQuery.find(selector, self[i], ret);
1293
+ return ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret), ret.selector = this.selector ? this.selector + " " + selector : selector, ret;
1294
+ },
1295
+ filter: function (selector) {
1296
+ return this.pushStack(winnow(this, selector || [], !1));
1297
+ },
1298
+ not: function (selector) {
1299
+ return this.pushStack(winnow(this, selector || [], !0));
1300
+ },
1301
+ is: function (selector) {
1302
+ return !!winnow(this, "string" == typeof selector && rneedsContext.test(selector) ? jQuery(selector) : selector || [], !1).length;
1303
+ }
1304
+ });
1305
+ var rootjQuery,
1306
+ document = window.document,
1307
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
1308
+ init = jQuery.fn.init = function (selector, context) {
1309
+ var match, elem;
1310
+ if (!selector) return this;
1311
+ if ("string" == typeof selector) {
1312
+ if (match = "<" === selector.charAt(0) && ">" === selector.charAt(selector.length - 1) && selector.length >= 3 ? [null, selector, null] : rquickExpr.exec(selector), !match || !match[1] && context) return !context || context.jquery ? (context || rootjQuery).find(selector) : this.constructor(context).find(selector);
1313
+ if (match[1]) {
1314
+ if (context = context instanceof jQuery ? context[0] : context, jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, !0)), rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) for (match in context) jQuery.isFunction(this[match]) ? this[match](context[match]) : this.attr(match, context[match]);
1315
+ return this;
1316
+ }
1317
+ if (elem = document.getElementById(match[2]), elem && elem.parentNode) {
1318
+ if (elem.id !== match[2]) return rootjQuery.find(selector);
1319
+ this.length = 1, this[0] = elem;
1320
+ }
1321
+ return this.context = document, this.selector = selector, this;
1322
+ }
1323
+ return selector.nodeType ? (this.context = this[0] = selector, this.length = 1, this) : jQuery.isFunction(selector) ? "undefined" != typeof rootjQuery.ready ? rootjQuery.ready(selector) : selector(jQuery) : (void 0 !== selector.selector && (this.selector = selector.selector, this.context = selector.context), jQuery.makeArray(selector, this));
1324
+ };
1325
+ init.prototype = jQuery.fn, rootjQuery = jQuery(document);
1326
+ var rparentsprev = /^(?:parents|prev(?:Until|All))/,
1327
+ guaranteedUnique = {
1328
+ children: !0,
1329
+ contents: !0,
1330
+ next: !0,
1331
+ prev: !0
1332
+ };
1333
+ jQuery.extend({
1334
+ dir: function (elem, dir, until) {
1335
+ for (var matched = [], cur = elem[dir]; cur && 9 !== cur.nodeType && (void 0 === until || 1 !== cur.nodeType || !jQuery(cur).is(until));) 1 === cur.nodeType && matched.push(cur), cur = cur[dir];
1336
+ return matched;
1337
+ },
1338
+ sibling: function (n, elem) {
1339
+ for (var r = []; n; n = n.nextSibling) 1 === n.nodeType && n !== elem && r.push(n);
1340
+ return r;
1341
+ }
1342
+ }), jQuery.fn.extend({
1343
+ has: function (target) {
1344
+ var i,
1345
+ targets = jQuery(target, this),
1346
+ len = targets.length;
1347
+ return this.filter(function () {
1348
+ for (i = 0; len > i; i++) if (jQuery.contains(this, targets[i])) return !0;
1349
+ });
1350
+ },
1351
+ closest: function (selectors, context) {
1352
+ for (var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test(selectors) || "string" != typeof selectors ? jQuery(selectors, context || this.context) : 0; l > i; i++) for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : 1 === cur.nodeType && jQuery.find.matchesSelector(cur, selectors))) {
1353
+ matched.push(cur);
1354
+ break;
1355
+ }
1356
+ return this.pushStack(matched.length > 1 ? jQuery.unique(matched) : matched);
1357
+ },
1358
+ index: function (elem) {
1359
+ return elem ? "string" == typeof elem ? jQuery.inArray(this[0], jQuery(elem)) : jQuery.inArray(elem.jquery ? elem[0] : elem, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
1360
+ },
1361
+ add: function (selector, context) {
1362
+ return this.pushStack(jQuery.unique(jQuery.merge(this.get(), jQuery(selector, context))));
1363
+ },
1364
+ addBack: function (selector) {
1365
+ return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector));
1366
+ }
1367
+ }), jQuery.each({
1368
+ parent: function (elem) {
1369
+ var parent = elem.parentNode;
1370
+ return parent && 11 !== parent.nodeType ? parent : null;
1371
+ },
1372
+ parents: function (elem) {
1373
+ return jQuery.dir(elem, "parentNode");
1374
+ },
1375
+ parentsUntil: function (elem, i, until) {
1376
+ return jQuery.dir(elem, "parentNode", until);
1377
+ },
1378
+ next: function (elem) {
1379
+ return sibling(elem, "nextSibling");
1380
+ },
1381
+ prev: function (elem) {
1382
+ return sibling(elem, "previousSibling");
1383
+ },
1384
+ nextAll: function (elem) {
1385
+ return jQuery.dir(elem, "nextSibling");
1386
+ },
1387
+ prevAll: function (elem) {
1388
+ return jQuery.dir(elem, "previousSibling");
1389
+ },
1390
+ nextUntil: function (elem, i, until) {
1391
+ return jQuery.dir(elem, "nextSibling", until);
1392
+ },
1393
+ prevUntil: function (elem, i, until) {
1394
+ return jQuery.dir(elem, "previousSibling", until);
1395
+ },
1396
+ siblings: function (elem) {
1397
+ return jQuery.sibling((elem.parentNode || {}).firstChild, elem);
1398
+ },
1399
+ children: function (elem) {
1400
+ return jQuery.sibling(elem.firstChild);
1401
+ },
1402
+ contents: function (elem) {
1403
+ return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.merge([], elem.childNodes);
1404
+ }
1405
+ }, function (name, fn) {
1406
+ jQuery.fn[name] = function (until, selector) {
1407
+ var ret = jQuery.map(this, fn, until);
1408
+ return "Until" !== name.slice(-5) && (selector = until), selector && "string" == typeof selector && (ret = jQuery.filter(selector, ret)), this.length > 1 && (guaranteedUnique[name] || (ret = jQuery.unique(ret)), rparentsprev.test(name) && (ret = ret.reverse())), this.pushStack(ret);
1409
+ };
1410
+ });
1411
+ var rnotwhite = /\S+/g,
1412
+ optionsCache = {};
1413
+ jQuery.Callbacks = function (options) {
1414
+ options = "string" == typeof options ? optionsCache[options] || createOptions(options) : jQuery.extend({}, options);
1415
+ var firing,
1416
+ memory,
1417
+ fired,
1418
+ firingLength,
1419
+ firingIndex,
1420
+ firingStart,
1421
+ list = [],
1422
+ stack = !options.once && [],
1423
+ fire = function (data) {
1424
+ for (memory = options.memory && data, fired = !0, firingIndex = firingStart || 0, firingStart = 0, firingLength = list.length, firing = !0; list && firingLength > firingIndex; firingIndex++) if (list[firingIndex].apply(data[0], data[1]) === !1 && options.stopOnFalse) {
1425
+ memory = !1;
1426
+ break;
1427
+ }
1428
+ firing = !1, list && (stack ? stack.length && fire(stack.shift()) : memory ? list = [] : self.disable());
1429
+ },
1430
+ self = {
1431
+ add: function () {
1432
+ if (list) {
1433
+ var start = list.length;
1434
+ !function add(args) {
1435
+ jQuery.each(args, function (_, arg) {
1436
+ var type = jQuery.type(arg);
1437
+ "function" === type ? options.unique && self.has(arg) || list.push(arg) : arg && arg.length && "string" !== type && add(arg);
1438
+ });
1439
+ }(arguments), firing ? firingLength = list.length : memory && (firingStart = start, fire(memory));
1440
+ }
1441
+ return this;
1442
+ },
1443
+ remove: function () {
1444
+ return list && jQuery.each(arguments, function (_, arg) {
1445
+ for (var index; (index = jQuery.inArray(arg, list, index)) > -1;) list.splice(index, 1), firing && (firingLength >= index && firingLength--, firingIndex >= index && firingIndex--);
1446
+ }), this;
1447
+ },
1448
+ has: function (fn) {
1449
+ return fn ? jQuery.inArray(fn, list) > -1 : !(!list || !list.length);
1450
+ },
1451
+ empty: function () {
1452
+ return list = [], firingLength = 0, this;
1453
+ },
1454
+ disable: function () {
1455
+ return list = stack = memory = void 0, this;
1456
+ },
1457
+ disabled: function () {
1458
+ return !list;
1459
+ },
1460
+ lock: function () {
1461
+ return stack = void 0, memory || self.disable(), this;
1462
+ },
1463
+ locked: function () {
1464
+ return !stack;
1465
+ },
1466
+ fireWith: function (context, args) {
1467
+ return !list || fired && !stack || (args = args || [], args = [context, args.slice ? args.slice() : args], firing ? stack.push(args) : fire(args)), this;
1468
+ },
1469
+ fire: function () {
1470
+ return self.fireWith(this, arguments), this;
1471
+ },
1472
+ fired: function () {
1473
+ return !!fired;
1474
+ }
1475
+ };
1476
+ return self;
1477
+ }, jQuery.extend({
1478
+ Deferred: function (func) {
1479
+ var tuples = [["resolve", "done", jQuery.Callbacks("once memory"), "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), "rejected"], ["notify", "progress", jQuery.Callbacks("memory")]],
1480
+ state = "pending",
1481
+ promise = {
1482
+ state: function () {
1483
+ return state;
1484
+ },
1485
+ always: function () {
1486
+ return deferred.done(arguments).fail(arguments), this;
1487
+ },
1488
+ then: function () {
1489
+ var fns = arguments;
1490
+ return jQuery.Deferred(function (newDefer) {
1491
+ jQuery.each(tuples, function (i, tuple) {
1492
+ var fn = jQuery.isFunction(fns[i]) && fns[i];
1493
+ deferred[tuple[1]](function () {
1494
+ var returned = fn && fn.apply(this, arguments);
1495
+ returned && jQuery.isFunction(returned.promise) ? returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify) : newDefer[tuple[0] + "With"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments);
1496
+ });
1497
+ }), fns = null;
1498
+ }).promise();
1499
+ },
1500
+ promise: function (obj) {
1501
+ return null != obj ? jQuery.extend(obj, promise) : promise;
1502
+ }
1503
+ },
1504
+ deferred = {};
1505
+ return promise.pipe = promise.then, jQuery.each(tuples, function (i, tuple) {
1506
+ var list = tuple[2],
1507
+ stateString = tuple[3];
1508
+ promise[tuple[1]] = list.add, stateString && list.add(function () {
1509
+ state = stateString;
1510
+ }, tuples[1 ^ i][2].disable, tuples[2][2].lock), deferred[tuple[0]] = function () {
1511
+ return deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments), this;
1512
+ }, deferred[tuple[0] + "With"] = list.fireWith;
1513
+ }), promise.promise(deferred), func && func.call(deferred, deferred), deferred;
1514
+ },
1515
+ when: function (subordinate) {
1516
+ var progressValues,
1517
+ progressContexts,
1518
+ resolveContexts,
1519
+ i = 0,
1520
+ resolveValues = slice.call(arguments),
1521
+ length = resolveValues.length,
1522
+ remaining = 1 !== length || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0,
1523
+ deferred = 1 === remaining ? subordinate : jQuery.Deferred(),
1524
+ updateFunc = function (i, contexts, values) {
1525
+ return function (value) {
1526
+ contexts[i] = this, values[i] = arguments.length > 1 ? slice.call(arguments) : value, values === progressValues ? deferred.notifyWith(contexts, values) : --remaining || deferred.resolveWith(contexts, values);
1527
+ };
1528
+ };
1529
+ if (length > 1) for (progressValues = new Array(length), progressContexts = new Array(length), resolveContexts = new Array(length); length > i; i++) resolveValues[i] && jQuery.isFunction(resolveValues[i].promise) ? resolveValues[i].promise().done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject).progress(updateFunc(i, progressContexts, progressValues)) : --remaining;
1530
+ return remaining || deferred.resolveWith(resolveContexts, resolveValues), deferred.promise();
1531
+ }
1532
+ });
1533
+ var readyList;
1534
+ jQuery.fn.ready = function (fn) {
1535
+ return jQuery.ready.promise().done(fn), this;
1536
+ }, jQuery.extend({
1537
+ isReady: !1,
1538
+ readyWait: 1,
1539
+ holdReady: function (hold) {
1540
+ hold ? jQuery.readyWait++ : jQuery.ready(!0);
1541
+ },
1542
+ ready: function (wait) {
1543
+ if (wait === !0 ? ! --jQuery.readyWait : !jQuery.isReady) {
1544
+ if (!document.body) return setTimeout(jQuery.ready);
1545
+ jQuery.isReady = !0, wait !== !0 && --jQuery.readyWait > 0 || (readyList.resolveWith(document, [jQuery]), jQuery.fn.triggerHandler && (jQuery(document).triggerHandler("ready"), jQuery(document).off("ready")));
1546
+ }
1547
+ }
1548
+ }), jQuery.ready.promise = function (obj) {
1549
+ if (!readyList) if (readyList = jQuery.Deferred(), "complete" === document.readyState) setTimeout(jQuery.ready);else if (document.addEventListener) document.addEventListener("DOMContentLoaded", completed, !1), window.addEventListener("load", completed, !1);else {
1550
+ document.attachEvent("onreadystatechange", completed), window.attachEvent("onload", completed);
1551
+ var top = !1;
1552
+ try {
1553
+ top = null == window.frameElement && document.documentElement;
1554
+ } catch (e) {}
1555
+ top && top.doScroll && !function doScrollCheck() {
1556
+ if (!jQuery.isReady) {
1557
+ try {
1558
+ top.doScroll("left");
1559
+ } catch (e) {
1560
+ return setTimeout(doScrollCheck, 50);
1561
+ }
1562
+ detach(), jQuery.ready();
1563
+ }
1564
+ }();
1565
+ }
1566
+ return readyList.promise(obj);
1567
+ };
1568
+ var i,
1569
+ strundefined = "undefined";
1570
+ for (i in jQuery(support)) break;
1571
+ support.ownLast = "0" !== i, support.inlineBlockNeedsLayout = !1, jQuery(function () {
1572
+ var val, div, body, container;
1573
+ body = document.getElementsByTagName("body")[0], body && body.style && (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), typeof div.style.zoom !== strundefined && (div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1", support.inlineBlockNeedsLayout = val = 3 === div.offsetWidth, val && (body.style.zoom = 1)), body.removeChild(container));
1574
+ }), function () {
1575
+ var div = document.createElement("div");
1576
+ if (null == support.deleteExpando) {
1577
+ support.deleteExpando = !0;
1578
+ try {
1579
+ delete div.test;
1580
+ } catch (e) {
1581
+ support.deleteExpando = !1;
1582
+ }
1583
+ }
1584
+ div = null;
1585
+ }(), jQuery.acceptData = function (elem) {
1586
+ var noData = jQuery.noData[(elem.nodeName + " ").toLowerCase()],
1587
+ nodeType = +elem.nodeType || 1;
1588
+ return 1 !== nodeType && 9 !== nodeType ? !1 : !noData || noData !== !0 && elem.getAttribute("classid") === noData;
1589
+ };
1590
+ var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
1591
+ rmultiDash = /([A-Z])/g;
1592
+ jQuery.extend({
1593
+ cache: {},
1594
+ noData: {
1595
+ "applet ": !0,
1596
+ "embed ": !0,
1597
+ "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
1598
+ },
1599
+ hasData: function (elem) {
1600
+ return elem = elem.nodeType ? jQuery.cache[elem[jQuery.expando]] : elem[jQuery.expando], !!elem && !isEmptyDataObject(elem);
1601
+ },
1602
+ data: function (elem, name, data) {
1603
+ return internalData(elem, name, data);
1604
+ },
1605
+ removeData: function (elem, name) {
1606
+ return internalRemoveData(elem, name);
1607
+ },
1608
+ _data: function (elem, name, data) {
1609
+ return internalData(elem, name, data, !0);
1610
+ },
1611
+ _removeData: function (elem, name) {
1612
+ return internalRemoveData(elem, name, !0);
1613
+ }
1614
+ }), jQuery.fn.extend({
1615
+ data: function (key, value) {
1616
+ var i,
1617
+ name,
1618
+ data,
1619
+ elem = this[0],
1620
+ attrs = elem && elem.attributes;
1621
+ if (void 0 === key) {
1622
+ if (this.length && (data = jQuery.data(elem), 1 === elem.nodeType && !jQuery._data(elem, "parsedAttrs"))) {
1623
+ for (i = attrs.length; i--;) attrs[i] && (name = attrs[i].name, 0 === name.indexOf("data-") && (name = jQuery.camelCase(name.slice(5)), dataAttr(elem, name, data[name])));
1624
+ jQuery._data(elem, "parsedAttrs", !0);
1625
+ }
1626
+ return data;
1627
+ }
1628
+ return "object" == typeof key ? this.each(function () {
1629
+ jQuery.data(this, key);
1630
+ }) : arguments.length > 1 ? this.each(function () {
1631
+ jQuery.data(this, key, value);
1632
+ }) : elem ? dataAttr(elem, key, jQuery.data(elem, key)) : void 0;
1633
+ },
1634
+ removeData: function (key) {
1635
+ return this.each(function () {
1636
+ jQuery.removeData(this, key);
1637
+ });
1638
+ }
1639
+ }), jQuery.extend({
1640
+ queue: function (elem, type, data) {
1641
+ var queue;
1642
+ return elem ? (type = (type || "fx") + "queue", queue = jQuery._data(elem, type), data && (!queue || jQuery.isArray(data) ? queue = jQuery._data(elem, type, jQuery.makeArray(data)) : queue.push(data)), queue || []) : void 0;
1643
+ },
1644
+ dequeue: function (elem, type) {
1645
+ type = type || "fx";
1646
+ var queue = jQuery.queue(elem, type),
1647
+ startLength = queue.length,
1648
+ fn = queue.shift(),
1649
+ hooks = jQuery._queueHooks(elem, type),
1650
+ next = function () {
1651
+ jQuery.dequeue(elem, type);
1652
+ };
1653
+ "inprogress" === fn && (fn = queue.shift(), startLength--), fn && ("fx" === type && queue.unshift("inprogress"), delete hooks.stop, fn.call(elem, next, hooks)), !startLength && hooks && hooks.empty.fire();
1654
+ },
1655
+ _queueHooks: function (elem, type) {
1656
+ var key = type + "queueHooks";
1657
+ return jQuery._data(elem, key) || jQuery._data(elem, key, {
1658
+ empty: jQuery.Callbacks("once memory").add(function () {
1659
+ jQuery._removeData(elem, type + "queue"), jQuery._removeData(elem, key);
1660
+ })
1661
+ });
1662
+ }
1663
+ }), jQuery.fn.extend({
1664
+ queue: function (type, data) {
1665
+ var setter = 2;
1666
+ return "string" != typeof type && (data = type, type = "fx", setter--), arguments.length < setter ? jQuery.queue(this[0], type) : void 0 === data ? this : this.each(function () {
1667
+ var queue = jQuery.queue(this, type, data);
1668
+ jQuery._queueHooks(this, type), "fx" === type && "inprogress" !== queue[0] && jQuery.dequeue(this, type);
1669
+ });
1670
+ },
1671
+ dequeue: function (type) {
1672
+ return this.each(function () {
1673
+ jQuery.dequeue(this, type);
1674
+ });
1675
+ },
1676
+ clearQueue: function (type) {
1677
+ return this.queue(type || "fx", []);
1678
+ },
1679
+ promise: function (type, obj) {
1680
+ var tmp,
1681
+ count = 1,
1682
+ defer = jQuery.Deferred(),
1683
+ elements = this,
1684
+ i = this.length,
1685
+ resolve = function () {
1686
+ --count || defer.resolveWith(elements, [elements]);
1687
+ };
1688
+ for ("string" != typeof type && (obj = type, type = void 0), type = type || "fx"; i--;) tmp = jQuery._data(elements[i], type + "queueHooks"), tmp && tmp.empty && (count++, tmp.empty.add(resolve));
1689
+ return resolve(), defer.promise(obj);
1690
+ }
1691
+ });
1692
+ var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
1693
+ cssExpand = ["Top", "Right", "Bottom", "Left"],
1694
+ isHidden = function (elem, el) {
1695
+ return elem = el || elem, "none" === jQuery.css(elem, "display") || !jQuery.contains(elem.ownerDocument, elem);
1696
+ },
1697
+ access = jQuery.access = function (elems, fn, key, value, chainable, emptyGet, raw) {
1698
+ var i = 0,
1699
+ length = elems.length,
1700
+ bulk = null == key;
1701
+ if ("object" === jQuery.type(key)) {
1702
+ chainable = !0;
1703
+ for (i in key) jQuery.access(elems, fn, i, key[i], !0, emptyGet, raw);
1704
+ } else if (void 0 !== value && (chainable = !0, jQuery.isFunction(value) || (raw = !0), bulk && (raw ? (fn.call(elems, value), fn = null) : (bulk = fn, fn = function (elem, key, value) {
1705
+ return bulk.call(jQuery(elem), value);
1706
+ })), fn)) for (; length > i; i++) fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
1707
+ return chainable ? elems : bulk ? fn.call(elems) : length ? fn(elems[0], key) : emptyGet;
1708
+ },
1709
+ rcheckableType = /^(?:checkbox|radio)$/i;
1710
+ !function () {
1711
+ var input = document.createElement("input"),
1712
+ div = document.createElement("div"),
1713
+ fragment = document.createDocumentFragment();
1714
+ if (div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", support.leadingWhitespace = 3 === div.firstChild.nodeType, support.tbody = !div.getElementsByTagName("tbody").length, support.htmlSerialize = !!div.getElementsByTagName("link").length, support.html5Clone = "<:nav></:nav>" !== document.createElement("nav").cloneNode(!0).outerHTML, input.type = "checkbox", input.checked = !0, fragment.appendChild(input), support.appendChecked = input.checked, div.innerHTML = "<textarea>x</textarea>", support.noCloneChecked = !!div.cloneNode(!0).lastChild.defaultValue, fragment.appendChild(div), div.innerHTML = "<input type='radio' checked='checked' name='t'/>", support.checkClone = div.cloneNode(!0).cloneNode(!0).lastChild.checked, support.noCloneEvent = !0, div.attachEvent && (div.attachEvent("onclick", function () {
1715
+ support.noCloneEvent = !1;
1716
+ }), div.cloneNode(!0).click()), null == support.deleteExpando) {
1717
+ support.deleteExpando = !0;
1718
+ try {
1719
+ delete div.test;
1720
+ } catch (e) {
1721
+ support.deleteExpando = !1;
1722
+ }
1723
+ }
1724
+ }(), function () {
1725
+ var i,
1726
+ eventName,
1727
+ div = document.createElement("div");
1728
+ for (i in {
1729
+ submit: !0,
1730
+ change: !0,
1731
+ focusin: !0
1732
+ }) eventName = "on" + i, (support[i + "Bubbles"] = eventName in window) || (div.setAttribute(eventName, "t"), support[i + "Bubbles"] = div.attributes[eventName].expando === !1);
1733
+ div = null;
1734
+ }();
1735
+ var rformElems = /^(?:input|select|textarea)$/i,
1736
+ rkeyEvent = /^key/,
1737
+ rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
1738
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
1739
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
1740
+ jQuery.event = {
1741
+ global: {},
1742
+ add: function (elem, types, handler, data, selector) {
1743
+ var tmp,
1744
+ events,
1745
+ t,
1746
+ handleObjIn,
1747
+ special,
1748
+ eventHandle,
1749
+ handleObj,
1750
+ handlers,
1751
+ type,
1752
+ namespaces,
1753
+ origType,
1754
+ elemData = jQuery._data(elem);
1755
+ if (elemData) {
1756
+ for (handler.handler && (handleObjIn = handler, handler = handleObjIn.handler, selector = handleObjIn.selector), handler.guid || (handler.guid = jQuery.guid++), (events = elemData.events) || (events = elemData.events = {}), (eventHandle = elemData.handle) || (eventHandle = elemData.handle = function (e) {
1757
+ return typeof jQuery === strundefined || e && jQuery.event.triggered === e.type ? void 0 : jQuery.event.dispatch.apply(eventHandle.elem, arguments);
1758
+ }, eventHandle.elem = elem), types = (types || "").match(rnotwhite) || [""], t = types.length; t--;) tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type && (special = jQuery.event.special[type] || {}, type = (selector ? special.delegateType : special.bindType) || type, special = jQuery.event.special[type] || {}, handleObj = jQuery.extend({
1759
+ type: type,
1760
+ origType: origType,
1761
+ data: data,
1762
+ handler: handler,
1763
+ guid: handler.guid,
1764
+ selector: selector,
1765
+ needsContext: selector && jQuery.expr.match.needsContext.test(selector),
1766
+ namespace: namespaces.join(".")
1767
+ }, handleObjIn), (handlers = events[type]) || (handlers = events[type] = [], handlers.delegateCount = 0, special.setup && special.setup.call(elem, data, namespaces, eventHandle) !== !1 || (elem.addEventListener ? elem.addEventListener(type, eventHandle, !1) : elem.attachEvent && elem.attachEvent("on" + type, eventHandle))), special.add && (special.add.call(elem, handleObj), handleObj.handler.guid || (handleObj.handler.guid = handler.guid)), selector ? handlers.splice(handlers.delegateCount++, 0, handleObj) : handlers.push(handleObj), jQuery.event.global[type] = !0);
1768
+ elem = null;
1769
+ }
1770
+ },
1771
+ remove: function (elem, types, handler, selector, mappedTypes) {
1772
+ var j,
1773
+ handleObj,
1774
+ tmp,
1775
+ origCount,
1776
+ t,
1777
+ events,
1778
+ special,
1779
+ handlers,
1780
+ type,
1781
+ namespaces,
1782
+ origType,
1783
+ elemData = jQuery.hasData(elem) && jQuery._data(elem);
1784
+ if (elemData && (events = elemData.events)) {
1785
+ for (types = (types || "").match(rnotwhite) || [""], t = types.length; t--;) if (tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type) {
1786
+ for (special = jQuery.event.special[type] || {}, type = (selector ? special.delegateType : special.bindType) || type, handlers = events[type] || [], tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"), origCount = j = handlers.length; j--;) handleObj = handlers[j], !mappedTypes && origType !== handleObj.origType || handler && handler.guid !== handleObj.guid || tmp && !tmp.test(handleObj.namespace) || selector && selector !== handleObj.selector && ("**" !== selector || !handleObj.selector) || (handlers.splice(j, 1), handleObj.selector && handlers.delegateCount--, special.remove && special.remove.call(elem, handleObj));
1787
+ origCount && !handlers.length && (special.teardown && special.teardown.call(elem, namespaces, elemData.handle) !== !1 || jQuery.removeEvent(elem, type, elemData.handle), delete events[type]);
1788
+ } else for (type in events) jQuery.event.remove(elem, type + types[t], handler, selector, !0);
1789
+ jQuery.isEmptyObject(events) && (delete elemData.handle, jQuery._removeData(elem, "events"));
1790
+ }
1791
+ },
1792
+ trigger: function (event, data, elem, onlyHandlers) {
1793
+ var handle,
1794
+ ontype,
1795
+ cur,
1796
+ bubbleType,
1797
+ special,
1798
+ tmp,
1799
+ i,
1800
+ eventPath = [elem || document],
1801
+ type = hasOwn.call(event, "type") ? event.type : event,
1802
+ namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
1803
+ if (cur = tmp = elem = elem || document, 3 !== elem.nodeType && 8 !== elem.nodeType && !rfocusMorph.test(type + jQuery.event.triggered) && (type.indexOf(".") >= 0 && (namespaces = type.split("."), type = namespaces.shift(), namespaces.sort()), ontype = type.indexOf(":") < 0 && "on" + type, event = event[jQuery.expando] ? event : new jQuery.Event(type, "object" == typeof event && event), event.isTrigger = onlyHandlers ? 2 : 3, event.namespace = namespaces.join("."), event.namespace_re = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, event.result = void 0, event.target || (event.target = elem), data = null == data ? [event] : jQuery.makeArray(data, [event]), special = jQuery.event.special[type] || {}, onlyHandlers || !special.trigger || special.trigger.apply(elem, data) !== !1)) {
1804
+ if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {
1805
+ for (bubbleType = special.delegateType || type, rfocusMorph.test(bubbleType + type) || (cur = cur.parentNode); cur; cur = cur.parentNode) eventPath.push(cur), tmp = cur;
1806
+ tmp === (elem.ownerDocument || document) && eventPath.push(tmp.defaultView || tmp.parentWindow || window);
1807
+ }
1808
+ for (i = 0; (cur = eventPath[i++]) && !event.isPropagationStopped();) event.type = i > 1 ? bubbleType : special.bindType || type, handle = (jQuery._data(cur, "events") || {})[event.type] && jQuery._data(cur, "handle"), handle && handle.apply(cur, data), handle = ontype && cur[ontype], handle && handle.apply && jQuery.acceptData(cur) && (event.result = handle.apply(cur, data), event.result === !1 && event.preventDefault());
1809
+ if (event.type = type, !onlyHandlers && !event.isDefaultPrevented() && (!special._default || special._default.apply(eventPath.pop(), data) === !1) && jQuery.acceptData(elem) && ontype && elem[type] && !jQuery.isWindow(elem)) {
1810
+ tmp = elem[ontype], tmp && (elem[ontype] = null), jQuery.event.triggered = type;
1811
+ try {
1812
+ elem[type]();
1813
+ } catch (e) {}
1814
+ jQuery.event.triggered = void 0, tmp && (elem[ontype] = tmp);
1815
+ }
1816
+ return event.result;
1817
+ }
1818
+ },
1819
+ dispatch: function (event) {
1820
+ event = jQuery.event.fix(event);
1821
+ var i,
1822
+ ret,
1823
+ handleObj,
1824
+ matched,
1825
+ j,
1826
+ handlerQueue = [],
1827
+ args = slice.call(arguments),
1828
+ handlers = (jQuery._data(this, "events") || {})[event.type] || [],
1829
+ special = jQuery.event.special[event.type] || {};
1830
+ if (args[0] = event, event.delegateTarget = this, !special.preDispatch || special.preDispatch.call(this, event) !== !1) {
1831
+ for (handlerQueue = jQuery.event.handlers.call(this, event, handlers), i = 0; (matched = handlerQueue[i++]) && !event.isPropagationStopped();) for (event.currentTarget = matched.elem, j = 0; (handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped();) (!event.namespace_re || event.namespace_re.test(handleObj.namespace)) && (event.handleObj = handleObj, event.data = handleObj.data, ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args), void 0 !== ret && (event.result = ret) === !1 && (event.preventDefault(), event.stopPropagation()));
1832
+ return special.postDispatch && special.postDispatch.call(this, event), event.result;
1833
+ }
1834
+ },
1835
+ handlers: function (event, handlers) {
1836
+ var sel,
1837
+ handleObj,
1838
+ matches,
1839
+ i,
1840
+ handlerQueue = [],
1841
+ delegateCount = handlers.delegateCount,
1842
+ cur = event.target;
1843
+ if (delegateCount && cur.nodeType && (!event.button || "click" !== event.type)) for (; cur != this; cur = cur.parentNode || this) if (1 === cur.nodeType && (cur.disabled !== !0 || "click" !== event.type)) {
1844
+ for (matches = [], i = 0; delegateCount > i; i++) handleObj = handlers[i], sel = handleObj.selector + " ", void 0 === matches[sel] && (matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) >= 0 : jQuery.find(sel, this, null, [cur]).length), matches[sel] && matches.push(handleObj);
1845
+ matches.length && handlerQueue.push({
1846
+ elem: cur,
1847
+ handlers: matches
1848
+ });
1849
+ }
1850
+ return delegateCount < handlers.length && handlerQueue.push({
1851
+ elem: this,
1852
+ handlers: handlers.slice(delegateCount)
1853
+ }), handlerQueue;
1854
+ },
1855
+ fix: function (event) {
1856
+ if (event[jQuery.expando]) return event;
1857
+ var i,
1858
+ prop,
1859
+ copy,
1860
+ type = event.type,
1861
+ originalEvent = event,
1862
+ fixHook = this.fixHooks[type];
1863
+ for (fixHook || (this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : {}), copy = fixHook.props ? this.props.concat(fixHook.props) : this.props, event = new jQuery.Event(originalEvent), i = copy.length; i--;) prop = copy[i], event[prop] = originalEvent[prop];
1864
+ return event.target || (event.target = originalEvent.srcElement || document), 3 === event.target.nodeType && (event.target = event.target.parentNode), event.metaKey = !!event.metaKey, fixHook.filter ? fixHook.filter(event, originalEvent) : event;
1865
+ },
1866
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
1867
+ fixHooks: {},
1868
+ keyHooks: {
1869
+ props: "char charCode key keyCode".split(" "),
1870
+ filter: function (event, original) {
1871
+ return null == event.which && (event.which = null != original.charCode ? original.charCode : original.keyCode), event;
1872
+ }
1873
+ },
1874
+ mouseHooks: {
1875
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
1876
+ filter: function (event, original) {
1877
+ var body,
1878
+ eventDoc,
1879
+ doc,
1880
+ button = original.button,
1881
+ fromElement = original.fromElement;
1882
+ return null == event.pageX && null != original.clientX && (eventDoc = event.target.ownerDocument || document, doc = eventDoc.documentElement, body = eventDoc.body, event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0), event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0)), !event.relatedTarget && fromElement && (event.relatedTarget = fromElement === event.target ? original.toElement : fromElement), event.which || void 0 === button || (event.which = 1 & button ? 1 : 2 & button ? 3 : 4 & button ? 2 : 0), event;
1883
+ }
1884
+ },
1885
+ special: {
1886
+ load: {
1887
+ noBubble: !0
1888
+ },
1889
+ focus: {
1890
+ trigger: function () {
1891
+ if (this !== safeActiveElement() && this.focus) try {
1892
+ return this.focus(), !1;
1893
+ } catch (e) {}
1894
+ },
1895
+ delegateType: "focusin"
1896
+ },
1897
+ blur: {
1898
+ trigger: function () {
1899
+ return this === safeActiveElement() && this.blur ? (this.blur(), !1) : void 0;
1900
+ },
1901
+ delegateType: "focusout"
1902
+ },
1903
+ click: {
1904
+ trigger: function () {
1905
+ return jQuery.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0;
1906
+ },
1907
+ _default: function (event) {
1908
+ return jQuery.nodeName(event.target, "a");
1909
+ }
1910
+ },
1911
+ beforeunload: {
1912
+ postDispatch: function (event) {
1913
+ void 0 !== event.result && event.originalEvent && (event.originalEvent.returnValue = event.result);
1914
+ }
1915
+ }
1916
+ },
1917
+ simulate: function (type, elem, event, bubble) {
1918
+ var e = jQuery.extend(new jQuery.Event(), event, {
1919
+ type: type,
1920
+ isSimulated: !0,
1921
+ originalEvent: {}
1922
+ });
1923
+ bubble ? jQuery.event.trigger(e, null, elem) : jQuery.event.dispatch.call(elem, e), e.isDefaultPrevented() && event.preventDefault();
1924
+ }
1925
+ }, jQuery.removeEvent = document.removeEventListener ? function (elem, type, handle) {
1926
+ elem.removeEventListener && elem.removeEventListener(type, handle, !1);
1927
+ } : function (elem, type, handle) {
1928
+ var name = "on" + type;
1929
+ elem.detachEvent && (typeof elem[name] === strundefined && (elem[name] = null), elem.detachEvent(name, handle));
1930
+ }, jQuery.Event = function (src, props) {
1931
+ return this instanceof jQuery.Event ? (src && src.type ? (this.originalEvent = src, this.type = src.type, this.isDefaultPrevented = src.defaultPrevented || void 0 === src.defaultPrevented && src.returnValue === !1 ? returnTrue : returnFalse) : this.type = src, props && jQuery.extend(this, props), this.timeStamp = src && src.timeStamp || jQuery.now(), void (this[jQuery.expando] = !0)) : new jQuery.Event(src, props);
1932
+ }, jQuery.Event.prototype = {
1933
+ isDefaultPrevented: returnFalse,
1934
+ isPropagationStopped: returnFalse,
1935
+ isImmediatePropagationStopped: returnFalse,
1936
+ preventDefault: function () {
1937
+ var e = this.originalEvent;
1938
+ this.isDefaultPrevented = returnTrue, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1);
1939
+ },
1940
+ stopPropagation: function () {
1941
+ var e = this.originalEvent;
1942
+ this.isPropagationStopped = returnTrue, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0);
1943
+ },
1944
+ stopImmediatePropagation: function () {
1945
+ var e = this.originalEvent;
1946
+ this.isImmediatePropagationStopped = returnTrue, e && e.stopImmediatePropagation && e.stopImmediatePropagation(), this.stopPropagation();
1947
+ }
1948
+ }, jQuery.each({
1949
+ mouseenter: "mouseover",
1950
+ mouseleave: "mouseout",
1951
+ pointerenter: "pointerover",
1952
+ pointerleave: "pointerout"
1953
+ }, function (orig, fix) {
1954
+ jQuery.event.special[orig] = {
1955
+ delegateType: fix,
1956
+ bindType: fix,
1957
+ handle: function (event) {
1958
+ var ret,
1959
+ target = this,
1960
+ related = event.relatedTarget,
1961
+ handleObj = event.handleObj;
1962
+ return (!related || related !== target && !jQuery.contains(target, related)) && (event.type = handleObj.origType, ret = handleObj.handler.apply(this, arguments), event.type = fix), ret;
1963
+ }
1964
+ };
1965
+ }), support.submitBubbles || (jQuery.event.special.submit = {
1966
+ setup: function () {
1967
+ return jQuery.nodeName(this, "form") ? !1 : void jQuery.event.add(this, "click._submit keypress._submit", function (e) {
1968
+ var elem = e.target,
1969
+ form = jQuery.nodeName(elem, "input") || jQuery.nodeName(elem, "button") ? elem.form : void 0;
1970
+ form && !jQuery._data(form, "submitBubbles") && (jQuery.event.add(form, "submit._submit", function (event) {
1971
+ event._submit_bubble = !0;
1972
+ }), jQuery._data(form, "submitBubbles", !0));
1973
+ });
1974
+ },
1975
+ postDispatch: function (event) {
1976
+ event._submit_bubble && (delete event._submit_bubble, this.parentNode && !event.isTrigger && jQuery.event.simulate("submit", this.parentNode, event, !0));
1977
+ },
1978
+ teardown: function () {
1979
+ return jQuery.nodeName(this, "form") ? !1 : void jQuery.event.remove(this, "._submit");
1980
+ }
1981
+ }), support.changeBubbles || (jQuery.event.special.change = {
1982
+ setup: function () {
1983
+ return rformElems.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (jQuery.event.add(this, "propertychange._change", function (event) {
1984
+ "checked" === event.originalEvent.propertyName && (this._just_changed = !0);
1985
+ }), jQuery.event.add(this, "click._change", function (event) {
1986
+ this._just_changed && !event.isTrigger && (this._just_changed = !1), jQuery.event.simulate("change", this, event, !0);
1987
+ })), !1) : void jQuery.event.add(this, "beforeactivate._change", function (e) {
1988
+ var elem = e.target;
1989
+ rformElems.test(elem.nodeName) && !jQuery._data(elem, "changeBubbles") && (jQuery.event.add(elem, "change._change", function (event) {
1990
+ !this.parentNode || event.isSimulated || event.isTrigger || jQuery.event.simulate("change", this.parentNode, event, !0);
1991
+ }), jQuery._data(elem, "changeBubbles", !0));
1992
+ });
1993
+ },
1994
+ handle: function (event) {
1995
+ var elem = event.target;
1996
+ return this !== elem || event.isSimulated || event.isTrigger || "radio" !== elem.type && "checkbox" !== elem.type ? event.handleObj.handler.apply(this, arguments) : void 0;
1997
+ },
1998
+ teardown: function () {
1999
+ return jQuery.event.remove(this, "._change"), !rformElems.test(this.nodeName);
2000
+ }
2001
+ }), support.focusinBubbles || jQuery.each({
2002
+ focus: "focusin",
2003
+ blur: "focusout"
2004
+ }, function (orig, fix) {
2005
+ var handler = function (event) {
2006
+ jQuery.event.simulate(fix, event.target, jQuery.event.fix(event), !0);
2007
+ };
2008
+ jQuery.event.special[fix] = {
2009
+ setup: function () {
2010
+ var doc = this.ownerDocument || this,
2011
+ attaches = jQuery._data(doc, fix);
2012
+ attaches || doc.addEventListener(orig, handler, !0), jQuery._data(doc, fix, (attaches || 0) + 1);
2013
+ },
2014
+ teardown: function () {
2015
+ var doc = this.ownerDocument || this,
2016
+ attaches = jQuery._data(doc, fix) - 1;
2017
+ attaches ? jQuery._data(doc, fix, attaches) : (doc.removeEventListener(orig, handler, !0), jQuery._removeData(doc, fix));
2018
+ }
2019
+ };
2020
+ }), jQuery.fn.extend({
2021
+ on: function (types, selector, data, fn, one) {
2022
+ var type, origFn;
2023
+ if ("object" == typeof types) {
2024
+ "string" != typeof selector && (data = data || selector, selector = void 0);
2025
+ for (type in types) this.on(type, selector, data, types[type], one);
2026
+ return this;
2027
+ }
2028
+ if (null == data && null == fn ? (fn = selector, data = selector = void 0) : null == fn && ("string" == typeof selector ? (fn = data, data = void 0) : (fn = data, data = selector, selector = void 0)), fn === !1) fn = returnFalse;else if (!fn) return this;
2029
+ return 1 === one && (origFn = fn, fn = function (event) {
2030
+ return jQuery().off(event), origFn.apply(this, arguments);
2031
+ }, fn.guid = origFn.guid || (origFn.guid = jQuery.guid++)), this.each(function () {
2032
+ jQuery.event.add(this, types, fn, data, selector);
2033
+ });
2034
+ },
2035
+ one: function (types, selector, data, fn) {
2036
+ return this.on(types, selector, data, fn, 1);
2037
+ },
2038
+ off: function (types, selector, fn) {
2039
+ var handleObj, type;
2040
+ if (types && types.preventDefault && types.handleObj) return handleObj = types.handleObj, jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler), this;
2041
+ if ("object" == typeof types) {
2042
+ for (type in types) this.off(type, selector, types[type]);
2043
+ return this;
2044
+ }
2045
+ return (selector === !1 || "function" == typeof selector) && (fn = selector, selector = void 0), fn === !1 && (fn = returnFalse), this.each(function () {
2046
+ jQuery.event.remove(this, types, fn, selector);
2047
+ });
2048
+ },
2049
+ trigger: function (type, data) {
2050
+ return this.each(function () {
2051
+ jQuery.event.trigger(type, data, this);
2052
+ });
2053
+ },
2054
+ triggerHandler: function (type, data) {
2055
+ var elem = this[0];
2056
+ return elem ? jQuery.event.trigger(type, data, elem, !0) : void 0;
2057
+ }
2058
+ });
2059
+ var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
2060
+ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
2061
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
2062
+ rleadingWhitespace = /^\s+/,
2063
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
2064
+ rtagName = /<([\w:]+)/,
2065
+ rtbody = /<tbody/i,
2066
+ rhtml = /<|&#?\w+;/,
2067
+ rnoInnerhtml = /<(?:script|style|link)/i,
2068
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
2069
+ rscriptType = /^$|\/(?:java|ecma)script/i,
2070
+ rscriptTypeMasked = /^true\/(.*)/,
2071
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
2072
+ wrapMap = {
2073
+ option: [1, "<select multiple='multiple'>", "</select>"],
2074
+ legend: [1, "<fieldset>", "</fieldset>"],
2075
+ area: [1, "<map>", "</map>"],
2076
+ param: [1, "<object>", "</object>"],
2077
+ thead: [1, "<table>", "</table>"],
2078
+ tr: [2, "<table><tbody>", "</tbody></table>"],
2079
+ col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
2080
+ td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
2081
+ _default: support.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
2082
+ },
2083
+ safeFragment = createSafeFragment(document),
2084
+ fragmentDiv = safeFragment.appendChild(document.createElement("div"));
2085
+ wrapMap.optgroup = wrapMap.option, wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead, wrapMap.th = wrapMap.td, jQuery.extend({
2086
+ clone: function (elem, dataAndEvents, deepDataAndEvents) {
2087
+ var destElements,
2088
+ node,
2089
+ clone,
2090
+ i,
2091
+ srcElements,
2092
+ inPage = jQuery.contains(elem.ownerDocument, elem);
2093
+ if (support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test("<" + elem.nodeName + ">") ? clone = elem.cloneNode(!0) : (fragmentDiv.innerHTML = elem.outerHTML, fragmentDiv.removeChild(clone = fragmentDiv.firstChild)), !(support.noCloneEvent && support.noCloneChecked || 1 !== elem.nodeType && 11 !== elem.nodeType || jQuery.isXMLDoc(elem))) for (destElements = getAll(clone), srcElements = getAll(elem), i = 0; null != (node = srcElements[i]); ++i) destElements[i] && fixCloneNodeIssues(node, destElements[i]);
2094
+ if (dataAndEvents) if (deepDataAndEvents) for (srcElements = srcElements || getAll(elem), destElements = destElements || getAll(clone), i = 0; null != (node = srcElements[i]); i++) cloneCopyEvent(node, destElements[i]);else cloneCopyEvent(elem, clone);
2095
+ return destElements = getAll(clone, "script"), destElements.length > 0 && setGlobalEval(destElements, !inPage && getAll(elem, "script")), destElements = srcElements = node = null, clone;
2096
+ },
2097
+ buildFragment: function (elems, context, scripts, selection) {
2098
+ for (var j, elem, contains, tmp, tag, tbody, wrap, l = elems.length, safe = createSafeFragment(context), nodes = [], i = 0; l > i; i++) if (elem = elems[i], elem || 0 === elem) if ("object" === jQuery.type(elem)) jQuery.merge(nodes, elem.nodeType ? [elem] : elem);else if (rhtml.test(elem)) {
2099
+ for (tmp = tmp || safe.appendChild(context.createElement("div")), tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(), wrap = wrapMap[tag] || wrapMap._default, tmp.innerHTML = wrap[1] + elem.replace(rxhtmlTag, "<$1></$2>") + wrap[2], j = wrap[0]; j--;) tmp = tmp.lastChild;
2100
+ if (!support.leadingWhitespace && rleadingWhitespace.test(elem) && nodes.push(context.createTextNode(rleadingWhitespace.exec(elem)[0])), !support.tbody) for (elem = "table" !== tag || rtbody.test(elem) ? "<table>" !== wrap[1] || rtbody.test(elem) ? 0 : tmp : tmp.firstChild, j = elem && elem.childNodes.length; j--;) jQuery.nodeName(tbody = elem.childNodes[j], "tbody") && !tbody.childNodes.length && elem.removeChild(tbody);
2101
+ for (jQuery.merge(nodes, tmp.childNodes), tmp.textContent = ""; tmp.firstChild;) tmp.removeChild(tmp.firstChild);
2102
+ tmp = safe.lastChild;
2103
+ } else nodes.push(context.createTextNode(elem));
2104
+ for (tmp && safe.removeChild(tmp), support.appendChecked || jQuery.grep(getAll(nodes, "input"), fixDefaultChecked), i = 0; elem = nodes[i++];) if ((!selection || -1 === jQuery.inArray(elem, selection)) && (contains = jQuery.contains(elem.ownerDocument, elem), tmp = getAll(safe.appendChild(elem), "script"), contains && setGlobalEval(tmp), scripts)) for (j = 0; elem = tmp[j++];) rscriptType.test(elem.type || "") && scripts.push(elem);
2105
+ return tmp = null, safe;
2106
+ },
2107
+ cleanData: function (elems, acceptData) {
2108
+ for (var elem, type, id, data, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, deleteExpando = support.deleteExpando, special = jQuery.event.special; null != (elem = elems[i]); i++) if ((acceptData || jQuery.acceptData(elem)) && (id = elem[internalKey], data = id && cache[id])) {
2109
+ if (data.events) for (type in data.events) special[type] ? jQuery.event.remove(elem, type) : jQuery.removeEvent(elem, type, data.handle);
2110
+ cache[id] && (delete cache[id], deleteExpando ? delete elem[internalKey] : typeof elem.removeAttribute !== strundefined ? elem.removeAttribute(internalKey) : elem[internalKey] = null, deletedIds.push(id));
2111
+ }
2112
+ }
2113
+ }), jQuery.fn.extend({
2114
+ text: function (value) {
2115
+ return access(this, function (value) {
2116
+ return void 0 === value ? jQuery.text(this) : this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(value));
2117
+ }, null, value, arguments.length);
2118
+ },
2119
+ append: function () {
2120
+ return this.domManip(arguments, function (elem) {
2121
+ if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2122
+ var target = manipulationTarget(this, elem);
2123
+ target.appendChild(elem);
2124
+ }
2125
+ });
2126
+ },
2127
+ prepend: function () {
2128
+ return this.domManip(arguments, function (elem) {
2129
+ if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2130
+ var target = manipulationTarget(this, elem);
2131
+ target.insertBefore(elem, target.firstChild);
2132
+ }
2133
+ });
2134
+ },
2135
+ before: function () {
2136
+ return this.domManip(arguments, function (elem) {
2137
+ this.parentNode && this.parentNode.insertBefore(elem, this);
2138
+ });
2139
+ },
2140
+ after: function () {
2141
+ return this.domManip(arguments, function (elem) {
2142
+ this.parentNode && this.parentNode.insertBefore(elem, this.nextSibling);
2143
+ });
2144
+ },
2145
+ remove: function (selector, keepData) {
2146
+ for (var elem, elems = selector ? jQuery.filter(selector, this) : this, i = 0; null != (elem = elems[i]); i++) keepData || 1 !== elem.nodeType || jQuery.cleanData(getAll(elem)), elem.parentNode && (keepData && jQuery.contains(elem.ownerDocument, elem) && setGlobalEval(getAll(elem, "script")), elem.parentNode.removeChild(elem));
2147
+ return this;
2148
+ },
2149
+ empty: function () {
2150
+ for (var elem, i = 0; null != (elem = this[i]); i++) {
2151
+ for (1 === elem.nodeType && jQuery.cleanData(getAll(elem, !1)); elem.firstChild;) elem.removeChild(elem.firstChild);
2152
+ elem.options && jQuery.nodeName(elem, "select") && (elem.options.length = 0);
2153
+ }
2154
+ return this;
2155
+ },
2156
+ clone: function (dataAndEvents, deepDataAndEvents) {
2157
+ return dataAndEvents = null == dataAndEvents ? !1 : dataAndEvents, deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents, this.map(function () {
2158
+ return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
2159
+ });
2160
+ },
2161
+ html: function (value) {
2162
+ return access(this, function (value) {
2163
+ var elem = this[0] || {},
2164
+ i = 0,
2165
+ l = this.length;
2166
+ if (void 0 === value) return 1 === elem.nodeType ? elem.innerHTML.replace(rinlinejQuery, "") : void 0;
2167
+ if ("string" == typeof value && !rnoInnerhtml.test(value) && (support.htmlSerialize || !rnoshimcache.test(value)) && (support.leadingWhitespace || !rleadingWhitespace.test(value)) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
2168
+ value = value.replace(rxhtmlTag, "<$1></$2>");
2169
+ try {
2170
+ for (; l > i; i++) elem = this[i] || {}, 1 === elem.nodeType && (jQuery.cleanData(getAll(elem, !1)), elem.innerHTML = value);
2171
+ elem = 0;
2172
+ } catch (e) {}
2173
+ }
2174
+ elem && this.empty().append(value);
2175
+ }, null, value, arguments.length);
2176
+ },
2177
+ replaceWith: function () {
2178
+ var arg = arguments[0];
2179
+ return this.domManip(arguments, function (elem) {
2180
+ arg = this.parentNode, jQuery.cleanData(getAll(this)), arg && arg.replaceChild(elem, this);
2181
+ }), arg && (arg.length || arg.nodeType) ? this : this.remove();
2182
+ },
2183
+ detach: function (selector) {
2184
+ return this.remove(selector, !0);
2185
+ },
2186
+ domManip: function (args, callback) {
2187
+ args = concat.apply([], args);
2188
+ var first,
2189
+ node,
2190
+ hasScripts,
2191
+ scripts,
2192
+ doc,
2193
+ fragment,
2194
+ i = 0,
2195
+ l = this.length,
2196
+ set = this,
2197
+ iNoClone = l - 1,
2198
+ value = args[0],
2199
+ isFunction = jQuery.isFunction(value);
2200
+ if (isFunction || l > 1 && "string" == typeof value && !support.checkClone && rchecked.test(value)) return this.each(function (index) {
2201
+ var self = set.eq(index);
2202
+ isFunction && (args[0] = value.call(this, index, self.html())), self.domManip(args, callback);
2203
+ });
2204
+ if (l && (fragment = jQuery.buildFragment(args, this[0].ownerDocument, !1, this), first = fragment.firstChild, 1 === fragment.childNodes.length && (fragment = first), first)) {
2205
+ for (scripts = jQuery.map(getAll(fragment, "script"), disableScript), hasScripts = scripts.length; l > i; i++) node = fragment, i !== iNoClone && (node = jQuery.clone(node, !0, !0), hasScripts && jQuery.merge(scripts, getAll(node, "script"))), callback.call(this[i], node, i);
2206
+ if (hasScripts) for (doc = scripts[scripts.length - 1].ownerDocument, jQuery.map(scripts, restoreScript), i = 0; hasScripts > i; i++) node = scripts[i], rscriptType.test(node.type || "") && !jQuery._data(node, "globalEval") && jQuery.contains(doc, node) && (node.src ? jQuery._evalUrl && jQuery._evalUrl(node.src) : jQuery.globalEval((node.text || node.textContent || node.innerHTML || "").replace(rcleanScript, "")));
2207
+ fragment = first = null;
2208
+ }
2209
+ return this;
2210
+ }
2211
+ }), jQuery.each({
2212
+ appendTo: "append",
2213
+ prependTo: "prepend",
2214
+ insertBefore: "before",
2215
+ insertAfter: "after",
2216
+ replaceAll: "replaceWith"
2217
+ }, function (name, original) {
2218
+ jQuery.fn[name] = function (selector) {
2219
+ for (var elems, i = 0, ret = [], insert = jQuery(selector), last = insert.length - 1; last >= i; i++) elems = i === last ? this : this.clone(!0), jQuery(insert[i])[original](elems), push.apply(ret, elems.get());
2220
+ return this.pushStack(ret);
2221
+ };
2222
+ });
2223
+ var iframe,
2224
+ elemdisplay = {};
2225
+ !function () {
2226
+ var shrinkWrapBlocksVal;
2227
+ support.shrinkWrapBlocks = function () {
2228
+ if (null != shrinkWrapBlocksVal) return shrinkWrapBlocksVal;
2229
+ shrinkWrapBlocksVal = !1;
2230
+ var div, body, container;
2231
+ return body = document.getElementsByTagName("body")[0], body && body.style ? (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), typeof div.style.zoom !== strundefined && (div.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1", div.appendChild(document.createElement("div")).style.width = "5px", shrinkWrapBlocksVal = 3 !== div.offsetWidth), body.removeChild(container), shrinkWrapBlocksVal) : void 0;
2232
+ };
2233
+ }();
2234
+ var getStyles,
2235
+ curCSS,
2236
+ rmargin = /^margin/,
2237
+ rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"),
2238
+ rposition = /^(top|right|bottom|left)$/;
2239
+ window.getComputedStyle ? (getStyles = function (elem) {
2240
+ return elem.ownerDocument.defaultView.opener ? elem.ownerDocument.defaultView.getComputedStyle(elem, null) : window.getComputedStyle(elem, null);
2241
+ }, curCSS = function (elem, name, computed) {
2242
+ var width,
2243
+ minWidth,
2244
+ maxWidth,
2245
+ ret,
2246
+ style = elem.style;
2247
+ return computed = computed || getStyles(elem), ret = computed ? computed.getPropertyValue(name) || computed[name] : void 0, computed && ("" !== ret || jQuery.contains(elem.ownerDocument, elem) || (ret = jQuery.style(elem, name)), rnumnonpx.test(ret) && rmargin.test(name) && (width = style.width, minWidth = style.minWidth, maxWidth = style.maxWidth, style.minWidth = style.maxWidth = style.width = ret, ret = computed.width, style.width = width, style.minWidth = minWidth, style.maxWidth = maxWidth)), void 0 === ret ? ret : ret + "";
2248
+ }) : document.documentElement.currentStyle && (getStyles = function (elem) {
2249
+ return elem.currentStyle;
2250
+ }, curCSS = function (elem, name, computed) {
2251
+ var left,
2252
+ rs,
2253
+ rsLeft,
2254
+ ret,
2255
+ style = elem.style;
2256
+ return computed = computed || getStyles(elem), ret = computed ? computed[name] : void 0, null == ret && style && style[name] && (ret = style[name]), rnumnonpx.test(ret) && !rposition.test(name) && (left = style.left, rs = elem.runtimeStyle, rsLeft = rs && rs.left, rsLeft && (rs.left = elem.currentStyle.left), style.left = "fontSize" === name ? "1em" : ret, ret = style.pixelLeft + "px", style.left = left, rsLeft && (rs.left = rsLeft)), void 0 === ret ? ret : ret + "" || "auto";
2257
+ }), function () {
2258
+ function computeStyleTests() {
2259
+ var div, body, container, contents;
2260
+ body = document.getElementsByTagName("body")[0], body && body.style && (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute", pixelPositionVal = boxSizingReliableVal = !1, reliableMarginRightVal = !0, window.getComputedStyle && (pixelPositionVal = "1%" !== (window.getComputedStyle(div, null) || {}).top, boxSizingReliableVal = "4px" === (window.getComputedStyle(div, null) || {
2261
+ width: "4px"
2262
+ }).width, contents = div.appendChild(document.createElement("div")), contents.style.cssText = div.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", contents.style.marginRight = contents.style.width = "0", div.style.width = "1px", reliableMarginRightVal = !parseFloat((window.getComputedStyle(contents, null) || {}).marginRight), div.removeChild(contents)), div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", contents = div.getElementsByTagName("td"), contents[0].style.cssText = "margin:0;border:0;padding:0;display:none", reliableHiddenOffsetsVal = 0 === contents[0].offsetHeight, reliableHiddenOffsetsVal && (contents[0].style.display = "", contents[1].style.display = "none", reliableHiddenOffsetsVal = 0 === contents[0].offsetHeight), body.removeChild(container));
2263
+ }
2264
+ var div, style, a, pixelPositionVal, boxSizingReliableVal, reliableHiddenOffsetsVal, reliableMarginRightVal;
2265
+ div = document.createElement("div"), div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = div.getElementsByTagName("a")[0], style = a && a.style, style && (style.cssText = "float:left;opacity:.5", support.opacity = "0.5" === style.opacity, support.cssFloat = !!style.cssFloat, div.style.backgroundClip = "content-box", div.cloneNode(!0).style.backgroundClip = "", support.clearCloneStyle = "content-box" === div.style.backgroundClip, support.boxSizing = "" === style.boxSizing || "" === style.MozBoxSizing || "" === style.WebkitBoxSizing, jQuery.extend(support, {
2266
+ reliableHiddenOffsets: function () {
2267
+ return null == reliableHiddenOffsetsVal && computeStyleTests(), reliableHiddenOffsetsVal;
2268
+ },
2269
+ boxSizingReliable: function () {
2270
+ return null == boxSizingReliableVal && computeStyleTests(), boxSizingReliableVal;
2271
+ },
2272
+ pixelPosition: function () {
2273
+ return null == pixelPositionVal && computeStyleTests(), pixelPositionVal;
2274
+ },
2275
+ reliableMarginRight: function () {
2276
+ return null == reliableMarginRightVal && computeStyleTests(), reliableMarginRightVal;
2277
+ }
2278
+ }));
2279
+ }(), jQuery.swap = function (elem, options, callback, args) {
2280
+ var ret,
2281
+ name,
2282
+ old = {};
2283
+ for (name in options) old[name] = elem.style[name], elem.style[name] = options[name];
2284
+ ret = callback.apply(elem, args || []);
2285
+ for (name in options) elem.style[name] = old[name];
2286
+ return ret;
2287
+ };
2288
+ var ralpha = /alpha\([^)]*\)/i,
2289
+ ropacity = /opacity\s*=\s*([^)]*)/,
2290
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
2291
+ rnumsplit = new RegExp("^(" + pnum + ")(.*)$", "i"),
2292
+ rrelNum = new RegExp("^([+-])=(" + pnum + ")", "i"),
2293
+ cssShow = {
2294
+ position: "absolute",
2295
+ visibility: "hidden",
2296
+ display: "block"
2297
+ },
2298
+ cssNormalTransform = {
2299
+ letterSpacing: "0",
2300
+ fontWeight: "400"
2301
+ },
2302
+ cssPrefixes = ["Webkit", "O", "Moz", "ms"];
2303
+ jQuery.extend({
2304
+ cssHooks: {
2305
+ opacity: {
2306
+ get: function (elem, computed) {
2307
+ if (computed) {
2308
+ var ret = curCSS(elem, "opacity");
2309
+ return "" === ret ? "1" : ret;
2310
+ }
2311
+ }
2312
+ }
2313
+ },
2314
+ cssNumber: {
2315
+ columnCount: !0,
2316
+ fillOpacity: !0,
2317
+ flexGrow: !0,
2318
+ flexShrink: !0,
2319
+ fontWeight: !0,
2320
+ lineHeight: !0,
2321
+ opacity: !0,
2322
+ order: !0,
2323
+ orphans: !0,
2324
+ widows: !0,
2325
+ zIndex: !0,
2326
+ zoom: !0
2327
+ },
2328
+ cssProps: {
2329
+ "float": support.cssFloat ? "cssFloat" : "styleFloat"
2330
+ },
2331
+ style: function (elem, name, value, extra) {
2332
+ if (elem && 3 !== elem.nodeType && 8 !== elem.nodeType && elem.style) {
2333
+ var ret,
2334
+ type,
2335
+ hooks,
2336
+ origName = jQuery.camelCase(name),
2337
+ style = elem.style;
2338
+ if (name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(style, origName)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], void 0 === value) return hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, !1, extra)) ? ret : style[name];
2339
+ if (type = typeof value, "string" === type && (ret = rrelNum.exec(value)) && (value = (ret[1] + 1) * ret[2] + parseFloat(jQuery.css(elem, name)), type = "number"), null != value && value === value && ("number" !== type || jQuery.cssNumber[origName] || (value += "px"), support.clearCloneStyle || "" !== value || 0 !== name.indexOf("background") || (style[name] = "inherit"), !(hooks && "set" in hooks && void 0 === (value = hooks.set(elem, value, extra))))) try {
2340
+ style[name] = value;
2341
+ } catch (e) {}
2342
+ }
2343
+ },
2344
+ css: function (elem, name, extra, styles) {
2345
+ var num,
2346
+ val,
2347
+ hooks,
2348
+ origName = jQuery.camelCase(name);
2349
+ return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(elem.style, origName)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], hooks && "get" in hooks && (val = hooks.get(elem, !0, extra)), void 0 === val && (val = curCSS(elem, name, styles)), "normal" === val && name in cssNormalTransform && (val = cssNormalTransform[name]), "" === extra || extra ? (num = parseFloat(val), extra === !0 || jQuery.isNumeric(num) ? num || 0 : val) : val;
2350
+ }
2351
+ }), jQuery.each(["height", "width"], function (i, name) {
2352
+ jQuery.cssHooks[name] = {
2353
+ get: function (elem, computed, extra) {
2354
+ return computed ? rdisplayswap.test(jQuery.css(elem, "display")) && 0 === elem.offsetWidth ? jQuery.swap(elem, cssShow, function () {
2355
+ return getWidthOrHeight(elem, name, extra);
2356
+ }) : getWidthOrHeight(elem, name, extra) : void 0;
2357
+ },
2358
+ set: function (elem, value, extra) {
2359
+ var styles = extra && getStyles(elem);
2360
+ return setPositiveNumber(elem, value, extra ? augmentWidthOrHeight(elem, name, extra, support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", !1, styles), styles) : 0);
2361
+ }
2362
+ };
2363
+ }), support.opacity || (jQuery.cssHooks.opacity = {
2364
+ get: function (elem, computed) {
2365
+ return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : computed ? "1" : "";
2366
+ },
2367
+ set: function (elem, value) {
2368
+ var style = elem.style,
2369
+ currentStyle = elem.currentStyle,
2370
+ opacity = jQuery.isNumeric(value) ? "alpha(opacity=" + 100 * value + ")" : "",
2371
+ filter = currentStyle && currentStyle.filter || style.filter || "";
2372
+ style.zoom = 1, (value >= 1 || "" === value) && "" === jQuery.trim(filter.replace(ralpha, "")) && style.removeAttribute && (style.removeAttribute("filter"), "" === value || currentStyle && !currentStyle.filter) || (style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : filter + " " + opacity);
2373
+ }
2374
+ }), jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function (elem, computed) {
2375
+ return computed ? jQuery.swap(elem, {
2376
+ display: "inline-block"
2377
+ }, curCSS, [elem, "marginRight"]) : void 0;
2378
+ }), jQuery.each({
2379
+ margin: "",
2380
+ padding: "",
2381
+ border: "Width"
2382
+ }, function (prefix, suffix) {
2383
+ jQuery.cssHooks[prefix + suffix] = {
2384
+ expand: function (value) {
2385
+ for (var i = 0, expanded = {}, parts = "string" == typeof value ? value.split(" ") : [value]; 4 > i; i++) expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
2386
+ return expanded;
2387
+ }
2388
+ }, rmargin.test(prefix) || (jQuery.cssHooks[prefix + suffix].set = setPositiveNumber);
2389
+ }), jQuery.fn.extend({
2390
+ css: function (name, value) {
2391
+ return access(this, function (elem, name, value) {
2392
+ var styles,
2393
+ len,
2394
+ map = {},
2395
+ i = 0;
2396
+ if (jQuery.isArray(name)) {
2397
+ for (styles = getStyles(elem), len = name.length; len > i; i++) map[name[i]] = jQuery.css(elem, name[i], !1, styles);
2398
+ return map;
2399
+ }
2400
+ return void 0 !== value ? jQuery.style(elem, name, value) : jQuery.css(elem, name);
2401
+ }, name, value, arguments.length > 1);
2402
+ },
2403
+ show: function () {
2404
+ return showHide(this, !0);
2405
+ },
2406
+ hide: function () {
2407
+ return showHide(this);
2408
+ },
2409
+ toggle: function (state) {
2410
+ return "boolean" == typeof state ? state ? this.show() : this.hide() : this.each(function () {
2411
+ isHidden(this) ? jQuery(this).show() : jQuery(this).hide();
2412
+ });
2413
+ }
2414
+ }), jQuery.Tween = Tween, Tween.prototype = {
2415
+ constructor: Tween,
2416
+ init: function (elem, options, prop, end, easing, unit) {
2417
+ this.elem = elem, this.prop = prop, this.easing = easing || "swing", this.options = options, this.start = this.now = this.cur(), this.end = end, this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
2418
+ },
2419
+ cur: function () {
2420
+ var hooks = Tween.propHooks[this.prop];
2421
+ return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
2422
+ },
2423
+ run: function (percent) {
2424
+ var eased,
2425
+ hooks = Tween.propHooks[this.prop];
2426
+ return this.options.duration ? this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration) : this.pos = eased = percent, this.now = (this.end - this.start) * eased + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), hooks && hooks.set ? hooks.set(this) : Tween.propHooks._default.set(this), this;
2427
+ }
2428
+ }, Tween.prototype.init.prototype = Tween.prototype, Tween.propHooks = {
2429
+ _default: {
2430
+ get: function (tween) {
2431
+ var result;
2432
+ return null == tween.elem[tween.prop] || tween.elem.style && null != tween.elem.style[tween.prop] ? (result = jQuery.css(tween.elem, tween.prop, ""), result && "auto" !== result ? result : 0) : tween.elem[tween.prop];
2433
+ },
2434
+ set: function (tween) {
2435
+ jQuery.fx.step[tween.prop] ? jQuery.fx.step[tween.prop](tween) : tween.elem.style && (null != tween.elem.style[jQuery.cssProps[tween.prop]] || jQuery.cssHooks[tween.prop]) ? jQuery.style(tween.elem, tween.prop, tween.now + tween.unit) : tween.elem[tween.prop] = tween.now;
2436
+ }
2437
+ }
2438
+ }, Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
2439
+ set: function (tween) {
2440
+ tween.elem.nodeType && tween.elem.parentNode && (tween.elem[tween.prop] = tween.now);
2441
+ }
2442
+ }, jQuery.easing = {
2443
+ linear: function (p) {
2444
+ return p;
2445
+ },
2446
+ swing: function (p) {
2447
+ return .5 - Math.cos(p * Math.PI) / 2;
2448
+ }
2449
+ }, jQuery.fx = Tween.prototype.init, jQuery.fx.step = {};
2450
+ var fxNow,
2451
+ timerId,
2452
+ rfxtypes = /^(?:toggle|show|hide)$/,
2453
+ rfxnum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"),
2454
+ rrun = /queueHooks$/,
2455
+ animationPrefilters = [defaultPrefilter],
2456
+ tweeners = {
2457
+ "*": [function (prop, value) {
2458
+ var tween = this.createTween(prop, value),
2459
+ target = tween.cur(),
2460
+ parts = rfxnum.exec(value),
2461
+ unit = parts && parts[3] || (jQuery.cssNumber[prop] ? "" : "px"),
2462
+ start = (jQuery.cssNumber[prop] || "px" !== unit && +target) && rfxnum.exec(jQuery.css(tween.elem, prop)),
2463
+ scale = 1,
2464
+ maxIterations = 20;
2465
+ if (start && start[3] !== unit) {
2466
+ unit = unit || start[3], parts = parts || [], start = +target || 1;
2467
+ do scale = scale || ".5", start /= scale, jQuery.style(tween.elem, prop, start + unit); while (scale !== (scale = tween.cur() / target) && 1 !== scale && --maxIterations);
2468
+ }
2469
+ return parts && (start = tween.start = +start || +target || 0, tween.unit = unit, tween.end = parts[1] ? start + (parts[1] + 1) * parts[2] : +parts[2]), tween;
2470
+ }]
2471
+ };
2472
+ jQuery.Animation = jQuery.extend(Animation, {
2473
+ tweener: function (props, callback) {
2474
+ jQuery.isFunction(props) ? (callback = props, props = ["*"]) : props = props.split(" ");
2475
+ for (var prop, index = 0, length = props.length; length > index; index++) prop = props[index], tweeners[prop] = tweeners[prop] || [], tweeners[prop].unshift(callback);
2476
+ },
2477
+ prefilter: function (callback, prepend) {
2478
+ prepend ? animationPrefilters.unshift(callback) : animationPrefilters.push(callback);
2479
+ }
2480
+ }), jQuery.speed = function (speed, easing, fn) {
2481
+ var opt = speed && "object" == typeof speed ? jQuery.extend({}, speed) : {
2482
+ complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,
2483
+ duration: speed,
2484
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
2485
+ };
2486
+ return opt.duration = jQuery.fx.off ? 0 : "number" == typeof opt.duration ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default, (null == opt.queue || opt.queue === !0) && (opt.queue = "fx"), opt.old = opt.complete, opt.complete = function () {
2487
+ jQuery.isFunction(opt.old) && opt.old.call(this), opt.queue && jQuery.dequeue(this, opt.queue);
2488
+ }, opt;
2489
+ }, jQuery.fn.extend({
2490
+ fadeTo: function (speed, to, easing, callback) {
2491
+ return this.filter(isHidden).css("opacity", 0).show().end().animate({
2492
+ opacity: to
2493
+ }, speed, easing, callback);
2494
+ },
2495
+ animate: function (prop, speed, easing, callback) {
2496
+ var empty = jQuery.isEmptyObject(prop),
2497
+ optall = jQuery.speed(speed, easing, callback),
2498
+ doAnimation = function () {
2499
+ var anim = Animation(this, jQuery.extend({}, prop), optall);
2500
+ (empty || jQuery._data(this, "finish")) && anim.stop(!0);
2501
+ };
2502
+ return doAnimation.finish = doAnimation, empty || optall.queue === !1 ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
2503
+ },
2504
+ stop: function (type, clearQueue, gotoEnd) {
2505
+ var stopQueue = function (hooks) {
2506
+ var stop = hooks.stop;
2507
+ delete hooks.stop, stop(gotoEnd);
2508
+ };
2509
+ return "string" != typeof type && (gotoEnd = clearQueue, clearQueue = type, type = void 0), clearQueue && type !== !1 && this.queue(type || "fx", []), this.each(function () {
2510
+ var dequeue = !0,
2511
+ index = null != type && type + "queueHooks",
2512
+ timers = jQuery.timers,
2513
+ data = jQuery._data(this);
2514
+ if (index) data[index] && data[index].stop && stopQueue(data[index]);else for (index in data) data[index] && data[index].stop && rrun.test(index) && stopQueue(data[index]);
2515
+ for (index = timers.length; index--;) timers[index].elem !== this || null != type && timers[index].queue !== type || (timers[index].anim.stop(gotoEnd), dequeue = !1, timers.splice(index, 1));
2516
+ (dequeue || !gotoEnd) && jQuery.dequeue(this, type);
2517
+ });
2518
+ },
2519
+ finish: function (type) {
2520
+ return type !== !1 && (type = type || "fx"), this.each(function () {
2521
+ var index,
2522
+ data = jQuery._data(this),
2523
+ queue = data[type + "queue"],
2524
+ hooks = data[type + "queueHooks"],
2525
+ timers = jQuery.timers,
2526
+ length = queue ? queue.length : 0;
2527
+ for (data.finish = !0, jQuery.queue(this, type, []), hooks && hooks.stop && hooks.stop.call(this, !0), index = timers.length; index--;) timers[index].elem === this && timers[index].queue === type && (timers[index].anim.stop(!0), timers.splice(index, 1));
2528
+ for (index = 0; length > index; index++) queue[index] && queue[index].finish && queue[index].finish.call(this);
2529
+ delete data.finish;
2530
+ });
2531
+ }
2532
+ }), jQuery.each(["toggle", "show", "hide"], function (i, name) {
2533
+ var cssFn = jQuery.fn[name];
2534
+ jQuery.fn[name] = function (speed, easing, callback) {
2535
+ return null == speed || "boolean" == typeof speed ? cssFn.apply(this, arguments) : this.animate(genFx(name, !0), speed, easing, callback);
2536
+ };
2537
+ }), jQuery.each({
2538
+ slideDown: genFx("show"),
2539
+ slideUp: genFx("hide"),
2540
+ slideToggle: genFx("toggle"),
2541
+ fadeIn: {
2542
+ opacity: "show"
2543
+ },
2544
+ fadeOut: {
2545
+ opacity: "hide"
2546
+ },
2547
+ fadeToggle: {
2548
+ opacity: "toggle"
2549
+ }
2550
+ }, function (name, props) {
2551
+ jQuery.fn[name] = function (speed, easing, callback) {
2552
+ return this.animate(props, speed, easing, callback);
2553
+ };
2554
+ }), jQuery.timers = [], jQuery.fx.tick = function () {
2555
+ var timer,
2556
+ timers = jQuery.timers,
2557
+ i = 0;
2558
+ for (fxNow = jQuery.now(); i < timers.length; i++) timer = timers[i], timer() || timers[i] !== timer || timers.splice(i--, 1);
2559
+ timers.length || jQuery.fx.stop(), fxNow = void 0;
2560
+ }, jQuery.fx.timer = function (timer) {
2561
+ jQuery.timers.push(timer), timer() ? jQuery.fx.start() : jQuery.timers.pop();
2562
+ }, jQuery.fx.interval = 13, jQuery.fx.start = function () {
2563
+ timerId || (timerId = setInterval(jQuery.fx.tick, jQuery.fx.interval));
2564
+ }, jQuery.fx.stop = function () {
2565
+ clearInterval(timerId), timerId = null;
2566
+ }, jQuery.fx.speeds = {
2567
+ slow: 600,
2568
+ fast: 200,
2569
+ _default: 400
2570
+ }, jQuery.fn.delay = function (time, type) {
2571
+ return time = jQuery.fx ? jQuery.fx.speeds[time] || time : time, type = type || "fx", this.queue(type, function (next, hooks) {
2572
+ var timeout = setTimeout(next, time);
2573
+ hooks.stop = function () {
2574
+ clearTimeout(timeout);
2575
+ };
2576
+ });
2577
+ }, function () {
2578
+ var input, div, select, a, opt;
2579
+ div = document.createElement("div"), div.setAttribute("className", "t"), div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = div.getElementsByTagName("a")[0], select = document.createElement("select"), opt = select.appendChild(document.createElement("option")), input = div.getElementsByTagName("input")[0], a.style.cssText = "top:1px", support.getSetAttribute = "t" !== div.className, support.style = /top/.test(a.getAttribute("style")), support.hrefNormalized = "/a" === a.getAttribute("href"), support.checkOn = !!input.value, support.optSelected = opt.selected, support.enctype = !!document.createElement("form").enctype, select.disabled = !0, support.optDisabled = !opt.disabled, input = document.createElement("input"), input.setAttribute("value", ""), support.input = "" === input.getAttribute("value"), input.value = "t", input.setAttribute("type", "radio"), support.radioValue = "t" === input.value;
2580
+ }();
2581
+ var rreturn = /\r/g;
2582
+ jQuery.fn.extend({
2583
+ val: function (value) {
2584
+ var hooks,
2585
+ ret,
2586
+ isFunction,
2587
+ elem = this[0];
2588
+ {
2589
+ if (arguments.length) return isFunction = jQuery.isFunction(value), this.each(function (i) {
2590
+ var val;
2591
+ 1 === this.nodeType && (val = isFunction ? value.call(this, i, jQuery(this).val()) : value, null == val ? val = "" : "number" == typeof val ? val += "" : jQuery.isArray(val) && (val = jQuery.map(val, function (value) {
2592
+ return null == value ? "" : value + "";
2593
+ })), hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()], hooks && "set" in hooks && void 0 !== hooks.set(this, val, "value") || (this.value = val));
2594
+ });
2595
+ if (elem) return hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()], hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, "value")) ? ret : (ret = elem.value, "string" == typeof ret ? ret.replace(rreturn, "") : null == ret ? "" : ret);
2596
+ }
2597
+ }
2598
+ }), jQuery.extend({
2599
+ valHooks: {
2600
+ option: {
2601
+ get: function (elem) {
2602
+ var val = jQuery.find.attr(elem, "value");
2603
+ return null != val ? val : jQuery.trim(jQuery.text(elem));
2604
+ }
2605
+ },
2606
+ select: {
2607
+ get: function (elem) {
2608
+ for (var value, option, options = elem.options, index = elem.selectedIndex, one = "select-one" === elem.type || 0 > index, values = one ? null : [], max = one ? index + 1 : options.length, i = 0 > index ? max : one ? index : 0; max > i; i++) if (option = options[i], (option.selected || i === index) && (support.optDisabled ? !option.disabled : null === option.getAttribute("disabled")) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, "optgroup"))) {
2609
+ if (value = jQuery(option).val(), one) return value;
2610
+ values.push(value);
2611
+ }
2612
+ return values;
2613
+ },
2614
+ set: function (elem, value) {
2615
+ for (var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length; i--;) if (option = options[i], jQuery.inArray(jQuery.valHooks.option.get(option), values) >= 0) try {
2616
+ option.selected = optionSet = !0;
2617
+ } catch (_) {
2618
+ option.scrollHeight;
2619
+ } else option.selected = !1;
2620
+ return optionSet || (elem.selectedIndex = -1), options;
2621
+ }
2622
+ }
2623
+ }
2624
+ }), jQuery.each(["radio", "checkbox"], function () {
2625
+ jQuery.valHooks[this] = {
2626
+ set: function (elem, value) {
2627
+ return jQuery.isArray(value) ? elem.checked = jQuery.inArray(jQuery(elem).val(), value) >= 0 : void 0;
2628
+ }
2629
+ }, support.checkOn || (jQuery.valHooks[this].get = function (elem) {
2630
+ return null === elem.getAttribute("value") ? "on" : elem.value;
2631
+ });
2632
+ });
2633
+ var nodeHook,
2634
+ boolHook,
2635
+ attrHandle = jQuery.expr.attrHandle,
2636
+ ruseDefault = /^(?:checked|selected)$/i,
2637
+ getSetAttribute = support.getSetAttribute,
2638
+ getSetInput = support.input;
2639
+ jQuery.fn.extend({
2640
+ attr: function (name, value) {
2641
+ return access(this, jQuery.attr, name, value, arguments.length > 1);
2642
+ },
2643
+ removeAttr: function (name) {
2644
+ return this.each(function () {
2645
+ jQuery.removeAttr(this, name);
2646
+ });
2647
+ }
2648
+ }), jQuery.extend({
2649
+ attr: function (elem, name, value) {
2650
+ var hooks,
2651
+ ret,
2652
+ nType = elem.nodeType;
2653
+ if (elem && 3 !== nType && 8 !== nType && 2 !== nType) return typeof elem.getAttribute === strundefined ? jQuery.prop(elem, name, value) : (1 === nType && jQuery.isXMLDoc(elem) || (name = name.toLowerCase(), hooks = jQuery.attrHooks[name] || (jQuery.expr.match.bool.test(name) ? boolHook : nodeHook)), void 0 === value ? hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : (ret = jQuery.find.attr(elem, name), null == ret ? void 0 : ret) : null !== value ? hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : (elem.setAttribute(name, value + ""), value) : void jQuery.removeAttr(elem, name));
2654
+ },
2655
+ removeAttr: function (elem, value) {
2656
+ var name,
2657
+ propName,
2658
+ i = 0,
2659
+ attrNames = value && value.match(rnotwhite);
2660
+ if (attrNames && 1 === elem.nodeType) for (; name = attrNames[i++];) propName = jQuery.propFix[name] || name, jQuery.expr.match.bool.test(name) ? getSetInput && getSetAttribute || !ruseDefault.test(name) ? elem[propName] = !1 : elem[jQuery.camelCase("default-" + name)] = elem[propName] = !1 : jQuery.attr(elem, name, ""), elem.removeAttribute(getSetAttribute ? name : propName);
2661
+ },
2662
+ attrHooks: {
2663
+ type: {
2664
+ set: function (elem, value) {
2665
+ if (!support.radioValue && "radio" === value && jQuery.nodeName(elem, "input")) {
2666
+ var val = elem.value;
2667
+ return elem.setAttribute("type", value), val && (elem.value = val), value;
2668
+ }
2669
+ }
2670
+ }
2671
+ }
2672
+ }), boolHook = {
2673
+ set: function (elem, value, name) {
2674
+ return value === !1 ? jQuery.removeAttr(elem, name) : getSetInput && getSetAttribute || !ruseDefault.test(name) ? elem.setAttribute(!getSetAttribute && jQuery.propFix[name] || name, name) : elem[jQuery.camelCase("default-" + name)] = elem[name] = !0, name;
2675
+ }
2676
+ }, jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (i, name) {
2677
+ var getter = attrHandle[name] || jQuery.find.attr;
2678
+ attrHandle[name] = getSetInput && getSetAttribute || !ruseDefault.test(name) ? function (elem, name, isXML) {
2679
+ var ret, handle;
2680
+ return isXML || (handle = attrHandle[name], attrHandle[name] = ret, ret = null != getter(elem, name, isXML) ? name.toLowerCase() : null, attrHandle[name] = handle), ret;
2681
+ } : function (elem, name, isXML) {
2682
+ return isXML ? void 0 : elem[jQuery.camelCase("default-" + name)] ? name.toLowerCase() : null;
2683
+ };
2684
+ }), getSetInput && getSetAttribute || (jQuery.attrHooks.value = {
2685
+ set: function (elem, value, name) {
2686
+ return jQuery.nodeName(elem, "input") ? void (elem.defaultValue = value) : nodeHook && nodeHook.set(elem, value, name);
2687
+ }
2688
+ }), getSetAttribute || (nodeHook = {
2689
+ set: function (elem, value, name) {
2690
+ var ret = elem.getAttributeNode(name);
2691
+ return ret || elem.setAttributeNode(ret = elem.ownerDocument.createAttribute(name)), ret.value = value += "", "value" === name || value === elem.getAttribute(name) ? value : void 0;
2692
+ }
2693
+ }, attrHandle.id = attrHandle.name = attrHandle.coords = function (elem, name, isXML) {
2694
+ var ret;
2695
+ return isXML ? void 0 : (ret = elem.getAttributeNode(name)) && "" !== ret.value ? ret.value : null;
2696
+ }, jQuery.valHooks.button = {
2697
+ get: function (elem, name) {
2698
+ var ret = elem.getAttributeNode(name);
2699
+ return ret && ret.specified ? ret.value : void 0;
2700
+ },
2701
+ set: nodeHook.set
2702
+ }, jQuery.attrHooks.contenteditable = {
2703
+ set: function (elem, value, name) {
2704
+ nodeHook.set(elem, "" === value ? !1 : value, name);
2705
+ }
2706
+ }, jQuery.each(["width", "height"], function (i, name) {
2707
+ jQuery.attrHooks[name] = {
2708
+ set: function (elem, value) {
2709
+ return "" === value ? (elem.setAttribute(name, "auto"), value) : void 0;
2710
+ }
2711
+ };
2712
+ })), support.style || (jQuery.attrHooks.style = {
2713
+ get: function (elem) {
2714
+ return elem.style.cssText || void 0;
2715
+ },
2716
+ set: function (elem, value) {
2717
+ return elem.style.cssText = value + "";
2718
+ }
2719
+ });
2720
+ var rfocusable = /^(?:input|select|textarea|button|object)$/i,
2721
+ rclickable = /^(?:a|area)$/i;
2722
+ jQuery.fn.extend({
2723
+ prop: function (name, value) {
2724
+ return access(this, jQuery.prop, name, value, arguments.length > 1);
2725
+ },
2726
+ removeProp: function (name) {
2727
+ return name = jQuery.propFix[name] || name, this.each(function () {
2728
+ try {
2729
+ this[name] = void 0, delete this[name];
2730
+ } catch (e) {}
2731
+ });
2732
+ }
2733
+ }), jQuery.extend({
2734
+ propFix: {
2735
+ "for": "htmlFor",
2736
+ "class": "className"
2737
+ },
2738
+ prop: function (elem, name, value) {
2739
+ var ret,
2740
+ hooks,
2741
+ notxml,
2742
+ nType = elem.nodeType;
2743
+ if (elem && 3 !== nType && 8 !== nType && 2 !== nType) return notxml = 1 !== nType || !jQuery.isXMLDoc(elem), notxml && (name = jQuery.propFix[name] || name, hooks = jQuery.propHooks[name]), void 0 !== value ? hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : elem[name] = value : hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : elem[name];
2744
+ },
2745
+ propHooks: {
2746
+ tabIndex: {
2747
+ get: function (elem) {
2748
+ var tabindex = jQuery.find.attr(elem, "tabindex");
2749
+ return tabindex ? parseInt(tabindex, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : -1;
2750
+ }
2751
+ }
2752
+ }
2753
+ }), support.hrefNormalized || jQuery.each(["href", "src"], function (i, name) {
2754
+ jQuery.propHooks[name] = {
2755
+ get: function (elem) {
2756
+ return elem.getAttribute(name, 4);
2757
+ }
2758
+ };
2759
+ }), support.optSelected || (jQuery.propHooks.selected = {
2760
+ get: function (elem) {
2761
+ var parent = elem.parentNode;
2762
+ return parent && (parent.selectedIndex, parent.parentNode && parent.parentNode.selectedIndex), null;
2763
+ }
2764
+ }), jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
2765
+ jQuery.propFix[this.toLowerCase()] = this;
2766
+ }), support.enctype || (jQuery.propFix.enctype = "encoding");
2767
+ var rclass = /[\t\r\n\f]/g;
2768
+ jQuery.fn.extend({
2769
+ addClass: function (value) {
2770
+ var classes,
2771
+ elem,
2772
+ cur,
2773
+ clazz,
2774
+ j,
2775
+ finalValue,
2776
+ i = 0,
2777
+ len = this.length,
2778
+ proceed = "string" == typeof value && value;
2779
+ if (jQuery.isFunction(value)) return this.each(function (j) {
2780
+ jQuery(this).addClass(value.call(this, j, this.className));
2781
+ });
2782
+ if (proceed) for (classes = (value || "").match(rnotwhite) || []; len > i; i++) if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : " ")) {
2783
+ for (j = 0; clazz = classes[j++];) cur.indexOf(" " + clazz + " ") < 0 && (cur += clazz + " ");
2784
+ finalValue = jQuery.trim(cur), elem.className !== finalValue && (elem.className = finalValue);
2785
+ }
2786
+ return this;
2787
+ },
2788
+ removeClass: function (value) {
2789
+ var classes,
2790
+ elem,
2791
+ cur,
2792
+ clazz,
2793
+ j,
2794
+ finalValue,
2795
+ i = 0,
2796
+ len = this.length,
2797
+ proceed = 0 === arguments.length || "string" == typeof value && value;
2798
+ if (jQuery.isFunction(value)) return this.each(function (j) {
2799
+ jQuery(this).removeClass(value.call(this, j, this.className));
2800
+ });
2801
+ if (proceed) for (classes = (value || "").match(rnotwhite) || []; len > i; i++) if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : "")) {
2802
+ for (j = 0; clazz = classes[j++];) for (; cur.indexOf(" " + clazz + " ") >= 0;) cur = cur.replace(" " + clazz + " ", " ");
2803
+ finalValue = value ? jQuery.trim(cur) : "", elem.className !== finalValue && (elem.className = finalValue);
2804
+ }
2805
+ return this;
2806
+ },
2807
+ toggleClass: function (value, stateVal) {
2808
+ var type = typeof value;
2809
+ return "boolean" == typeof stateVal && "string" === type ? stateVal ? this.addClass(value) : this.removeClass(value) : jQuery.isFunction(value) ? this.each(function (i) {
2810
+ jQuery(this).toggleClass(value.call(this, i, this.className, stateVal), stateVal);
2811
+ }) : this.each(function () {
2812
+ if ("string" === type) for (var className, i = 0, self = jQuery(this), classNames = value.match(rnotwhite) || []; className = classNames[i++];) self.hasClass(className) ? self.removeClass(className) : self.addClass(className);else (type === strundefined || "boolean" === type) && (this.className && jQuery._data(this, "__className__", this.className), this.className = this.className || value === !1 ? "" : jQuery._data(this, "__className__") || "");
2813
+ });
2814
+ },
2815
+ hasClass: function (selector) {
2816
+ for (var className = " " + selector + " ", i = 0, l = this.length; l > i; i++) if (1 === this[i].nodeType && (" " + this[i].className + " ").replace(rclass, " ").indexOf(className) >= 0) return !0;
2817
+ return !1;
2818
+ }
2819
+ }), jQuery.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function (i, name) {
2820
+ jQuery.fn[name] = function (data, fn) {
2821
+ return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
2822
+ };
2823
+ }), jQuery.fn.extend({
2824
+ hover: function (fnOver, fnOut) {
2825
+ return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
2826
+ },
2827
+ bind: function (types, data, fn) {
2828
+ return this.on(types, null, data, fn);
2829
+ },
2830
+ unbind: function (types, fn) {
2831
+ return this.off(types, null, fn);
2832
+ },
2833
+ delegate: function (selector, types, data, fn) {
2834
+ return this.on(types, selector, data, fn);
2835
+ },
2836
+ undelegate: function (selector, types, fn) {
2837
+ return 1 === arguments.length ? this.off(selector, "**") : this.off(types, selector || "**", fn);
2838
+ }
2839
+ });
2840
+ var nonce = jQuery.now(),
2841
+ rquery = /\?/,
2842
+ rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
2843
+ jQuery.parseJSON = function (data) {
2844
+ if (window.JSON && window.JSON.parse) return window.JSON.parse(data + "");
2845
+ var requireNonComma,
2846
+ depth = null,
2847
+ str = jQuery.trim(data + "");
2848
+ return str && !jQuery.trim(str.replace(rvalidtokens, function (token, comma, open, close) {
2849
+ return requireNonComma && comma && (depth = 0), 0 === depth ? token : (requireNonComma = open || comma, depth += !close - !open, "");
2850
+ })) ? Function("return " + str)() : jQuery.error("Invalid JSON: " + data);
2851
+ }, jQuery.parseXML = function (data) {
2852
+ var xml, tmp;
2853
+ if (!data || "string" != typeof data) return null;
2854
+ try {
2855
+ window.DOMParser ? (tmp = new DOMParser(), xml = tmp.parseFromString(data, "text/xml")) : (xml = new ActiveXObject("Microsoft.XMLDOM"), xml.async = "false", xml.loadXML(data));
2856
+ } catch (e) {
2857
+ xml = void 0;
2858
+ }
2859
+ return xml && xml.documentElement && !xml.getElementsByTagName("parsererror").length || jQuery.error("Invalid XML: " + data), xml;
2860
+ };
2861
+ var ajaxLocParts,
2862
+ ajaxLocation,
2863
+ rhash = /#.*$/,
2864
+ rts = /([?&])_=[^&]*/,
2865
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
2866
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
2867
+ rnoContent = /^(?:GET|HEAD)$/,
2868
+ rprotocol = /^\/\//,
2869
+ rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
2870
+ prefilters = {},
2871
+ transports = {},
2872
+ allTypes = "*/".concat("*");
2873
+ try {
2874
+ ajaxLocation = location.href;
2875
+ } catch (e) {
2876
+ ajaxLocation = document.createElement("a"), ajaxLocation.href = "", ajaxLocation = ajaxLocation.href;
2877
+ }
2878
+ ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || [], jQuery.extend({
2879
+ active: 0,
2880
+ lastModified: {},
2881
+ etag: {},
2882
+ ajaxSettings: {
2883
+ url: ajaxLocation,
2884
+ type: "GET",
2885
+ isLocal: rlocalProtocol.test(ajaxLocParts[1]),
2886
+ global: !0,
2887
+ processData: !0,
2888
+ async: !0,
2889
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
2890
+ accepts: {
2891
+ "*": allTypes,
2892
+ text: "text/plain",
2893
+ html: "text/html",
2894
+ xml: "application/xml, text/xml",
2895
+ json: "application/json, text/javascript"
2896
+ },
2897
+ contents: {
2898
+ xml: /xml/,
2899
+ html: /html/,
2900
+ json: /json/
2901
+ },
2902
+ responseFields: {
2903
+ xml: "responseXML",
2904
+ text: "responseText",
2905
+ json: "responseJSON"
2906
+ },
2907
+ converters: {
2908
+ "* text": String,
2909
+ "text html": !0,
2910
+ "text json": jQuery.parseJSON,
2911
+ "text xml": jQuery.parseXML
2912
+ },
2913
+ flatOptions: {
2914
+ url: !0,
2915
+ context: !0
2916
+ }
2917
+ },
2918
+ ajaxSetup: function (target, settings) {
2919
+ return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target);
2920
+ },
2921
+ ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
2922
+ ajaxTransport: addToPrefiltersOrTransports(transports),
2923
+ ajax: function (url, options) {
2924
+ function done(status, nativeStatusText, responses, headers) {
2925
+ var isSuccess,
2926
+ success,
2927
+ error,
2928
+ response,
2929
+ modified,
2930
+ statusText = nativeStatusText;
2931
+ 2 !== state && (state = 2, timeoutTimer && clearTimeout(timeoutTimer), transport = void 0, responseHeadersString = headers || "", jqXHR.readyState = status > 0 ? 4 : 0, isSuccess = status >= 200 && 300 > status || 304 === status, responses && (response = ajaxHandleResponses(s, jqXHR, responses)), response = ajaxConvert(s, response, jqXHR, isSuccess), isSuccess ? (s.ifModified && (modified = jqXHR.getResponseHeader("Last-Modified"), modified && (jQuery.lastModified[cacheURL] = modified), modified = jqXHR.getResponseHeader("etag"), modified && (jQuery.etag[cacheURL] = modified)), 204 === status || "HEAD" === s.type ? statusText = "nocontent" : 304 === status ? statusText = "notmodified" : (statusText = response.state, success = response.data, error = response.error, isSuccess = !error)) : (error = statusText, (status || !statusText) && (statusText = "error", 0 > status && (status = 0))), jqXHR.status = status, jqXHR.statusText = (nativeStatusText || statusText) + "", isSuccess ? deferred.resolveWith(callbackContext, [success, statusText, jqXHR]) : deferred.rejectWith(callbackContext, [jqXHR, statusText, error]), jqXHR.statusCode(statusCode), statusCode = void 0, fireGlobals && globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]), completeDeferred.fireWith(callbackContext, [jqXHR, statusText]), fireGlobals && (globalEventContext.trigger("ajaxComplete", [jqXHR, s]), --jQuery.active || jQuery.event.trigger("ajaxStop")));
2932
+ }
2933
+ "object" == typeof url && (options = url, url = void 0), options = options || {};
2934
+ var parts,
2935
+ i,
2936
+ cacheURL,
2937
+ responseHeadersString,
2938
+ timeoutTimer,
2939
+ fireGlobals,
2940
+ transport,
2941
+ responseHeaders,
2942
+ s = jQuery.ajaxSetup({}, options),
2943
+ callbackContext = s.context || s,
2944
+ globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,
2945
+ deferred = jQuery.Deferred(),
2946
+ completeDeferred = jQuery.Callbacks("once memory"),
2947
+ statusCode = s.statusCode || {},
2948
+ requestHeaders = {},
2949
+ requestHeadersNames = {},
2950
+ state = 0,
2951
+ strAbort = "canceled",
2952
+ jqXHR = {
2953
+ readyState: 0,
2954
+ getResponseHeader: function (key) {
2955
+ var match;
2956
+ if (2 === state) {
2957
+ if (!responseHeaders) for (responseHeaders = {}; match = rheaders.exec(responseHeadersString);) responseHeaders[match[1].toLowerCase()] = match[2];
2958
+ match = responseHeaders[key.toLowerCase()];
2959
+ }
2960
+ return null == match ? null : match;
2961
+ },
2962
+ getAllResponseHeaders: function () {
2963
+ return 2 === state ? responseHeadersString : null;
2964
+ },
2965
+ setRequestHeader: function (name, value) {
2966
+ var lname = name.toLowerCase();
2967
+ return state || (name = requestHeadersNames[lname] = requestHeadersNames[lname] || name, requestHeaders[name] = value), this;
2968
+ },
2969
+ overrideMimeType: function (type) {
2970
+ return state || (s.mimeType = type), this;
2971
+ },
2972
+ statusCode: function (map) {
2973
+ var code;
2974
+ if (map) if (2 > state) for (code in map) statusCode[code] = [statusCode[code], map[code]];else jqXHR.always(map[jqXHR.status]);
2975
+ return this;
2976
+ },
2977
+ abort: function (statusText) {
2978
+ var finalText = statusText || strAbort;
2979
+ return transport && transport.abort(finalText), done(0, finalText), this;
2980
+ }
2981
+ };
2982
+ if (deferred.promise(jqXHR).complete = completeDeferred.add, jqXHR.success = jqXHR.done, jqXHR.error = jqXHR.fail, s.url = ((url || s.url || ajaxLocation) + "").replace(rhash, "").replace(rprotocol, ajaxLocParts[1] + "//"), s.type = options.method || options.type || s.method || s.type, s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().match(rnotwhite) || [""], null == s.crossDomain && (parts = rurl.exec(s.url.toLowerCase()), s.crossDomain = !(!parts || parts[1] === ajaxLocParts[1] && parts[2] === ajaxLocParts[2] && (parts[3] || ("http:" === parts[1] ? "80" : "443")) === (ajaxLocParts[3] || ("http:" === ajaxLocParts[1] ? "80" : "443")))), s.data && s.processData && "string" != typeof s.data && (s.data = jQuery.param(s.data, s.traditional)), inspectPrefiltersOrTransports(prefilters, s, options, jqXHR), 2 === state) return jqXHR;
2983
+ fireGlobals = jQuery.event && s.global, fireGlobals && 0 === jQuery.active++ && jQuery.event.trigger("ajaxStart"), s.type = s.type.toUpperCase(), s.hasContent = !rnoContent.test(s.type), cacheURL = s.url, s.hasContent || (s.data && (cacheURL = s.url += (rquery.test(cacheURL) ? "&" : "?") + s.data, delete s.data), s.cache === !1 && (s.url = rts.test(cacheURL) ? cacheURL.replace(rts, "$1_=" + nonce++) : cacheURL + (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce++)), s.ifModified && (jQuery.lastModified[cacheURL] && jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]), jQuery.etag[cacheURL] && jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL])), (s.data && s.hasContent && s.contentType !== !1 || options.contentType) && jqXHR.setRequestHeader("Content-Type", s.contentType), jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + ("*" !== s.dataTypes[0] ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]);
2984
+ for (i in s.headers) jqXHR.setRequestHeader(i, s.headers[i]);
2985
+ if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === !1 || 2 === state)) return jqXHR.abort();
2986
+ strAbort = "abort";
2987
+ for (i in {
2988
+ success: 1,
2989
+ error: 1,
2990
+ complete: 1
2991
+ }) jqXHR[i](s[i]);
2992
+ if (transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR)) {
2993
+ jqXHR.readyState = 1, fireGlobals && globalEventContext.trigger("ajaxSend", [jqXHR, s]), s.async && s.timeout > 0 && (timeoutTimer = setTimeout(function () {
2994
+ jqXHR.abort("timeout");
2995
+ }, s.timeout));
2996
+ try {
2997
+ state = 1, transport.send(requestHeaders, done);
2998
+ } catch (e) {
2999
+ if (!(2 > state)) throw e;
3000
+ done(-1, e);
3001
+ }
3002
+ } else done(-1, "No Transport");
3003
+ return jqXHR;
3004
+ },
3005
+ getJSON: function (url, data, callback) {
3006
+ return jQuery.get(url, data, callback, "json");
3007
+ },
3008
+ getScript: function (url, callback) {
3009
+ return jQuery.get(url, void 0, callback, "script");
3010
+ }
3011
+ }), jQuery.each(["get", "post"], function (i, method) {
3012
+ jQuery[method] = function (url, data, callback, type) {
3013
+ return jQuery.isFunction(data) && (type = type || callback, callback = data, data = void 0), jQuery.ajax({
3014
+ url: url,
3015
+ type: method,
3016
+ dataType: type,
3017
+ data: data,
3018
+ success: callback
3019
+ });
3020
+ };
3021
+ }), jQuery._evalUrl = function (url) {
3022
+ return jQuery.ajax({
3023
+ url: url,
3024
+ type: "GET",
3025
+ dataType: "script",
3026
+ async: !1,
3027
+ global: !1,
3028
+ "throws": !0
3029
+ });
3030
+ }, jQuery.fn.extend({
3031
+ wrapAll: function (html) {
3032
+ if (jQuery.isFunction(html)) return this.each(function (i) {
3033
+ jQuery(this).wrapAll(html.call(this, i));
3034
+ });
3035
+ if (this[0]) {
3036
+ var wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(!0);
3037
+ this[0].parentNode && wrap.insertBefore(this[0]), wrap.map(function () {
3038
+ for (var elem = this; elem.firstChild && 1 === elem.firstChild.nodeType;) elem = elem.firstChild;
3039
+ return elem;
3040
+ }).append(this);
3041
+ }
3042
+ return this;
3043
+ },
3044
+ wrapInner: function (html) {
3045
+ return jQuery.isFunction(html) ? this.each(function (i) {
3046
+ jQuery(this).wrapInner(html.call(this, i));
3047
+ }) : this.each(function () {
3048
+ var self = jQuery(this),
3049
+ contents = self.contents();
3050
+ contents.length ? contents.wrapAll(html) : self.append(html);
3051
+ });
3052
+ },
3053
+ wrap: function (html) {
3054
+ var isFunction = jQuery.isFunction(html);
3055
+ return this.each(function (i) {
3056
+ jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);
3057
+ });
3058
+ },
3059
+ unwrap: function () {
3060
+ return this.parent().each(function () {
3061
+ jQuery.nodeName(this, "body") || jQuery(this).replaceWith(this.childNodes);
3062
+ }).end();
3063
+ }
3064
+ }), jQuery.expr.filters.hidden = function (elem) {
3065
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || !support.reliableHiddenOffsets() && "none" === (elem.style && elem.style.display || jQuery.css(elem, "display"));
3066
+ }, jQuery.expr.filters.visible = function (elem) {
3067
+ return !jQuery.expr.filters.hidden(elem);
3068
+ };
3069
+ var r20 = /%20/g,
3070
+ rbracket = /\[\]$/,
3071
+ rCRLF = /\r?\n/g,
3072
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
3073
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
3074
+ jQuery.param = function (a, traditional) {
3075
+ var prefix,
3076
+ s = [],
3077
+ add = function (key, value) {
3078
+ value = jQuery.isFunction(value) ? value() : null == value ? "" : value, s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
3079
+ };
3080
+ if (void 0 === traditional && (traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional), jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) jQuery.each(a, function () {
3081
+ add(this.name, this.value);
3082
+ });else for (prefix in a) buildParams(prefix, a[prefix], traditional, add);
3083
+ return s.join("&").replace(r20, "+");
3084
+ }, jQuery.fn.extend({
3085
+ serialize: function () {
3086
+ return jQuery.param(this.serializeArray());
3087
+ },
3088
+ serializeArray: function () {
3089
+ return this.map(function () {
3090
+ var elements = jQuery.prop(this, "elements");
3091
+ return elements ? jQuery.makeArray(elements) : this;
3092
+ }).filter(function () {
3093
+ var type = this.type;
3094
+ return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
3095
+ }).map(function (i, elem) {
3096
+ var val = jQuery(this).val();
3097
+ return null == val ? null : jQuery.isArray(val) ? jQuery.map(val, function (val) {
3098
+ return {
3099
+ name: elem.name,
3100
+ value: val.replace(rCRLF, "\r\n")
3101
+ };
3102
+ }) : {
3103
+ name: elem.name,
3104
+ value: val.replace(rCRLF, "\r\n")
3105
+ };
3106
+ }).get();
3107
+ }
3108
+ }), jQuery.ajaxSettings.xhr = void 0 !== window.ActiveXObject ? function () {
3109
+ return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && createStandardXHR() || createActiveXHR();
3110
+ } : createStandardXHR;
3111
+ var xhrId = 0,
3112
+ xhrCallbacks = {},
3113
+ xhrSupported = jQuery.ajaxSettings.xhr();
3114
+ window.attachEvent && window.attachEvent("onunload", function () {
3115
+ for (var key in xhrCallbacks) xhrCallbacks[key](void 0, !0);
3116
+ }), support.cors = !!xhrSupported && "withCredentials" in xhrSupported, xhrSupported = support.ajax = !!xhrSupported, xhrSupported && jQuery.ajaxTransport(function (options) {
3117
+ if (!options.crossDomain || support.cors) {
3118
+ var callback;
3119
+ return {
3120
+ send: function (headers, complete) {
3121
+ var i,
3122
+ xhr = options.xhr(),
3123
+ id = ++xhrId;
3124
+ if (xhr.open(options.type, options.url, options.async, options.username, options.password), options.xhrFields) for (i in options.xhrFields) xhr[i] = options.xhrFields[i];
3125
+ options.mimeType && xhr.overrideMimeType && xhr.overrideMimeType(options.mimeType), options.crossDomain || headers["X-Requested-With"] || (headers["X-Requested-With"] = "XMLHttpRequest");
3126
+ for (i in headers) void 0 !== headers[i] && xhr.setRequestHeader(i, headers[i] + "");
3127
+ xhr.send(options.hasContent && options.data || null), callback = function (_, isAbort) {
3128
+ var status, statusText, responses;
3129
+ if (callback && (isAbort || 4 === xhr.readyState)) if (delete xhrCallbacks[id], callback = void 0, xhr.onreadystatechange = jQuery.noop, isAbort) 4 !== xhr.readyState && xhr.abort();else {
3130
+ responses = {}, status = xhr.status, "string" == typeof xhr.responseText && (responses.text = xhr.responseText);
3131
+ try {
3132
+ statusText = xhr.statusText;
3133
+ } catch (e) {
3134
+ statusText = "";
3135
+ }
3136
+ status || !options.isLocal || options.crossDomain ? 1223 === status && (status = 204) : status = responses.text ? 200 : 404;
3137
+ }
3138
+ responses && complete(status, statusText, responses, xhr.getAllResponseHeaders());
3139
+ }, options.async ? 4 === xhr.readyState ? setTimeout(callback) : xhr.onreadystatechange = xhrCallbacks[id] = callback : callback();
3140
+ },
3141
+ abort: function () {
3142
+ callback && callback(void 0, !0);
3143
+ }
3144
+ };
3145
+ }
3146
+ }), jQuery.ajaxSetup({
3147
+ accepts: {
3148
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
3149
+ },
3150
+ contents: {
3151
+ script: /(?:java|ecma)script/
3152
+ },
3153
+ converters: {
3154
+ "text script": function (text) {
3155
+ return jQuery.globalEval(text), text;
3156
+ }
3157
+ }
3158
+ }), jQuery.ajaxPrefilter("script", function (s) {
3159
+ void 0 === s.cache && (s.cache = !1), s.crossDomain && (s.type = "GET", s.global = !1);
3160
+ }), jQuery.ajaxTransport("script", function (s) {
3161
+ if (s.crossDomain) {
3162
+ var script,
3163
+ head = document.head || jQuery("head")[0] || document.documentElement;
3164
+ return {
3165
+ send: function (_, callback) {
3166
+ script = document.createElement("script"), script.async = !0, s.scriptCharset && (script.charset = s.scriptCharset), script.src = s.url, script.onload = script.onreadystatechange = function (_, isAbort) {
3167
+ (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) && (script.onload = script.onreadystatechange = null, script.parentNode && script.parentNode.removeChild(script), script = null, isAbort || callback(200, "success"));
3168
+ }, head.insertBefore(script, head.firstChild);
3169
+ },
3170
+ abort: function () {
3171
+ script && script.onload(void 0, !0);
3172
+ }
3173
+ };
3174
+ }
3175
+ });
3176
+ var oldCallbacks = [],
3177
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
3178
+ jQuery.ajaxSetup({
3179
+ jsonp: "callback",
3180
+ jsonpCallback: function () {
3181
+ var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce++;
3182
+ return this[callback] = !0, callback;
3183
+ }
3184
+ }), jQuery.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) {
3185
+ var callbackName,
3186
+ overwritten,
3187
+ responseContainer,
3188
+ jsonProp = s.jsonp !== !1 && (rjsonp.test(s.url) ? "url" : "string" == typeof s.data && !(s.contentType || "").indexOf("application/x-www-form-urlencoded") && rjsonp.test(s.data) && "data");
3189
+ return jsonProp || "jsonp" === s.dataTypes[0] ? (callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback, jsonProp ? s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName) : s.jsonp !== !1 && (s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName), s.converters["script json"] = function () {
3190
+ return responseContainer || jQuery.error(callbackName + " was not called"), responseContainer[0];
3191
+ }, s.dataTypes[0] = "json", overwritten = window[callbackName], window[callbackName] = function () {
3192
+ responseContainer = arguments;
3193
+ }, jqXHR.always(function () {
3194
+ window[callbackName] = overwritten, s[callbackName] && (s.jsonpCallback = originalSettings.jsonpCallback, oldCallbacks.push(callbackName)), responseContainer && jQuery.isFunction(overwritten) && overwritten(responseContainer[0]), responseContainer = overwritten = void 0;
3195
+ }), "script") : void 0;
3196
+ }), jQuery.parseHTML = function (data, context, keepScripts) {
3197
+ if (!data || "string" != typeof data) return null;
3198
+ "boolean" == typeof context && (keepScripts = context, context = !1), context = context || document;
3199
+ var parsed = rsingleTag.exec(data),
3200
+ scripts = !keepScripts && [];
3201
+ return parsed ? [context.createElement(parsed[1])] : (parsed = jQuery.buildFragment([data], context, scripts), scripts && scripts.length && jQuery(scripts).remove(), jQuery.merge([], parsed.childNodes));
3202
+ };
3203
+ var _load = jQuery.fn.load;
3204
+ jQuery.fn.load = function (url, params, callback) {
3205
+ if ("string" != typeof url && _load) return _load.apply(this, arguments);
3206
+ var selector,
3207
+ response,
3208
+ type,
3209
+ self = this,
3210
+ off = url.indexOf(" ");
3211
+ return off >= 0 && (selector = jQuery.trim(url.slice(off, url.length)), url = url.slice(0, off)), jQuery.isFunction(params) ? (callback = params, params = void 0) : params && "object" == typeof params && (type = "POST"), self.length > 0 && jQuery.ajax({
3212
+ url: url,
3213
+ type: type,
3214
+ dataType: "html",
3215
+ data: params
3216
+ }).done(function (responseText) {
3217
+ response = arguments, self.html(selector ? jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : responseText);
3218
+ }).complete(callback && function (jqXHR, status) {
3219
+ self.each(callback, response || [jqXHR.responseText, status, jqXHR]);
3220
+ }), this;
3221
+ }, jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (i, type) {
3222
+ jQuery.fn[type] = function (fn) {
3223
+ return this.on(type, fn);
3224
+ };
3225
+ }), jQuery.expr.filters.animated = function (elem) {
3226
+ return jQuery.grep(jQuery.timers, function (fn) {
3227
+ return elem === fn.elem;
3228
+ }).length;
3229
+ };
3230
+ var docElem = window.document.documentElement;
3231
+ jQuery.offset = {
3232
+ setOffset: function (elem, options, i) {
3233
+ var curPosition,
3234
+ curLeft,
3235
+ curCSSTop,
3236
+ curTop,
3237
+ curOffset,
3238
+ curCSSLeft,
3239
+ calculatePosition,
3240
+ position = jQuery.css(elem, "position"),
3241
+ curElem = jQuery(elem),
3242
+ props = {};
3243
+ "static" === position && (elem.style.position = "relative"), curOffset = curElem.offset(), curCSSTop = jQuery.css(elem, "top"), curCSSLeft = jQuery.css(elem, "left"), calculatePosition = ("absolute" === position || "fixed" === position) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, calculatePosition ? (curPosition = curElem.position(), curTop = curPosition.top, curLeft = curPosition.left) : (curTop = parseFloat(curCSSTop) || 0, curLeft = parseFloat(curCSSLeft) || 0), jQuery.isFunction(options) && (options = options.call(elem, i, curOffset)), null != options.top && (props.top = options.top - curOffset.top + curTop), null != options.left && (props.left = options.left - curOffset.left + curLeft), "using" in options ? options.using.call(elem, props) : curElem.css(props);
3244
+ }
3245
+ }, jQuery.fn.extend({
3246
+ offset: function (options) {
3247
+ if (arguments.length) return void 0 === options ? this : this.each(function (i) {
3248
+ jQuery.offset.setOffset(this, options, i);
3249
+ });
3250
+ var docElem,
3251
+ win,
3252
+ box = {
3253
+ top: 0,
3254
+ left: 0
3255
+ },
3256
+ elem = this[0],
3257
+ doc = elem && elem.ownerDocument;
3258
+ if (doc) return docElem = doc.documentElement, jQuery.contains(docElem, elem) ? (typeof elem.getBoundingClientRect !== strundefined && (box = elem.getBoundingClientRect()), win = getWindow(doc), {
3259
+ top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),
3260
+ left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
3261
+ }) : box;
3262
+ },
3263
+ position: function () {
3264
+ if (this[0]) {
3265
+ var offsetParent,
3266
+ offset,
3267
+ parentOffset = {
3268
+ top: 0,
3269
+ left: 0
3270
+ },
3271
+ elem = this[0];
3272
+ return "fixed" === jQuery.css(elem, "position") ? offset = elem.getBoundingClientRect() : (offsetParent = this.offsetParent(), offset = this.offset(), jQuery.nodeName(offsetParent[0], "html") || (parentOffset = offsetParent.offset()), parentOffset.top += jQuery.css(offsetParent[0], "borderTopWidth", !0), parentOffset.left += jQuery.css(offsetParent[0], "borderLeftWidth", !0)), {
3273
+ top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", !0),
3274
+ left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", !0)
3275
+ };
3276
+ }
3277
+ },
3278
+ offsetParent: function () {
3279
+ return this.map(function () {
3280
+ for (var offsetParent = this.offsetParent || docElem; offsetParent && !jQuery.nodeName(offsetParent, "html") && "static" === jQuery.css(offsetParent, "position");) offsetParent = offsetParent.offsetParent;
3281
+ return offsetParent || docElem;
3282
+ });
3283
+ }
3284
+ }), jQuery.each({
3285
+ scrollLeft: "pageXOffset",
3286
+ scrollTop: "pageYOffset"
3287
+ }, function (method, prop) {
3288
+ var top = /Y/.test(prop);
3289
+ jQuery.fn[method] = function (val) {
3290
+ return access(this, function (elem, method, val) {
3291
+ var win = getWindow(elem);
3292
+ return void 0 === val ? win ? prop in win ? win[prop] : win.document.documentElement[method] : elem[method] : void (win ? win.scrollTo(top ? jQuery(win).scrollLeft() : val, top ? val : jQuery(win).scrollTop()) : elem[method] = val);
3293
+ }, method, val, arguments.length, null);
3294
+ };
3295
+ }), jQuery.each(["top", "left"], function (i, prop) {
3296
+ jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
3297
+ return computed ? (computed = curCSS(elem, prop), rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed) : void 0;
3298
+ });
3299
+ }), jQuery.each({
3300
+ Height: "height",
3301
+ Width: "width"
3302
+ }, function (name, type) {
3303
+ jQuery.each({
3304
+ padding: "inner" + name,
3305
+ content: type,
3306
+ "": "outer" + name
3307
+ }, function (defaultExtra, funcName) {
3308
+ jQuery.fn[funcName] = function (margin, value) {
3309
+ var chainable = arguments.length && (defaultExtra || "boolean" != typeof margin),
3310
+ extra = defaultExtra || (margin === !0 || value === !0 ? "margin" : "border");
3311
+ return access(this, function (elem, type, value) {
3312
+ var doc;
3313
+ return jQuery.isWindow(elem) ? elem.document.documentElement["client" + name] : 9 === elem.nodeType ? (doc = elem.documentElement, Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name])) : void 0 === value ? jQuery.css(elem, type, extra) : jQuery.style(elem, type, value, extra);
3314
+ }, type, chainable ? margin : void 0, chainable, null);
3315
+ };
3316
+ });
3317
+ }), jQuery.fn.size = function () {
3318
+ return this.length;
3319
+ }, jQuery.fn.andSelf = jQuery.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function () {
3320
+ return jQuery;
3321
+ });
3322
+ var _jQuery = window.jQuery,
3323
+ _$ = window.$;
3324
+ return jQuery.noConflict = function (deep) {
3325
+ return window.$ === jQuery && (window.$ = _$), deep && window.jQuery === jQuery && (window.jQuery = _jQuery), jQuery;
3326
+ }, typeof noGlobal === strundefined && (window.jQuery = window.$ = jQuery), jQuery;
3327
+ });
3328
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnbG9iYWwiLCJmYWN0b3J5IiwibW9kdWxlIiwiZXhwb3J0cyIsImRvY3VtZW50IiwidyIsIkVycm9yIiwid2luZG93Iiwibm9HbG9iYWwiLCJpc0FycmF5bGlrZSIsIm9iaiIsImxlbmd0aCIsInR5cGUiLCJqUXVlcnkiLCJpc1dpbmRvdyIsIm5vZGVUeXBlIiwid2lubm93IiwiZWxlbWVudHMiLCJxdWFsaWZpZXIiLCJub3QiLCJpc0Z1bmN0aW9uIiwiZ3JlcCIsImVsZW0iLCJpIiwiY2FsbCIsInJpc1NpbXBsZSIsInRlc3QiLCJmaWx0ZXIiLCJpbkFycmF5Iiwic2libGluZyIsImN1ciIsImRpciIsImNyZWF0ZU9wdGlvbnMiLCJvcHRpb25zIiwib2JqZWN0Iiwib3B0aW9uc0NhY2hlIiwiZWFjaCIsIm1hdGNoIiwicm5vdHdoaXRlIiwiXyIsImZsYWciLCJkZXRhY2giLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBsZXRlZCIsImRldGFjaEV2ZW50IiwiZXZlbnQiLCJyZWFkeVN0YXRlIiwicmVhZHkiLCJkYXRhQXR0ciIsImtleSIsImRhdGEiLCJuYW1lIiwicmVwbGFjZSIsInJtdWx0aURhc2giLCJ0b0xvd2VyQ2FzZSIsImdldEF0dHJpYnV0ZSIsInJicmFjZSIsInBhcnNlSlNPTiIsImUiLCJpc0VtcHR5RGF0YU9iamVjdCIsImlzRW1wdHlPYmplY3QiLCJpbnRlcm5hbERhdGEiLCJwdnQiLCJhY2NlcHREYXRhIiwicmV0IiwidGhpc0NhY2hlIiwiaW50ZXJuYWxLZXkiLCJleHBhbmRvIiwiaXNOb2RlIiwiY2FjaGUiLCJpZCIsImRlbGV0ZWRJZHMiLCJwb3AiLCJndWlkIiwidG9KU09OIiwibm9vcCIsImV4dGVuZCIsImNhbWVsQ2FzZSIsImludGVybmFsUmVtb3ZlRGF0YSIsImlzQXJyYXkiLCJjb25jYXQiLCJtYXAiLCJzcGxpdCIsImNsZWFuRGF0YSIsInN1cHBvcnQiLCJkZWxldGVFeHBhbmRvIiwicmV0dXJuVHJ1ZSIsInJldHVybkZhbHNlIiwic2FmZUFjdGl2ZUVsZW1lbnQiLCJhY3RpdmVFbGVtZW50IiwiZXJyIiwiY3JlYXRlU2FmZUZyYWdtZW50IiwibGlzdCIsIm5vZGVOYW1lcyIsInNhZmVGcmFnIiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRBbGwiLCJjb250ZXh0IiwidGFnIiwiZWxlbXMiLCJmb3VuZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3RydW5kZWZpbmVkIiwicXVlcnlTZWxlY3RvckFsbCIsImNoaWxkTm9kZXMiLCJub2RlTmFtZSIsInB1c2giLCJtZXJnZSIsImZpeERlZmF1bHRDaGVja2VkIiwicmNoZWNrYWJsZVR5cGUiLCJkZWZhdWx0Q2hlY2tlZCIsImNoZWNrZWQiLCJtYW5pcHVsYXRpb25UYXJnZXQiLCJjb250ZW50IiwiZmlyc3RDaGlsZCIsImFwcGVuZENoaWxkIiwib3duZXJEb2N1bWVudCIsImRpc2FibGVTY3JpcHQiLCJmaW5kIiwiYXR0ciIsInJlc3RvcmVTY3JpcHQiLCJyc2NyaXB0VHlwZU1hc2tlZCIsImV4ZWMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJfZGF0YSIsImNsb25lQ29weUV2ZW50Iiwic3JjIiwiZGVzdCIsImhhc0RhdGEiLCJsIiwib2xkRGF0YSIsImN1ckRhdGEiLCJldmVudHMiLCJoYW5kbGUiLCJhZGQiLCJmaXhDbG9uZU5vZGVJc3N1ZXMiLCJub0Nsb25lRXZlbnQiLCJyZW1vdmVFdmVudCIsInRleHQiLCJwYXJlbnROb2RlIiwib3V0ZXJIVE1MIiwiaHRtbDVDbG9uZSIsImlubmVySFRNTCIsInRyaW0iLCJ2YWx1ZSIsImRlZmF1bHRTZWxlY3RlZCIsInNlbGVjdGVkIiwiZGVmYXVsdFZhbHVlIiwiYWN0dWFsRGlzcGxheSIsImRvYyIsInN0eWxlIiwiYXBwZW5kVG8iLCJib2R5IiwiZGlzcGxheSIsImdldERlZmF1bHRDb21wdXRlZFN0eWxlIiwiY3NzIiwiZGVmYXVsdERpc3BsYXkiLCJlbGVtZGlzcGxheSIsImlmcmFtZSIsImRvY3VtZW50RWxlbWVudCIsImNvbnRlbnRXaW5kb3ciLCJjb250ZW50RG9jdW1lbnQiLCJ3cml0ZSIsImNsb3NlIiwiYWRkR2V0SG9va0lmIiwiY29uZGl0aW9uRm4iLCJob29rRm4iLCJnZXQiLCJjb25kaXRpb24iLCJhcHBseSIsImFyZ3VtZW50cyIsInZlbmRvclByb3BOYW1lIiwiY2FwTmFtZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJvcmlnTmFtZSIsImNzc1ByZWZpeGVzIiwic2hvd0hpZGUiLCJzaG93IiwiaGlkZGVuIiwidmFsdWVzIiwiaW5kZXgiLCJpc0hpZGRlbiIsInNldFBvc2l0aXZlTnVtYmVyIiwic3VidHJhY3QiLCJtYXRjaGVzIiwicm51bXNwbGl0IiwiTWF0aCIsIm1heCIsImF1Z21lbnRXaWR0aE9ySGVpZ2h0IiwiZXh0cmEiLCJpc0JvcmRlckJveCIsInN0eWxlcyIsInZhbCIsImNzc0V4cGFuZCIsImdldFdpZHRoT3JIZWlnaHQiLCJ2YWx1ZUlzQm9yZGVyQm94Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJnZXRTdHlsZXMiLCJib3hTaXppbmciLCJjdXJDU1MiLCJybnVtbm9ucHgiLCJib3hTaXppbmdSZWxpYWJsZSIsInBhcnNlRmxvYXQiLCJUd2VlbiIsInByb3AiLCJlbmQiLCJlYXNpbmciLCJwcm90b3R5cGUiLCJpbml0IiwiY3JlYXRlRnhOb3ciLCJzZXRUaW1lb3V0IiwiZnhOb3ciLCJub3ciLCJnZW5GeCIsImluY2x1ZGVXaWR0aCIsIndoaWNoIiwiYXR0cnMiLCJoZWlnaHQiLCJvcGFjaXR5Iiwid2lkdGgiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsInR3ZWVuIiwiY29sbGVjdGlvbiIsInR3ZWVuZXJzIiwiZGVmYXVsdFByZWZpbHRlciIsInByb3BzIiwib3B0cyIsInRvZ2dsZSIsImhvb2tzIiwib2xkZmlyZSIsImNoZWNrRGlzcGxheSIsImFuaW0iLCJvcmlnIiwiZGF0YVNob3ciLCJxdWV1ZSIsIl9xdWV1ZUhvb2tzIiwidW5xdWV1ZWQiLCJlbXB0eSIsImZpcmUiLCJhbHdheXMiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImlubGluZUJsb2NrTmVlZHNMYXlvdXQiLCJ6b29tIiwic2hyaW5rV3JhcEJsb2NrcyIsInJmeHR5cGVzIiwiZG9uZSIsImhpZGUiLCJfcmVtb3ZlRGF0YSIsInN0YXJ0IiwicHJvcEZpbHRlciIsInNwZWNpYWxFYXNpbmciLCJjc3NIb29rcyIsImV4cGFuZCIsIkFuaW1hdGlvbiIsInByb3BlcnRpZXMiLCJyZXN1bHQiLCJzdG9wcGVkIiwiYW5pbWF0aW9uUHJlZmlsdGVycyIsImRlZmVycmVkIiwiRGVmZXJyZWQiLCJ0aWNrIiwiY3VycmVudFRpbWUiLCJyZW1haW5pbmciLCJzdGFydFRpbWUiLCJkdXJhdGlvbiIsInRlbXAiLCJwZXJjZW50IiwidHdlZW5zIiwicnVuIiwibm90aWZ5V2l0aCIsInJlc29sdmVXaXRoIiwicHJvbWlzZSIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsInN0b3AiLCJnb3RvRW5kIiwicmVqZWN0V2l0aCIsImZ4IiwidGltZXIiLCJwcm9ncmVzcyIsImNvbXBsZXRlIiwiZmFpbCIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImZ1bmMiLCJkYXRhVHlwZSIsImRhdGFUeXBlcyIsInVuc2hpZnQiLCJpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsImpxWEhSIiwiaW5zcGVjdCIsImluc3BlY3RlZCIsInByZWZpbHRlck9yRmFjdG9yeSIsImRhdGFUeXBlT3JUcmFuc3BvcnQiLCJzZWVraW5nVHJhbnNwb3J0IiwidHJhbnNwb3J0cyIsImFqYXhFeHRlbmQiLCJ0YXJnZXQiLCJkZWVwIiwiZmxhdE9wdGlvbnMiLCJhamF4U2V0dGluZ3MiLCJhamF4SGFuZGxlUmVzcG9uc2VzIiwicyIsInJlc3BvbnNlcyIsImZpcnN0RGF0YVR5cGUiLCJjdCIsImZpbmFsRGF0YVR5cGUiLCJjb250ZW50cyIsInNoaWZ0IiwibWltZVR5cGUiLCJnZXRSZXNwb25zZUhlYWRlciIsImNvbnZlcnRlcnMiLCJhamF4Q29udmVydCIsInJlc3BvbnNlIiwiaXNTdWNjZXNzIiwiY29udjIiLCJjdXJyZW50IiwiY29udiIsInRtcCIsInByZXYiLCJyZXNwb25zZUZpZWxkcyIsImRhdGFGaWx0ZXIiLCJzdGF0ZSIsImVycm9yIiwiYnVpbGRQYXJhbXMiLCJwcmVmaXgiLCJ0cmFkaXRpb25hbCIsInYiLCJyYnJhY2tldCIsImNyZWF0ZVN0YW5kYXJkWEhSIiwiWE1MSHR0cFJlcXVlc3QiLCJjcmVhdGVBY3RpdmVYSFIiLCJBY3RpdmVYT2JqZWN0IiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJwYXJlbnRXaW5kb3ciLCJpbmRleE9mIiwiY2xhc3MydHlwZSIsInRvU3RyaW5nIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJ2ZXJzaW9uIiwic2VsZWN0b3IiLCJmbiIsInJ0cmltIiwicm1zUHJlZml4IiwicmRhc2hBbHBoYSIsImZjYW1lbENhc2UiLCJhbGwiLCJsZXR0ZXIiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsInRvQXJyYXkiLCJudW0iLCJwdXNoU3RhY2siLCJwcmV2T2JqZWN0IiwiY2FsbGJhY2siLCJhcmdzIiwiZmlyc3QiLCJlcSIsImxhc3QiLCJsZW4iLCJqIiwic29ydCIsInNwbGljZSIsImNvcHlJc0FycmF5IiwiY29weSIsImNsb25lIiwiaXNQbGFpbk9iamVjdCIsInJhbmRvbSIsImlzUmVhZHkiLCJtc2ciLCJBcnJheSIsImlzTnVtZXJpYyIsIm93bkxhc3QiLCJnbG9iYWxFdmFsIiwiZXhlY1NjcmlwdCIsImV2YWwiLCJzdHJpbmciLCJtYWtlQXJyYXkiLCJhcnIiLCJyZXN1bHRzIiwiT2JqZWN0Iiwic2Vjb25kIiwiaW52ZXJ0IiwiY2FsbGJhY2tJbnZlcnNlIiwiY2FsbGJhY2tFeHBlY3QiLCJhcmciLCJwcm94eSIsIkRhdGUiLCJTaXp6bGUiLCJzZWVkIiwibSIsImdyb3VwcyIsIm9sZCIsIm5pZCIsIm5ld0NvbnRleHQiLCJuZXdTZWxlY3RvciIsInByZWZlcnJlZERvYyIsInNldERvY3VtZW50IiwiZG9jdW1lbnRJc0hUTUwiLCJycXVpY2tFeHByIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWlucyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJxc2EiLCJyYnVnZ3lRU0EiLCJ0b2tlbml6ZSIsInJlc2NhcGUiLCJzZXRBdHRyaWJ1dGUiLCJ0b1NlbGVjdG9yIiwicnNpYmxpbmciLCJ0ZXN0Q29udGV4dCIsImpvaW4iLCJxc2FFcnJvciIsInNlbGVjdCIsImNyZWF0ZUNhY2hlIiwia2V5cyIsIkV4cHIiLCJjYWNoZUxlbmd0aCIsIm1hcmtGdW5jdGlvbiIsImFzc2VydCIsImRpdiIsInJlbW92ZUNoaWxkIiwiYWRkSGFuZGxlIiwiaGFuZGxlciIsImF0dHJIYW5kbGUiLCJzaWJsaW5nQ2hlY2siLCJhIiwiYiIsImRpZmYiLCJzb3VyY2VJbmRleCIsIk1BWF9ORUdBVElWRSIsIm5leHRTaWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJndW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJzZXRGaWx0ZXJzIiwidG9rZW5zIiwiYWRkQ29tYmluYXRvciIsIm1hdGNoZXIiLCJjb21iaW5hdG9yIiwiYmFzZSIsImNoZWNrTm9uRWxlbWVudHMiLCJkb25lTmFtZSIsInhtbCIsIm9sZENhY2hlIiwib3V0ZXJDYWNoZSIsIm5ld0NhY2hlIiwiZGlycnVucyIsImVsZW1lbnRNYXRjaGVyIiwibWF0Y2hlcnMiLCJtdWx0aXBsZUNvbnRleHRzIiwiY29udGV4dHMiLCJjb25kZW5zZSIsInVubWF0Y2hlZCIsIm5ld1VubWF0Y2hlZCIsIm1hcHBlZCIsInNldE1hdGNoZXIiLCJwcmVGaWx0ZXIiLCJwb3N0RmlsdGVyIiwicG9zdEZpbmRlciIsInBvc3RTZWxlY3RvciIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsInJlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsIm91dGVybW9zdENvbnRleHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJUQUciLCJkaXJydW5zVW5pcXVlIiwidW5pcXVlU29ydCIsImdldFRleHQiLCJpc1hNTCIsImNvbXBpbGUiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJkb2NFbGVtIiwicmJ1Z2d5TWF0Y2hlcyIsImNsYXNzQ2FjaGUiLCJ0b2tlbkNhY2hlIiwiY29tcGlsZXJDYWNoZSIsInNvcnRPcmRlciIsInB1c2hfbmF0aXZlIiwiYm9vbGVhbnMiLCJ3aGl0ZXNwYWNlIiwiY2hhcmFjdGVyRW5jb2RpbmciLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsIlJlZ0V4cCIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsImVzY2FwZWQiLCJlc2NhcGVkV2hpdGVzcGFjZSIsImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJ1bmxvYWRIYW5kbGVyIiwiZWxzIiwibm9kZSIsImhhc0NvbXBhcmUiLCJwYXJlbnQiLCJ0b3AiLCJhdHRhY2hFdmVudCIsImNsYXNzTmFtZSIsImNyZWF0ZUNvbW1lbnQiLCJnZXRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJhdHRySWQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwiaW5wdXQiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVwIiwiYXAiLCJicCIsImV4cHIiLCJzcGVjaWZpZWQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsIm5vZGVWYWx1ZSIsInNlbGVjdG9ycyIsImNyZWF0ZVBzZXVkbyIsImV4Y2VzcyIsInVucXVvdGVkIiwibm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVyYXRvciIsImNoZWNrIiwid2hhdCIsInNpbXBsZSIsImZvcndhcmQiLCJvZlR5cGUiLCJub2RlSW5kZXgiLCJ1c2VDYWNoZSIsImxhc3RDaGlsZCIsInBzZXVkbyIsImlkeCIsIm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJsYW5nIiwiZWxlbUxhbmciLCJoYXNoIiwibG9jYXRpb24iLCJyb290IiwiZm9jdXMiLCJoYXNGb2N1cyIsImhyZWYiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJkaXNhYmxlZCIsInNlbGVjdGVkSW5kZXgiLCJoZWFkZXIiLCJidXR0b24iLCJldmVuIiwib2RkIiwibHQiLCJndCIsIm50aCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiZmlsdGVycyIsInBhcnNlT25seSIsInNvRmFyIiwicHJlRmlsdGVycyIsImNhY2hlZCIsInRva2VuIiwiY29tcGlsZWQiLCJkaXYxIiwidW5pcXVlIiwiaXNYTUxEb2MiLCJybmVlZHNDb250ZXh0IiwicnNpbmdsZVRhZyIsInNlbGYiLCJpcyIsInJvb3RqUXVlcnkiLCJwYXJzZUhUTUwiLCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRyZW4iLCJuZXh0IiwidW50aWwiLCJuIiwiciIsInRhcmdldHMiLCJjbG9zZXN0IiwicG9zIiwicHJldkFsbCIsImFkZEJhY2siLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsInNpYmxpbmdzIiwicmV2ZXJzZSIsIkNhbGxiYWNrcyIsImZpcmluZyIsIm1lbW9yeSIsImZpcmVkIiwiZmlyaW5nTGVuZ3RoIiwiZmlyaW5nSW5kZXgiLCJmaXJpbmdTdGFydCIsInN0YWNrIiwib25jZSIsInN0b3BPbkZhbHNlIiwiZGlzYWJsZSIsInJlbW92ZSIsImxvY2siLCJsb2NrZWQiLCJmaXJlV2l0aCIsInR1cGxlcyIsInRoZW4iLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJyZXNvbHZlIiwicmVqZWN0Iiwibm90aWZ5IiwicGlwZSIsInN0YXRlU3RyaW5nIiwid2hlbiIsInN1Ym9yZGluYXRlIiwicHJvZ3Jlc3NWYWx1ZXMiLCJwcm9ncmVzc0NvbnRleHRzIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsInVwZGF0ZUZ1bmMiLCJyZWFkeUxpc3QiLCJyZWFkeVdhaXQiLCJob2xkUmVhZHkiLCJob2xkIiwid2FpdCIsInRyaWdnZXJIYW5kbGVyIiwib2ZmIiwiZnJhbWVFbGVtZW50IiwiZG9TY3JvbGwiLCJkb1Njcm9sbENoZWNrIiwiY29udGFpbmVyIiwiY3NzVGV4dCIsIm5vRGF0YSIsInJlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJzZXR0ZXIiLCJjbGVhclF1ZXVlIiwiY291bnQiLCJkZWZlciIsInBudW0iLCJzb3VyY2UiLCJlbCIsImFjY2VzcyIsImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsImZyYWdtZW50IiwibGVhZGluZ1doaXRlc3BhY2UiLCJ0Ym9keSIsImh0bWxTZXJpYWxpemUiLCJjbG9uZU5vZGUiLCJhcHBlbmRDaGVja2VkIiwibm9DbG9uZUNoZWNrZWQiLCJjaGVja0Nsb25lIiwiY2xpY2siLCJldmVudE5hbWUiLCJjaGFuZ2UiLCJmb2N1c2luIiwicmZvcm1FbGVtcyIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicmZvY3VzTW9ycGgiLCJydHlwZW5hbWVzcGFjZSIsInR5cGVzIiwidCIsImhhbmRsZU9iakluIiwic3BlY2lhbCIsImV2ZW50SGFuZGxlIiwiaGFuZGxlT2JqIiwiaGFuZGxlcnMiLCJuYW1lc3BhY2VzIiwib3JpZ1R5cGUiLCJlbGVtRGF0YSIsInRyaWdnZXJlZCIsImRpc3BhdGNoIiwiZGVsZWdhdGVUeXBlIiwiYmluZFR5cGUiLCJuYW1lc3BhY2UiLCJkZWxlZ2F0ZUNvdW50Iiwic2V0dXAiLCJtYXBwZWRUeXBlcyIsIm9yaWdDb3VudCIsInRlYXJkb3duIiwidHJpZ2dlciIsIm9ubHlIYW5kbGVycyIsIm9udHlwZSIsImJ1YmJsZVR5cGUiLCJldmVudFBhdGgiLCJFdmVudCIsImlzVHJpZ2dlciIsIm5hbWVzcGFjZV9yZSIsIm5vQnViYmxlIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJwcmV2ZW50RGVmYXVsdCIsImlzRGVmYXVsdFByZXZlbnRlZCIsIl9kZWZhdWx0IiwiZml4IiwiaGFuZGxlclF1ZXVlIiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImN1cnJlbnRUYXJnZXQiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInN0b3BQcm9wYWdhdGlvbiIsInBvc3REaXNwYXRjaCIsInNlbCIsIm9yaWdpbmFsRXZlbnQiLCJmaXhIb29rIiwiZml4SG9va3MiLCJtb3VzZUhvb2tzIiwia2V5SG9va3MiLCJzcmNFbGVtZW50IiwibWV0YUtleSIsIm9yaWdpbmFsIiwiY2hhckNvZGUiLCJrZXlDb2RlIiwiZXZlbnREb2MiLCJmcm9tRWxlbWVudCIsInBhZ2VYIiwiY2xpZW50WCIsInNjcm9sbExlZnQiLCJjbGllbnRMZWZ0IiwicGFnZVkiLCJjbGllbnRZIiwic2Nyb2xsVG9wIiwiY2xpZW50VG9wIiwicmVsYXRlZFRhcmdldCIsInRvRWxlbWVudCIsImxvYWQiLCJibHVyIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJzaW11bGF0ZSIsImJ1YmJsZSIsImlzU2ltdWxhdGVkIiwiZGVmYXVsdFByZXZlbnRlZCIsInRpbWVTdGFtcCIsImNhbmNlbEJ1YmJsZSIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmxlYXZlIiwicmVsYXRlZCIsInN1Ym1pdEJ1YmJsZXMiLCJmb3JtIiwiX3N1Ym1pdF9idWJibGUiLCJjaGFuZ2VCdWJibGVzIiwicHJvcGVydHlOYW1lIiwiX2p1c3RfY2hhbmdlZCIsImZvY3VzaW5CdWJibGVzIiwiYXR0YWNoZXMiLCJvbiIsIm9uZSIsIm9yaWdGbiIsInJpbmxpbmVqUXVlcnkiLCJybm9zaGltY2FjaGUiLCJybGVhZGluZ1doaXRlc3BhY2UiLCJyeGh0bWxUYWciLCJydGFnTmFtZSIsInJ0Ym9keSIsInJodG1sIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyc2NyaXB0VHlwZSIsInJjbGVhblNjcmlwdCIsIndyYXBNYXAiLCJvcHRpb24iLCJsZWdlbmQiLCJhcmVhIiwicGFyYW0iLCJ0aGVhZCIsInRyIiwiY29sIiwidGQiLCJzYWZlRnJhZ21lbnQiLCJmcmFnbWVudERpdiIsIm9wdGdyb3VwIiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImRhdGFBbmRFdmVudHMiLCJkZWVwRGF0YUFuZEV2ZW50cyIsImRlc3RFbGVtZW50cyIsInNyY0VsZW1lbnRzIiwiaW5QYWdlIiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJ3cmFwIiwic2FmZSIsIm5vZGVzIiwiY3JlYXRlVGV4dE5vZGUiLCJhcHBlbmQiLCJkb21NYW5pcCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsImtlZXBEYXRhIiwiaHRtbCIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiaGFzU2NyaXB0cyIsInNldCIsImlOb0Nsb25lIiwiX2V2YWxVcmwiLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJpbnNlcnQiLCJzaHJpbmtXcmFwQmxvY2tzVmFsIiwicm1hcmdpbiIsInJwb3NpdGlvbiIsImdldENvbXB1dGVkU3R5bGUiLCJvcGVuZXIiLCJjb21wdXRlZCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJnZXRQcm9wZXJ0eVZhbHVlIiwiY3VycmVudFN0eWxlIiwibGVmdCIsInJzIiwicnNMZWZ0IiwicnVudGltZVN0eWxlIiwicGl4ZWxMZWZ0IiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJwaXhlbFBvc2l0aW9uVmFsIiwiYm94U2l6aW5nUmVsaWFibGVWYWwiLCJyZWxpYWJsZU1hcmdpblJpZ2h0VmFsIiwibWFyZ2luUmlnaHQiLCJyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWwiLCJjc3NGbG9hdCIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiTW96Qm94U2l6aW5nIiwiV2Via2l0Qm94U2l6aW5nIiwicmVsaWFibGVIaWRkZW5PZmZzZXRzIiwicGl4ZWxQb3NpdGlvbiIsInJlbGlhYmxlTWFyZ2luUmlnaHQiLCJzd2FwIiwicmFscGhhIiwicm9wYWNpdHkiLCJyZGlzcGxheXN3YXAiLCJycmVsTnVtIiwiY3NzU2hvdyIsInBvc2l0aW9uIiwidmlzaWJpbGl0eSIsImNzc05vcm1hbFRyYW5zZm9ybSIsImxldHRlclNwYWNpbmciLCJmb250V2VpZ2h0IiwiY3NzTnVtYmVyIiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxleFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJjc3NQcm9wcyIsIiQxIiwibWFyZ2luIiwicGFkZGluZyIsImJvcmRlciIsInN1ZmZpeCIsImV4cGFuZGVkIiwicGFydHMiLCJ1bml0IiwicHJvcEhvb2tzIiwiZWFzZWQiLCJzdGVwIiwibGluZWFyIiwicCIsInN3aW5nIiwiY29zIiwiUEkiLCJ0aW1lcklkIiwicmZ4bnVtIiwicnJ1biIsInNjYWxlIiwibWF4SXRlcmF0aW9ucyIsInR3ZWVuZXIiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9wdCIsInNwZWVkcyIsImZhZGVUbyIsInRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwiZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwic2xvdyIsImZhc3QiLCJkZWxheSIsInRpbWUiLCJ0aW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZ2V0U2V0QXR0cmlidXRlIiwiaHJlZk5vcm1hbGl6ZWQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJlbmN0eXBlIiwib3B0RGlzYWJsZWQiLCJyYWRpb1ZhbHVlIiwicnJldHVybiIsInZhbEhvb2tzIiwib3B0aW9uU2V0Iiwic2Nyb2xsSGVpZ2h0Iiwibm9kZUhvb2siLCJib29sSG9vayIsInJ1c2VEZWZhdWx0IiwiZ2V0U2V0SW5wdXQiLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJwcm9wTmFtZSIsImF0dHJOYW1lcyIsInByb3BGaXgiLCJnZXR0ZXIiLCJzZXRBdHRyaWJ1dGVOb2RlIiwiY3JlYXRlQXR0cmlidXRlIiwiY29vcmRzIiwiY29udGVudGVkaXRhYmxlIiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJyZW1vdmVQcm9wIiwibm90eG1sIiwidGFiaW5kZXgiLCJwYXJzZUludCIsInJjbGFzcyIsImFkZENsYXNzIiwiY2xhc3NlcyIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInByb2NlZWQiLCJyZW1vdmVDbGFzcyIsInRvZ2dsZUNsYXNzIiwic3RhdGVWYWwiLCJjbGFzc05hbWVzIiwiaGFzQ2xhc3MiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwiYmluZCIsInVuYmluZCIsImRlbGVnYXRlIiwidW5kZWxlZ2F0ZSIsIm5vbmNlIiwicnF1ZXJ5IiwicnZhbGlkdG9rZW5zIiwiSlNPTiIsInBhcnNlIiwicmVxdWlyZU5vbkNvbW1hIiwiZGVwdGgiLCJzdHIiLCJjb21tYSIsIm9wZW4iLCJGdW5jdGlvbiIsInBhcnNlWE1MIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiYXN5bmMiLCJsb2FkWE1MIiwiYWpheExvY1BhcnRzIiwiYWpheExvY2F0aW9uIiwicmhhc2giLCJydHMiLCJyaGVhZGVycyIsInJsb2NhbFByb3RvY29sIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInJ1cmwiLCJwcmVmaWx0ZXJzIiwiYWxsVHlwZXMiLCJhY3RpdmUiLCJsYXN0TW9kaWZpZWQiLCJldGFnIiwidXJsIiwiaXNMb2NhbCIsInByb2Nlc3NEYXRhIiwiY29udGVudFR5cGUiLCJhY2NlcHRzIiwianNvbiIsImFqYXhTZXR1cCIsInNldHRpbmdzIiwiYWpheFByZWZpbHRlciIsImFqYXhUcmFuc3BvcnQiLCJhamF4Iiwic3RhdHVzIiwibmF0aXZlU3RhdHVzVGV4dCIsImhlYWRlcnMiLCJzdWNjZXNzIiwibW9kaWZpZWQiLCJzdGF0dXNUZXh0IiwidGltZW91dFRpbWVyIiwidHJhbnNwb3J0IiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwiaWZNb2RpZmllZCIsImNhY2hlVVJMIiwiY2FsbGJhY2tDb250ZXh0Iiwic3RhdHVzQ29kZSIsImZpcmVHbG9iYWxzIiwiZ2xvYmFsRXZlbnRDb250ZXh0IiwiY29tcGxldGVEZWZlcnJlZCIsInJlc3BvbnNlSGVhZGVycyIsInJlcXVlc3RIZWFkZXJzIiwicmVxdWVzdEhlYWRlcnNOYW1lcyIsInN0ckFib3J0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic2V0UmVxdWVzdEhlYWRlciIsImxuYW1lIiwib3ZlcnJpZGVNaW1lVHlwZSIsImNvZGUiLCJhYm9ydCIsImZpbmFsVGV4dCIsIm1ldGhvZCIsImNyb3NzRG9tYWluIiwiaGFzQ29udGVudCIsImJlZm9yZVNlbmQiLCJzZW5kIiwiZ2V0SlNPTiIsImdldFNjcmlwdCIsIndyYXBBbGwiLCJ3cmFwSW5uZXIiLCJ1bndyYXAiLCJ2aXNpYmxlIiwicjIwIiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInhociIsInhocklkIiwieGhyQ2FsbGJhY2tzIiwieGhyU3VwcG9ydGVkIiwiY29ycyIsInVzZXJuYW1lIiwieGhyRmllbGRzIiwiaXNBYm9ydCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlc3BvbnNlVGV4dCIsInNjcmlwdCIsInRleHQgc2NyaXB0IiwiaGVhZCIsInNjcmlwdENoYXJzZXQiLCJjaGFyc2V0Iiwib25sb2FkIiwib2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxTZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIiLCJqc29uUHJvcCIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwiX2xvYWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsIm9mZnNldCIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjYWxjdWxhdGVQb3NpdGlvbiIsImN1ckVsZW0iLCJ1c2luZyIsIndpbiIsImJveCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJzaXplIiwiYW5kU2VsZiIsImRlZmluZSIsImFtZCIsIl9qUXVlcnkiLCJfJCIsIiQiLCJub0NvbmZsaWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1N0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyL2pxdWVyeS0xLjExLjMubWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihnbG9iYWwsZmFjdG9yeSl7XCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWdsb2JhbC5kb2N1bWVudD9mYWN0b3J5KGdsb2JhbCwhMCk6ZnVuY3Rpb24odyl7aWYoIXcuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiKTtyZXR1cm4gZmFjdG9yeSh3KX06ZmFjdG9yeShnbG9iYWwpfShcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKHdpbmRvdyxub0dsb2JhbCl7ZnVuY3Rpb24gaXNBcnJheWxpa2Uob2JqKXt2YXIgbGVuZ3RoPVwibGVuZ3RoXCJpbiBvYmomJm9iai5sZW5ndGgsdHlwZT1qUXVlcnkudHlwZShvYmopO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGV8fGpRdWVyeS5pc1dpbmRvdyhvYmopPyExOjE9PT1vYmoubm9kZVR5cGUmJmxlbmd0aD8hMDpcImFycmF5XCI9PT10eXBlfHwwPT09bGVuZ3RofHxcIm51bWJlclwiPT10eXBlb2YgbGVuZ3RoJiZsZW5ndGg+MCYmbGVuZ3RoLTEgaW4gb2JqfWZ1bmN0aW9uIHdpbm5vdyhlbGVtZW50cyxxdWFsaWZpZXIsbm90KXtpZihqUXVlcnkuaXNGdW5jdGlvbihxdWFsaWZpZXIpKXJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cyxmdW5jdGlvbihlbGVtLGkpe3JldHVybiEhcXVhbGlmaWVyLmNhbGwoZWxlbSxpLGVsZW0pIT09bm90fSk7aWYocXVhbGlmaWVyLm5vZGVUeXBlKXJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cyxmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbT09PXF1YWxpZmllciE9PW5vdH0pO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBxdWFsaWZpZXIpe2lmKHJpc1NpbXBsZS50ZXN0KHF1YWxpZmllcikpcmV0dXJuIGpRdWVyeS5maWx0ZXIocXVhbGlmaWVyLGVsZW1lbnRzLG5vdCk7cXVhbGlmaWVyPWpRdWVyeS5maWx0ZXIocXVhbGlmaWVyLGVsZW1lbnRzKX1yZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5pbkFycmF5KGVsZW0scXVhbGlmaWVyKT49MCE9PW5vdH0pfWZ1bmN0aW9uIHNpYmxpbmcoY3VyLGRpcil7ZG8gY3VyPWN1cltkaXJdO3doaWxlKGN1ciYmMSE9PWN1ci5ub2RlVHlwZSk7cmV0dXJuIGN1cn1mdW5jdGlvbiBjcmVhdGVPcHRpb25zKG9wdGlvbnMpe3ZhciBvYmplY3Q9b3B0aW9uc0NhY2hlW29wdGlvbnNdPXt9O3JldHVybiBqUXVlcnkuZWFjaChvcHRpb25zLm1hdGNoKHJub3R3aGl0ZSl8fFtdLGZ1bmN0aW9uKF8sZmxhZyl7b2JqZWN0W2ZsYWddPSEwfSksb2JqZWN0fWZ1bmN0aW9uIGRldGFjaCgpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXI/KGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsY29tcGxldGVkLCExKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxvYWRcIixjb21wbGV0ZWQsITEpKTooZG9jdW1lbnQuZGV0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixjb21wbGV0ZWQpLHdpbmRvdy5kZXRhY2hFdmVudChcIm9ubG9hZFwiLGNvbXBsZXRlZCkpfWZ1bmN0aW9uIGNvbXBsZXRlZCgpeyhkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyfHxcImxvYWRcIj09PWV2ZW50LnR5cGV8fFwiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGUpJiYoZGV0YWNoKCksalF1ZXJ5LnJlYWR5KCkpfWZ1bmN0aW9uIGRhdGFBdHRyKGVsZW0sa2V5LGRhdGEpe2lmKHZvaWQgMD09PWRhdGEmJjE9PT1lbGVtLm5vZGVUeXBlKXt2YXIgbmFtZT1cImRhdGEtXCIra2V5LnJlcGxhY2Uocm11bHRpRGFzaCxcIi0kMVwiKS50b0xvd2VyQ2FzZSgpO2lmKGRhdGE9ZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSksXCJzdHJpbmdcIj09dHlwZW9mIGRhdGEpe3RyeXtkYXRhPVwidHJ1ZVwiPT09ZGF0YT8hMDpcImZhbHNlXCI9PT1kYXRhPyExOlwibnVsbFwiPT09ZGF0YT9udWxsOitkYXRhK1wiXCI9PT1kYXRhPytkYXRhOnJicmFjZS50ZXN0KGRhdGEpP2pRdWVyeS5wYXJzZUpTT04oZGF0YSk6ZGF0YX1jYXRjaChlKXt9alF1ZXJ5LmRhdGEoZWxlbSxrZXksZGF0YSl9ZWxzZSBkYXRhPXZvaWQgMH1yZXR1cm4gZGF0YX1mdW5jdGlvbiBpc0VtcHR5RGF0YU9iamVjdChvYmope3ZhciBuYW1lO2ZvcihuYW1lIGluIG9iailpZigoXCJkYXRhXCIhPT1uYW1lfHwhalF1ZXJ5LmlzRW1wdHlPYmplY3Qob2JqW25hbWVdKSkmJlwidG9KU09OXCIhPT1uYW1lKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGludGVybmFsRGF0YShlbGVtLG5hbWUsZGF0YSxwdnQpe2lmKGpRdWVyeS5hY2NlcHREYXRhKGVsZW0pKXt2YXIgcmV0LHRoaXNDYWNoZSxpbnRlcm5hbEtleT1qUXVlcnkuZXhwYW5kbyxpc05vZGU9ZWxlbS5ub2RlVHlwZSxjYWNoZT1pc05vZGU/alF1ZXJ5LmNhY2hlOmVsZW0saWQ9aXNOb2RlP2VsZW1baW50ZXJuYWxLZXldOmVsZW1baW50ZXJuYWxLZXldJiZpbnRlcm5hbEtleTtpZihpZCYmY2FjaGVbaWRdJiYocHZ0fHxjYWNoZVtpZF0uZGF0YSl8fHZvaWQgMCE9PWRhdGF8fFwic3RyaW5nXCIhPXR5cGVvZiBuYW1lKXJldHVybiBpZHx8KGlkPWlzTm9kZT9lbGVtW2ludGVybmFsS2V5XT1kZWxldGVkSWRzLnBvcCgpfHxqUXVlcnkuZ3VpZCsrOmludGVybmFsS2V5KSxjYWNoZVtpZF18fChjYWNoZVtpZF09aXNOb2RlP3t9Ont0b0pTT046alF1ZXJ5Lm5vb3B9KSwoXCJvYmplY3RcIj09dHlwZW9mIG5hbWV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIG5hbWUpJiYocHZ0P2NhY2hlW2lkXT1qUXVlcnkuZXh0ZW5kKGNhY2hlW2lkXSxuYW1lKTpjYWNoZVtpZF0uZGF0YT1qUXVlcnkuZXh0ZW5kKGNhY2hlW2lkXS5kYXRhLG5hbWUpKSx0aGlzQ2FjaGU9Y2FjaGVbaWRdLHB2dHx8KHRoaXNDYWNoZS5kYXRhfHwodGhpc0NhY2hlLmRhdGE9e30pLHRoaXNDYWNoZT10aGlzQ2FjaGUuZGF0YSksdm9pZCAwIT09ZGF0YSYmKHRoaXNDYWNoZVtqUXVlcnkuY2FtZWxDYXNlKG5hbWUpXT1kYXRhKSxcInN0cmluZ1wiPT10eXBlb2YgbmFtZT8ocmV0PXRoaXNDYWNoZVtuYW1lXSxudWxsPT1yZXQmJihyZXQ9dGhpc0NhY2hlW2pRdWVyeS5jYW1lbENhc2UobmFtZSldKSk6cmV0PXRoaXNDYWNoZSxyZXR9fWZ1bmN0aW9uIGludGVybmFsUmVtb3ZlRGF0YShlbGVtLG5hbWUscHZ0KXtpZihqUXVlcnkuYWNjZXB0RGF0YShlbGVtKSl7dmFyIHRoaXNDYWNoZSxpLGlzTm9kZT1lbGVtLm5vZGVUeXBlLGNhY2hlPWlzTm9kZT9qUXVlcnkuY2FjaGU6ZWxlbSxpZD1pc05vZGU/ZWxlbVtqUXVlcnkuZXhwYW5kb106alF1ZXJ5LmV4cGFuZG87aWYoY2FjaGVbaWRdKXtpZihuYW1lJiYodGhpc0NhY2hlPXB2dD9jYWNoZVtpZF06Y2FjaGVbaWRdLmRhdGEpKXtqUXVlcnkuaXNBcnJheShuYW1lKT9uYW1lPW5hbWUuY29uY2F0KGpRdWVyeS5tYXAobmFtZSxqUXVlcnkuY2FtZWxDYXNlKSk6bmFtZSBpbiB0aGlzQ2FjaGU/bmFtZT1bbmFtZV06KG5hbWU9alF1ZXJ5LmNhbWVsQ2FzZShuYW1lKSxuYW1lPW5hbWUgaW4gdGhpc0NhY2hlP1tuYW1lXTpuYW1lLnNwbGl0KFwiIFwiKSksaT1uYW1lLmxlbmd0aDtmb3IoO2ktLTspZGVsZXRlIHRoaXNDYWNoZVtuYW1lW2ldXTtpZihwdnQ/IWlzRW1wdHlEYXRhT2JqZWN0KHRoaXNDYWNoZSk6IWpRdWVyeS5pc0VtcHR5T2JqZWN0KHRoaXNDYWNoZSkpcmV0dXJufShwdnR8fChkZWxldGUgY2FjaGVbaWRdLmRhdGEsaXNFbXB0eURhdGFPYmplY3QoY2FjaGVbaWRdKSkpJiYoaXNOb2RlP2pRdWVyeS5jbGVhbkRhdGEoW2VsZW1dLCEwKTpzdXBwb3J0LmRlbGV0ZUV4cGFuZG98fGNhY2hlIT1jYWNoZS53aW5kb3c/ZGVsZXRlIGNhY2hlW2lkXTpjYWNoZVtpZF09bnVsbCl9fX1mdW5jdGlvbiByZXR1cm5UcnVlKCl7cmV0dXJuITB9ZnVuY3Rpb24gcmV0dXJuRmFsc2UoKXtyZXR1cm4hMX1mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpe3RyeXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudH1jYXRjaChlcnIpe319ZnVuY3Rpb24gY3JlYXRlU2FmZUZyYWdtZW50KGRvY3VtZW50KXt2YXIgbGlzdD1ub2RlTmFtZXMuc3BsaXQoXCJ8XCIpLHNhZmVGcmFnPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihzYWZlRnJhZy5jcmVhdGVFbGVtZW50KWZvcig7bGlzdC5sZW5ndGg7KXNhZmVGcmFnLmNyZWF0ZUVsZW1lbnQobGlzdC5wb3AoKSk7cmV0dXJuIHNhZmVGcmFnfWZ1bmN0aW9uIGdldEFsbChjb250ZXh0LHRhZyl7dmFyIGVsZW1zLGVsZW0saT0wLGZvdW5kPXR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lIT09c3RydW5kZWZpbmVkP2NvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnfHxcIipcIik6dHlwZW9mIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCE9PXN0cnVuZGVmaW5lZD9jb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwodGFnfHxcIipcIik6dm9pZCAwO2lmKCFmb3VuZClmb3IoZm91bmQ9W10sZWxlbXM9Y29udGV4dC5jaGlsZE5vZGVzfHxjb250ZXh0O251bGwhPShlbGVtPWVsZW1zW2ldKTtpKyspIXRhZ3x8alF1ZXJ5Lm5vZGVOYW1lKGVsZW0sdGFnKT9mb3VuZC5wdXNoKGVsZW0pOmpRdWVyeS5tZXJnZShmb3VuZCxnZXRBbGwoZWxlbSx0YWcpKTtyZXR1cm4gdm9pZCAwPT09dGFnfHx0YWcmJmpRdWVyeS5ub2RlTmFtZShjb250ZXh0LHRhZyk/alF1ZXJ5Lm1lcmdlKFtjb250ZXh0XSxmb3VuZCk6Zm91bmR9ZnVuY3Rpb24gZml4RGVmYXVsdENoZWNrZWQoZWxlbSl7cmNoZWNrYWJsZVR5cGUudGVzdChlbGVtLnR5cGUpJiYoZWxlbS5kZWZhdWx0Q2hlY2tlZD1lbGVtLmNoZWNrZWQpfWZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldChlbGVtLGNvbnRlbnQpe3JldHVybiBqUXVlcnkubm9kZU5hbWUoZWxlbSxcInRhYmxlXCIpJiZqUXVlcnkubm9kZU5hbWUoMTEhPT1jb250ZW50Lm5vZGVUeXBlP2NvbnRlbnQ6Y29udGVudC5maXJzdENoaWxkLFwidHJcIik/ZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRib2R5XCIpWzBdfHxlbGVtLmFwcGVuZENoaWxkKGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGJvZHlcIikpOmVsZW19ZnVuY3Rpb24gZGlzYWJsZVNjcmlwdChlbGVtKXtyZXR1cm4gZWxlbS50eXBlPShudWxsIT09alF1ZXJ5LmZpbmQuYXR0cihlbGVtLFwidHlwZVwiKSkrXCIvXCIrZWxlbS50eXBlLGVsZW19ZnVuY3Rpb24gcmVzdG9yZVNjcmlwdChlbGVtKXt2YXIgbWF0Y2g9cnNjcmlwdFR5cGVNYXNrZWQuZXhlYyhlbGVtLnR5cGUpO3JldHVybiBtYXRjaD9lbGVtLnR5cGU9bWF0Y2hbMV06ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoXCJ0eXBlXCIpLGVsZW19ZnVuY3Rpb24gc2V0R2xvYmFsRXZhbChlbGVtcyxyZWZFbGVtZW50cyl7Zm9yKHZhciBlbGVtLGk9MDtudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKWpRdWVyeS5fZGF0YShlbGVtLFwiZ2xvYmFsRXZhbFwiLCFyZWZFbGVtZW50c3x8alF1ZXJ5Ll9kYXRhKHJlZkVsZW1lbnRzW2ldLFwiZ2xvYmFsRXZhbFwiKSl9ZnVuY3Rpb24gY2xvbmVDb3B5RXZlbnQoc3JjLGRlc3Qpe2lmKDE9PT1kZXN0Lm5vZGVUeXBlJiZqUXVlcnkuaGFzRGF0YShzcmMpKXt2YXIgdHlwZSxpLGwsb2xkRGF0YT1qUXVlcnkuX2RhdGEoc3JjKSxjdXJEYXRhPWpRdWVyeS5fZGF0YShkZXN0LG9sZERhdGEpLGV2ZW50cz1vbGREYXRhLmV2ZW50cztpZihldmVudHMpe2RlbGV0ZSBjdXJEYXRhLmhhbmRsZSxjdXJEYXRhLmV2ZW50cz17fTtmb3IodHlwZSBpbiBldmVudHMpZm9yKGk9MCxsPWV2ZW50c1t0eXBlXS5sZW5ndGg7bD5pO2krKylqUXVlcnkuZXZlbnQuYWRkKGRlc3QsdHlwZSxldmVudHNbdHlwZV1baV0pfWN1ckRhdGEuZGF0YSYmKGN1ckRhdGEuZGF0YT1qUXVlcnkuZXh0ZW5kKHt9LGN1ckRhdGEuZGF0YSkpfX1mdW5jdGlvbiBmaXhDbG9uZU5vZGVJc3N1ZXMoc3JjLGRlc3Qpe3ZhciBub2RlTmFtZSxlLGRhdGE7aWYoMT09PWRlc3Qubm9kZVR5cGUpe2lmKG5vZGVOYW1lPWRlc3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwhc3VwcG9ydC5ub0Nsb25lRXZlbnQmJmRlc3RbalF1ZXJ5LmV4cGFuZG9dKXtkYXRhPWpRdWVyeS5fZGF0YShkZXN0KTtmb3IoZSBpbiBkYXRhLmV2ZW50cylqUXVlcnkucmVtb3ZlRXZlbnQoZGVzdCxlLGRhdGEuaGFuZGxlKTtkZXN0LnJlbW92ZUF0dHJpYnV0ZShqUXVlcnkuZXhwYW5kbyl9XCJzY3JpcHRcIj09PW5vZGVOYW1lJiZkZXN0LnRleHQhPT1zcmMudGV4dD8oZGlzYWJsZVNjcmlwdChkZXN0KS50ZXh0PXNyYy50ZXh0LHJlc3RvcmVTY3JpcHQoZGVzdCkpOlwib2JqZWN0XCI9PT1ub2RlTmFtZT8oZGVzdC5wYXJlbnROb2RlJiYoZGVzdC5vdXRlckhUTUw9c3JjLm91dGVySFRNTCksc3VwcG9ydC5odG1sNUNsb25lJiZzcmMuaW5uZXJIVE1MJiYhalF1ZXJ5LnRyaW0oZGVzdC5pbm5lckhUTUwpJiYoZGVzdC5pbm5lckhUTUw9c3JjLmlubmVySFRNTCkpOlwiaW5wdXRcIj09PW5vZGVOYW1lJiZyY2hlY2thYmxlVHlwZS50ZXN0KHNyYy50eXBlKT8oZGVzdC5kZWZhdWx0Q2hlY2tlZD1kZXN0LmNoZWNrZWQ9c3JjLmNoZWNrZWQsZGVzdC52YWx1ZSE9PXNyYy52YWx1ZSYmKGRlc3QudmFsdWU9c3JjLnZhbHVlKSk6XCJvcHRpb25cIj09PW5vZGVOYW1lP2Rlc3QuZGVmYXVsdFNlbGVjdGVkPWRlc3Quc2VsZWN0ZWQ9c3JjLmRlZmF1bHRTZWxlY3RlZDooXCJpbnB1dFwiPT09bm9kZU5hbWV8fFwidGV4dGFyZWFcIj09PW5vZGVOYW1lKSYmKGRlc3QuZGVmYXVsdFZhbHVlPXNyYy5kZWZhdWx0VmFsdWUpfX1mdW5jdGlvbiBhY3R1YWxEaXNwbGF5KG5hbWUsZG9jKXt2YXIgc3R5bGUsZWxlbT1qUXVlcnkoZG9jLmNyZWF0ZUVsZW1lbnQobmFtZSkpLmFwcGVuZFRvKGRvYy5ib2R5KSxkaXNwbGF5PXdpbmRvdy5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSYmKHN0eWxlPXdpbmRvdy5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZShlbGVtWzBdKSk/c3R5bGUuZGlzcGxheTpqUXVlcnkuY3NzKGVsZW1bMF0sXCJkaXNwbGF5XCIpO3JldHVybiBlbGVtLmRldGFjaCgpLGRpc3BsYXl9ZnVuY3Rpb24gZGVmYXVsdERpc3BsYXkobm9kZU5hbWUpe3ZhciBkb2M9ZG9jdW1lbnQsZGlzcGxheT1lbGVtZGlzcGxheVtub2RlTmFtZV07cmV0dXJuIGRpc3BsYXl8fChkaXNwbGF5PWFjdHVhbERpc3BsYXkobm9kZU5hbWUsZG9jKSxcIm5vbmVcIiE9PWRpc3BsYXkmJmRpc3BsYXl8fChpZnJhbWU9KGlmcmFtZXx8alF1ZXJ5KFwiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPlwiKSkuYXBwZW5kVG8oZG9jLmRvY3VtZW50RWxlbWVudCksZG9jPShpZnJhbWVbMF0uY29udGVudFdpbmRvd3x8aWZyYW1lWzBdLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsZG9jLndyaXRlKCksZG9jLmNsb3NlKCksZGlzcGxheT1hY3R1YWxEaXNwbGF5KG5vZGVOYW1lLGRvYyksaWZyYW1lLmRldGFjaCgpKSxlbGVtZGlzcGxheVtub2RlTmFtZV09ZGlzcGxheSksZGlzcGxheX1mdW5jdGlvbiBhZGRHZXRIb29rSWYoY29uZGl0aW9uRm4saG9va0ZuKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7dmFyIGNvbmRpdGlvbj1jb25kaXRpb25GbigpO2lmKG51bGwhPWNvbmRpdGlvbilyZXR1cm4gY29uZGl0aW9uP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1ob29rRm4pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fWZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKHN0eWxlLG5hbWUpe2lmKG5hbWUgaW4gc3R5bGUpcmV0dXJuIG5hbWU7Zm9yKHZhciBjYXBOYW1lPW5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrbmFtZS5zbGljZSgxKSxvcmlnTmFtZT1uYW1lLGk9Y3NzUHJlZml4ZXMubGVuZ3RoO2ktLTspaWYobmFtZT1jc3NQcmVmaXhlc1tpXStjYXBOYW1lLG5hbWUgaW4gc3R5bGUpcmV0dXJuIG5hbWU7cmV0dXJuIG9yaWdOYW1lfWZ1bmN0aW9uIHNob3dIaWRlKGVsZW1lbnRzLHNob3cpe2Zvcih2YXIgZGlzcGxheSxlbGVtLGhpZGRlbix2YWx1ZXM9W10saW5kZXg9MCxsZW5ndGg9ZWxlbWVudHMubGVuZ3RoO2xlbmd0aD5pbmRleDtpbmRleCsrKWVsZW09ZWxlbWVudHNbaW5kZXhdLGVsZW0uc3R5bGUmJih2YWx1ZXNbaW5kZXhdPWpRdWVyeS5fZGF0YShlbGVtLFwib2xkZGlzcGxheVwiKSxkaXNwbGF5PWVsZW0uc3R5bGUuZGlzcGxheSxzaG93Pyh2YWx1ZXNbaW5kZXhdfHxcIm5vbmVcIiE9PWRpc3BsYXl8fChlbGVtLnN0eWxlLmRpc3BsYXk9XCJcIiksXCJcIj09PWVsZW0uc3R5bGUuZGlzcGxheSYmaXNIaWRkZW4oZWxlbSkmJih2YWx1ZXNbaW5kZXhdPWpRdWVyeS5fZGF0YShlbGVtLFwib2xkZGlzcGxheVwiLGRlZmF1bHREaXNwbGF5KGVsZW0ubm9kZU5hbWUpKSkpOihoaWRkZW49aXNIaWRkZW4oZWxlbSksKGRpc3BsYXkmJlwibm9uZVwiIT09ZGlzcGxheXx8IWhpZGRlbikmJmpRdWVyeS5fZGF0YShlbGVtLFwib2xkZGlzcGxheVwiLGhpZGRlbj9kaXNwbGF5OmpRdWVyeS5jc3MoZWxlbSxcImRpc3BsYXlcIikpKSk7Zm9yKGluZGV4PTA7bGVuZ3RoPmluZGV4O2luZGV4KyspZWxlbT1lbGVtZW50c1tpbmRleF0sZWxlbS5zdHlsZSYmKHNob3cmJlwibm9uZVwiIT09ZWxlbS5zdHlsZS5kaXNwbGF5JiZcIlwiIT09ZWxlbS5zdHlsZS5kaXNwbGF5fHwoZWxlbS5zdHlsZS5kaXNwbGF5PXNob3c/dmFsdWVzW2luZGV4XXx8XCJcIjpcIm5vbmVcIikpO3JldHVybiBlbGVtZW50c31mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlcihlbGVtLHZhbHVlLHN1YnRyYWN0KXt2YXIgbWF0Y2hlcz1ybnVtc3BsaXQuZXhlYyh2YWx1ZSk7cmV0dXJuIG1hdGNoZXM/TWF0aC5tYXgoMCxtYXRjaGVzWzFdLShzdWJ0cmFjdHx8MCkpKyhtYXRjaGVzWzJdfHxcInB4XCIpOnZhbHVlfWZ1bmN0aW9uIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KGVsZW0sbmFtZSxleHRyYSxpc0JvcmRlckJveCxzdHlsZXMpe2Zvcih2YXIgaT1leHRyYT09PShpc0JvcmRlckJveD9cImJvcmRlclwiOlwiY29udGVudFwiKT80Olwid2lkdGhcIj09PW5hbWU/MTowLHZhbD0wOzQ+aTtpKz0yKVwibWFyZ2luXCI9PT1leHRyYSYmKHZhbCs9alF1ZXJ5LmNzcyhlbGVtLGV4dHJhK2Nzc0V4cGFuZFtpXSwhMCxzdHlsZXMpKSxpc0JvcmRlckJveD8oXCJjb250ZW50XCI9PT1leHRyYSYmKHZhbC09alF1ZXJ5LmNzcyhlbGVtLFwicGFkZGluZ1wiK2Nzc0V4cGFuZFtpXSwhMCxzdHlsZXMpKSxcIm1hcmdpblwiIT09ZXh0cmEmJih2YWwtPWpRdWVyeS5jc3MoZWxlbSxcImJvcmRlclwiK2Nzc0V4cGFuZFtpXStcIldpZHRoXCIsITAsc3R5bGVzKSkpOih2YWwrPWpRdWVyeS5jc3MoZWxlbSxcInBhZGRpbmdcIitjc3NFeHBhbmRbaV0sITAsc3R5bGVzKSxcInBhZGRpbmdcIiE9PWV4dHJhJiYodmFsKz1qUXVlcnkuY3NzKGVsZW0sXCJib3JkZXJcIitjc3NFeHBhbmRbaV0rXCJXaWR0aFwiLCEwLHN0eWxlcykpKTtyZXR1cm4gdmFsfWZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhKXt2YXIgdmFsdWVJc0JvcmRlckJveD0hMCx2YWw9XCJ3aWR0aFwiPT09bmFtZT9lbGVtLm9mZnNldFdpZHRoOmVsZW0ub2Zmc2V0SGVpZ2h0LHN0eWxlcz1nZXRTdHlsZXMoZWxlbSksaXNCb3JkZXJCb3g9c3VwcG9ydC5ib3hTaXppbmcmJlwiYm9yZGVyLWJveFwiPT09alF1ZXJ5LmNzcyhlbGVtLFwiYm94U2l6aW5nXCIsITEsc3R5bGVzKTtpZigwPj12YWx8fG51bGw9PXZhbCl7aWYodmFsPWN1ckNTUyhlbGVtLG5hbWUsc3R5bGVzKSwoMD52YWx8fG51bGw9PXZhbCkmJih2YWw9ZWxlbS5zdHlsZVtuYW1lXSkscm51bW5vbnB4LnRlc3QodmFsKSlyZXR1cm4gdmFsO3ZhbHVlSXNCb3JkZXJCb3g9aXNCb3JkZXJCb3gmJihzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCl8fHZhbD09PWVsZW0uc3R5bGVbbmFtZV0pLHZhbD1wYXJzZUZsb2F0KHZhbCl8fDB9cmV0dXJuIHZhbCthdWdtZW50V2lkdGhPckhlaWdodChlbGVtLG5hbWUsZXh0cmF8fChpc0JvcmRlckJveD9cImJvcmRlclwiOlwiY29udGVudFwiKSx2YWx1ZUlzQm9yZGVyQm94LHN0eWxlcykrXCJweFwifWZ1bmN0aW9uIFR3ZWVuKGVsZW0sb3B0aW9ucyxwcm9wLGVuZCxlYXNpbmcpe3JldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoZWxlbSxvcHRpb25zLHByb3AsZW5kLGVhc2luZyl9ZnVuY3Rpb24gY3JlYXRlRnhOb3coKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2Z4Tm93PXZvaWQgMH0pLGZ4Tm93PWpRdWVyeS5ub3coKX1mdW5jdGlvbiBnZW5GeCh0eXBlLGluY2x1ZGVXaWR0aCl7dmFyIHdoaWNoLGF0dHJzPXtoZWlnaHQ6dHlwZX0saT0wO2ZvcihpbmNsdWRlV2lkdGg9aW5jbHVkZVdpZHRoPzE6MDs0Pmk7aSs9Mi1pbmNsdWRlV2lkdGgpd2hpY2g9Y3NzRXhwYW5kW2ldLGF0dHJzW1wibWFyZ2luXCIrd2hpY2hdPWF0dHJzW1wicGFkZGluZ1wiK3doaWNoXT10eXBlO3JldHVybiBpbmNsdWRlV2lkdGgmJihhdHRycy5vcGFjaXR5PWF0dHJzLndpZHRoPXR5cGUpLGF0dHJzfWZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKHZhbHVlLHByb3AsYW5pbWF0aW9uKXtmb3IodmFyIHR3ZWVuLGNvbGxlY3Rpb249KHR3ZWVuZXJzW3Byb3BdfHxbXSkuY29uY2F0KHR3ZWVuZXJzW1wiKlwiXSksaW5kZXg9MCxsZW5ndGg9Y29sbGVjdGlvbi5sZW5ndGg7bGVuZ3RoPmluZGV4O2luZGV4KyspaWYodHdlZW49Y29sbGVjdGlvbltpbmRleF0uY2FsbChhbmltYXRpb24scHJvcCx2YWx1ZSkpcmV0dXJuIHR3ZWVufWZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoZWxlbSxwcm9wcyxvcHRzKXt2YXIgcHJvcCx2YWx1ZSx0b2dnbGUsdHdlZW4saG9va3Msb2xkZmlyZSxkaXNwbGF5LGNoZWNrRGlzcGxheSxhbmltPXRoaXMsb3JpZz17fSxzdHlsZT1lbGVtLnN0eWxlLGhpZGRlbj1lbGVtLm5vZGVUeXBlJiZpc0hpZGRlbihlbGVtKSxkYXRhU2hvdz1qUXVlcnkuX2RhdGEoZWxlbSxcImZ4c2hvd1wiKTtvcHRzLnF1ZXVlfHwoaG9va3M9alF1ZXJ5Ll9xdWV1ZUhvb2tzKGVsZW0sXCJmeFwiKSxudWxsPT1ob29rcy51bnF1ZXVlZCYmKGhvb2tzLnVucXVldWVkPTAsb2xkZmlyZT1ob29rcy5lbXB0eS5maXJlLGhvb2tzLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXtob29rcy51bnF1ZXVlZHx8b2xkZmlyZSgpfSksaG9va3MudW5xdWV1ZWQrKyxhbmltLmFsd2F5cyhmdW5jdGlvbigpe2FuaW0uYWx3YXlzKGZ1bmN0aW9uKCl7aG9va3MudW5xdWV1ZWQtLSxqUXVlcnkucXVldWUoZWxlbSxcImZ4XCIpLmxlbmd0aHx8aG9va3MuZW1wdHkuZmlyZSgpfSl9KSksMT09PWVsZW0ubm9kZVR5cGUmJihcImhlaWdodFwiaW4gcHJvcHN8fFwid2lkdGhcImluIHByb3BzKSYmKG9wdHMub3ZlcmZsb3c9W3N0eWxlLm92ZXJmbG93LHN0eWxlLm92ZXJmbG93WCxzdHlsZS5vdmVyZmxvd1ldLGRpc3BsYXk9alF1ZXJ5LmNzcyhlbGVtLFwiZGlzcGxheVwiKSxjaGVja0Rpc3BsYXk9XCJub25lXCI9PT1kaXNwbGF5P2pRdWVyeS5fZGF0YShlbGVtLFwib2xkZGlzcGxheVwiKXx8ZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSk6ZGlzcGxheSxcImlubGluZVwiPT09Y2hlY2tEaXNwbGF5JiZcIm5vbmVcIj09PWpRdWVyeS5jc3MoZWxlbSxcImZsb2F0XCIpJiYoc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0JiZcImlubGluZVwiIT09ZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSk/c3R5bGUuem9vbT0xOnN0eWxlLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIikpLG9wdHMub3ZlcmZsb3cmJihzdHlsZS5vdmVyZmxvdz1cImhpZGRlblwiLHN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcygpfHxhbmltLmFsd2F5cyhmdW5jdGlvbigpe3N0eWxlLm92ZXJmbG93PW9wdHMub3ZlcmZsb3dbMF0sc3R5bGUub3ZlcmZsb3dYPW9wdHMub3ZlcmZsb3dbMV0sc3R5bGUub3ZlcmZsb3dZPW9wdHMub3ZlcmZsb3dbMl19KSk7Zm9yKHByb3AgaW4gcHJvcHMpaWYodmFsdWU9cHJvcHNbcHJvcF0scmZ4dHlwZXMuZXhlYyh2YWx1ZSkpe2lmKGRlbGV0ZSBwcm9wc1twcm9wXSx0b2dnbGU9dG9nZ2xlfHxcInRvZ2dsZVwiPT09dmFsdWUsdmFsdWU9PT0oaGlkZGVuP1wiaGlkZVwiOlwic2hvd1wiKSl7aWYoXCJzaG93XCIhPT12YWx1ZXx8IWRhdGFTaG93fHx2b2lkIDA9PT1kYXRhU2hvd1twcm9wXSljb250aW51ZTtoaWRkZW49ITB9b3JpZ1twcm9wXT1kYXRhU2hvdyYmZGF0YVNob3dbcHJvcF18fGpRdWVyeS5zdHlsZShlbGVtLHByb3ApfWVsc2UgZGlzcGxheT12b2lkIDA7aWYoalF1ZXJ5LmlzRW1wdHlPYmplY3Qob3JpZykpXCJpbmxpbmVcIj09PShcIm5vbmVcIj09PWRpc3BsYXk/ZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSk6ZGlzcGxheSkmJihzdHlsZS5kaXNwbGF5PWRpc3BsYXkpO2Vsc2V7ZGF0YVNob3c/XCJoaWRkZW5cImluIGRhdGFTaG93JiYoaGlkZGVuPWRhdGFTaG93LmhpZGRlbik6ZGF0YVNob3c9alF1ZXJ5Ll9kYXRhKGVsZW0sXCJmeHNob3dcIix7fSksdG9nZ2xlJiYoZGF0YVNob3cuaGlkZGVuPSFoaWRkZW4pLGhpZGRlbj9qUXVlcnkoZWxlbSkuc2hvdygpOmFuaW0uZG9uZShmdW5jdGlvbigpe2pRdWVyeShlbGVtKS5oaWRlKCl9KSxhbmltLmRvbmUoZnVuY3Rpb24oKXt2YXIgcHJvcDtqUXVlcnkuX3JlbW92ZURhdGEoZWxlbSxcImZ4c2hvd1wiKTtmb3IocHJvcCBpbiBvcmlnKWpRdWVyeS5zdHlsZShlbGVtLHByb3Asb3JpZ1twcm9wXSl9KTtmb3IocHJvcCBpbiBvcmlnKXR3ZWVuPWNyZWF0ZVR3ZWVuKGhpZGRlbj9kYXRhU2hvd1twcm9wXTowLHByb3AsYW5pbSkscHJvcCBpbiBkYXRhU2hvd3x8KGRhdGFTaG93W3Byb3BdPXR3ZWVuLnN0YXJ0LGhpZGRlbiYmKHR3ZWVuLmVuZD10d2Vlbi5zdGFydCx0d2Vlbi5zdGFydD1cIndpZHRoXCI9PT1wcm9wfHxcImhlaWdodFwiPT09cHJvcD8xOjApKX19ZnVuY3Rpb24gcHJvcEZpbHRlcihwcm9wcyxzcGVjaWFsRWFzaW5nKXt2YXIgaW5kZXgsbmFtZSxlYXNpbmcsdmFsdWUsaG9va3M7Zm9yKGluZGV4IGluIHByb3BzKWlmKG5hbWU9alF1ZXJ5LmNhbWVsQ2FzZShpbmRleCksZWFzaW5nPXNwZWNpYWxFYXNpbmdbbmFtZV0sdmFsdWU9cHJvcHNbaW5kZXhdLGpRdWVyeS5pc0FycmF5KHZhbHVlKSYmKGVhc2luZz12YWx1ZVsxXSx2YWx1ZT1wcm9wc1tpbmRleF09dmFsdWVbMF0pLGluZGV4IT09bmFtZSYmKHByb3BzW25hbWVdPXZhbHVlLGRlbGV0ZSBwcm9wc1tpbmRleF0pLGhvb2tzPWpRdWVyeS5jc3NIb29rc1tuYW1lXSxob29rcyYmXCJleHBhbmRcImluIGhvb2tzKXt2YWx1ZT1ob29rcy5leHBhbmQodmFsdWUpLGRlbGV0ZSBwcm9wc1tuYW1lXTtmb3IoaW5kZXggaW4gdmFsdWUpaW5kZXggaW4gcHJvcHN8fChwcm9wc1tpbmRleF09dmFsdWVbaW5kZXhdLHNwZWNpYWxFYXNpbmdbaW5kZXhdPWVhc2luZyl9ZWxzZSBzcGVjaWFsRWFzaW5nW25hbWVdPWVhc2luZ31mdW5jdGlvbiBBbmltYXRpb24oZWxlbSxwcm9wZXJ0aWVzLG9wdGlvbnMpe3ZhciByZXN1bHQsc3RvcHBlZCxpbmRleD0wLGxlbmd0aD1hbmltYXRpb25QcmVmaWx0ZXJzLmxlbmd0aCxkZWZlcnJlZD1qUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgdGljay5lbGVtfSksdGljaz1mdW5jdGlvbigpe2lmKHN0b3BwZWQpcmV0dXJuITE7Zm9yKHZhciBjdXJyZW50VGltZT1meE5vd3x8Y3JlYXRlRnhOb3coKSxyZW1haW5pbmc9TWF0aC5tYXgoMCxhbmltYXRpb24uc3RhcnRUaW1lK2FuaW1hdGlvbi5kdXJhdGlvbi1jdXJyZW50VGltZSksdGVtcD1yZW1haW5pbmcvYW5pbWF0aW9uLmR1cmF0aW9ufHwwLHBlcmNlbnQ9MS10ZW1wLGluZGV4PTAsbGVuZ3RoPWFuaW1hdGlvbi50d2VlbnMubGVuZ3RoO2xlbmd0aD5pbmRleDtpbmRleCsrKWFuaW1hdGlvbi50d2VlbnNbaW5kZXhdLnJ1bihwZXJjZW50KTtyZXR1cm4gZGVmZXJyZWQubm90aWZ5V2l0aChlbGVtLFthbmltYXRpb24scGVyY2VudCxyZW1haW5pbmddKSwxPnBlcmNlbnQmJmxlbmd0aD9yZW1haW5pbmc6KGRlZmVycmVkLnJlc29sdmVXaXRoKGVsZW0sW2FuaW1hdGlvbl0pLCExKX0sYW5pbWF0aW9uPWRlZmVycmVkLnByb21pc2Uoe2VsZW06ZWxlbSxwcm9wczpqUXVlcnkuZXh0ZW5kKHt9LHByb3BlcnRpZXMpLG9wdHM6alF1ZXJ5LmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fX0sb3B0aW9ucyksb3JpZ2luYWxQcm9wZXJ0aWVzOnByb3BlcnRpZXMsb3JpZ2luYWxPcHRpb25zOm9wdGlvbnMsc3RhcnRUaW1lOmZ4Tm93fHxjcmVhdGVGeE5vdygpLGR1cmF0aW9uOm9wdGlvbnMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKHByb3AsZW5kKXt2YXIgdHdlZW49alF1ZXJ5LlR3ZWVuKGVsZW0sYW5pbWF0aW9uLm9wdHMscHJvcCxlbmQsYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1twcm9wXXx8YW5pbWF0aW9uLm9wdHMuZWFzaW5nKTtyZXR1cm4gYW5pbWF0aW9uLnR3ZWVucy5wdXNoKHR3ZWVuKSx0d2Vlbn0sc3RvcDpmdW5jdGlvbihnb3RvRW5kKXt2YXIgaW5kZXg9MCxsZW5ndGg9Z290b0VuZD9hbmltYXRpb24udHdlZW5zLmxlbmd0aDowO2lmKHN0b3BwZWQpcmV0dXJuIHRoaXM7Zm9yKHN0b3BwZWQ9ITA7bGVuZ3RoPmluZGV4O2luZGV4KyspYW5pbWF0aW9uLnR3ZWVuc1tpbmRleF0ucnVuKDEpO3JldHVybiBnb3RvRW5kP2RlZmVycmVkLnJlc29sdmVXaXRoKGVsZW0sW2FuaW1hdGlvbixnb3RvRW5kXSk6ZGVmZXJyZWQucmVqZWN0V2l0aChlbGVtLFthbmltYXRpb24sZ290b0VuZF0pLHRoaXN9fSkscHJvcHM9YW5pbWF0aW9uLnByb3BzO2Zvcihwcm9wRmlsdGVyKHByb3BzLGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcpO2xlbmd0aD5pbmRleDtpbmRleCsrKWlmKHJlc3VsdD1hbmltYXRpb25QcmVmaWx0ZXJzW2luZGV4XS5jYWxsKGFuaW1hdGlvbixlbGVtLHByb3BzLGFuaW1hdGlvbi5vcHRzKSlyZXR1cm4gcmVzdWx0O3JldHVybiBqUXVlcnkubWFwKHByb3BzLGNyZWF0ZVR3ZWVuLGFuaW1hdGlvbiksalF1ZXJ5LmlzRnVuY3Rpb24oYW5pbWF0aW9uLm9wdHMuc3RhcnQpJiZhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKGVsZW0sYW5pbWF0aW9uKSxqUXVlcnkuZngudGltZXIoalF1ZXJ5LmV4dGVuZCh0aWNrLHtlbGVtOmVsZW0sYW5pbTphbmltYXRpb24scXVldWU6YW5pbWF0aW9uLm9wdHMucXVldWV9KSksYW5pbWF0aW9uLnByb2dyZXNzKGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzKS5kb25lKGFuaW1hdGlvbi5vcHRzLmRvbmUsYW5pbWF0aW9uLm9wdHMuY29tcGxldGUpLmZhaWwoYW5pbWF0aW9uLm9wdHMuZmFpbCkuYWx3YXlzKGFuaW1hdGlvbi5vcHRzLmFsd2F5cyl9ZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKHN0cnVjdHVyZSl7cmV0dXJuIGZ1bmN0aW9uKGRhdGFUeXBlRXhwcmVzc2lvbixmdW5jKXtcInN0cmluZ1wiIT10eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uJiYoZnVuYz1kYXRhVHlwZUV4cHJlc3Npb24sZGF0YVR5cGVFeHByZXNzaW9uPVwiKlwiKTt2YXIgZGF0YVR5cGUsaT0wLGRhdGFUeXBlcz1kYXRhVHlwZUV4cHJlc3Npb24udG9Mb3dlckNhc2UoKS5tYXRjaChybm90d2hpdGUpfHxbXTtpZihqUXVlcnkuaXNGdW5jdGlvbihmdW5jKSlmb3IoO2RhdGFUeXBlPWRhdGFUeXBlc1tpKytdOylcIitcIj09PWRhdGFUeXBlLmNoYXJBdCgwKT8oZGF0YVR5cGU9ZGF0YVR5cGUuc2xpY2UoMSl8fFwiKlwiLChzdHJ1Y3R1cmVbZGF0YVR5cGVdPXN0cnVjdHVyZVtkYXRhVHlwZV18fFtdKS51bnNoaWZ0KGZ1bmMpKTooc3RydWN0dXJlW2RhdGFUeXBlXT1zdHJ1Y3R1cmVbZGF0YVR5cGVdfHxbXSkucHVzaChmdW5jKX19ZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoc3RydWN0dXJlLG9wdGlvbnMsb3JpZ2luYWxPcHRpb25zLGpxWEhSKXtmdW5jdGlvbiBpbnNwZWN0KGRhdGFUeXBlKXt2YXIgc2VsZWN0ZWQ7cmV0dXJuIGluc3BlY3RlZFtkYXRhVHlwZV09ITAsalF1ZXJ5LmVhY2goc3RydWN0dXJlW2RhdGFUeXBlXXx8W10sZnVuY3Rpb24oXyxwcmVmaWx0ZXJPckZhY3Rvcnkpe3ZhciBkYXRhVHlwZU9yVHJhbnNwb3J0PXByZWZpbHRlck9yRmFjdG9yeShvcHRpb25zLG9yaWdpbmFsT3B0aW9ucyxqcVhIUik7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnR8fHNlZWtpbmdUcmFuc3BvcnR8fGluc3BlY3RlZFtkYXRhVHlwZU9yVHJhbnNwb3J0XT9zZWVraW5nVHJhbnNwb3J0PyEoc2VsZWN0ZWQ9ZGF0YVR5cGVPclRyYW5zcG9ydCk6dm9pZCAwOihvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KGRhdGFUeXBlT3JUcmFuc3BvcnQpLGluc3BlY3QoZGF0YVR5cGVPclRyYW5zcG9ydCksITEpfSksc2VsZWN0ZWR9dmFyIGluc3BlY3RlZD17fSxzZWVraW5nVHJhbnNwb3J0PXN0cnVjdHVyZT09PXRyYW5zcG9ydHM7cmV0dXJuIGluc3BlY3Qob3B0aW9ucy5kYXRhVHlwZXNbMF0pfHwhaW5zcGVjdGVkW1wiKlwiXSYmaW5zcGVjdChcIipcIil9ZnVuY3Rpb24gYWpheEV4dGVuZCh0YXJnZXQsc3JjKXt2YXIgZGVlcCxrZXksZmxhdE9wdGlvbnM9alF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGtleSBpbiBzcmMpdm9pZCAwIT09c3JjW2tleV0mJigoZmxhdE9wdGlvbnNba2V5XT90YXJnZXQ6ZGVlcHx8KGRlZXA9e30pKVtrZXldPXNyY1trZXldKTtyZXR1cm4gZGVlcCYmalF1ZXJ5LmV4dGVuZCghMCx0YXJnZXQsZGVlcCksdGFyZ2V0fWZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMocyxqcVhIUixyZXNwb25zZXMpe2Zvcih2YXIgZmlyc3REYXRhVHlwZSxjdCxmaW5hbERhdGFUeXBlLHR5cGUsY29udGVudHM9cy5jb250ZW50cyxkYXRhVHlwZXM9cy5kYXRhVHlwZXM7XCIqXCI9PT1kYXRhVHlwZXNbMF07KWRhdGFUeXBlcy5zaGlmdCgpLHZvaWQgMD09PWN0JiYoY3Q9cy5taW1lVHlwZXx8anFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVR5cGVcIikpO2lmKGN0KWZvcih0eXBlIGluIGNvbnRlbnRzKWlmKGNvbnRlbnRzW3R5cGVdJiZjb250ZW50c1t0eXBlXS50ZXN0KGN0KSl7ZGF0YVR5cGVzLnVuc2hpZnQodHlwZSk7YnJlYWt9aWYoZGF0YVR5cGVzWzBdaW4gcmVzcG9uc2VzKWZpbmFsRGF0YVR5cGU9ZGF0YVR5cGVzWzBdO2Vsc2V7Zm9yKHR5cGUgaW4gcmVzcG9uc2VzKXtpZighZGF0YVR5cGVzWzBdfHxzLmNvbnZlcnRlcnNbdHlwZStcIiBcIitkYXRhVHlwZXNbMF1dKXtmaW5hbERhdGFUeXBlPXR5cGU7YnJlYWt9Zmlyc3REYXRhVHlwZXx8KGZpcnN0RGF0YVR5cGU9dHlwZSl9ZmluYWxEYXRhVHlwZT1maW5hbERhdGFUeXBlfHxmaXJzdERhdGFUeXBlfXJldHVybiBmaW5hbERhdGFUeXBlPyhmaW5hbERhdGFUeXBlIT09ZGF0YVR5cGVzWzBdJiZkYXRhVHlwZXMudW5zaGlmdChmaW5hbERhdGFUeXBlKSxyZXNwb25zZXNbZmluYWxEYXRhVHlwZV0pOnZvaWQgMH1mdW5jdGlvbiBhamF4Q29udmVydChzLHJlc3BvbnNlLGpxWEhSLGlzU3VjY2Vzcyl7dmFyIGNvbnYyLGN1cnJlbnQsY29udix0bXAscHJldixjb252ZXJ0ZXJzPXt9LGRhdGFUeXBlcz1zLmRhdGFUeXBlcy5zbGljZSgpO2lmKGRhdGFUeXBlc1sxXSlmb3IoY29udiBpbiBzLmNvbnZlcnRlcnMpY29udmVydGVyc1tjb252LnRvTG93ZXJDYXNlKCldPXMuY29udmVydGVyc1tjb252XTtmb3IoY3VycmVudD1kYXRhVHlwZXMuc2hpZnQoKTtjdXJyZW50OylpZihzLnJlc3BvbnNlRmllbGRzW2N1cnJlbnRdJiYoanFYSFJbcy5yZXNwb25zZUZpZWxkc1tjdXJyZW50XV09cmVzcG9uc2UpLCFwcmV2JiZpc1N1Y2Nlc3MmJnMuZGF0YUZpbHRlciYmKHJlc3BvbnNlPXMuZGF0YUZpbHRlcihyZXNwb25zZSxzLmRhdGFUeXBlKSkscHJldj1jdXJyZW50LGN1cnJlbnQ9ZGF0YVR5cGVzLnNoaWZ0KCkpaWYoXCIqXCI9PT1jdXJyZW50KWN1cnJlbnQ9cHJldjtlbHNlIGlmKFwiKlwiIT09cHJldiYmcHJldiE9PWN1cnJlbnQpe2lmKGNvbnY9Y29udmVydGVyc1twcmV2K1wiIFwiK2N1cnJlbnRdfHxjb252ZXJ0ZXJzW1wiKiBcIitjdXJyZW50XSwhY29udilmb3IoY29udjIgaW4gY29udmVydGVycylpZih0bXA9Y29udjIuc3BsaXQoXCIgXCIpLHRtcFsxXT09PWN1cnJlbnQmJihjb252PWNvbnZlcnRlcnNbcHJlditcIiBcIit0bXBbMF1dfHxjb252ZXJ0ZXJzW1wiKiBcIit0bXBbMF1dKSl7Y29udj09PSEwP2NvbnY9Y29udmVydGVyc1tjb252Ml06Y29udmVydGVyc1tjb252Ml0hPT0hMCYmKGN1cnJlbnQ9dG1wWzBdLGRhdGFUeXBlcy51bnNoaWZ0KHRtcFsxXSkpO2JyZWFrfWlmKGNvbnYhPT0hMClpZihjb252JiZzW1widGhyb3dzXCJdKXJlc3BvbnNlPWNvbnYocmVzcG9uc2UpO2Vsc2UgdHJ5e3Jlc3BvbnNlPWNvbnYocmVzcG9uc2UpfWNhdGNoKGUpe3JldHVybntzdGF0ZTpcInBhcnNlcmVycm9yXCIsZXJyb3I6Y29udj9lOlwiTm8gY29udmVyc2lvbiBmcm9tIFwiK3ByZXYrXCIgdG8gXCIrY3VycmVudH19fXJldHVybntzdGF0ZTpcInN1Y2Nlc3NcIixkYXRhOnJlc3BvbnNlfX1mdW5jdGlvbiBidWlsZFBhcmFtcyhwcmVmaXgsb2JqLHRyYWRpdGlvbmFsLGFkZCl7dmFyIG5hbWU7aWYoalF1ZXJ5LmlzQXJyYXkob2JqKSlqUXVlcnkuZWFjaChvYmosZnVuY3Rpb24oaSx2KXt0cmFkaXRpb25hbHx8cmJyYWNrZXQudGVzdChwcmVmaXgpP2FkZChwcmVmaXgsdik6YnVpbGRQYXJhbXMocHJlZml4K1wiW1wiKyhcIm9iamVjdFwiPT10eXBlb2Ygdj9pOlwiXCIpK1wiXVwiLHYsdHJhZGl0aW9uYWwsYWRkKX0pO2Vsc2UgaWYodHJhZGl0aW9uYWx8fFwib2JqZWN0XCIhPT1qUXVlcnkudHlwZShvYmopKWFkZChwcmVmaXgsb2JqKTtlbHNlIGZvcihuYW1lIGluIG9iailidWlsZFBhcmFtcyhwcmVmaXgrXCJbXCIrbmFtZStcIl1cIixvYmpbbmFtZV0sdHJhZGl0aW9uYWwsYWRkKX1mdW5jdGlvbiBjcmVhdGVTdGFuZGFyZFhIUigpe3RyeXtyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdH1jYXRjaChlKXt9fWZ1bmN0aW9uIGNyZWF0ZUFjdGl2ZVhIUigpe3RyeXtyZXR1cm4gbmV3IHdpbmRvdy5BY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIil9Y2F0Y2goZSl7fX1mdW5jdGlvbiBnZXRXaW5kb3coZWxlbSl7cmV0dXJuIGpRdWVyeS5pc1dpbmRvdyhlbGVtKT9lbGVtOjk9PT1lbGVtLm5vZGVUeXBlP2VsZW0uZGVmYXVsdFZpZXd8fGVsZW0ucGFyZW50V2luZG93OiExfXZhciBkZWxldGVkSWRzPVtdLHNsaWNlPWRlbGV0ZWRJZHMuc2xpY2UsY29uY2F0PWRlbGV0ZWRJZHMuY29uY2F0LHB1c2g9ZGVsZXRlZElkcy5wdXNoLGluZGV4T2Y9ZGVsZXRlZElkcy5pbmRleE9mLGNsYXNzMnR5cGU9e30sdG9TdHJpbmc9Y2xhc3MydHlwZS50b1N0cmluZyxoYXNPd249Y2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eSxzdXBwb3J0PXt9LHZlcnNpb249XCIxLjExLjNcIixqUXVlcnk9ZnVuY3Rpb24oc2VsZWN0b3IsY29udGV4dCl7cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdChzZWxlY3Rvcixjb250ZXh0KX0scnRyaW09L15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLHJtc1ByZWZpeD0vXi1tcy0vLHJkYXNoQWxwaGE9Ly0oW1xcZGEtel0pL2dpLGZjYW1lbENhc2U9ZnVuY3Rpb24oYWxsLGxldHRlcil7cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpfTtqUXVlcnkuZm49alF1ZXJ5LnByb3RvdHlwZT17anF1ZXJ5OnZlcnNpb24sY29uc3RydWN0b3I6alF1ZXJ5LHNlbGVjdG9yOlwiXCIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBzbGljZS5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24obnVtKXtyZXR1cm4gbnVsbCE9bnVtPzA+bnVtP3RoaXNbbnVtK3RoaXMubGVuZ3RoXTp0aGlzW251bV06c2xpY2UuY2FsbCh0aGlzKX0scHVzaFN0YWNrOmZ1bmN0aW9uKGVsZW1zKXt2YXIgcmV0PWpRdWVyeS5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZWxlbXMpO3JldHVybiByZXQucHJldk9iamVjdD10aGlzLHJldC5jb250ZXh0PXRoaXMuY29udGV4dCxyZXR9LGVhY2g6ZnVuY3Rpb24oY2FsbGJhY2ssYXJncyl7cmV0dXJuIGpRdWVyeS5lYWNoKHRoaXMsY2FsbGJhY2ssYXJncyl9LG1hcDpmdW5jdGlvbihjYWxsYmFjayl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGpRdWVyeS5tYXAodGhpcyxmdW5jdGlvbihlbGVtLGkpe3JldHVybiBjYWxsYmFjay5jYWxsKGVsZW0saSxlbGVtKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oaSl7dmFyIGxlbj10aGlzLmxlbmd0aCxqPStpKygwPmk/bGVuOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhqPj0wJiZsZW4+aj9bdGhpc1tqXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOnB1c2gsc29ydDpkZWxldGVkSWRzLnNvcnQsc3BsaWNlOmRlbGV0ZWRJZHMuc3BsaWNlfSxqUXVlcnkuZXh0ZW5kPWpRdWVyeS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgc3JjLGNvcHlJc0FycmF5LGNvcHksbmFtZSxvcHRpb25zLGNsb25lLHRhcmdldD1hcmd1bWVudHNbMF18fHt9LGk9MSxsZW5ndGg9YXJndW1lbnRzLmxlbmd0aCxkZWVwPSExO2ZvcihcImJvb2xlYW5cIj09dHlwZW9mIHRhcmdldCYmKGRlZXA9dGFyZ2V0LHRhcmdldD1hcmd1bWVudHNbaV18fHt9LGkrKyksXCJvYmplY3RcIj09dHlwZW9mIHRhcmdldHx8alF1ZXJ5LmlzRnVuY3Rpb24odGFyZ2V0KXx8KHRhcmdldD17fSksaT09PWxlbmd0aCYmKHRhcmdldD10aGlzLGktLSk7bGVuZ3RoPmk7aSsrKWlmKG51bGwhPShvcHRpb25zPWFyZ3VtZW50c1tpXSkpZm9yKG5hbWUgaW4gb3B0aW9ucylzcmM9dGFyZ2V0W25hbWVdLGNvcHk9b3B0aW9uc1tuYW1lXSx0YXJnZXQhPT1jb3B5JiYoZGVlcCYmY29weSYmKGpRdWVyeS5pc1BsYWluT2JqZWN0KGNvcHkpfHwoY29weUlzQXJyYXk9alF1ZXJ5LmlzQXJyYXkoY29weSkpKT8oY29weUlzQXJyYXk/KGNvcHlJc0FycmF5PSExLGNsb25lPXNyYyYmalF1ZXJ5LmlzQXJyYXkoc3JjKT9zcmM6W10pOmNsb25lPXNyYyYmalF1ZXJ5LmlzUGxhaW5PYmplY3Qoc3JjKT9zcmM6e30sdGFyZ2V0W25hbWVdPWpRdWVyeS5leHRlbmQoZGVlcCxjbG9uZSxjb3B5KSk6dm9pZCAwIT09Y29weSYmKHRhcmdldFtuYW1lXT1jb3B5KSk7cmV0dXJuIHRhcmdldH0salF1ZXJ5LmV4dGVuZCh7ZXhwYW5kbzpcImpRdWVyeVwiKyh2ZXJzaW9uK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xcRC9nLFwiXCIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24obXNnKXt0aHJvdyBuZXcgRXJyb3IobXNnKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihvYmope3JldHVyblwiZnVuY3Rpb25cIj09PWpRdWVyeS50eXBlKG9iail9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24ob2JqKXtyZXR1cm5cImFycmF5XCI9PT1qUXVlcnkudHlwZShvYmopfSxpc1dpbmRvdzpmdW5jdGlvbihvYmope3JldHVybiBudWxsIT1vYmomJm9iaj09b2JqLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKG9iail7cmV0dXJuIWpRdWVyeS5pc0FycmF5KG9iaikmJm9iai1wYXJzZUZsb2F0KG9iaikrMT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihvYmope3ZhciBuYW1lO2ZvcihuYW1lIGluIG9iailyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihvYmope3ZhciBrZXk7aWYoIW9ianx8XCJvYmplY3RcIiE9PWpRdWVyeS50eXBlKG9iail8fG9iai5ub2RlVHlwZXx8alF1ZXJ5LmlzV2luZG93KG9iaikpcmV0dXJuITE7dHJ5e2lmKG9iai5jb25zdHJ1Y3RvciYmIWhhc093bi5jYWxsKG9iaixcImNvbnN0cnVjdG9yXCIpJiYhaGFzT3duLmNhbGwob2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxcImlzUHJvdG90eXBlT2ZcIikpcmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITF9aWYoc3VwcG9ydC5vd25MYXN0KWZvcihrZXkgaW4gb2JqKXJldHVybiBoYXNPd24uY2FsbChvYmosa2V5KTtmb3Ioa2V5IGluIG9iaik7cmV0dXJuIHZvaWQgMD09PWtleXx8aGFzT3duLmNhbGwob2JqLGtleSl9LHR5cGU6ZnVuY3Rpb24ob2JqKXtyZXR1cm4gbnVsbD09b2JqP29iaitcIlwiOlwib2JqZWN0XCI9PXR5cGVvZiBvYmp8fFwiZnVuY3Rpb25cIj09dHlwZW9mIG9iaj9jbGFzczJ0eXBlW3RvU3RyaW5nLmNhbGwob2JqKV18fFwib2JqZWN0XCI6dHlwZW9mIG9ian0sZ2xvYmFsRXZhbDpmdW5jdGlvbihkYXRhKXtkYXRhJiZqUXVlcnkudHJpbShkYXRhKSYmKHdpbmRvdy5leGVjU2NyaXB0fHxmdW5jdGlvbihkYXRhKXt3aW5kb3cuZXZhbC5jYWxsKHdpbmRvdyxkYXRhKX0pKGRhdGEpfSxjYW1lbENhc2U6ZnVuY3Rpb24oc3RyaW5nKXtyZXR1cm4gc3RyaW5nLnJlcGxhY2Uocm1zUHJlZml4LFwibXMtXCIpLnJlcGxhY2UocmRhc2hBbHBoYSxmY2FtZWxDYXNlKX0sbm9kZU5hbWU6ZnVuY3Rpb24oZWxlbSxuYW1lKXtyZXR1cm4gZWxlbS5ub2RlTmFtZSYmZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09bmFtZS50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKG9iaixjYWxsYmFjayxhcmdzKXt2YXIgdmFsdWUsaT0wLGxlbmd0aD1vYmoubGVuZ3RoLGlzQXJyYXk9aXNBcnJheWxpa2Uob2JqKTtpZihhcmdzKXtpZihpc0FycmF5KWZvcig7bGVuZ3RoPmkmJih2YWx1ZT1jYWxsYmFjay5hcHBseShvYmpbaV0sYXJncyksdmFsdWUhPT0hMSk7aSsrKTtlbHNlIGZvcihpIGluIG9iailpZih2YWx1ZT1jYWxsYmFjay5hcHBseShvYmpbaV0sYXJncyksdmFsdWU9PT0hMSlicmVha31lbHNlIGlmKGlzQXJyYXkpZm9yKDtsZW5ndGg+aSYmKHZhbHVlPWNhbGxiYWNrLmNhbGwob2JqW2ldLGksb2JqW2ldKSx2YWx1ZSE9PSExKTtpKyspO2Vsc2UgZm9yKGkgaW4gb2JqKWlmKHZhbHVlPWNhbGxiYWNrLmNhbGwob2JqW2ldLGksb2JqW2ldKSx2YWx1ZT09PSExKWJyZWFrO3JldHVybiBvYmp9LHRyaW06ZnVuY3Rpb24odGV4dCl7cmV0dXJuIG51bGw9PXRleHQ/XCJcIjoodGV4dCtcIlwiKS5yZXBsYWNlKHJ0cmltLFwiXCIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYXJyLHJlc3VsdHMpe3ZhciByZXQ9cmVzdWx0c3x8W107cmV0dXJuIG51bGwhPWFyciYmKGlzQXJyYXlsaWtlKE9iamVjdChhcnIpKT9qUXVlcnkubWVyZ2UocmV0LFwic3RyaW5nXCI9PXR5cGVvZiBhcnI/W2Fycl06YXJyKTpwdXNoLmNhbGwocmV0LGFycikpLHJldH0saW5BcnJheTpmdW5jdGlvbihlbGVtLGFycixpKXt2YXIgbGVuO2lmKGFycil7aWYoaW5kZXhPZilyZXR1cm4gaW5kZXhPZi5jYWxsKGFycixlbGVtLGkpO2ZvcihsZW49YXJyLmxlbmd0aCxpPWk/MD5pP01hdGgubWF4KDAsbGVuK2kpOmk6MDtsZW4+aTtpKyspaWYoaSBpbiBhcnImJmFycltpXT09PWVsZW0pcmV0dXJuIGl9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGZpcnN0LHNlY29uZCl7Zm9yKHZhciBsZW49K3NlY29uZC5sZW5ndGgsaj0wLGk9Zmlyc3QubGVuZ3RoO2xlbj5qOylmaXJzdFtpKytdPXNlY29uZFtqKytdO2lmKGxlbiE9PWxlbilmb3IoO3ZvaWQgMCE9PXNlY29uZFtqXTspZmlyc3RbaSsrXT1zZWNvbmRbaisrXTtyZXR1cm4gZmlyc3QubGVuZ3RoPWksZmlyc3R9LGdyZXA6ZnVuY3Rpb24oZWxlbXMsY2FsbGJhY2ssaW52ZXJ0KXtmb3IodmFyIGNhbGxiYWNrSW52ZXJzZSxtYXRjaGVzPVtdLGk9MCxsZW5ndGg9ZWxlbXMubGVuZ3RoLGNhbGxiYWNrRXhwZWN0PSFpbnZlcnQ7bGVuZ3RoPmk7aSsrKWNhbGxiYWNrSW52ZXJzZT0hY2FsbGJhY2soZWxlbXNbaV0saSksY2FsbGJhY2tJbnZlcnNlIT09Y2FsbGJhY2tFeHBlY3QmJm1hdGNoZXMucHVzaChlbGVtc1tpXSk7cmV0dXJuIG1hdGNoZXN9LG1hcDpmdW5jdGlvbihlbGVtcyxjYWxsYmFjayxhcmcpe3ZhciB2YWx1ZSxpPTAsbGVuZ3RoPWVsZW1zLmxlbmd0aCxpc0FycmF5PWlzQXJyYXlsaWtlKGVsZW1zKSxyZXQ9W107aWYoaXNBcnJheSlmb3IoO2xlbmd0aD5pO2krKyl2YWx1ZT1jYWxsYmFjayhlbGVtc1tpXSxpLGFyZyksbnVsbCE9dmFsdWUmJnJldC5wdXNoKHZhbHVlKTtlbHNlIGZvcihpIGluIGVsZW1zKXZhbHVlPWNhbGxiYWNrKGVsZW1zW2ldLGksYXJnKSxudWxsIT12YWx1ZSYmcmV0LnB1c2godmFsdWUpO3JldHVybiBjb25jYXQuYXBwbHkoW10scmV0KX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGZuLGNvbnRleHQpe3ZhciBhcmdzLHByb3h5LHRtcDtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgY29udGV4dCYmKHRtcD1mbltjb250ZXh0XSxjb250ZXh0PWZuLGZuPXRtcCksalF1ZXJ5LmlzRnVuY3Rpb24oZm4pPyhhcmdzPXNsaWNlLmNhbGwoYXJndW1lbnRzLDIpLHByb3h5PWZ1bmN0aW9uKCl7cmV0dXJuIGZuLmFwcGx5KGNvbnRleHR8fHRoaXMsYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9LHByb3h5Lmd1aWQ9Zm4uZ3VpZD1mbi5ndWlkfHxqUXVlcnkuZ3VpZCsrLHByb3h5KTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDpzdXBwb3J0fSksalF1ZXJ5LmVhY2goXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yXCIuc3BsaXQoXCIgXCIpLGZ1bmN0aW9uKGksbmFtZSl7Y2xhc3MydHlwZVtcIltvYmplY3QgXCIrbmFtZStcIl1cIl09bmFtZS50b0xvd2VyQ2FzZSgpfSk7dmFyIFNpenpsZT1mdW5jdGlvbih3aW5kb3cpe2Z1bmN0aW9uIFNpenpsZShzZWxlY3Rvcixjb250ZXh0LHJlc3VsdHMsc2VlZCl7dmFyIG1hdGNoLGVsZW0sbSxub2RlVHlwZSxpLGdyb3VwcyxvbGQsbmlkLG5ld0NvbnRleHQsbmV3U2VsZWN0b3I7aWYoKGNvbnRleHQ/Y29udGV4dC5vd25lckRvY3VtZW50fHxjb250ZXh0OnByZWZlcnJlZERvYykhPT1kb2N1bWVudCYmc2V0RG9jdW1lbnQoY29udGV4dCksY29udGV4dD1jb250ZXh0fHxkb2N1bWVudCxyZXN1bHRzPXJlc3VsdHN8fFtdLG5vZGVUeXBlPWNvbnRleHQubm9kZVR5cGUsXCJzdHJpbmdcIiE9dHlwZW9mIHNlbGVjdG9yfHwhc2VsZWN0b3J8fDEhPT1ub2RlVHlwZSYmOSE9PW5vZGVUeXBlJiYxMSE9PW5vZGVUeXBlKXJldHVybiByZXN1bHRzO2lmKCFzZWVkJiZkb2N1bWVudElzSFRNTCl7aWYoMTEhPT1ub2RlVHlwZSYmKG1hdGNoPXJxdWlja0V4cHIuZXhlYyhzZWxlY3RvcikpKWlmKG09bWF0Y2hbMV0pe2lmKDk9PT1ub2RlVHlwZSl7aWYoZWxlbT1jb250ZXh0LmdldEVsZW1lbnRCeUlkKG0pLCFlbGVtfHwhZWxlbS5wYXJlbnROb2RlKXJldHVybiByZXN1bHRzO2lmKGVsZW0uaWQ9PT1tKXJldHVybiByZXN1bHRzLnB1c2goZWxlbSkscmVzdWx0c31lbHNlIGlmKGNvbnRleHQub3duZXJEb2N1bWVudCYmKGVsZW09Y29udGV4dC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG0pKSYmY29udGFpbnMoY29udGV4dCxlbGVtKSYmZWxlbS5pZD09PW0pcmV0dXJuIHJlc3VsdHMucHVzaChlbGVtKSxyZXN1bHRzfWVsc2V7aWYobWF0Y2hbMl0pcmV0dXJuIHB1c2guYXBwbHkocmVzdWx0cyxjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKHNlbGVjdG9yKSkscmVzdWx0cztpZigobT1tYXRjaFszXSkmJnN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gcHVzaC5hcHBseShyZXN1bHRzLGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShtKSkscmVzdWx0c31pZihzdXBwb3J0LnFzYSYmKCFyYnVnZ3lRU0F8fCFyYnVnZ3lRU0EudGVzdChzZWxlY3RvcikpKXtpZihuaWQ9b2xkPWV4cGFuZG8sbmV3Q29udGV4dD1jb250ZXh0LG5ld1NlbGVjdG9yPTEhPT1ub2RlVHlwZSYmc2VsZWN0b3IsMT09PW5vZGVUeXBlJiZcIm9iamVjdFwiIT09Y29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtmb3IoZ3JvdXBzPXRva2VuaXplKHNlbGVjdG9yKSwob2xkPWNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaWRcIikpP25pZD1vbGQucmVwbGFjZShyZXNjYXBlLFwiXFxcXCQmXCIpOmNvbnRleHQuc2V0QXR0cmlidXRlKFwiaWRcIixuaWQpLG5pZD1cIltpZD0nXCIrbmlkK1wiJ10gXCIsaT1ncm91cHMubGVuZ3RoO2ktLTspZ3JvdXBzW2ldPW5pZCt0b1NlbGVjdG9yKGdyb3Vwc1tpXSk7bmV3Q29udGV4dD1yc2libGluZy50ZXN0KHNlbGVjdG9yKSYmdGVzdENvbnRleHQoY29udGV4dC5wYXJlbnROb2RlKXx8Y29udGV4dCxuZXdTZWxlY3Rvcj1ncm91cHMuam9pbihcIixcIil9aWYobmV3U2VsZWN0b3IpdHJ5e3JldHVybiBwdXNoLmFwcGx5KHJlc3VsdHMsbmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKG5ld1NlbGVjdG9yKSkscmVzdWx0c31jYXRjaChxc2FFcnJvcil7fWZpbmFsbHl7b2xkfHxjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZShcImlkXCIpfX19cmV0dXJuIHNlbGVjdChzZWxlY3Rvci5yZXBsYWNlKHJ0cmltLFwiJDFcIiksY29udGV4dCxyZXN1bHRzLHNlZWQpfWZ1bmN0aW9uIGNyZWF0ZUNhY2hlKCl7ZnVuY3Rpb24gY2FjaGUoa2V5LHZhbHVlKXtyZXR1cm4ga2V5cy5wdXNoKGtleStcIiBcIik+RXhwci5jYWNoZUxlbmd0aCYmZGVsZXRlIGNhY2hlW2tleXMuc2hpZnQoKV0sY2FjaGVba2V5K1wiIFwiXT12YWx1ZX12YXIga2V5cz1bXTtyZXR1cm4gY2FjaGV9ZnVuY3Rpb24gbWFya0Z1bmN0aW9uKGZuKXtyZXR1cm4gZm5bZXhwYW5kb109ITAsZm59ZnVuY3Rpb24gYXNzZXJ0KGZuKXt2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dHJ5e3JldHVybiEhZm4oZGl2KX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbGx5e2Rpdi5wYXJlbnROb2RlJiZkaXYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkaXYpLGRpdj1udWxsfX1mdW5jdGlvbiBhZGRIYW5kbGUoYXR0cnMsaGFuZGxlcil7Zm9yKHZhciBhcnI9YXR0cnMuc3BsaXQoXCJ8XCIpLGk9YXR0cnMubGVuZ3RoO2ktLTspRXhwci5hdHRySGFuZGxlW2FycltpXV09aGFuZGxlcn1mdW5jdGlvbiBzaWJsaW5nQ2hlY2soYSxiKXt2YXIgY3VyPWImJmEsZGlmZj1jdXImJjE9PT1hLm5vZGVUeXBlJiYxPT09Yi5ub2RlVHlwZSYmKH5iLnNvdXJjZUluZGV4fHxNQVhfTkVHQVRJVkUpLSh+YS5zb3VyY2VJbmRleHx8TUFYX05FR0FUSVZFKTtpZihkaWZmKXJldHVybiBkaWZmO2lmKGN1cilmb3IoO2N1cj1jdXIubmV4dFNpYmxpbmc7KWlmKGN1cj09PWIpcmV0dXJuLTE7cmV0dXJuIGE/MTotMX1mdW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVkbyh0eXBlKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7dmFyIG5hbWU9ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PW5hbWUmJmVsZW0udHlwZT09PXR5cGV9fWZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyh0eXBlKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7dmFyIG5hbWU9ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihcImlucHV0XCI9PT1uYW1lfHxcImJ1dHRvblwiPT09bmFtZSkmJmVsZW0udHlwZT09PXR5cGV9fWZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZm4pe3JldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oYXJndW1lbnQpe3JldHVybiBhcmd1bWVudD0rYXJndW1lbnQsbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKHNlZWQsbWF0Y2hlcyl7Zm9yKHZhciBqLG1hdGNoSW5kZXhlcz1mbihbXSxzZWVkLmxlbmd0aCxhcmd1bWVudCksaT1tYXRjaEluZGV4ZXMubGVuZ3RoO2ktLTspc2VlZFtqPW1hdGNoSW5kZXhlc1tpXV0mJihzZWVkW2pdPSEobWF0Y2hlc1tqXT1zZWVkW2pdKSl9KX0pfWZ1bmN0aW9uIHRlc3RDb250ZXh0KGNvbnRleHQpe3JldHVybiBjb250ZXh0JiZcInVuZGVmaW5lZFwiIT10eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSYmY29udGV4dH1mdW5jdGlvbiBzZXRGaWx0ZXJzKCl7fWZ1bmN0aW9uIHRvU2VsZWN0b3IodG9rZW5zKXtmb3IodmFyIGk9MCxsZW49dG9rZW5zLmxlbmd0aCxzZWxlY3Rvcj1cIlwiO2xlbj5pO2krKylzZWxlY3Rvcis9dG9rZW5zW2ldLnZhbHVlO3JldHVybiBzZWxlY3Rvcn1mdW5jdGlvbiBhZGRDb21iaW5hdG9yKG1hdGNoZXIsY29tYmluYXRvcixiYXNlKXt2YXIgZGlyPWNvbWJpbmF0b3IuZGlyLGNoZWNrTm9uRWxlbWVudHM9YmFzZSYmXCJwYXJlbnROb2RlXCI9PT1kaXIsZG9uZU5hbWU9ZG9uZSsrO3JldHVybiBjb21iaW5hdG9yLmZpcnN0P2Z1bmN0aW9uKGVsZW0sY29udGV4dCx4bWwpe2Zvcig7ZWxlbT1lbGVtW2Rpcl07KWlmKDE9PT1lbGVtLm5vZGVUeXBlfHxjaGVja05vbkVsZW1lbnRzKXJldHVybiBtYXRjaGVyKGVsZW0sY29udGV4dCx4bWwpfTpmdW5jdGlvbihlbGVtLGNvbnRleHQseG1sKXt2YXIgb2xkQ2FjaGUsb3V0ZXJDYWNoZSxuZXdDYWNoZT1bZGlycnVucyxkb25lTmFtZV07aWYoeG1sKXtmb3IoO2VsZW09ZWxlbVtkaXJdOylpZigoMT09PWVsZW0ubm9kZVR5cGV8fGNoZWNrTm9uRWxlbWVudHMpJiZtYXRjaGVyKGVsZW0sY29udGV4dCx4bWwpKXJldHVybiEwfWVsc2UgZm9yKDtlbGVtPWVsZW1bZGlyXTspaWYoMT09PWVsZW0ubm9kZVR5cGV8fGNoZWNrTm9uRWxlbWVudHMpe2lmKG91dGVyQ2FjaGU9ZWxlbVtleHBhbmRvXXx8KGVsZW1bZXhwYW5kb109e30pLChvbGRDYWNoZT1vdXRlckNhY2hlW2Rpcl0pJiZvbGRDYWNoZVswXT09PWRpcnJ1bnMmJm9sZENhY2hlWzFdPT09ZG9uZU5hbWUpcmV0dXJuIG5ld0NhY2hlWzJdPW9sZENhY2hlWzJdO2lmKG91dGVyQ2FjaGVbZGlyXT1uZXdDYWNoZSxuZXdDYWNoZVsyXT1tYXRjaGVyKGVsZW0sY29udGV4dCx4bWwpKXJldHVybiEwfX19ZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIobWF0Y2hlcnMpe3JldHVybiBtYXRjaGVycy5sZW5ndGg+MT9mdW5jdGlvbihlbGVtLGNvbnRleHQseG1sKXtmb3IodmFyIGk9bWF0Y2hlcnMubGVuZ3RoO2ktLTspaWYoIW1hdGNoZXJzW2ldKGVsZW0sY29udGV4dCx4bWwpKXJldHVybiExO3JldHVybiEwfTptYXRjaGVyc1swXX1mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKHNlbGVjdG9yLGNvbnRleHRzLHJlc3VsdHMpe2Zvcih2YXIgaT0wLGxlbj1jb250ZXh0cy5sZW5ndGg7bGVuPmk7aSsrKVNpenpsZShzZWxlY3Rvcixjb250ZXh0c1tpXSxyZXN1bHRzKTtyZXR1cm4gcmVzdWx0c31mdW5jdGlvbiBjb25kZW5zZSh1bm1hdGNoZWQsbWFwLGZpbHRlcixjb250ZXh0LHhtbCl7Zm9yKHZhciBlbGVtLG5ld1VubWF0Y2hlZD1bXSxpPTAsbGVuPXVubWF0Y2hlZC5sZW5ndGgsbWFwcGVkPW51bGwhPW1hcDtsZW4+aTtpKyspKGVsZW09dW5tYXRjaGVkW2ldKSYmKCFmaWx0ZXJ8fGZpbHRlcihlbGVtLGNvbnRleHQseG1sKSkmJihuZXdVbm1hdGNoZWQucHVzaChlbGVtKSxtYXBwZWQmJm1hcC5wdXNoKGkpKTtyZXR1cm4gbmV3VW5tYXRjaGVkfWZ1bmN0aW9uIHNldE1hdGNoZXIocHJlRmlsdGVyLHNlbGVjdG9yLG1hdGNoZXIscG9zdEZpbHRlcixwb3N0RmluZGVyLHBvc3RTZWxlY3Rvcil7cmV0dXJuIHBvc3RGaWx0ZXImJiFwb3N0RmlsdGVyW2V4cGFuZG9dJiYocG9zdEZpbHRlcj1zZXRNYXRjaGVyKHBvc3RGaWx0ZXIpKSxwb3N0RmluZGVyJiYhcG9zdEZpbmRlcltleHBhbmRvXSYmKHBvc3RGaW5kZXI9c2V0TWF0Y2hlcihwb3N0RmluZGVyLHBvc3RTZWxlY3RvcikpLG1hcmtGdW5jdGlvbihmdW5jdGlvbihzZWVkLHJlc3VsdHMsY29udGV4dCx4bWwpe3ZhciB0ZW1wLGksZWxlbSxwcmVNYXA9W10scG9zdE1hcD1bXSxwcmVleGlzdGluZz1yZXN1bHRzLmxlbmd0aCxlbGVtcz1zZWVkfHxtdWx0aXBsZUNvbnRleHRzKHNlbGVjdG9yfHxcIipcIixjb250ZXh0Lm5vZGVUeXBlP1tjb250ZXh0XTpjb250ZXh0LFtdKSxtYXRjaGVySW49IXByZUZpbHRlcnx8IXNlZWQmJnNlbGVjdG9yP2VsZW1zOmNvbmRlbnNlKGVsZW1zLHByZU1hcCxwcmVGaWx0ZXIsY29udGV4dCx4bWwpLG1hdGNoZXJPdXQ9bWF0Y2hlcj9wb3N0RmluZGVyfHwoc2VlZD9wcmVGaWx0ZXI6cHJlZXhpc3Rpbmd8fHBvc3RGaWx0ZXIpP1tdOnJlc3VsdHM6bWF0Y2hlckluO2lmKG1hdGNoZXImJm1hdGNoZXIobWF0Y2hlckluLG1hdGNoZXJPdXQsY29udGV4dCx4bWwpLHBvc3RGaWx0ZXIpZm9yKHRlbXA9Y29uZGVuc2UobWF0Y2hlck91dCxwb3N0TWFwKSxwb3N0RmlsdGVyKHRlbXAsW10sY29udGV4dCx4bWwpLGk9dGVtcC5sZW5ndGg7aS0tOykoZWxlbT10ZW1wW2ldKSYmKG1hdGNoZXJPdXRbcG9zdE1hcFtpXV09IShtYXRjaGVySW5bcG9zdE1hcFtpXV09ZWxlbSkpO2lmKHNlZWQpe2lmKHBvc3RGaW5kZXJ8fHByZUZpbHRlcil7aWYocG9zdEZpbmRlcil7Zm9yKHRlbXA9W10saT1tYXRjaGVyT3V0Lmxlbmd0aDtpLS07KShlbGVtPW1hdGNoZXJPdXRbaV0pJiZ0ZW1wLnB1c2gobWF0Y2hlckluW2ldPWVsZW0pO3Bvc3RGaW5kZXIobnVsbCxtYXRjaGVyT3V0PVtdLHRlbXAseG1sKX1mb3IoaT1tYXRjaGVyT3V0Lmxlbmd0aDtpLS07KShlbGVtPW1hdGNoZXJPdXRbaV0pJiYodGVtcD1wb3N0RmluZGVyP2luZGV4T2Yoc2VlZCxlbGVtKTpwcmVNYXBbaV0pPi0xJiYoc2VlZFt0ZW1wXT0hKHJlc3VsdHNbdGVtcF09ZWxlbSkpfX1lbHNlIG1hdGNoZXJPdXQ9Y29uZGVuc2UobWF0Y2hlck91dD09PXJlc3VsdHM/bWF0Y2hlck91dC5zcGxpY2UocHJlZXhpc3RpbmcsbWF0Y2hlck91dC5sZW5ndGgpOm1hdGNoZXJPdXQpLHBvc3RGaW5kZXI/cG9zdEZpbmRlcihudWxsLHJlc3VsdHMsbWF0Y2hlck91dCx4bWwpOnB1c2guYXBwbHkocmVzdWx0cyxtYXRjaGVyT3V0KX0pfWZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKHRva2Vucyl7Zm9yKHZhciBjaGVja0NvbnRleHQsbWF0Y2hlcixqLGxlbj10b2tlbnMubGVuZ3RoLGxlYWRpbmdSZWxhdGl2ZT1FeHByLnJlbGF0aXZlW3Rva2Vuc1swXS50eXBlXSxpbXBsaWNpdFJlbGF0aXZlPWxlYWRpbmdSZWxhdGl2ZXx8RXhwci5yZWxhdGl2ZVtcIiBcIl0saT1sZWFkaW5nUmVsYXRpdmU/MTowLG1hdGNoQ29udGV4dD1hZGRDb21iaW5hdG9yKGZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtPT09Y2hlY2tDb250ZXh0fSxpbXBsaWNpdFJlbGF0aXZlLCEwKSxtYXRjaEFueUNvbnRleHQ9YWRkQ29tYmluYXRvcihmdW5jdGlvbihlbGVtKXtyZXR1cm4gaW5kZXhPZihjaGVja0NvbnRleHQsZWxlbSk+LTF9LGltcGxpY2l0UmVsYXRpdmUsITApLG1hdGNoZXJzPVtmdW5jdGlvbihlbGVtLGNvbnRleHQseG1sKXt2YXIgcmV0PSFsZWFkaW5nUmVsYXRpdmUmJih4bWx8fGNvbnRleHQhPT1vdXRlcm1vc3RDb250ZXh0KXx8KChjaGVja0NvbnRleHQ9Y29udGV4dCkubm9kZVR5cGU/bWF0Y2hDb250ZXh0KGVsZW0sY29udGV4dCx4bWwpOm1hdGNoQW55Q29udGV4dChlbGVtLGNvbnRleHQseG1sKSk7cmV0dXJuIGNoZWNrQ29udGV4dD1udWxsLHJldH1dO2xlbj5pO2krKylpZihtYXRjaGVyPUV4cHIucmVsYXRpdmVbdG9rZW5zW2ldLnR5cGVdKW1hdGNoZXJzPVthZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKG1hdGNoZXJzKSxtYXRjaGVyKV07ZWxzZXtpZihtYXRjaGVyPUV4cHIuZmlsdGVyW3Rva2Vuc1tpXS50eXBlXS5hcHBseShudWxsLHRva2Vuc1tpXS5tYXRjaGVzKSxtYXRjaGVyW2V4cGFuZG9dKXtmb3Ioaj0rK2k7bGVuPmomJiFFeHByLnJlbGF0aXZlW3Rva2Vuc1tqXS50eXBlXTtqKyspO3JldHVybiBzZXRNYXRjaGVyKGk+MSYmZWxlbWVudE1hdGNoZXIobWF0Y2hlcnMpLGk+MSYmdG9TZWxlY3Rvcih0b2tlbnMuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6XCIgXCI9PT10b2tlbnNbaS0yXS50eXBlP1wiKlwiOlwiXCJ9KSkucmVwbGFjZShydHJpbSxcIiQxXCIpLG1hdGNoZXIsaj5pJiZtYXRjaGVyRnJvbVRva2Vucyh0b2tlbnMuc2xpY2UoaSxqKSksbGVuPmomJm1hdGNoZXJGcm9tVG9rZW5zKHRva2Vucz10b2tlbnMuc2xpY2UoaikpLGxlbj5qJiZ0b1NlbGVjdG9yKHRva2VucykpfW1hdGNoZXJzLnB1c2gobWF0Y2hlcil9cmV0dXJuIGVsZW1lbnRNYXRjaGVyKG1hdGNoZXJzKX1mdW5jdGlvbiBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoZWxlbWVudE1hdGNoZXJzLHNldE1hdGNoZXJzKXt2YXIgYnlTZXQ9c2V0TWF0Y2hlcnMubGVuZ3RoPjAsYnlFbGVtZW50PWVsZW1lbnRNYXRjaGVycy5sZW5ndGg+MCxzdXBlck1hdGNoZXI9ZnVuY3Rpb24oc2VlZCxjb250ZXh0LHhtbCxyZXN1bHRzLG91dGVybW9zdCl7dmFyIGVsZW0saixtYXRjaGVyLG1hdGNoZWRDb3VudD0wLGk9XCIwXCIsdW5tYXRjaGVkPXNlZWQmJltdLHNldE1hdGNoZWQ9W10sY29udGV4dEJhY2t1cD1vdXRlcm1vc3RDb250ZXh0LGVsZW1zPXNlZWR8fGJ5RWxlbWVudCYmRXhwci5maW5kLlRBRyhcIipcIixvdXRlcm1vc3QpLGRpcnJ1bnNVbmlxdWU9ZGlycnVucys9bnVsbD09Y29udGV4dEJhY2t1cD8xOk1hdGgucmFuZG9tKCl8fC4xLGxlbj1lbGVtcy5sZW5ndGg7Zm9yKG91dGVybW9zdCYmKG91dGVybW9zdENvbnRleHQ9Y29udGV4dCE9PWRvY3VtZW50JiZjb250ZXh0KTtpIT09bGVuJiZudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKXtpZihieUVsZW1lbnQmJmVsZW0pe2ZvcihqPTA7bWF0Y2hlcj1lbGVtZW50TWF0Y2hlcnNbaisrXTspaWYobWF0Y2hlcihlbGVtLGNvbnRleHQseG1sKSl7cmVzdWx0cy5wdXNoKGVsZW0pO1xuYnJlYWt9b3V0ZXJtb3N0JiYoZGlycnVucz1kaXJydW5zVW5pcXVlKX1ieVNldCYmKChlbGVtPSFtYXRjaGVyJiZlbGVtKSYmbWF0Y2hlZENvdW50LS0sc2VlZCYmdW5tYXRjaGVkLnB1c2goZWxlbSkpfWlmKG1hdGNoZWRDb3VudCs9aSxieVNldCYmaSE9PW1hdGNoZWRDb3VudCl7Zm9yKGo9MDttYXRjaGVyPXNldE1hdGNoZXJzW2orK107KW1hdGNoZXIodW5tYXRjaGVkLHNldE1hdGNoZWQsY29udGV4dCx4bWwpO2lmKHNlZWQpe2lmKG1hdGNoZWRDb3VudD4wKWZvcig7aS0tOyl1bm1hdGNoZWRbaV18fHNldE1hdGNoZWRbaV18fChzZXRNYXRjaGVkW2ldPXBvcC5jYWxsKHJlc3VsdHMpKTtzZXRNYXRjaGVkPWNvbmRlbnNlKHNldE1hdGNoZWQpfXB1c2guYXBwbHkocmVzdWx0cyxzZXRNYXRjaGVkKSxvdXRlcm1vc3QmJiFzZWVkJiZzZXRNYXRjaGVkLmxlbmd0aD4wJiZtYXRjaGVkQ291bnQrc2V0TWF0Y2hlcnMubGVuZ3RoPjEmJlNpenpsZS51bmlxdWVTb3J0KHJlc3VsdHMpfXJldHVybiBvdXRlcm1vc3QmJihkaXJydW5zPWRpcnJ1bnNVbmlxdWUsb3V0ZXJtb3N0Q29udGV4dD1jb250ZXh0QmFja3VwKSx1bm1hdGNoZWR9O3JldHVybiBieVNldD9tYXJrRnVuY3Rpb24oc3VwZXJNYXRjaGVyKTpzdXBlck1hdGNoZXJ9dmFyIGksc3VwcG9ydCxFeHByLGdldFRleHQsaXNYTUwsdG9rZW5pemUsY29tcGlsZSxzZWxlY3Qsb3V0ZXJtb3N0Q29udGV4dCxzb3J0SW5wdXQsaGFzRHVwbGljYXRlLHNldERvY3VtZW50LGRvY3VtZW50LGRvY0VsZW0sZG9jdW1lbnRJc0hUTUwscmJ1Z2d5UVNBLHJidWdneU1hdGNoZXMsbWF0Y2hlcyxjb250YWlucyxleHBhbmRvPVwic2l6emxlXCIrMSpuZXcgRGF0ZSxwcmVmZXJyZWREb2M9d2luZG93LmRvY3VtZW50LGRpcnJ1bnM9MCxkb25lPTAsY2xhc3NDYWNoZT1jcmVhdGVDYWNoZSgpLHRva2VuQ2FjaGU9Y3JlYXRlQ2FjaGUoKSxjb21waWxlckNhY2hlPWNyZWF0ZUNhY2hlKCksc29ydE9yZGVyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iJiYoaGFzRHVwbGljYXRlPSEwKSwwfSxNQVhfTkVHQVRJVkU9MTw8MzEsaGFzT3duPXt9Lmhhc093blByb3BlcnR5LGFycj1bXSxwb3A9YXJyLnBvcCxwdXNoX25hdGl2ZT1hcnIucHVzaCxwdXNoPWFyci5wdXNoLHNsaWNlPWFyci5zbGljZSxpbmRleE9mPWZ1bmN0aW9uKGxpc3QsZWxlbSl7Zm9yKHZhciBpPTAsbGVuPWxpc3QubGVuZ3RoO2xlbj5pO2krKylpZihsaXN0W2ldPT09ZWxlbSlyZXR1cm4gaTtyZXR1cm4tMX0sYm9vbGVhbnM9XCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLHdoaXRlc3BhY2U9XCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLGNoYXJhY3RlckVuY29kaW5nPVwiKD86XFxcXFxcXFwufFtcXFxcdy1dfFteXFxcXHgwMC1cXFxceGEwXSkrXCIsaWRlbnRpZmllcj1jaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKFwid1wiLFwidyNcIiksYXR0cmlidXRlcz1cIlxcXFxbXCIrd2hpdGVzcGFjZStcIiooXCIrY2hhcmFjdGVyRW5jb2RpbmcrXCIpKD86XCIrd2hpdGVzcGFjZStcIiooWypeJHwhfl0/PSlcIit3aGl0ZXNwYWNlK1wiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIraWRlbnRpZmllcitcIikpfClcIit3aGl0ZXNwYWNlK1wiKlxcXFxdXCIscHNldWRvcz1cIjooXCIrY2hhcmFjdGVyRW5jb2RpbmcrXCIpKD86XFxcXCgoKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8KCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKClbXFxcXF1dfFwiK2F0dHJpYnV0ZXMrXCIpKil8LiopXFxcXCl8KVwiLHJ3aGl0ZXNwYWNlPW5ldyBSZWdFeHAod2hpdGVzcGFjZStcIitcIixcImdcIikscnRyaW09bmV3IFJlZ0V4cChcIl5cIit3aGl0ZXNwYWNlK1wiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIit3aGl0ZXNwYWNlK1wiKyRcIixcImdcIikscmNvbW1hPW5ldyBSZWdFeHAoXCJeXCIrd2hpdGVzcGFjZStcIiosXCIrd2hpdGVzcGFjZStcIipcIikscmNvbWJpbmF0b3JzPW5ldyBSZWdFeHAoXCJeXCIrd2hpdGVzcGFjZStcIiooWz4rfl18XCIrd2hpdGVzcGFjZStcIilcIit3aGl0ZXNwYWNlK1wiKlwiKSxyYXR0cmlidXRlUXVvdGVzPW5ldyBSZWdFeHAoXCI9XCIrd2hpdGVzcGFjZStcIiooW15cXFxcXSdcXFwiXSo/KVwiK3doaXRlc3BhY2UrXCIqXFxcXF1cIixcImdcIikscnBzZXVkbz1uZXcgUmVnRXhwKHBzZXVkb3MpLHJpZGVudGlmaWVyPW5ldyBSZWdFeHAoXCJeXCIraWRlbnRpZmllcitcIiRcIiksbWF0Y2hFeHByPXtJRDpuZXcgUmVnRXhwKFwiXiMoXCIrY2hhcmFjdGVyRW5jb2RpbmcrXCIpXCIpLENMQVNTOm5ldyBSZWdFeHAoXCJeXFxcXC4oXCIrY2hhcmFjdGVyRW5jb2RpbmcrXCIpXCIpLFRBRzpuZXcgUmVnRXhwKFwiXihcIitjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKFwid1wiLFwidypcIikrXCIpXCIpLEFUVFI6bmV3IFJlZ0V4cChcIl5cIithdHRyaWJ1dGVzKSxQU0VVRE86bmV3IFJlZ0V4cChcIl5cIitwc2V1ZG9zKSxDSElMRDpuZXcgUmVnRXhwKFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIit3aGl0ZXNwYWNlK1wiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIrd2hpdGVzcGFjZStcIiooPzooWystXXwpXCIrd2hpdGVzcGFjZStcIiooXFxcXGQrKXwpKVwiK3doaXRlc3BhY2UrXCIqXFxcXCl8KVwiLFwiaVwiKSxib29sOm5ldyBSZWdFeHAoXCJeKD86XCIrYm9vbGVhbnMrXCIpJFwiLFwiaVwiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cChcIl5cIit3aGl0ZXNwYWNlK1wiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFxcXChcIit3aGl0ZXNwYWNlK1wiKigoPzotXFxcXGQpP1xcXFxkKilcIit3aGl0ZXNwYWNlK1wiKlxcXFwpfCkoPz1bXi1dfCQpXCIsXCJpXCIpfSxyaW5wdXRzPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2kscmhlYWRlcj0vXmhcXGQkL2kscm5hdGl2ZT0vXltee10rXFx7XFxzKlxcW25hdGl2ZSBcXHcvLHJxdWlja0V4cHI9L14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8scnNpYmxpbmc9L1srfl0vLHJlc2NhcGU9Lyd8XFxcXC9nLHJ1bmVzY2FwZT1uZXcgUmVnRXhwKFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIrd2hpdGVzcGFjZStcIj98KFwiK3doaXRlc3BhY2UrXCIpfC4pXCIsXCJpZ1wiKSxmdW5lc2NhcGU9ZnVuY3Rpb24oXyxlc2NhcGVkLGVzY2FwZWRXaGl0ZXNwYWNlKXt2YXIgaGlnaD1cIjB4XCIrZXNjYXBlZC02NTUzNjtyZXR1cm4gaGlnaCE9PWhpZ2h8fGVzY2FwZWRXaGl0ZXNwYWNlP2VzY2FwZWQ6MD5oaWdoP1N0cmluZy5mcm9tQ2hhckNvZGUoaGlnaCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShoaWdoPj4xMHw1NTI5NiwxMDIzJmhpZ2h8NTYzMjApfSx1bmxvYWRIYW5kbGVyPWZ1bmN0aW9uKCl7c2V0RG9jdW1lbnQoKX07dHJ5e3B1c2guYXBwbHkoYXJyPXNsaWNlLmNhbGwocHJlZmVycmVkRG9jLmNoaWxkTm9kZXMpLHByZWZlcnJlZERvYy5jaGlsZE5vZGVzKSxhcnJbcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlKXtwdXNoPXthcHBseTphcnIubGVuZ3RoP2Z1bmN0aW9uKHRhcmdldCxlbHMpe3B1c2hfbmF0aXZlLmFwcGx5KHRhcmdldCxzbGljZS5jYWxsKGVscykpfTpmdW5jdGlvbih0YXJnZXQsZWxzKXtmb3IodmFyIGo9dGFyZ2V0Lmxlbmd0aCxpPTA7dGFyZ2V0W2orK109ZWxzW2krK107KTt0YXJnZXQubGVuZ3RoPWotMX19fXN1cHBvcnQ9U2l6emxlLnN1cHBvcnQ9e30saXNYTUw9U2l6emxlLmlzWE1MPWZ1bmN0aW9uKGVsZW0pe3ZhciBkb2N1bWVudEVsZW1lbnQ9ZWxlbSYmKGVsZW0ub3duZXJEb2N1bWVudHx8ZWxlbSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBkb2N1bWVudEVsZW1lbnQ/XCJIVE1MXCIhPT1kb2N1bWVudEVsZW1lbnQubm9kZU5hbWU6ITF9LHNldERvY3VtZW50PVNpenpsZS5zZXREb2N1bWVudD1mdW5jdGlvbihub2RlKXt2YXIgaGFzQ29tcGFyZSxwYXJlbnQsZG9jPW5vZGU/bm9kZS5vd25lckRvY3VtZW50fHxub2RlOnByZWZlcnJlZERvYztyZXR1cm4gZG9jIT09ZG9jdW1lbnQmJjk9PT1kb2Mubm9kZVR5cGUmJmRvYy5kb2N1bWVudEVsZW1lbnQ/KGRvY3VtZW50PWRvYyxkb2NFbGVtPWRvYy5kb2N1bWVudEVsZW1lbnQscGFyZW50PWRvYy5kZWZhdWx0VmlldyxwYXJlbnQmJnBhcmVudCE9PXBhcmVudC50b3AmJihwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcj9wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcInVubG9hZFwiLHVubG9hZEhhbmRsZXIsITEpOnBhcmVudC5hdHRhY2hFdmVudCYmcGFyZW50LmF0dGFjaEV2ZW50KFwib251bmxvYWRcIix1bmxvYWRIYW5kbGVyKSksZG9jdW1lbnRJc0hUTUw9IWlzWE1MKGRvYyksc3VwcG9ydC5hdHRyaWJ1dGVzPWFzc2VydChmdW5jdGlvbihkaXYpe3JldHVybiBkaXYuY2xhc3NOYW1lPVwiaVwiLCFkaXYuZ2V0QXR0cmlidXRlKFwiY2xhc3NOYW1lXCIpfSksc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZT1hc3NlcnQoZnVuY3Rpb24oZGl2KXtyZXR1cm4gZGl2LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KFwiXCIpKSwhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKS5sZW5ndGh9KSxzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWU9cm5hdGl2ZS50ZXN0KGRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxzdXBwb3J0LmdldEJ5SWQ9YXNzZXJ0KGZ1bmN0aW9uKGRpdil7cmV0dXJuIGRvY0VsZW0uYXBwZW5kQ2hpbGQoZGl2KS5pZD1leHBhbmRvLCFkb2MuZ2V0RWxlbWVudHNCeU5hbWV8fCFkb2MuZ2V0RWxlbWVudHNCeU5hbWUoZXhwYW5kbykubGVuZ3RofSksc3VwcG9ydC5nZXRCeUlkPyhFeHByLmZpbmQuSUQ9ZnVuY3Rpb24oaWQsY29udGV4dCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQmJmRvY3VtZW50SXNIVE1MKXt2YXIgbT1jb250ZXh0LmdldEVsZW1lbnRCeUlkKGlkKTtyZXR1cm4gbSYmbS5wYXJlbnROb2RlP1ttXTpbXX19LEV4cHIuZmlsdGVyLklEPWZ1bmN0aW9uKGlkKXt2YXIgYXR0cklkPWlkLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSk7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpPT09YXR0cklkfX0pOihkZWxldGUgRXhwci5maW5kLklELEV4cHIuZmlsdGVyLklEPWZ1bmN0aW9uKGlkKXt2YXIgYXR0cklkPWlkLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSk7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3ZhciBub2RlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUmJmVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO3JldHVybiBub2RlJiZub2RlLnZhbHVlPT09YXR0cklkfX0pLEV4cHIuZmluZC5UQUc9c3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbih0YWcsY29udGV4dCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWU/Y29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcpOnN1cHBvcnQucXNhP2NvbnRleHQucXVlcnlTZWxlY3RvckFsbCh0YWcpOnZvaWQgMH06ZnVuY3Rpb24odGFnLGNvbnRleHQpe3ZhciBlbGVtLHRtcD1bXSxpPTAscmVzdWx0cz1jb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZyk7aWYoXCIqXCI9PT10YWcpe2Zvcig7ZWxlbT1yZXN1bHRzW2krK107KTE9PT1lbGVtLm5vZGVUeXBlJiZ0bXAucHVzaChlbGVtKTtyZXR1cm4gdG1wfXJldHVybiByZXN1bHRzfSxFeHByLmZpbmQuQ0xBU1M9c3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihjbGFzc05hbWUsY29udGV4dCl7cmV0dXJuIGRvY3VtZW50SXNIVE1MP2NvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWUpOnZvaWQgMH0scmJ1Z2d5TWF0Y2hlcz1bXSxyYnVnZ3lRU0E9W10sKHN1cHBvcnQucXNhPXJuYXRpdmUudGVzdChkb2MucXVlcnlTZWxlY3RvckFsbCkpJiYoYXNzZXJ0KGZ1bmN0aW9uKGRpdil7ZG9jRWxlbS5hcHBlbmRDaGlsZChkaXYpLmlubmVySFRNTD1cIjxhIGlkPSdcIitleHBhbmRvK1wiJz48L2E+PHNlbGVjdCBpZD0nXCIrZXhwYW5kbytcIi1cXGZdJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PlwiLGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIikubGVuZ3RoJiZyYnVnZ3lRU0EucHVzaChcIlsqXiRdPVwiK3doaXRlc3BhY2UrXCIqKD86Jyd8XFxcIlxcXCIpXCIpLGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW3NlbGVjdGVkXVwiKS5sZW5ndGh8fHJidWdneVFTQS5wdXNoKFwiXFxcXFtcIit3aGl0ZXNwYWNlK1wiKig/OnZhbHVlfFwiK2Jvb2xlYW5zK1wiKVwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcIltpZH49XCIrZXhwYW5kbytcIi1dXCIpLmxlbmd0aHx8cmJ1Z2d5UVNBLnB1c2goXCJ+PVwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcIjpjaGVja2VkXCIpLmxlbmd0aHx8cmJ1Z2d5UVNBLnB1c2goXCI6Y2hlY2tlZFwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcImEjXCIrZXhwYW5kbytcIisqXCIpLmxlbmd0aHx8cmJ1Z2d5UVNBLnB1c2goXCIuIy4rWyt+XVwiKX0pLGFzc2VydChmdW5jdGlvbihkaXYpe3ZhciBpbnB1dD1kb2MuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO2lucHV0LnNldEF0dHJpYnV0ZShcInR5cGVcIixcImhpZGRlblwiKSxkaXYuYXBwZW5kQ2hpbGQoaW5wdXQpLnNldEF0dHJpYnV0ZShcIm5hbWVcIixcIkRcIiksZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT1kXVwiKS5sZW5ndGgmJnJidWdneVFTQS5wdXNoKFwibmFtZVwiK3doaXRlc3BhY2UrXCIqWypeJHwhfl0/PVwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aHx8cmJ1Z2d5UVNBLnB1c2goXCI6ZW5hYmxlZFwiLFwiOmRpc2FibGVkXCIpLGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiKiw6eFwiKSxyYnVnZ3lRU0EucHVzaChcIiwuKjpcIil9KSksKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yPXJuYXRpdmUudGVzdChtYXRjaGVzPWRvY0VsZW0ubWF0Y2hlc3x8ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yfHxkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3J8fGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpKSYmYXNzZXJ0KGZ1bmN0aW9uKGRpdil7c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaD1tYXRjaGVzLmNhbGwoZGl2LFwiZGl2XCIpLG1hdGNoZXMuY2FsbChkaXYsXCJbcyE9JyddOnhcIikscmJ1Z2d5TWF0Y2hlcy5wdXNoKFwiIT1cIixwc2V1ZG9zKX0pLHJidWdneVFTQT1yYnVnZ3lRU0EubGVuZ3RoJiZuZXcgUmVnRXhwKHJidWdneVFTQS5qb2luKFwifFwiKSkscmJ1Z2d5TWF0Y2hlcz1yYnVnZ3lNYXRjaGVzLmxlbmd0aCYmbmV3IFJlZ0V4cChyYnVnZ3lNYXRjaGVzLmpvaW4oXCJ8XCIpKSxoYXNDb21wYXJlPXJuYXRpdmUudGVzdChkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSxjb250YWlucz1oYXNDb21wYXJlfHxybmF0aXZlLnRlc3QoZG9jRWxlbS5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYWRvd249OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxidXA9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09YnVwfHwhKCFidXB8fDEhPT1idXAubm9kZVR5cGV8fCEoYWRvd24uY29udGFpbnM/YWRvd24uY29udGFpbnMoYnVwKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGJ1cCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKWZvcig7Yj1iLnBhcmVudE5vZGU7KWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxzb3J0T3JkZXI9aGFzQ29tcGFyZT9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBoYXNEdXBsaWNhdGU9ITAsMDt2YXIgY29tcGFyZT0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gY29tcGFyZT9jb21wYXJlOihjb21wYXJlPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmY29tcGFyZXx8IXN1cHBvcnQuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09Y29tcGFyZT9hPT09ZG9jfHxhLm93bmVyRG9jdW1lbnQ9PT1wcmVmZXJyZWREb2MmJmNvbnRhaW5zKHByZWZlcnJlZERvYyxhKT8tMTpiPT09ZG9jfHxiLm93bmVyRG9jdW1lbnQ9PT1wcmVmZXJyZWREb2MmJmNvbnRhaW5zKHByZWZlcnJlZERvYyxiKT8xOnNvcnRJbnB1dD9pbmRleE9mKHNvcnRJbnB1dCxhKS1pbmRleE9mKHNvcnRJbnB1dCxiKTowOjQmY29tcGFyZT8tMToxKX06ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gaGFzRHVwbGljYXRlPSEwLDA7dmFyIGN1cixpPTAsYXVwPWEucGFyZW50Tm9kZSxidXA9Yi5wYXJlbnROb2RlLGFwPVthXSxicD1bYl07aWYoIWF1cHx8IWJ1cClyZXR1cm4gYT09PWRvYz8tMTpiPT09ZG9jPzE6YXVwPy0xOmJ1cD8xOnNvcnRJbnB1dD9pbmRleE9mKHNvcnRJbnB1dCxhKS1pbmRleE9mKHNvcnRJbnB1dCxiKTowO2lmKGF1cD09PWJ1cClyZXR1cm4gc2libGluZ0NoZWNrKGEsYik7Zm9yKGN1cj1hO2N1cj1jdXIucGFyZW50Tm9kZTspYXAudW5zaGlmdChjdXIpO2ZvcihjdXI9YjtjdXI9Y3VyLnBhcmVudE5vZGU7KWJwLnVuc2hpZnQoY3VyKTtmb3IoO2FwW2ldPT09YnBbaV07KWkrKztyZXR1cm4gaT9zaWJsaW5nQ2hlY2soYXBbaV0sYnBbaV0pOmFwW2ldPT09cHJlZmVycmVkRG9jPy0xOmJwW2ldPT09cHJlZmVycmVkRG9jPzE6MH0sZG9jKTpkb2N1bWVudH0sU2l6emxlLm1hdGNoZXM9ZnVuY3Rpb24oZXhwcixlbGVtZW50cyl7cmV0dXJuIFNpenpsZShleHByLG51bGwsbnVsbCxlbGVtZW50cyl9LFNpenpsZS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oZWxlbSxleHByKXtpZigoZWxlbS5vd25lckRvY3VtZW50fHxlbGVtKSE9PWRvY3VtZW50JiZzZXREb2N1bWVudChlbGVtKSxleHByPWV4cHIucmVwbGFjZShyYXR0cmlidXRlUXVvdGVzLFwiPSckMSddXCIpLHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yJiZkb2N1bWVudElzSFRNTCYmKCFyYnVnZ3lNYXRjaGVzfHwhcmJ1Z2d5TWF0Y2hlcy50ZXN0KGV4cHIpKSYmKCFyYnVnZ3lRU0F8fCFyYnVnZ3lRU0EudGVzdChleHByKSkpdHJ5e3ZhciByZXQ9bWF0Y2hlcy5jYWxsKGVsZW0sZXhwcik7aWYocmV0fHxzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNofHxlbGVtLmRvY3VtZW50JiYxMSE9PWVsZW0uZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIHJldH1jYXRjaChlKXt9cmV0dXJuIFNpenpsZShleHByLGRvY3VtZW50LG51bGwsW2VsZW1dKS5sZW5ndGg+MH0sU2l6emxlLmNvbnRhaW5zPWZ1bmN0aW9uKGNvbnRleHQsZWxlbSl7cmV0dXJuKGNvbnRleHQub3duZXJEb2N1bWVudHx8Y29udGV4dCkhPT1kb2N1bWVudCYmc2V0RG9jdW1lbnQoY29udGV4dCksY29udGFpbnMoY29udGV4dCxlbGVtKX0sU2l6emxlLmF0dHI9ZnVuY3Rpb24oZWxlbSxuYW1lKXsoZWxlbS5vd25lckRvY3VtZW50fHxlbGVtKSE9PWRvY3VtZW50JiZzZXREb2N1bWVudChlbGVtKTt2YXIgZm49RXhwci5hdHRySGFuZGxlW25hbWUudG9Mb3dlckNhc2UoKV0sdmFsPWZuJiZoYXNPd24uY2FsbChFeHByLmF0dHJIYW5kbGUsbmFtZS50b0xvd2VyQ2FzZSgpKT9mbihlbGVtLG5hbWUsIWRvY3VtZW50SXNIVE1MKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PXZhbD92YWw6c3VwcG9ydC5hdHRyaWJ1dGVzfHwhZG9jdW1lbnRJc0hUTUw/ZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSk6KHZhbD1lbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpJiZ2YWwuc3BlY2lmaWVkP3ZhbC52YWx1ZTpudWxsfSxTaXp6bGUuZXJyb3I9ZnVuY3Rpb24obXNnKXt0aHJvdyBuZXcgRXJyb3IoXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIittc2cpfSxTaXp6bGUudW5pcXVlU29ydD1mdW5jdGlvbihyZXN1bHRzKXt2YXIgZWxlbSxkdXBsaWNhdGVzPVtdLGo9MCxpPTA7aWYoaGFzRHVwbGljYXRlPSFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMsc29ydElucHV0PSFzdXBwb3J0LnNvcnRTdGFibGUmJnJlc3VsdHMuc2xpY2UoMCkscmVzdWx0cy5zb3J0KHNvcnRPcmRlciksaGFzRHVwbGljYXRlKXtmb3IoO2VsZW09cmVzdWx0c1tpKytdOyllbGVtPT09cmVzdWx0c1tpXSYmKGo9ZHVwbGljYXRlcy5wdXNoKGkpKTtmb3IoO2otLTspcmVzdWx0cy5zcGxpY2UoZHVwbGljYXRlc1tqXSwxKX1yZXR1cm4gc29ydElucHV0PW51bGwscmVzdWx0c30sZ2V0VGV4dD1TaXp6bGUuZ2V0VGV4dD1mdW5jdGlvbihlbGVtKXt2YXIgbm9kZSxyZXQ9XCJcIixpPTAsbm9kZVR5cGU9ZWxlbS5ub2RlVHlwZTtpZihub2RlVHlwZSl7aWYoMT09PW5vZGVUeXBlfHw5PT09bm9kZVR5cGV8fDExPT09bm9kZVR5cGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlbGVtLnRleHRDb250ZW50KXJldHVybiBlbGVtLnRleHRDb250ZW50O2ZvcihlbGVtPWVsZW0uZmlyc3RDaGlsZDtlbGVtO2VsZW09ZWxlbS5uZXh0U2libGluZylyZXQrPWdldFRleHQoZWxlbSl9ZWxzZSBpZigzPT09bm9kZVR5cGV8fDQ9PT1ub2RlVHlwZSlyZXR1cm4gZWxlbS5ub2RlVmFsdWV9ZWxzZSBmb3IoO25vZGU9ZWxlbVtpKytdOylyZXQrPWdldFRleHQobm9kZSk7cmV0dXJuIHJldH0sRXhwcj1TaXp6bGUuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86bWFya0Z1bmN0aW9uLG1hdGNoOm1hdGNoRXhwcixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6e1wiPlwiOntkaXI6XCJwYXJlbnROb2RlXCIsZmlyc3Q6ITB9LFwiIFwiOntkaXI6XCJwYXJlbnROb2RlXCJ9LFwiK1wiOntkaXI6XCJwcmV2aW91c1NpYmxpbmdcIixmaXJzdDohMH0sXCJ+XCI6e2RpcjpcInByZXZpb3VzU2libGluZ1wifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKG1hdGNoKXtyZXR1cm4gbWF0Y2hbMV09bWF0Y2hbMV0ucmVwbGFjZShydW5lc2NhcGUsZnVuZXNjYXBlKSxtYXRjaFszXT0obWF0Y2hbM118fG1hdGNoWzRdfHxtYXRjaFs1XXx8XCJcIikucmVwbGFjZShydW5lc2NhcGUsZnVuZXNjYXBlKSxcIn49XCI9PT1tYXRjaFsyXSYmKG1hdGNoWzNdPVwiIFwiK21hdGNoWzNdK1wiIFwiKSxtYXRjaC5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihtYXRjaCl7cmV0dXJuIG1hdGNoWzFdPW1hdGNoWzFdLnRvTG93ZXJDYXNlKCksXCJudGhcIj09PW1hdGNoWzFdLnNsaWNlKDAsMyk/KG1hdGNoWzNdfHxTaXp6bGUuZXJyb3IobWF0Y2hbMF0pLG1hdGNoWzRdPSsobWF0Y2hbNF0/bWF0Y2hbNV0rKG1hdGNoWzZdfHwxKToyKihcImV2ZW5cIj09PW1hdGNoWzNdfHxcIm9kZFwiPT09bWF0Y2hbM10pKSxtYXRjaFs1XT0rKG1hdGNoWzddK21hdGNoWzhdfHxcIm9kZFwiPT09bWF0Y2hbM10pKTptYXRjaFszXSYmU2l6emxlLmVycm9yKG1hdGNoWzBdKSxtYXRjaH0sUFNFVURPOmZ1bmN0aW9uKG1hdGNoKXt2YXIgZXhjZXNzLHVucXVvdGVkPSFtYXRjaFs2XSYmbWF0Y2hbMl07cmV0dXJuIG1hdGNoRXhwci5DSElMRC50ZXN0KG1hdGNoWzBdKT9udWxsOihtYXRjaFszXT9tYXRjaFsyXT1tYXRjaFs0XXx8bWF0Y2hbNV18fFwiXCI6dW5xdW90ZWQmJnJwc2V1ZG8udGVzdCh1bnF1b3RlZCkmJihleGNlc3M9dG9rZW5pemUodW5xdW90ZWQsITApKSYmKGV4Y2Vzcz11bnF1b3RlZC5pbmRleE9mKFwiKVwiLHVucXVvdGVkLmxlbmd0aC1leGNlc3MpLXVucXVvdGVkLmxlbmd0aCkmJihtYXRjaFswXT1tYXRjaFswXS5zbGljZSgwLGV4Y2VzcyksbWF0Y2hbMl09dW5xdW90ZWQuc2xpY2UoMCxleGNlc3MpKSxtYXRjaC5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKG5vZGVOYW1lU2VsZWN0b3Ipe3ZhciBub2RlTmFtZT1ub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSkudG9Mb3dlckNhc2UoKTtyZXR1cm5cIipcIj09PW5vZGVOYW1lU2VsZWN0b3I/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0ubm9kZU5hbWUmJmVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PW5vZGVOYW1lfX0sQ0xBU1M6ZnVuY3Rpb24oY2xhc3NOYW1lKXt2YXIgcGF0dGVybj1jbGFzc0NhY2hlW2NsYXNzTmFtZStcIiBcIl07cmV0dXJuIHBhdHRlcm58fChwYXR0ZXJuPW5ldyBSZWdFeHAoXCIoXnxcIit3aGl0ZXNwYWNlK1wiKVwiK2NsYXNzTmFtZStcIihcIit3aGl0ZXNwYWNlK1wifCQpXCIpKSYmY2xhc3NDYWNoZShjbGFzc05hbWUsZnVuY3Rpb24oZWxlbSl7cmV0dXJuIHBhdHRlcm4udGVzdChcInN0cmluZ1wiPT10eXBlb2YgZWxlbS5jbGFzc05hbWUmJmVsZW0uY2xhc3NOYW1lfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUmJmVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIil8fFwiXCIpfSl9LEFUVFI6ZnVuY3Rpb24obmFtZSxvcGVyYXRvcixjaGVjayl7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3ZhciByZXN1bHQ9U2l6emxlLmF0dHIoZWxlbSxuYW1lKTtyZXR1cm4gbnVsbD09cmVzdWx0P1wiIT1cIj09PW9wZXJhdG9yOm9wZXJhdG9yPyhyZXN1bHQrPVwiXCIsXCI9XCI9PT1vcGVyYXRvcj9yZXN1bHQ9PT1jaGVjazpcIiE9XCI9PT1vcGVyYXRvcj9yZXN1bHQhPT1jaGVjazpcIl49XCI9PT1vcGVyYXRvcj9jaGVjayYmMD09PXJlc3VsdC5pbmRleE9mKGNoZWNrKTpcIio9XCI9PT1vcGVyYXRvcj9jaGVjayYmcmVzdWx0LmluZGV4T2YoY2hlY2spPi0xOlwiJD1cIj09PW9wZXJhdG9yP2NoZWNrJiZyZXN1bHQuc2xpY2UoLWNoZWNrLmxlbmd0aCk9PT1jaGVjazpcIn49XCI9PT1vcGVyYXRvcj8oXCIgXCIrcmVzdWx0LnJlcGxhY2UocndoaXRlc3BhY2UsXCIgXCIpK1wiIFwiKS5pbmRleE9mKGNoZWNrKT4tMTpcInw9XCI9PT1vcGVyYXRvcj9yZXN1bHQ9PT1jaGVja3x8cmVzdWx0LnNsaWNlKDAsY2hlY2subGVuZ3RoKzEpPT09Y2hlY2srXCItXCI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24odHlwZSx3aGF0LGFyZ3VtZW50LGZpcnN0LGxhc3Qpe3ZhciBzaW1wbGU9XCJudGhcIiE9PXR5cGUuc2xpY2UoMCwzKSxmb3J3YXJkPVwibGFzdFwiIT09dHlwZS5zbGljZSgtNCksb2ZUeXBlPVwib2YtdHlwZVwiPT09d2hhdDtyZXR1cm4gMT09PWZpcnN0JiYwPT09bGFzdD9mdW5jdGlvbihlbGVtKXtyZXR1cm4hIWVsZW0ucGFyZW50Tm9kZX06ZnVuY3Rpb24oZWxlbSxjb250ZXh0LHhtbCl7dmFyIGNhY2hlLG91dGVyQ2FjaGUsbm9kZSxkaWZmLG5vZGVJbmRleCxzdGFydCxkaXI9c2ltcGxlIT09Zm9yd2FyZD9cIm5leHRTaWJsaW5nXCI6XCJwcmV2aW91c1NpYmxpbmdcIixwYXJlbnQ9ZWxlbS5wYXJlbnROb2RlLG5hbWU9b2ZUeXBlJiZlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksdXNlQ2FjaGU9IXhtbCYmIW9mVHlwZTtpZihwYXJlbnQpe2lmKHNpbXBsZSl7Zm9yKDtkaXI7KXtmb3Iobm9kZT1lbGVtO25vZGU9bm9kZVtkaXJdOylpZihvZlR5cGU/bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09bmFtZToxPT09bm9kZS5ub2RlVHlwZSlyZXR1cm4hMTtzdGFydD1kaXI9XCJvbmx5XCI9PT10eXBlJiYhc3RhcnQmJlwibmV4dFNpYmxpbmdcIn1yZXR1cm4hMH1pZihzdGFydD1bZm9yd2FyZD9wYXJlbnQuZmlyc3RDaGlsZDpwYXJlbnQubGFzdENoaWxkXSxmb3J3YXJkJiZ1c2VDYWNoZSl7Zm9yKG91dGVyQ2FjaGU9cGFyZW50W2V4cGFuZG9dfHwocGFyZW50W2V4cGFuZG9dPXt9KSxjYWNoZT1vdXRlckNhY2hlW3R5cGVdfHxbXSxub2RlSW5kZXg9Y2FjaGVbMF09PT1kaXJydW5zJiZjYWNoZVsxXSxkaWZmPWNhY2hlWzBdPT09ZGlycnVucyYmY2FjaGVbMl0sbm9kZT1ub2RlSW5kZXgmJnBhcmVudC5jaGlsZE5vZGVzW25vZGVJbmRleF07bm9kZT0rK25vZGVJbmRleCYmbm9kZSYmbm9kZVtkaXJdfHwoZGlmZj1ub2RlSW5kZXg9MCl8fHN0YXJ0LnBvcCgpOylpZigxPT09bm9kZS5ub2RlVHlwZSYmKytkaWZmJiZub2RlPT09ZWxlbSl7b3V0ZXJDYWNoZVt0eXBlXT1bZGlycnVucyxub2RlSW5kZXgsZGlmZl07YnJlYWt9fWVsc2UgaWYodXNlQ2FjaGUmJihjYWNoZT0oZWxlbVtleHBhbmRvXXx8KGVsZW1bZXhwYW5kb109e30pKVt0eXBlXSkmJmNhY2hlWzBdPT09ZGlycnVucylkaWZmPWNhY2hlWzFdO2Vsc2UgZm9yKDsobm9kZT0rK25vZGVJbmRleCYmbm9kZSYmbm9kZVtkaXJdfHwoZGlmZj1ub2RlSW5kZXg9MCl8fHN0YXJ0LnBvcCgpKSYmKChvZlR5cGU/bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09bmFtZToxIT09bm9kZS5ub2RlVHlwZSl8fCErK2RpZmZ8fCh1c2VDYWNoZSYmKChub2RlW2V4cGFuZG9dfHwobm9kZVtleHBhbmRvXT17fSkpW3R5cGVdPVtkaXJydW5zLGRpZmZdKSxub2RlIT09ZWxlbSkpOyk7cmV0dXJuIGRpZmYtPWxhc3QsZGlmZj09PWZpcnN0fHxkaWZmJWZpcnN0PT09MCYmZGlmZi9maXJzdD49MH19fSxQU0VVRE86ZnVuY3Rpb24ocHNldWRvLGFyZ3VtZW50KXt2YXIgYXJncyxmbj1FeHByLnBzZXVkb3NbcHNldWRvXXx8RXhwci5zZXRGaWx0ZXJzW3BzZXVkby50b0xvd2VyQ2FzZSgpXXx8U2l6emxlLmVycm9yKFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIitwc2V1ZG8pO3JldHVybiBmbltleHBhbmRvXT9mbihhcmd1bWVudCk6Zm4ubGVuZ3RoPjE/KGFyZ3M9W3BzZXVkbyxwc2V1ZG8sXCJcIixhcmd1bWVudF0sRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KHBzZXVkby50b0xvd2VyQ2FzZSgpKT9tYXJrRnVuY3Rpb24oZnVuY3Rpb24oc2VlZCxtYXRjaGVzKXtmb3IodmFyIGlkeCxtYXRjaGVkPWZuKHNlZWQsYXJndW1lbnQpLGk9bWF0Y2hlZC5sZW5ndGg7aS0tOylpZHg9aW5kZXhPZihzZWVkLG1hdGNoZWRbaV0pLHNlZWRbaWR4XT0hKG1hdGNoZXNbaWR4XT1tYXRjaGVkW2ldKX0pOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBmbihlbGVtLDAsYXJncyl9KTpmbn19LHBzZXVkb3M6e25vdDptYXJrRnVuY3Rpb24oZnVuY3Rpb24oc2VsZWN0b3Ipe3ZhciBpbnB1dD1bXSxyZXN1bHRzPVtdLG1hdGNoZXI9Y29tcGlsZShzZWxlY3Rvci5yZXBsYWNlKHJ0cmltLFwiJDFcIikpO3JldHVybiBtYXRjaGVyW2V4cGFuZG9dP21hcmtGdW5jdGlvbihmdW5jdGlvbihzZWVkLG1hdGNoZXMsY29udGV4dCx4bWwpe2Zvcih2YXIgZWxlbSx1bm1hdGNoZWQ9bWF0Y2hlcihzZWVkLG51bGwseG1sLFtdKSxpPXNlZWQubGVuZ3RoO2ktLTspKGVsZW09dW5tYXRjaGVkW2ldKSYmKHNlZWRbaV09IShtYXRjaGVzW2ldPWVsZW0pKX0pOmZ1bmN0aW9uKGVsZW0sY29udGV4dCx4bWwpe3JldHVybiBpbnB1dFswXT1lbGVtLG1hdGNoZXIoaW5wdXQsbnVsbCx4bWwscmVzdWx0cyksaW5wdXRbMF09bnVsbCwhcmVzdWx0cy5wb3AoKX19KSxoYXM6bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKHNlbGVjdG9yKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7cmV0dXJuIFNpenpsZShzZWxlY3RvcixlbGVtKS5sZW5ndGg+MH19KSxjb250YWluczptYXJrRnVuY3Rpb24oZnVuY3Rpb24odGV4dCl7cmV0dXJuIHRleHQ9dGV4dC5yZXBsYWNlKHJ1bmVzY2FwZSxmdW5lc2NhcGUpLGZ1bmN0aW9uKGVsZW0pe3JldHVybihlbGVtLnRleHRDb250ZW50fHxlbGVtLmlubmVyVGV4dHx8Z2V0VGV4dChlbGVtKSkuaW5kZXhPZih0ZXh0KT4tMX19KSxsYW5nOm1hcmtGdW5jdGlvbihmdW5jdGlvbihsYW5nKXtyZXR1cm4gcmlkZW50aWZpZXIudGVzdChsYW5nfHxcIlwiKXx8U2l6emxlLmVycm9yKFwidW5zdXBwb3J0ZWQgbGFuZzogXCIrbGFuZyksbGFuZz1sYW5nLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlbGVtKXt2YXIgZWxlbUxhbmc7ZG8gaWYoZWxlbUxhbmc9ZG9jdW1lbnRJc0hUTUw/ZWxlbS5sYW5nOmVsZW0uZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIil8fGVsZW0uZ2V0QXR0cmlidXRlKFwibGFuZ1wiKSlyZXR1cm4gZWxlbUxhbmc9ZWxlbUxhbmcudG9Mb3dlckNhc2UoKSxlbGVtTGFuZz09PWxhbmd8fDA9PT1lbGVtTGFuZy5pbmRleE9mKGxhbmcrXCItXCIpO3doaWxlKChlbGVtPWVsZW0ucGFyZW50Tm9kZSkmJjE9PT1lbGVtLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oZWxlbSl7dmFyIGhhc2g9d2luZG93LmxvY2F0aW9uJiZ3aW5kb3cubG9jYXRpb24uaGFzaDtyZXR1cm4gaGFzaCYmaGFzaC5zbGljZSgxKT09PWVsZW0uaWR9LHJvb3Q6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW09PT1kb2NFbGVtfSxmb2N1czpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbT09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJighZG9jdW1lbnQuaGFzRm9jdXN8fGRvY3VtZW50Lmhhc0ZvY3VzKCkpJiYhIShlbGVtLnR5cGV8fGVsZW0uaHJlZnx8fmVsZW0udGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oZWxlbSl7dmFyIG5vZGVOYW1lPWVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1ub2RlTmFtZSYmISFlbGVtLmNoZWNrZWR8fFwib3B0aW9uXCI9PT1ub2RlTmFtZSYmISFlbGVtLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5wYXJlbnROb2RlJiZlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxlbGVtLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGVsZW0pe2ZvcihlbGVtPWVsZW0uZmlyc3RDaGlsZDtlbGVtO2VsZW09ZWxlbS5uZXh0U2libGluZylpZihlbGVtLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihlbGVtKXtyZXR1cm4hRXhwci5wc2V1ZG9zLmVtcHR5KGVsZW0pfSxoZWFkZXI6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIHJoZWFkZXIudGVzdChlbGVtLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIHJpbnB1dHMudGVzdChlbGVtLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGVsZW0pe3ZhciBuYW1lPWVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1uYW1lJiZcImJ1dHRvblwiPT09ZWxlbS50eXBlfHxcImJ1dHRvblwiPT09bmFtZX0sdGV4dDpmdW5jdGlvbihlbGVtKXt2YXIgYXR0cjtyZXR1cm5cImlucHV0XCI9PT1lbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJlwidGV4dFwiPT09ZWxlbS50eXBlJiYobnVsbD09KGF0dHI9ZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKXx8XCJ0ZXh0XCI9PT1hdHRyLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKG1hdGNoSW5kZXhlcyxsZW5ndGgpe3JldHVybltsZW5ndGgtMV19KSxlcTpjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKG1hdGNoSW5kZXhlcyxsZW5ndGgsYXJndW1lbnQpe3JldHVyblswPmFyZ3VtZW50P2FyZ3VtZW50K2xlbmd0aDphcmd1bWVudF19KSxldmVuOmNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24obWF0Y2hJbmRleGVzLGxlbmd0aCl7Zm9yKHZhciBpPTA7bGVuZ3RoPmk7aSs9MiltYXRjaEluZGV4ZXMucHVzaChpKTtyZXR1cm4gbWF0Y2hJbmRleGVzfSksb2RkOmNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24obWF0Y2hJbmRleGVzLGxlbmd0aCl7Zm9yKHZhciBpPTE7bGVuZ3RoPmk7aSs9MiltYXRjaEluZGV4ZXMucHVzaChpKTtyZXR1cm4gbWF0Y2hJbmRleGVzfSksbHQ6Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbihtYXRjaEluZGV4ZXMsbGVuZ3RoLGFyZ3VtZW50KXtmb3IodmFyIGk9MD5hcmd1bWVudD9hcmd1bWVudCtsZW5ndGg6YXJndW1lbnQ7LS1pPj0wOyltYXRjaEluZGV4ZXMucHVzaChpKTtyZXR1cm4gbWF0Y2hJbmRleGVzfSksZ3Q6Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbihtYXRjaEluZGV4ZXMsbGVuZ3RoLGFyZ3VtZW50KXtmb3IodmFyIGk9MD5hcmd1bWVudD9hcmd1bWVudCtsZW5ndGg6YXJndW1lbnQ7KytpPGxlbmd0aDspbWF0Y2hJbmRleGVzLnB1c2goaSk7cmV0dXJuIG1hdGNoSW5kZXhlc30pfX0sRXhwci5wc2V1ZG9zLm50aD1FeHByLnBzZXVkb3MuZXE7Zm9yKGkgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pRXhwci5wc2V1ZG9zW2ldPWNyZWF0ZUlucHV0UHNldWRvKGkpO2ZvcihpIGlue3N1Ym1pdDohMCxyZXNldDohMH0pRXhwci5wc2V1ZG9zW2ldPWNyZWF0ZUJ1dHRvblBzZXVkbyhpKTtyZXR1cm4gc2V0RmlsdGVycy5wcm90b3R5cGU9RXhwci5maWx0ZXJzPUV4cHIucHNldWRvcyxFeHByLnNldEZpbHRlcnM9bmV3IHNldEZpbHRlcnMsdG9rZW5pemU9U2l6emxlLnRva2VuaXplPWZ1bmN0aW9uKHNlbGVjdG9yLHBhcnNlT25seSl7dmFyIG1hdGNoZWQsbWF0Y2gsdG9rZW5zLHR5cGUsc29GYXIsZ3JvdXBzLHByZUZpbHRlcnMsY2FjaGVkPXRva2VuQ2FjaGVbc2VsZWN0b3IrXCIgXCJdO2lmKGNhY2hlZClyZXR1cm4gcGFyc2VPbmx5PzA6Y2FjaGVkLnNsaWNlKDApO2Zvcihzb0Zhcj1zZWxlY3Rvcixncm91cHM9W10scHJlRmlsdGVycz1FeHByLnByZUZpbHRlcjtzb0ZhcjspeyghbWF0Y2hlZHx8KG1hdGNoPXJjb21tYS5leGVjKHNvRmFyKSkpJiYobWF0Y2gmJihzb0Zhcj1zb0Zhci5zbGljZShtYXRjaFswXS5sZW5ndGgpfHxzb0ZhciksZ3JvdXBzLnB1c2godG9rZW5zPVtdKSksbWF0Y2hlZD0hMSwobWF0Y2g9cmNvbWJpbmF0b3JzLmV4ZWMoc29GYXIpKSYmKG1hdGNoZWQ9bWF0Y2guc2hpZnQoKSx0b2tlbnMucHVzaCh7dmFsdWU6bWF0Y2hlZCx0eXBlOm1hdGNoWzBdLnJlcGxhY2UocnRyaW0sXCIgXCIpfSksc29GYXI9c29GYXIuc2xpY2UobWF0Y2hlZC5sZW5ndGgpKTtmb3IodHlwZSBpbiBFeHByLmZpbHRlcikhKG1hdGNoPW1hdGNoRXhwclt0eXBlXS5leGVjKHNvRmFyKSl8fHByZUZpbHRlcnNbdHlwZV0mJiEobWF0Y2g9cHJlRmlsdGVyc1t0eXBlXShtYXRjaCkpfHwobWF0Y2hlZD1tYXRjaC5zaGlmdCgpLHRva2Vucy5wdXNoKHt2YWx1ZTptYXRjaGVkLHR5cGU6dHlwZSxtYXRjaGVzOm1hdGNofSksc29GYXI9c29GYXIuc2xpY2UobWF0Y2hlZC5sZW5ndGgpKTtpZighbWF0Y2hlZClicmVha31yZXR1cm4gcGFyc2VPbmx5P3NvRmFyLmxlbmd0aDpzb0Zhcj9TaXp6bGUuZXJyb3Ioc2VsZWN0b3IpOnRva2VuQ2FjaGUoc2VsZWN0b3IsZ3JvdXBzKS5zbGljZSgwKX0sY29tcGlsZT1TaXp6bGUuY29tcGlsZT1mdW5jdGlvbihzZWxlY3RvcixtYXRjaCl7dmFyIGksc2V0TWF0Y2hlcnM9W10sZWxlbWVudE1hdGNoZXJzPVtdLGNhY2hlZD1jb21waWxlckNhY2hlW3NlbGVjdG9yK1wiIFwiXTtpZighY2FjaGVkKXtmb3IobWF0Y2h8fChtYXRjaD10b2tlbml6ZShzZWxlY3RvcikpLGk9bWF0Y2gubGVuZ3RoO2ktLTspY2FjaGVkPW1hdGNoZXJGcm9tVG9rZW5zKG1hdGNoW2ldKSxjYWNoZWRbZXhwYW5kb10/c2V0TWF0Y2hlcnMucHVzaChjYWNoZWQpOmVsZW1lbnRNYXRjaGVycy5wdXNoKGNhY2hlZCk7Y2FjaGVkPWNvbXBpbGVyQ2FjaGUoc2VsZWN0b3IsbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKGVsZW1lbnRNYXRjaGVycyxzZXRNYXRjaGVycykpLGNhY2hlZC5zZWxlY3Rvcj1zZWxlY3Rvcn1yZXR1cm4gY2FjaGVkfSxzZWxlY3Q9U2l6emxlLnNlbGVjdD1mdW5jdGlvbihzZWxlY3Rvcixjb250ZXh0LHJlc3VsdHMsc2VlZCl7dmFyIGksdG9rZW5zLHRva2VuLHR5cGUsZmluZCxjb21waWxlZD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZWxlY3RvciYmc2VsZWN0b3IsbWF0Y2g9IXNlZWQmJnRva2VuaXplKHNlbGVjdG9yPWNvbXBpbGVkLnNlbGVjdG9yfHxzZWxlY3Rvcik7aWYocmVzdWx0cz1yZXN1bHRzfHxbXSwxPT09bWF0Y2gubGVuZ3RoKXtpZih0b2tlbnM9bWF0Y2hbMF09bWF0Y2hbMF0uc2xpY2UoMCksdG9rZW5zLmxlbmd0aD4yJiZcIklEXCI9PT0odG9rZW49dG9rZW5zWzBdKS50eXBlJiZzdXBwb3J0LmdldEJ5SWQmJjk9PT1jb250ZXh0Lm5vZGVUeXBlJiZkb2N1bWVudElzSFRNTCYmRXhwci5yZWxhdGl2ZVt0b2tlbnNbMV0udHlwZV0pe2lmKGNvbnRleHQ9KEV4cHIuZmluZC5JRCh0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSksY29udGV4dCl8fFtdKVswXSwhY29udGV4dClyZXR1cm4gcmVzdWx0cztjb21waWxlZCYmKGNvbnRleHQ9Y29udGV4dC5wYXJlbnROb2RlKSxzZWxlY3Rvcj1zZWxlY3Rvci5zbGljZSh0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWZvcihpPW1hdGNoRXhwci5uZWVkc0NvbnRleHQudGVzdChzZWxlY3Rvcik/MDp0b2tlbnMubGVuZ3RoO2ktLSYmKHRva2VuPXRva2Vuc1tpXSwhRXhwci5yZWxhdGl2ZVt0eXBlPXRva2VuLnR5cGVdKTspaWYoKGZpbmQ9RXhwci5maW5kW3R5cGVdKSYmKHNlZWQ9ZmluZCh0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSkscnNpYmxpbmcudGVzdCh0b2tlbnNbMF0udHlwZSkmJnRlc3RDb250ZXh0KGNvbnRleHQucGFyZW50Tm9kZSl8fGNvbnRleHQpKSl7aWYodG9rZW5zLnNwbGljZShpLDEpLHNlbGVjdG9yPXNlZWQubGVuZ3RoJiZ0b1NlbGVjdG9yKHRva2VucyksIXNlbGVjdG9yKXJldHVybiBwdXNoLmFwcGx5KHJlc3VsdHMsc2VlZCkscmVzdWx0czticmVha319cmV0dXJuKGNvbXBpbGVkfHxjb21waWxlKHNlbGVjdG9yLG1hdGNoKSkoc2VlZCxjb250ZXh0LCFkb2N1bWVudElzSFRNTCxyZXN1bHRzLHJzaWJsaW5nLnRlc3Qoc2VsZWN0b3IpJiZ0ZXN0Q29udGV4dChjb250ZXh0LnBhcmVudE5vZGUpfHxjb250ZXh0KSxyZXN1bHRzfSxzdXBwb3J0LnNvcnRTdGFibGU9ZXhwYW5kby5zcGxpdChcIlwiKS5zb3J0KHNvcnRPcmRlcikuam9pbihcIlwiKT09PWV4cGFuZG8sc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzPSEhaGFzRHVwbGljYXRlLHNldERvY3VtZW50KCksc3VwcG9ydC5zb3J0RGV0YWNoZWQ9YXNzZXJ0KGZ1bmN0aW9uKGRpdjEpe3JldHVybiAxJmRpdjEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSl9KSxhc3NlcnQoZnVuY3Rpb24oZGl2KXtyZXR1cm4gZGl2LmlubmVySFRNTD1cIjxhIGhyZWY9JyMnPjwvYT5cIixcIiNcIj09PWRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcImhyZWZcIil9KXx8YWRkSGFuZGxlKFwidHlwZXxocmVmfGhlaWdodHx3aWR0aFwiLGZ1bmN0aW9uKGVsZW0sbmFtZSxpc1hNTCl7cmV0dXJuIGlzWE1MP3ZvaWQgMDplbGVtLmdldEF0dHJpYnV0ZShuYW1lLFwidHlwZVwiPT09bmFtZS50b0xvd2VyQ2FzZSgpPzE6Mil9KSxzdXBwb3J0LmF0dHJpYnV0ZXMmJmFzc2VydChmdW5jdGlvbihkaXYpe3JldHVybiBkaXYuaW5uZXJIVE1MPVwiPGlucHV0Lz5cIixkaXYuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIpLFwiXCI9PT1kaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKX0pfHxhZGRIYW5kbGUoXCJ2YWx1ZVwiLGZ1bmN0aW9uKGVsZW0sbmFtZSxpc1hNTCl7cmV0dXJuIGlzWE1MfHxcImlucHV0XCIhPT1lbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/dm9pZCAwOmVsZW0uZGVmYXVsdFZhbHVlfSksYXNzZXJ0KGZ1bmN0aW9uKGRpdil7cmV0dXJuIG51bGw9PWRpdi5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKX0pfHxhZGRIYW5kbGUoYm9vbGVhbnMsZnVuY3Rpb24oZWxlbSxuYW1lLGlzWE1MKXt2YXIgdmFsO3JldHVybiBpc1hNTD92b2lkIDA6ZWxlbVtuYW1lXT09PSEwP25hbWUudG9Mb3dlckNhc2UoKToodmFsPWVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkmJnZhbC5zcGVjaWZpZWQ/dmFsLnZhbHVlOm51bGx9KSxTaXp6bGV9KHdpbmRvdyk7alF1ZXJ5LmZpbmQ9U2l6emxlLGpRdWVyeS5leHByPVNpenpsZS5zZWxlY3RvcnMsalF1ZXJ5LmV4cHJbXCI6XCJdPWpRdWVyeS5leHByLnBzZXVkb3MsalF1ZXJ5LnVuaXF1ZT1TaXp6bGUudW5pcXVlU29ydCxqUXVlcnkudGV4dD1TaXp6bGUuZ2V0VGV4dCxqUXVlcnkuaXNYTUxEb2M9U2l6emxlLmlzWE1MLGpRdWVyeS5jb250YWlucz1TaXp6bGUuY29udGFpbnM7dmFyIHJuZWVkc0NvbnRleHQ9alF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHJzaW5nbGVUYWc9L148KFxcdyspXFxzKlxcLz8+KD86PFxcL1xcMT58KSQvLHJpc1NpbXBsZT0vXi5bXjojXFxbXFwuLF0qJC87alF1ZXJ5LmZpbHRlcj1mdW5jdGlvbihleHByLGVsZW1zLG5vdCl7dmFyIGVsZW09ZWxlbXNbMF07cmV0dXJuIG5vdCYmKGV4cHI9XCI6bm90KFwiK2V4cHIrXCIpXCIpLDE9PT1lbGVtcy5sZW5ndGgmJjE9PT1lbGVtLm5vZGVUeXBlP2pRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvcihlbGVtLGV4cHIpP1tlbGVtXTpbXTpqUXVlcnkuZmluZC5tYXRjaGVzKGV4cHIsalF1ZXJ5LmdyZXAoZWxlbXMsZnVuY3Rpb24oZWxlbSl7cmV0dXJuIDE9PT1lbGVtLm5vZGVUeXBlfSkpfSxqUXVlcnkuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKHNlbGVjdG9yKXt2YXIgaSxyZXQ9W10sc2VsZj10aGlzLGxlbj1zZWxmLmxlbmd0aDtpZihcInN0cmluZ1wiIT10eXBlb2Ygc2VsZWN0b3IpcmV0dXJuIHRoaXMucHVzaFN0YWNrKGpRdWVyeShzZWxlY3RvcikuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGk9MDtsZW4+aTtpKyspaWYoalF1ZXJ5LmNvbnRhaW5zKHNlbGZbaV0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKGk9MDtsZW4+aTtpKyspalF1ZXJ5LmZpbmQoc2VsZWN0b3Isc2VsZltpXSxyZXQpO3JldHVybiByZXQ9dGhpcy5wdXNoU3RhY2sobGVuPjE/alF1ZXJ5LnVuaXF1ZShyZXQpOnJldCkscmV0LnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcitcIiBcIitzZWxlY3RvcjpzZWxlY3RvcixyZXR9LGZpbHRlcjpmdW5jdGlvbihzZWxlY3Rvcil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHdpbm5vdyh0aGlzLHNlbGVjdG9yfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiB0aGlzLnB1c2hTdGFjayh3aW5ub3codGhpcyxzZWxlY3Rvcnx8W10sITApKX0saXM6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiEhd2lubm93KHRoaXMsXCJzdHJpbmdcIj09dHlwZW9mIHNlbGVjdG9yJiZybmVlZHNDb250ZXh0LnRlc3Qoc2VsZWN0b3IpP2pRdWVyeShzZWxlY3Rvcik6c2VsZWN0b3J8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHJvb3RqUXVlcnksZG9jdW1lbnQ9d2luZG93LmRvY3VtZW50LHJxdWlja0V4cHI9L14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKikpJC8saW5pdD1qUXVlcnkuZm4uaW5pdD1mdW5jdGlvbihzZWxlY3Rvcixjb250ZXh0KXt2YXIgbWF0Y2gsZWxlbTtpZighc2VsZWN0b3IpcmV0dXJuIHRoaXM7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHNlbGVjdG9yKXtpZihtYXRjaD1cIjxcIj09PXNlbGVjdG9yLmNoYXJBdCgwKSYmXCI+XCI9PT1zZWxlY3Rvci5jaGFyQXQoc2VsZWN0b3IubGVuZ3RoLTEpJiZzZWxlY3Rvci5sZW5ndGg+PTM/W251bGwsc2VsZWN0b3IsbnVsbF06cnF1aWNrRXhwci5leGVjKHNlbGVjdG9yKSwhbWF0Y2h8fCFtYXRjaFsxXSYmY29udGV4dClyZXR1cm4hY29udGV4dHx8Y29udGV4dC5qcXVlcnk/KGNvbnRleHR8fHJvb3RqUXVlcnkpLmZpbmQoc2VsZWN0b3IpOnRoaXMuY29uc3RydWN0b3IoY29udGV4dCkuZmluZChzZWxlY3Rvcik7aWYobWF0Y2hbMV0pe2lmKGNvbnRleHQ9Y29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeT9jb250ZXh0WzBdOmNvbnRleHQsalF1ZXJ5Lm1lcmdlKHRoaXMsalF1ZXJ5LnBhcnNlSFRNTChtYXRjaFsxXSxjb250ZXh0JiZjb250ZXh0Lm5vZGVUeXBlP2NvbnRleHQub3duZXJEb2N1bWVudHx8Y29udGV4dDpkb2N1bWVudCwhMCkpLHJzaW5nbGVUYWcudGVzdChtYXRjaFsxXSkmJmpRdWVyeS5pc1BsYWluT2JqZWN0KGNvbnRleHQpKWZvcihtYXRjaCBpbiBjb250ZXh0KWpRdWVyeS5pc0Z1bmN0aW9uKHRoaXNbbWF0Y2hdKT90aGlzW21hdGNoXShjb250ZXh0W21hdGNoXSk6dGhpcy5hdHRyKG1hdGNoLGNvbnRleHRbbWF0Y2hdKTtyZXR1cm4gdGhpc31pZihlbGVtPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1hdGNoWzJdKSxlbGVtJiZlbGVtLnBhcmVudE5vZGUpe2lmKGVsZW0uaWQhPT1tYXRjaFsyXSlyZXR1cm4gcm9vdGpRdWVyeS5maW5kKHNlbGVjdG9yKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZWxlbX1yZXR1cm4gdGhpcy5jb250ZXh0PWRvY3VtZW50LHRoaXMuc2VsZWN0b3I9c2VsZWN0b3IsdGhpc31yZXR1cm4gc2VsZWN0b3Iubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPXNlbGVjdG9yLHRoaXMubGVuZ3RoPTEsdGhpcyk6alF1ZXJ5LmlzRnVuY3Rpb24oc2VsZWN0b3IpP1widW5kZWZpbmVkXCIhPXR5cGVvZiByb290alF1ZXJ5LnJlYWR5P3Jvb3RqUXVlcnkucmVhZHkoc2VsZWN0b3IpOnNlbGVjdG9yKGpRdWVyeSk6KHZvaWQgMCE9PXNlbGVjdG9yLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1zZWxlY3Rvci5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9c2VsZWN0b3IuY29udGV4dCksalF1ZXJ5Lm1ha2VBcnJheShzZWxlY3Rvcix0aGlzKSl9O2luaXQucHJvdG90eXBlPWpRdWVyeS5mbixyb290alF1ZXJ5PWpRdWVyeShkb2N1bWVudCk7dmFyIHJwYXJlbnRzcHJldj0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxndWFyYW50ZWVkVW5pcXVlPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2pRdWVyeS5leHRlbmQoe2RpcjpmdW5jdGlvbihlbGVtLGRpcix1bnRpbCl7Zm9yKHZhciBtYXRjaGVkPVtdLGN1cj1lbGVtW2Rpcl07Y3VyJiY5IT09Y3VyLm5vZGVUeXBlJiYodm9pZCAwPT09dW50aWx8fDEhPT1jdXIubm9kZVR5cGV8fCFqUXVlcnkoY3VyKS5pcyh1bnRpbCkpOykxPT09Y3VyLm5vZGVUeXBlJiZtYXRjaGVkLnB1c2goY3VyKSxjdXI9Y3VyW2Rpcl07cmV0dXJuIG1hdGNoZWR9LHNpYmxpbmc6ZnVuY3Rpb24obixlbGVtKXtmb3IodmFyIHI9W107bjtuPW4ubmV4dFNpYmxpbmcpMT09PW4ubm9kZVR5cGUmJm4hPT1lbGVtJiZyLnB1c2gobik7cmV0dXJuIHJ9fSksalF1ZXJ5LmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKHRhcmdldCl7dmFyIGksdGFyZ2V0cz1qUXVlcnkodGFyZ2V0LHRoaXMpLGxlbj10YXJnZXRzLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoaT0wO2xlbj5pO2krKylpZihqUXVlcnkuY29udGFpbnModGhpcyx0YXJnZXRzW2ldKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKHNlbGVjdG9ycyxjb250ZXh0KXtmb3IodmFyIGN1cixpPTAsbD10aGlzLmxlbmd0aCxtYXRjaGVkPVtdLHBvcz1ybmVlZHNDb250ZXh0LnRlc3Qoc2VsZWN0b3JzKXx8XCJzdHJpbmdcIiE9dHlwZW9mIHNlbGVjdG9ycz9qUXVlcnkoc2VsZWN0b3JzLGNvbnRleHR8fHRoaXMuY29udGV4dCk6MDtsPmk7aSsrKWZvcihjdXI9dGhpc1tpXTtjdXImJmN1ciE9PWNvbnRleHQ7Y3VyPWN1ci5wYXJlbnROb2RlKWlmKGN1ci5ub2RlVHlwZTwxMSYmKHBvcz9wb3MuaW5kZXgoY3VyKT4tMToxPT09Y3VyLm5vZGVUeXBlJiZqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoY3VyLHNlbGVjdG9ycykpKXttYXRjaGVkLnB1c2goY3VyKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2sobWF0Y2hlZC5sZW5ndGg+MT9qUXVlcnkudW5pcXVlKG1hdGNoZWQpOm1hdGNoZWQpfSxpbmRleDpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbT9cInN0cmluZ1wiPT10eXBlb2YgZWxlbT9qUXVlcnkuaW5BcnJheSh0aGlzWzBdLGpRdWVyeShlbGVtKSk6alF1ZXJ5LmluQXJyYXkoZWxlbS5qcXVlcnk/ZWxlbVswXTplbGVtLHRoaXMpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKHNlbGVjdG9yLGNvbnRleHQpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqUXVlcnkudW5pcXVlKGpRdWVyeS5tZXJnZSh0aGlzLmdldCgpLGpRdWVyeShzZWxlY3Rvcixjb250ZXh0KSkpKX0sYWRkQmFjazpmdW5jdGlvbihzZWxlY3Rvcil7cmV0dXJuIHRoaXMuYWRkKG51bGw9PXNlbGVjdG9yP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKHNlbGVjdG9yKSl9fSksalF1ZXJ5LmVhY2goe3BhcmVudDpmdW5jdGlvbihlbGVtKXt2YXIgcGFyZW50PWVsZW0ucGFyZW50Tm9kZTtyZXR1cm4gcGFyZW50JiYxMSE9PXBhcmVudC5ub2RlVHlwZT9wYXJlbnQ6bnVsbH0scGFyZW50czpmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LmRpcihlbGVtLFwicGFyZW50Tm9kZVwiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGVsZW0saSx1bnRpbCl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSxcInBhcmVudE5vZGVcIix1bnRpbCl9LG5leHQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIHNpYmxpbmcoZWxlbSxcIm5leHRTaWJsaW5nXCIpfSxwcmV2OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBzaWJsaW5nKGVsZW0sXCJwcmV2aW91c1NpYmxpbmdcIil9LG5leHRBbGw6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSxcIm5leHRTaWJsaW5nXCIpfSxwcmV2QWxsOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuZGlyKGVsZW0sXCJwcmV2aW91c1NpYmxpbmdcIil9LG5leHRVbnRpbDpmdW5jdGlvbihlbGVtLGksdW50aWwpe3JldHVybiBqUXVlcnkuZGlyKGVsZW0sXCJuZXh0U2libGluZ1wiLHVudGlsKX0scHJldlVudGlsOmZ1bmN0aW9uKGVsZW0saSx1bnRpbCl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSxcInByZXZpb3VzU2libGluZ1wiLHVudGlsKX0sc2libGluZ3M6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5zaWJsaW5nKChlbGVtLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGVsZW0pfSxjaGlsZHJlbjpmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LnNpYmxpbmcoZWxlbS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5ub2RlTmFtZShlbGVtLFwiaWZyYW1lXCIpP2VsZW0uY29udGVudERvY3VtZW50fHxlbGVtLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6alF1ZXJ5Lm1lcmdlKFtdLGVsZW0uY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihuYW1lLGZuKXtqUXVlcnkuZm5bbmFtZV09ZnVuY3Rpb24odW50aWwsc2VsZWN0b3Ipe3ZhciByZXQ9alF1ZXJ5Lm1hcCh0aGlzLGZuLHVudGlsKTtyZXR1cm5cIlVudGlsXCIhPT1uYW1lLnNsaWNlKC01KSYmKHNlbGVjdG9yPXVudGlsKSxzZWxlY3RvciYmXCJzdHJpbmdcIj09dHlwZW9mIHNlbGVjdG9yJiYocmV0PWpRdWVyeS5maWx0ZXIoc2VsZWN0b3IscmV0KSksdGhpcy5sZW5ndGg+MSYmKGd1YXJhbnRlZWRVbmlxdWVbbmFtZV18fChyZXQ9alF1ZXJ5LnVuaXF1ZShyZXQpKSxycGFyZW50c3ByZXYudGVzdChuYW1lKSYmKHJldD1yZXQucmV2ZXJzZSgpKSksdGhpcy5wdXNoU3RhY2socmV0KX19KTt2YXIgcm5vdHdoaXRlPS9cXFMrL2csb3B0aW9uc0NhY2hlPXt9O2pRdWVyeS5DYWxsYmFja3M9ZnVuY3Rpb24ob3B0aW9ucyl7b3B0aW9ucz1cInN0cmluZ1wiPT10eXBlb2Ygb3B0aW9ucz9vcHRpb25zQ2FjaGVbb3B0aW9uc118fGNyZWF0ZU9wdGlvbnMob3B0aW9ucyk6alF1ZXJ5LmV4dGVuZCh7fSxvcHRpb25zKTt2YXIgZmlyaW5nLG1lbW9yeSxmaXJlZCxmaXJpbmdMZW5ndGgsZmlyaW5nSW5kZXgsZmlyaW5nU3RhcnQsbGlzdD1bXSxzdGFjaz0hb3B0aW9ucy5vbmNlJiZbXSxmaXJlPWZ1bmN0aW9uKGRhdGEpe2ZvcihtZW1vcnk9b3B0aW9ucy5tZW1vcnkmJmRhdGEsZmlyZWQ9ITAsZmlyaW5nSW5kZXg9ZmlyaW5nU3RhcnR8fDAsZmlyaW5nU3RhcnQ9MCxmaXJpbmdMZW5ndGg9bGlzdC5sZW5ndGgsZmlyaW5nPSEwO2xpc3QmJmZpcmluZ0xlbmd0aD5maXJpbmdJbmRleDtmaXJpbmdJbmRleCsrKWlmKGxpc3RbZmlyaW5nSW5kZXhdLmFwcGx5KGRhdGFbMF0sZGF0YVsxXSk9PT0hMSYmb3B0aW9ucy5zdG9wT25GYWxzZSl7bWVtb3J5PSExO2JyZWFrfWZpcmluZz0hMSxsaXN0JiYoc3RhY2s/c3RhY2subGVuZ3RoJiZmaXJlKHN0YWNrLnNoaWZ0KCkpOm1lbW9yeT9saXN0PVtdOnNlbGYuZGlzYWJsZSgpKX0sc2VsZj17YWRkOmZ1bmN0aW9uKCl7aWYobGlzdCl7dmFyIHN0YXJ0PWxpc3QubGVuZ3RoOyFmdW5jdGlvbiBhZGQoYXJncyl7alF1ZXJ5LmVhY2goYXJncyxmdW5jdGlvbihfLGFyZyl7dmFyIHR5cGU9alF1ZXJ5LnR5cGUoYXJnKTtcImZ1bmN0aW9uXCI9PT10eXBlP29wdGlvbnMudW5pcXVlJiZzZWxmLmhhcyhhcmcpfHxsaXN0LnB1c2goYXJnKTphcmcmJmFyZy5sZW5ndGgmJlwic3RyaW5nXCIhPT10eXBlJiZhZGQoYXJnKX0pfShhcmd1bWVudHMpLGZpcmluZz9maXJpbmdMZW5ndGg9bGlzdC5sZW5ndGg6bWVtb3J5JiYoZmlyaW5nU3RhcnQ9c3RhcnQsZmlyZShtZW1vcnkpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGxpc3QmJmpRdWVyeS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihfLGFyZyl7Zm9yKHZhciBpbmRleDsoaW5kZXg9alF1ZXJ5LmluQXJyYXkoYXJnLGxpc3QsaW5kZXgpKT4tMTspbGlzdC5zcGxpY2UoaW5kZXgsMSksZmlyaW5nJiYoZmlyaW5nTGVuZ3RoPj1pbmRleCYmZmlyaW5nTGVuZ3RoLS0sZmlyaW5nSW5kZXg+PWluZGV4JiZmaXJpbmdJbmRleC0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihmbil7cmV0dXJuIGZuP2pRdWVyeS5pbkFycmF5KGZuLGxpc3QpPi0xOiEoIWxpc3R8fCFsaXN0Lmxlbmd0aCl9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIGxpc3Q9W10sZmlyaW5nTGVuZ3RoPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBsaXN0PXN0YWNrPW1lbW9yeT12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbGlzdH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBzdGFjaz12b2lkIDAsbWVtb3J5fHxzZWxmLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc3RhY2t9LGZpcmVXaXRoOmZ1bmN0aW9uKGNvbnRleHQsYXJncyl7cmV0dXJuIWxpc3R8fGZpcmVkJiYhc3RhY2t8fChhcmdzPWFyZ3N8fFtdLGFyZ3M9W2NvbnRleHQsYXJncy5zbGljZT9hcmdzLnNsaWNlKCk6YXJnc10sZmlyaW5nP3N0YWNrLnB1c2goYXJncyk6ZmlyZShhcmdzKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBzZWxmLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZmlyZWR9fTtyZXR1cm4gc2VsZn0salF1ZXJ5LmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oZnVuYyl7dmFyIHR1cGxlcz1bW1wicmVzb2x2ZVwiLFwiZG9uZVwiLGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSxcInJlc29sdmVkXCJdLFtcInJlamVjdFwiLFwiZmFpbFwiLGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSxcInJlamVjdGVkXCJdLFtcIm5vdGlmeVwiLFwicHJvZ3Jlc3NcIixqUXVlcnkuQ2FsbGJhY2tzKFwibWVtb3J5XCIpXV0sc3RhdGU9XCJwZW5kaW5nXCIscHJvbWlzZT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gc3RhdGV9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBkZWZlcnJlZC5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgZm5zPWFyZ3VtZW50cztyZXR1cm4galF1ZXJ5LkRlZmVycmVkKGZ1bmN0aW9uKG5ld0RlZmVyKXtqUXVlcnkuZWFjaCh0dXBsZXMsZnVuY3Rpb24oaSx0dXBsZSl7dmFyIGZuPWpRdWVyeS5pc0Z1bmN0aW9uKGZuc1tpXSkmJmZuc1tpXTtkZWZlcnJlZFt0dXBsZVsxXV0oZnVuY3Rpb24oKXt2YXIgcmV0dXJuZWQ9Zm4mJmZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm5lZCYmalF1ZXJ5LmlzRnVuY3Rpb24ocmV0dXJuZWQucHJvbWlzZSk/cmV0dXJuZWQucHJvbWlzZSgpLmRvbmUobmV3RGVmZXIucmVzb2x2ZSkuZmFpbChuZXdEZWZlci5yZWplY3QpLnByb2dyZXNzKG5ld0RlZmVyLm5vdGlmeSk6bmV3RGVmZXJbdHVwbGVbMF0rXCJXaXRoXCJdKHRoaXM9PT1wcm9taXNlP25ld0RlZmVyLnByb21pc2UoKTp0aGlzLGZuP1tyZXR1cm5lZF06YXJndW1lbnRzKX0pfSksZm5zPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24ob2JqKXtyZXR1cm4gbnVsbCE9b2JqP2pRdWVyeS5leHRlbmQob2JqLHByb21pc2UpOnByb21pc2V9fSxkZWZlcnJlZD17fTtyZXR1cm4gcHJvbWlzZS5waXBlPXByb21pc2UudGhlbixqUXVlcnkuZWFjaCh0dXBsZXMsZnVuY3Rpb24oaSx0dXBsZSl7dmFyIGxpc3Q9dHVwbGVbMl0sc3RhdGVTdHJpbmc9dHVwbGVbM107cHJvbWlzZVt0dXBsZVsxXV09bGlzdC5hZGQsc3RhdGVTdHJpbmcmJmxpc3QuYWRkKGZ1bmN0aW9uKCl7c3RhdGU9c3RhdGVTdHJpbmd9LHR1cGxlc1sxXmldWzJdLmRpc2FibGUsdHVwbGVzWzJdWzJdLmxvY2spLGRlZmVycmVkW3R1cGxlWzBdXT1mdW5jdGlvbigpe3JldHVybiBkZWZlcnJlZFt0dXBsZVswXStcIldpdGhcIl0odGhpcz09PWRlZmVycmVkP3Byb21pc2U6dGhpcyxhcmd1bWVudHMpLHRoaXN9LGRlZmVycmVkW3R1cGxlWzBdK1wiV2l0aFwiXT1saXN0LmZpcmVXaXRofSkscHJvbWlzZS5wcm9taXNlKGRlZmVycmVkKSxmdW5jJiZmdW5jLmNhbGwoZGVmZXJyZWQsZGVmZXJyZWQpLGRlZmVycmVkfSx3aGVuOmZ1bmN0aW9uKHN1Ym9yZGluYXRlKXt2YXIgcHJvZ3Jlc3NWYWx1ZXMscHJvZ3Jlc3NDb250ZXh0cyxyZXNvbHZlQ29udGV4dHMsaT0wLHJlc29sdmVWYWx1ZXM9c2xpY2UuY2FsbChhcmd1bWVudHMpLGxlbmd0aD1yZXNvbHZlVmFsdWVzLmxlbmd0aCxyZW1haW5pbmc9MSE9PWxlbmd0aHx8c3Vib3JkaW5hdGUmJmpRdWVyeS5pc0Z1bmN0aW9uKHN1Ym9yZGluYXRlLnByb21pc2UpP2xlbmd0aDowLGRlZmVycmVkPTE9PT1yZW1haW5pbmc/c3Vib3JkaW5hdGU6alF1ZXJ5LkRlZmVycmVkKCksdXBkYXRlRnVuYz1mdW5jdGlvbihpLGNvbnRleHRzLHZhbHVlcyl7cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtjb250ZXh0c1tpXT10aGlzLHZhbHVlc1tpXT1hcmd1bWVudHMubGVuZ3RoPjE/c2xpY2UuY2FsbChhcmd1bWVudHMpOnZhbHVlLHZhbHVlcz09PXByb2dyZXNzVmFsdWVzP2RlZmVycmVkLm5vdGlmeVdpdGgoY29udGV4dHMsdmFsdWVzKTotLXJlbWFpbmluZ3x8ZGVmZXJyZWQucmVzb2x2ZVdpdGgoY29udGV4dHMsdmFsdWVzKX19O2lmKGxlbmd0aD4xKWZvcihwcm9ncmVzc1ZhbHVlcz1uZXcgQXJyYXkobGVuZ3RoKSxwcm9ncmVzc0NvbnRleHRzPW5ldyBBcnJheShsZW5ndGgpLHJlc29sdmVDb250ZXh0cz1uZXcgQXJyYXkobGVuZ3RoKTtsZW5ndGg+aTtpKyspcmVzb2x2ZVZhbHVlc1tpXSYmalF1ZXJ5LmlzRnVuY3Rpb24ocmVzb2x2ZVZhbHVlc1tpXS5wcm9taXNlKT9yZXNvbHZlVmFsdWVzW2ldLnByb21pc2UoKS5kb25lKHVwZGF0ZUZ1bmMoaSxyZXNvbHZlQ29udGV4dHMscmVzb2x2ZVZhbHVlcykpLmZhaWwoZGVmZXJyZWQucmVqZWN0KS5wcm9ncmVzcyh1cGRhdGVGdW5jKGkscHJvZ3Jlc3NDb250ZXh0cyxwcm9ncmVzc1ZhbHVlcykpOi0tcmVtYWluaW5nO3JldHVybiByZW1haW5pbmd8fGRlZmVycmVkLnJlc29sdmVXaXRoKHJlc29sdmVDb250ZXh0cyxyZXNvbHZlVmFsdWVzKSxkZWZlcnJlZC5wcm9taXNlKCl9fSk7dmFyIHJlYWR5TGlzdDtqUXVlcnkuZm4ucmVhZHk9ZnVuY3Rpb24oZm4pe3JldHVybiBqUXVlcnkucmVhZHkucHJvbWlzZSgpLmRvbmUoZm4pLHRoaXN9LGpRdWVyeS5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGhvbGQpe2hvbGQ/alF1ZXJ5LnJlYWR5V2FpdCsrOmpRdWVyeS5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKHdhaXQpe2lmKHdhaXQ9PT0hMD8hLS1qUXVlcnkucmVhZHlXYWl0OiFqUXVlcnkuaXNSZWFkeSl7aWYoIWRvY3VtZW50LmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoalF1ZXJ5LnJlYWR5KTtqUXVlcnkuaXNSZWFkeT0hMCx3YWl0IT09ITAmJi0talF1ZXJ5LnJlYWR5V2FpdD4wfHwocmVhZHlMaXN0LnJlc29sdmVXaXRoKGRvY3VtZW50LFtqUXVlcnldKSxqUXVlcnkuZm4udHJpZ2dlckhhbmRsZXImJihqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKFwicmVhZHlcIiksalF1ZXJ5KGRvY3VtZW50KS5vZmYoXCJyZWFkeVwiKSkpfX19KSxqUXVlcnkucmVhZHkucHJvbWlzZT1mdW5jdGlvbihvYmope2lmKCFyZWFkeUxpc3QpaWYocmVhZHlMaXN0PWpRdWVyeS5EZWZlcnJlZCgpLFwiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGUpc2V0VGltZW91dChqUXVlcnkucmVhZHkpO2Vsc2UgaWYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcilkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLGNvbXBsZXRlZCwhMSksXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixjb21wbGV0ZWQsITEpO2Vsc2V7ZG9jdW1lbnQuYXR0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixjb21wbGV0ZWQpLHdpbmRvdy5hdHRhY2hFdmVudChcIm9ubG9hZFwiLGNvbXBsZXRlZCk7dmFyIHRvcD0hMTt0cnl7dG9wPW51bGw9PXdpbmRvdy5mcmFtZUVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1jYXRjaChlKXt9dG9wJiZ0b3AuZG9TY3JvbGwmJiFmdW5jdGlvbiBkb1Njcm9sbENoZWNrKCl7aWYoIWpRdWVyeS5pc1JlYWR5KXt0cnl7dG9wLmRvU2Nyb2xsKFwibGVmdFwiKX1jYXRjaChlKXtyZXR1cm4gc2V0VGltZW91dChkb1Njcm9sbENoZWNrLDUwKX1kZXRhY2goKSxqUXVlcnkucmVhZHkoKX19KCl9cmV0dXJuIHJlYWR5TGlzdC5wcm9taXNlKG9iail9O3ZhciBpLHN0cnVuZGVmaW5lZD1cInVuZGVmaW5lZFwiO2ZvcihpIGluIGpRdWVyeShzdXBwb3J0KSlicmVhaztzdXBwb3J0Lm93bkxhc3Q9XCIwXCIhPT1pLHN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSxqUXVlcnkoZnVuY3Rpb24oKXt2YXIgdmFsLGRpdixib2R5LGNvbnRhaW5lcjtib2R5PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXSxib2R5JiZib2R5LnN0eWxlJiYoZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyLnN0eWxlLmNzc1RleHQ9XCJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweFwiLGJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKS5hcHBlbmRDaGlsZChkaXYpLHR5cGVvZiBkaXYuc3R5bGUuem9vbSE9PXN0cnVuZGVmaW5lZCYmKGRpdi5zdHlsZS5jc3NUZXh0PVwiZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MVwiLHN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dD12YWw9Mz09PWRpdi5vZmZzZXRXaWR0aCx2YWwmJihib2R5LnN0eWxlLnpvb209MSkpLGJvZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKSl9KSxmdW5jdGlvbigpe3ZhciBkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtpZihudWxsPT1zdXBwb3J0LmRlbGV0ZUV4cGFuZG8pe3N1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMDt0cnl7ZGVsZXRlIGRpdi50ZXN0fWNhdGNoKGUpe3N1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMX19ZGl2PW51bGx9KCksalF1ZXJ5LmFjY2VwdERhdGE9ZnVuY3Rpb24oZWxlbSl7dmFyIG5vRGF0YT1qUXVlcnkubm9EYXRhWyhlbGVtLm5vZGVOYW1lK1wiIFwiKS50b0xvd2VyQ2FzZSgpXSxub2RlVHlwZT0rZWxlbS5ub2RlVHlwZXx8MTtyZXR1cm4gMSE9PW5vZGVUeXBlJiY5IT09bm9kZVR5cGU/ITE6IW5vRGF0YXx8bm9EYXRhIT09ITAmJmVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NpZFwiKT09PW5vRGF0YX07dmFyIHJicmFjZT0vXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8scm11bHRpRGFzaD0vKFtBLVpdKS9nO2pRdWVyeS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7XCJhcHBsZXQgXCI6ITAsXCJlbWJlZCBcIjohMCxcIm9iamVjdCBcIjpcImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMFwifSxoYXNEYXRhOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtPWVsZW0ubm9kZVR5cGU/alF1ZXJ5LmNhY2hlW2VsZW1balF1ZXJ5LmV4cGFuZG9dXTplbGVtW2pRdWVyeS5leHBhbmRvXSwhIWVsZW0mJiFpc0VtcHR5RGF0YU9iamVjdChlbGVtKX0sZGF0YTpmdW5jdGlvbihlbGVtLG5hbWUsZGF0YSl7cmV0dXJuIGludGVybmFsRGF0YShlbGVtLG5hbWUsZGF0YSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZWxlbSxuYW1lKXtyZXR1cm4gaW50ZXJuYWxSZW1vdmVEYXRhKGVsZW0sbmFtZSl9LF9kYXRhOmZ1bmN0aW9uKGVsZW0sbmFtZSxkYXRhKXtyZXR1cm4gaW50ZXJuYWxEYXRhKGVsZW0sbmFtZSxkYXRhLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oZWxlbSxuYW1lKXtyZXR1cm4gaW50ZXJuYWxSZW1vdmVEYXRhKGVsZW0sbmFtZSwhMCl9fSksalF1ZXJ5LmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihrZXksdmFsdWUpe3ZhciBpLG5hbWUsZGF0YSxlbGVtPXRoaXNbMF0sYXR0cnM9ZWxlbSYmZWxlbS5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWtleSl7aWYodGhpcy5sZW5ndGgmJihkYXRhPWpRdWVyeS5kYXRhKGVsZW0pLDE9PT1lbGVtLm5vZGVUeXBlJiYhalF1ZXJ5Ll9kYXRhKGVsZW0sXCJwYXJzZWRBdHRyc1wiKSkpe2ZvcihpPWF0dHJzLmxlbmd0aDtpLS07KWF0dHJzW2ldJiYobmFtZT1hdHRyc1tpXS5uYW1lLDA9PT1uYW1lLmluZGV4T2YoXCJkYXRhLVwiKSYmKG5hbWU9alF1ZXJ5LmNhbWVsQ2FzZShuYW1lLnNsaWNlKDUpKSxkYXRhQXR0cihlbGVtLG5hbWUsZGF0YVtuYW1lXSkpKTtqUXVlcnkuX2RhdGEoZWxlbSxcInBhcnNlZEF0dHJzXCIsITApfXJldHVybiBkYXRhfXJldHVyblwib2JqZWN0XCI9PXR5cGVvZiBrZXk/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmRhdGEodGhpcyxrZXkpfSk6YXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5kYXRhKHRoaXMsa2V5LHZhbHVlKX0pOmVsZW0/ZGF0YUF0dHIoZWxlbSxrZXksalF1ZXJ5LmRhdGEoZWxlbSxrZXkpKTp2b2lkIDB9LHJlbW92ZURhdGE6ZnVuY3Rpb24oa2V5KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LnJlbW92ZURhdGEodGhpcyxrZXkpfSl9fSksalF1ZXJ5LmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZWxlbSx0eXBlLGRhdGEpe3ZhciBxdWV1ZTtyZXR1cm4gZWxlbT8odHlwZT0odHlwZXx8XCJmeFwiKStcInF1ZXVlXCIscXVldWU9alF1ZXJ5Ll9kYXRhKGVsZW0sdHlwZSksZGF0YSYmKCFxdWV1ZXx8alF1ZXJ5LmlzQXJyYXkoZGF0YSk/cXVldWU9alF1ZXJ5Ll9kYXRhKGVsZW0sdHlwZSxqUXVlcnkubWFrZUFycmF5KGRhdGEpKTpxdWV1ZS5wdXNoKGRhdGEpKSxxdWV1ZXx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihlbGVtLHR5cGUpe3R5cGU9dHlwZXx8XCJmeFwiO3ZhciBxdWV1ZT1qUXVlcnkucXVldWUoZWxlbSx0eXBlKSxzdGFydExlbmd0aD1xdWV1ZS5sZW5ndGgsZm49cXVldWUuc2hpZnQoKSxob29rcz1qUXVlcnkuX3F1ZXVlSG9va3MoZWxlbSx0eXBlKSxuZXh0PWZ1bmN0aW9uKCl7alF1ZXJ5LmRlcXVldWUoZWxlbSx0eXBlKX07XCJpbnByb2dyZXNzXCI9PT1mbiYmKGZuPXF1ZXVlLnNoaWZ0KCksc3RhcnRMZW5ndGgtLSksZm4mJihcImZ4XCI9PT10eXBlJiZxdWV1ZS51bnNoaWZ0KFwiaW5wcm9ncmVzc1wiKSxkZWxldGUgaG9va3Muc3RvcCxmbi5jYWxsKGVsZW0sbmV4dCxob29rcykpLCFzdGFydExlbmd0aCYmaG9va3MmJmhvb2tzLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZWxlbSx0eXBlKXt2YXIga2V5PXR5cGUrXCJxdWV1ZUhvb2tzXCI7cmV0dXJuIGpRdWVyeS5fZGF0YShlbGVtLGtleSl8fGpRdWVyeS5fZGF0YShlbGVtLGtleSx7ZW1wdHk6alF1ZXJ5LkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLmFkZChmdW5jdGlvbigpe2pRdWVyeS5fcmVtb3ZlRGF0YShlbGVtLHR5cGUrXCJxdWV1ZVwiKSxqUXVlcnkuX3JlbW92ZURhdGEoZWxlbSxrZXkpfSl9KX19KSxqUXVlcnkuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbih0eXBlLGRhdGEpe3ZhciBzZXR0ZXI9MjtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdHlwZSYmKGRhdGE9dHlwZSx0eXBlPVwiZnhcIixzZXR0ZXItLSksYXJndW1lbnRzLmxlbmd0aDxzZXR0ZXI/alF1ZXJ5LnF1ZXVlKHRoaXNbMF0sdHlwZSk6dm9pZCAwPT09ZGF0YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBxdWV1ZT1qUXVlcnkucXVldWUodGhpcyx0eXBlLGRhdGEpO2pRdWVyeS5fcXVldWVIb29rcyh0aGlzLHR5cGUpLFwiZnhcIj09PXR5cGUmJlwiaW5wcm9ncmVzc1wiIT09cXVldWVbMF0mJmpRdWVyeS5kZXF1ZXVlKHRoaXMsdHlwZSl9KX0sZGVxdWV1ZTpmdW5jdGlvbih0eXBlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmRlcXVldWUodGhpcyx0eXBlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKHR5cGUpe3JldHVybiB0aGlzLnF1ZXVlKHR5cGV8fFwiZnhcIixbXSl9LHByb21pc2U6ZnVuY3Rpb24odHlwZSxvYmope3ZhciB0bXAsY291bnQ9MSxkZWZlcj1qUXVlcnkuRGVmZXJyZWQoKSxlbGVtZW50cz10aGlzLGk9dGhpcy5sZW5ndGgscmVzb2x2ZT1mdW5jdGlvbigpey0tY291bnR8fGRlZmVyLnJlc29sdmVXaXRoKGVsZW1lbnRzLFtlbGVtZW50c10pfTtmb3IoXCJzdHJpbmdcIiE9dHlwZW9mIHR5cGUmJihvYmo9dHlwZSx0eXBlPXZvaWQgMCksdHlwZT10eXBlfHxcImZ4XCI7aS0tOyl0bXA9alF1ZXJ5Ll9kYXRhKGVsZW1lbnRzW2ldLHR5cGUrXCJxdWV1ZUhvb2tzXCIpLHRtcCYmdG1wLmVtcHR5JiYoY291bnQrKyx0bXAuZW1wdHkuYWRkKHJlc29sdmUpKTtyZXR1cm4gcmVzb2x2ZSgpLGRlZmVyLnByb21pc2Uob2JqKX19KTt2YXIgcG51bT0vWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLy5zb3VyY2UsY3NzRXhwYW5kPVtcIlRvcFwiLFwiUmlnaHRcIixcIkJvdHRvbVwiLFwiTGVmdFwiXSxpc0hpZGRlbj1mdW5jdGlvbihlbGVtLGVsKXtyZXR1cm4gZWxlbT1lbHx8ZWxlbSxcIm5vbmVcIj09PWpRdWVyeS5jc3MoZWxlbSxcImRpc3BsYXlcIil8fCFqUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pfSxhY2Nlc3M9alF1ZXJ5LmFjY2Vzcz1mdW5jdGlvbihlbGVtcyxmbixrZXksdmFsdWUsY2hhaW5hYmxlLGVtcHR5R2V0LHJhdyl7dmFyIGk9MCxsZW5ndGg9ZWxlbXMubGVuZ3RoLGJ1bGs9bnVsbD09a2V5O2lmKFwib2JqZWN0XCI9PT1qUXVlcnkudHlwZShrZXkpKXtjaGFpbmFibGU9ITA7Zm9yKGkgaW4ga2V5KWpRdWVyeS5hY2Nlc3MoZWxlbXMsZm4saSxrZXlbaV0sITAsZW1wdHlHZXQscmF3KX1lbHNlIGlmKHZvaWQgMCE9PXZhbHVlJiYoY2hhaW5hYmxlPSEwLGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKXx8KHJhdz0hMCksYnVsayYmKHJhdz8oZm4uY2FsbChlbGVtcyx2YWx1ZSksZm49bnVsbCk6KGJ1bGs9Zm4sZm49ZnVuY3Rpb24oZWxlbSxrZXksdmFsdWUpe3JldHVybiBidWxrLmNhbGwoalF1ZXJ5KGVsZW0pLHZhbHVlKX0pKSxmbikpZm9yKDtsZW5ndGg+aTtpKyspZm4oZWxlbXNbaV0sa2V5LHJhdz92YWx1ZTp2YWx1ZS5jYWxsKGVsZW1zW2ldLGksZm4oZWxlbXNbaV0sa2V5KSkpO3JldHVybiBjaGFpbmFibGU/ZWxlbXM6YnVsaz9mbi5jYWxsKGVsZW1zKTpsZW5ndGg/Zm4oZWxlbXNbMF0sa2V5KTplbXB0eUdldH0scmNoZWNrYWJsZVR5cGU9L14oPzpjaGVja2JveHxyYWRpbykkL2k7IWZ1bmN0aW9uKCl7dmFyIGlucHV0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKSxkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxmcmFnbWVudD1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoZGl2LmlubmVySFRNTD1cIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPlwiLHN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2U9Mz09PWRpdi5maXJzdENoaWxkLm5vZGVUeXBlLHN1cHBvcnQudGJvZHk9IWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRib2R5XCIpLmxlbmd0aCxzdXBwb3J0Lmh0bWxTZXJpYWxpemU9ISFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJsaW5rXCIpLmxlbmd0aCxzdXBwb3J0Lmh0bWw1Q2xvbmU9XCI8Om5hdj48LzpuYXY+XCIhPT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibmF2XCIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MLGlucHV0LnR5cGU9XCJjaGVja2JveFwiLGlucHV0LmNoZWNrZWQ9ITAsZnJhZ21lbnQuYXBwZW5kQ2hpbGQoaW5wdXQpLHN1cHBvcnQuYXBwZW5kQ2hlY2tlZD1pbnB1dC5jaGVja2VkLGRpdi5pbm5lckhUTUw9XCI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+XCIsc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZD0hIWRpdi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZGl2KSxkaXYuaW5uZXJIVE1MPVwiPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+XCIsc3VwcG9ydC5jaGVja0Nsb25lPWRpdi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsc3VwcG9ydC5ub0Nsb25lRXZlbnQ9ITAsZGl2LmF0dGFjaEV2ZW50JiYoZGl2LmF0dGFjaEV2ZW50KFwib25jbGlja1wiLGZ1bmN0aW9uKCl7c3VwcG9ydC5ub0Nsb25lRXZlbnQ9ITF9KSxkaXYuY2xvbmVOb2RlKCEwKS5jbGljaygpKSxudWxsPT1zdXBwb3J0LmRlbGV0ZUV4cGFuZG8pe3N1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMDt0cnl7ZGVsZXRlIGRpdi50ZXN0fWNhdGNoKGUpe3N1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMX19fSgpLGZ1bmN0aW9uKCl7dmFyIGksZXZlbnROYW1lLGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2ZvcihpIGlue3N1Ym1pdDohMCxjaGFuZ2U6ITAsZm9jdXNpbjohMH0pZXZlbnROYW1lPVwib25cIitpLChzdXBwb3J0W2krXCJCdWJibGVzXCJdPWV2ZW50TmFtZSBpbiB3aW5kb3cpfHwoZGl2LnNldEF0dHJpYnV0ZShldmVudE5hbWUsXCJ0XCIpLHN1cHBvcnRbaStcIkJ1YmJsZXNcIl09ZGl2LmF0dHJpYnV0ZXNbZXZlbnROYW1lXS5leHBhbmRvPT09ITEpO2Rpdj1udWxsfSgpO3ZhciByZm9ybUVsZW1zPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhKSQvaSxya2V5RXZlbnQ9L15rZXkvLHJtb3VzZUV2ZW50PS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudSl8Y2xpY2svLHJmb2N1c01vcnBoPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxydHlwZW5hbWVzcGFjZT0vXihbXi5dKikoPzpcXC4oLispfCkkLztqUXVlcnkuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oZWxlbSx0eXBlcyxoYW5kbGVyLGRhdGEsc2VsZWN0b3Ipe3ZhciB0bXAsZXZlbnRzLHQsaGFuZGxlT2JqSW4sc3BlY2lhbCxldmVudEhhbmRsZSxoYW5kbGVPYmosaGFuZGxlcnMsdHlwZSxuYW1lc3BhY2VzLG9yaWdUeXBlLGVsZW1EYXRhPWpRdWVyeS5fZGF0YShlbGVtKTtpZihlbGVtRGF0YSl7Zm9yKGhhbmRsZXIuaGFuZGxlciYmKGhhbmRsZU9iakluPWhhbmRsZXIsaGFuZGxlcj1oYW5kbGVPYmpJbi5oYW5kbGVyLHNlbGVjdG9yPWhhbmRsZU9iakluLnNlbGVjdG9yKSxoYW5kbGVyLmd1aWR8fChoYW5kbGVyLmd1aWQ9alF1ZXJ5Lmd1aWQrKyksKGV2ZW50cz1lbGVtRGF0YS5ldmVudHMpfHwoZXZlbnRzPWVsZW1EYXRhLmV2ZW50cz17fSksKGV2ZW50SGFuZGxlPWVsZW1EYXRhLmhhbmRsZSl8fChldmVudEhhbmRsZT1lbGVtRGF0YS5oYW5kbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBqUXVlcnk9PT1zdHJ1bmRlZmluZWR8fGUmJmpRdWVyeS5ldmVudC50cmlnZ2VyZWQ9PT1lLnR5cGU/dm9pZCAwOmpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseShldmVudEhhbmRsZS5lbGVtLGFyZ3VtZW50cyl9LGV2ZW50SGFuZGxlLmVsZW09ZWxlbSksdHlwZXM9KHR5cGVzfHxcIlwiKS5tYXRjaChybm90d2hpdGUpfHxbXCJcIl0sdD10eXBlcy5sZW5ndGg7dC0tOyl0bXA9cnR5cGVuYW1lc3BhY2UuZXhlYyh0eXBlc1t0XSl8fFtdLHR5cGU9b3JpZ1R5cGU9dG1wWzFdLG5hbWVzcGFjZXM9KHRtcFsyXXx8XCJcIikuc3BsaXQoXCIuXCIpLnNvcnQoKSx0eXBlJiYoc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXXx8e30sdHlwZT0oc2VsZWN0b3I/c3BlY2lhbC5kZWxlZ2F0ZVR5cGU6c3BlY2lhbC5iaW5kVHlwZSl8fHR5cGUsc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXXx8e30saGFuZGxlT2JqPWpRdWVyeS5leHRlbmQoe3R5cGU6dHlwZSxvcmlnVHlwZTpvcmlnVHlwZSxkYXRhOmRhdGEsaGFuZGxlcjpoYW5kbGVyLGd1aWQ6aGFuZGxlci5ndWlkLHNlbGVjdG9yOnNlbGVjdG9yLG5lZWRzQ29udGV4dDpzZWxlY3RvciYmalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3Qoc2VsZWN0b3IpLG5hbWVzcGFjZTpuYW1lc3BhY2VzLmpvaW4oXCIuXCIpfSxoYW5kbGVPYmpJbiksKGhhbmRsZXJzPWV2ZW50c1t0eXBlXSl8fChoYW5kbGVycz1ldmVudHNbdHlwZV09W10saGFuZGxlcnMuZGVsZWdhdGVDb3VudD0wLHNwZWNpYWwuc2V0dXAmJnNwZWNpYWwuc2V0dXAuY2FsbChlbGVtLGRhdGEsbmFtZXNwYWNlcyxldmVudEhhbmRsZSkhPT0hMXx8KGVsZW0uYWRkRXZlbnRMaXN0ZW5lcj9lbGVtLmFkZEV2ZW50TGlzdGVuZXIodHlwZSxldmVudEhhbmRsZSwhMSk6ZWxlbS5hdHRhY2hFdmVudCYmZWxlbS5hdHRhY2hFdmVudChcIm9uXCIrdHlwZSxldmVudEhhbmRsZSkpKSxzcGVjaWFsLmFkZCYmKHNwZWNpYWwuYWRkLmNhbGwoZWxlbSxoYW5kbGVPYmopLGhhbmRsZU9iai5oYW5kbGVyLmd1aWR8fChoYW5kbGVPYmouaGFuZGxlci5ndWlkPWhhbmRsZXIuZ3VpZCkpLHNlbGVjdG9yP2hhbmRsZXJzLnNwbGljZShoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssMCxoYW5kbGVPYmopOmhhbmRsZXJzLnB1c2goaGFuZGxlT2JqKSxqUXVlcnkuZXZlbnQuZ2xvYmFsW3R5cGVdPSEwKTtlbGVtPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oZWxlbSx0eXBlcyxoYW5kbGVyLHNlbGVjdG9yLG1hcHBlZFR5cGVzKXt2YXIgaixoYW5kbGVPYmosdG1wLG9yaWdDb3VudCx0LGV2ZW50cyxzcGVjaWFsLGhhbmRsZXJzLHR5cGUsbmFtZXNwYWNlcyxvcmlnVHlwZSxlbGVtRGF0YT1qUXVlcnkuaGFzRGF0YShlbGVtKSYmalF1ZXJ5Ll9kYXRhKGVsZW0pO2lmKGVsZW1EYXRhJiYoZXZlbnRzPWVsZW1EYXRhLmV2ZW50cykpe2Zvcih0eXBlcz0odHlwZXN8fFwiXCIpLm1hdGNoKHJub3R3aGl0ZSl8fFtcIlwiXSx0PXR5cGVzLmxlbmd0aDt0LS07KWlmKHRtcD1ydHlwZW5hbWVzcGFjZS5leGVjKHR5cGVzW3RdKXx8W10sdHlwZT1vcmlnVHlwZT10bXBbMV0sbmFtZXNwYWNlcz0odG1wWzJdfHxcIlwiKS5zcGxpdChcIi5cIikuc29ydCgpLHR5cGUpe2ZvcihzcGVjaWFsPWpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdfHx7fSx0eXBlPShzZWxlY3Rvcj9zcGVjaWFsLmRlbGVnYXRlVHlwZTpzcGVjaWFsLmJpbmRUeXBlKXx8dHlwZSxoYW5kbGVycz1ldmVudHNbdHlwZV18fFtdLHRtcD10bXBbMl0mJm5ldyBSZWdFeHAoXCIoXnxcXFxcLilcIituYW1lc3BhY2VzLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKStcIihcXFxcLnwkKVwiKSxvcmlnQ291bnQ9aj1oYW5kbGVycy5sZW5ndGg7ai0tOyloYW5kbGVPYmo9aGFuZGxlcnNbal0sIW1hcHBlZFR5cGVzJiZvcmlnVHlwZSE9PWhhbmRsZU9iai5vcmlnVHlwZXx8aGFuZGxlciYmaGFuZGxlci5ndWlkIT09aGFuZGxlT2JqLmd1aWR8fHRtcCYmIXRtcC50ZXN0KGhhbmRsZU9iai5uYW1lc3BhY2UpfHxzZWxlY3RvciYmc2VsZWN0b3IhPT1oYW5kbGVPYmouc2VsZWN0b3ImJihcIioqXCIhPT1zZWxlY3Rvcnx8IWhhbmRsZU9iai5zZWxlY3Rvcil8fChoYW5kbGVycy5zcGxpY2UoaiwxKSxoYW5kbGVPYmouc2VsZWN0b3ImJmhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLSxzcGVjaWFsLnJlbW92ZSYmc3BlY2lhbC5yZW1vdmUuY2FsbChlbGVtLGhhbmRsZU9iaikpO29yaWdDb3VudCYmIWhhbmRsZXJzLmxlbmd0aCYmKHNwZWNpYWwudGVhcmRvd24mJnNwZWNpYWwudGVhcmRvd24uY2FsbChlbGVtLG5hbWVzcGFjZXMsZWxlbURhdGEuaGFuZGxlKSE9PSExfHxqUXVlcnkucmVtb3ZlRXZlbnQoZWxlbSx0eXBlLGVsZW1EYXRhLmhhbmRsZSksZGVsZXRlIGV2ZW50c1t0eXBlXSl9ZWxzZSBmb3IodHlwZSBpbiBldmVudHMpalF1ZXJ5LmV2ZW50LnJlbW92ZShlbGVtLHR5cGUrdHlwZXNbdF0saGFuZGxlcixzZWxlY3RvciwhMCk7alF1ZXJ5LmlzRW1wdHlPYmplY3QoZXZlbnRzKSYmKGRlbGV0ZSBlbGVtRGF0YS5oYW5kbGUsalF1ZXJ5Ll9yZW1vdmVEYXRhKGVsZW0sXCJldmVudHNcIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihldmVudCxkYXRhLGVsZW0sb25seUhhbmRsZXJzKXt2YXIgaGFuZGxlLG9udHlwZSxjdXIsYnViYmxlVHlwZSxzcGVjaWFsLHRtcCxpLGV2ZW50UGF0aD1bZWxlbXx8ZG9jdW1lbnRdLHR5cGU9aGFzT3duLmNhbGwoZXZlbnQsXCJ0eXBlXCIpP2V2ZW50LnR5cGU6ZXZlbnQsbmFtZXNwYWNlcz1oYXNPd24uY2FsbChldmVudCxcIm5hbWVzcGFjZVwiKT9ldmVudC5uYW1lc3BhY2Uuc3BsaXQoXCIuXCIpOltdO2lmKGN1cj10bXA9ZWxlbT1lbGVtfHxkb2N1bWVudCwzIT09ZWxlbS5ub2RlVHlwZSYmOCE9PWVsZW0ubm9kZVR5cGUmJiFyZm9jdXNNb3JwaC50ZXN0KHR5cGUralF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCkmJih0eXBlLmluZGV4T2YoXCIuXCIpPj0wJiYobmFtZXNwYWNlcz10eXBlLnNwbGl0KFwiLlwiKSx0eXBlPW5hbWVzcGFjZXMuc2hpZnQoKSxuYW1lc3BhY2VzLnNvcnQoKSksb250eXBlPXR5cGUuaW5kZXhPZihcIjpcIik8MCYmXCJvblwiK3R5cGUsZXZlbnQ9ZXZlbnRbalF1ZXJ5LmV4cGFuZG9dP2V2ZW50Om5ldyBqUXVlcnkuRXZlbnQodHlwZSxcIm9iamVjdFwiPT10eXBlb2YgZXZlbnQmJmV2ZW50KSxldmVudC5pc1RyaWdnZXI9b25seUhhbmRsZXJzPzI6MyxldmVudC5uYW1lc3BhY2U9bmFtZXNwYWNlcy5qb2luKFwiLlwiKSxldmVudC5uYW1lc3BhY2VfcmU9ZXZlbnQubmFtZXNwYWNlP25ldyBSZWdFeHAoXCIoXnxcXFxcLilcIituYW1lc3BhY2VzLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKStcIihcXFxcLnwkKVwiKTpudWxsLGV2ZW50LnJlc3VsdD12b2lkIDAsZXZlbnQudGFyZ2V0fHwoZXZlbnQudGFyZ2V0PWVsZW0pLGRhdGE9bnVsbD09ZGF0YT9bZXZlbnRdOmpRdWVyeS5tYWtlQXJyYXkoZGF0YSxbZXZlbnRdKSxzcGVjaWFsPWpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdfHx7fSxvbmx5SGFuZGxlcnN8fCFzcGVjaWFsLnRyaWdnZXJ8fHNwZWNpYWwudHJpZ2dlci5hcHBseShlbGVtLGRhdGEpIT09ITEpKXtpZighb25seUhhbmRsZXJzJiYhc3BlY2lhbC5ub0J1YmJsZSYmIWpRdWVyeS5pc1dpbmRvdyhlbGVtKSl7Zm9yKGJ1YmJsZVR5cGU9c3BlY2lhbC5kZWxlZ2F0ZVR5cGV8fHR5cGUscmZvY3VzTW9ycGgudGVzdChidWJibGVUeXBlK3R5cGUpfHwoY3VyPWN1ci5wYXJlbnROb2RlKTtjdXI7Y3VyPWN1ci5wYXJlbnROb2RlKWV2ZW50UGF0aC5wdXNoKGN1ciksdG1wPWN1cjt0bXA9PT0oZWxlbS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJmV2ZW50UGF0aC5wdXNoKHRtcC5kZWZhdWx0Vmlld3x8dG1wLnBhcmVudFdpbmRvd3x8d2luZG93KX1mb3IoaT0wOyhjdXI9ZXZlbnRQYXRoW2krK10pJiYhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspZXZlbnQudHlwZT1pPjE/YnViYmxlVHlwZTpzcGVjaWFsLmJpbmRUeXBlfHx0eXBlLGhhbmRsZT0oalF1ZXJ5Ll9kYXRhKGN1cixcImV2ZW50c1wiKXx8e30pW2V2ZW50LnR5cGVdJiZqUXVlcnkuX2RhdGEoY3VyLFwiaGFuZGxlXCIpLGhhbmRsZSYmaGFuZGxlLmFwcGx5KGN1cixkYXRhKSxoYW5kbGU9b250eXBlJiZjdXJbb250eXBlXSxoYW5kbGUmJmhhbmRsZS5hcHBseSYmalF1ZXJ5LmFjY2VwdERhdGEoY3VyKSYmKGV2ZW50LnJlc3VsdD1oYW5kbGUuYXBwbHkoY3VyLGRhdGEpLGV2ZW50LnJlc3VsdD09PSExJiZldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtpZihldmVudC50eXBlPXR5cGUsIW9ubHlIYW5kbGVycyYmIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpJiYoIXNwZWNpYWwuX2RlZmF1bHR8fHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoZXZlbnRQYXRoLnBvcCgpLGRhdGEpPT09ITEpJiZqUXVlcnkuYWNjZXB0RGF0YShlbGVtKSYmb250eXBlJiZlbGVtW3R5cGVdJiYhalF1ZXJ5LmlzV2luZG93KGVsZW0pKXt0bXA9ZWxlbVtvbnR5cGVdLHRtcCYmKGVsZW1bb250eXBlXT1udWxsKSxqUXVlcnkuZXZlbnQudHJpZ2dlcmVkPXR5cGU7dHJ5e2VsZW1bdHlwZV0oKX1jYXRjaChlKXt9alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsdG1wJiYoZWxlbVtvbnR5cGVdPXRtcCl9cmV0dXJuIGV2ZW50LnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGV2ZW50KXtldmVudD1qUXVlcnkuZXZlbnQuZml4KGV2ZW50KTt2YXIgaSxyZXQsaGFuZGxlT2JqLG1hdGNoZWQsaixoYW5kbGVyUXVldWU9W10sYXJncz1zbGljZS5jYWxsKGFyZ3VtZW50cyksaGFuZGxlcnM9KGpRdWVyeS5fZGF0YSh0aGlzLFwiZXZlbnRzXCIpfHx7fSlbZXZlbnQudHlwZV18fFtdLHNwZWNpYWw9alF1ZXJ5LmV2ZW50LnNwZWNpYWxbZXZlbnQudHlwZV18fHt9O2lmKGFyZ3NbMF09ZXZlbnQsZXZlbnQuZGVsZWdhdGVUYXJnZXQ9dGhpcywhc3BlY2lhbC5wcmVEaXNwYXRjaHx8c3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsZXZlbnQpIT09ITEpe2ZvcihoYW5kbGVyUXVldWU9alF1ZXJ5LmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxldmVudCxoYW5kbGVycyksaT0wOyhtYXRjaGVkPWhhbmRsZXJRdWV1ZVtpKytdKSYmIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KWZvcihldmVudC5jdXJyZW50VGFyZ2V0PW1hdGNoZWQuZWxlbSxqPTA7KGhhbmRsZU9iaj1tYXRjaGVkLmhhbmRsZXJzW2orK10pJiYhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTspKCFldmVudC5uYW1lc3BhY2VfcmV8fGV2ZW50Lm5hbWVzcGFjZV9yZS50ZXN0KGhhbmRsZU9iai5uYW1lc3BhY2UpKSYmKGV2ZW50LmhhbmRsZU9iaj1oYW5kbGVPYmosZXZlbnQuZGF0YT1oYW5kbGVPYmouZGF0YSxyZXQ9KChqUXVlcnkuZXZlbnQuc3BlY2lhbFtoYW5kbGVPYmoub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxoYW5kbGVPYmouaGFuZGxlcikuYXBwbHkobWF0Y2hlZC5lbGVtLGFyZ3MpLHZvaWQgMCE9PXJldCYmKGV2ZW50LnJlc3VsdD1yZXQpPT09ITEmJihldmVudC5wcmV2ZW50RGVmYXVsdCgpLGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpKSk7cmV0dXJuIHNwZWNpYWwucG9zdERpc3BhdGNoJiZzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsZXZlbnQpLGV2ZW50LnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGV2ZW50LGhhbmRsZXJzKXt2YXIgc2VsLGhhbmRsZU9iaixtYXRjaGVzLGksaGFuZGxlclF1ZXVlPVtdLGRlbGVnYXRlQ291bnQ9aGFuZGxlcnMuZGVsZWdhdGVDb3VudCxjdXI9ZXZlbnQudGFyZ2V0O2lmKGRlbGVnYXRlQ291bnQmJmN1ci5ub2RlVHlwZSYmKCFldmVudC5idXR0b258fFwiY2xpY2tcIiE9PWV2ZW50LnR5cGUpKWZvcig7Y3VyIT10aGlzO2N1cj1jdXIucGFyZW50Tm9kZXx8dGhpcylpZigxPT09Y3VyLm5vZGVUeXBlJiYoY3VyLmRpc2FibGVkIT09ITB8fFwiY2xpY2tcIiE9PWV2ZW50LnR5cGUpKXtmb3IobWF0Y2hlcz1bXSxpPTA7ZGVsZWdhdGVDb3VudD5pO2krKyloYW5kbGVPYmo9aGFuZGxlcnNbaV0sc2VsPWhhbmRsZU9iai5zZWxlY3RvcitcIiBcIix2b2lkIDA9PT1tYXRjaGVzW3NlbF0mJihtYXRjaGVzW3NlbF09aGFuZGxlT2JqLm5lZWRzQ29udGV4dD9qUXVlcnkoc2VsLHRoaXMpLmluZGV4KGN1cik+PTA6alF1ZXJ5LmZpbmQoc2VsLHRoaXMsbnVsbCxbY3VyXSkubGVuZ3RoKSxtYXRjaGVzW3NlbF0mJm1hdGNoZXMucHVzaChoYW5kbGVPYmopO21hdGNoZXMubGVuZ3RoJiZoYW5kbGVyUXVldWUucHVzaCh7ZWxlbTpjdXIsaGFuZGxlcnM6bWF0Y2hlc30pfXJldHVybiBkZWxlZ2F0ZUNvdW50PGhhbmRsZXJzLmxlbmd0aCYmaGFuZGxlclF1ZXVlLnB1c2goe2VsZW06dGhpcyxoYW5kbGVyczpoYW5kbGVycy5zbGljZShkZWxlZ2F0ZUNvdW50KX0pLGhhbmRsZXJRdWV1ZX0sZml4OmZ1bmN0aW9uKGV2ZW50KXtpZihldmVudFtqUXVlcnkuZXhwYW5kb10pcmV0dXJuIGV2ZW50O3ZhciBpLHByb3AsY29weSx0eXBlPWV2ZW50LnR5cGUsb3JpZ2luYWxFdmVudD1ldmVudCxmaXhIb29rPXRoaXMuZml4SG9va3NbdHlwZV07Zm9yKGZpeEhvb2t8fCh0aGlzLmZpeEhvb2tzW3R5cGVdPWZpeEhvb2s9cm1vdXNlRXZlbnQudGVzdCh0eXBlKT90aGlzLm1vdXNlSG9va3M6cmtleUV2ZW50LnRlc3QodHlwZSk/dGhpcy5rZXlIb29rczp7fSksY29weT1maXhIb29rLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGZpeEhvb2sucHJvcHMpOnRoaXMucHJvcHMsZXZlbnQ9bmV3IGpRdWVyeS5FdmVudChvcmlnaW5hbEV2ZW50KSxpPWNvcHkubGVuZ3RoO2ktLTspcHJvcD1jb3B5W2ldLGV2ZW50W3Byb3BdPW9yaWdpbmFsRXZlbnRbcHJvcF07cmV0dXJuIGV2ZW50LnRhcmdldHx8KGV2ZW50LnRhcmdldD1vcmlnaW5hbEV2ZW50LnNyY0VsZW1lbnR8fGRvY3VtZW50KSwzPT09ZXZlbnQudGFyZ2V0Lm5vZGVUeXBlJiYoZXZlbnQudGFyZ2V0PWV2ZW50LnRhcmdldC5wYXJlbnROb2RlKSxldmVudC5tZXRhS2V5PSEhZXZlbnQubWV0YUtleSxmaXhIb29rLmZpbHRlcj9maXhIb29rLmZpbHRlcihldmVudCxvcmlnaW5hbEV2ZW50KTpldmVudH0scHJvcHM6XCJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2hcIi5zcGxpdChcIiBcIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOlwiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZVwiLnNwbGl0KFwiIFwiKSxmaWx0ZXI6ZnVuY3Rpb24oZXZlbnQsb3JpZ2luYWwpe3JldHVybiBudWxsPT1ldmVudC53aGljaCYmKGV2ZW50LndoaWNoPW51bGwhPW9yaWdpbmFsLmNoYXJDb2RlP29yaWdpbmFsLmNoYXJDb2RlOm9yaWdpbmFsLmtleUNvZGUpLGV2ZW50fX0sbW91c2VIb29rczp7cHJvcHM6XCJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnRcIi5zcGxpdChcIiBcIiksZmlsdGVyOmZ1bmN0aW9uKGV2ZW50LG9yaWdpbmFsKXt2YXIgYm9keSxldmVudERvYyxkb2MsYnV0dG9uPW9yaWdpbmFsLmJ1dHRvbixmcm9tRWxlbWVudD1vcmlnaW5hbC5mcm9tRWxlbWVudDtyZXR1cm4gbnVsbD09ZXZlbnQucGFnZVgmJm51bGwhPW9yaWdpbmFsLmNsaWVudFgmJihldmVudERvYz1ldmVudC50YXJnZXQub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQsZG9jPWV2ZW50RG9jLmRvY3VtZW50RWxlbWVudCxib2R5PWV2ZW50RG9jLmJvZHksZXZlbnQucGFnZVg9b3JpZ2luYWwuY2xpZW50WCsoZG9jJiZkb2Muc2Nyb2xsTGVmdHx8Ym9keSYmYm9keS5zY3JvbGxMZWZ0fHwwKS0oZG9jJiZkb2MuY2xpZW50TGVmdHx8Ym9keSYmYm9keS5jbGllbnRMZWZ0fHwwKSxldmVudC5wYWdlWT1vcmlnaW5hbC5jbGllbnRZKyhkb2MmJmRvYy5zY3JvbGxUb3B8fGJvZHkmJmJvZHkuc2Nyb2xsVG9wfHwwKS0oZG9jJiZkb2MuY2xpZW50VG9wfHxib2R5JiZib2R5LmNsaWVudFRvcHx8MCkpLCFldmVudC5yZWxhdGVkVGFyZ2V0JiZmcm9tRWxlbWVudCYmKGV2ZW50LnJlbGF0ZWRUYXJnZXQ9ZnJvbUVsZW1lbnQ9PT1ldmVudC50YXJnZXQ/b3JpZ2luYWwudG9FbGVtZW50OmZyb21FbGVtZW50KSxldmVudC53aGljaHx8dm9pZCAwPT09YnV0dG9ufHwoZXZlbnQud2hpY2g9MSZidXR0b24/MToyJmJ1dHRvbj8zOjQmYnV0dG9uPzI6MCksZXZlbnR9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09c2FmZUFjdGl2ZUVsZW1lbnQoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChlKXt9fSxkZWxlZ2F0ZVR5cGU6XCJmb2N1c2luXCJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PXNhZmVBY3RpdmVFbGVtZW50KCkmJnRoaXMuYmx1cj8odGhpcy5ibHVyKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOlwiZm9jdXNvdXRcIn0sY2xpY2s6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKHRoaXMsXCJpbnB1dFwiKSYmXCJjaGVja2JveFwiPT09dGhpcy50eXBlJiZ0aGlzLmNsaWNrPyh0aGlzLmNsaWNrKCksITEpOnZvaWQgMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZXZlbnQpe3JldHVybiBqUXVlcnkubm9kZU5hbWUoZXZlbnQudGFyZ2V0LFwiYVwiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGV2ZW50KXt2b2lkIDAhPT1ldmVudC5yZXN1bHQmJmV2ZW50Lm9yaWdpbmFsRXZlbnQmJihldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWV2ZW50LnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24odHlwZSxlbGVtLGV2ZW50LGJ1YmJsZSl7dmFyIGU9alF1ZXJ5LmV4dGVuZChuZXcgalF1ZXJ5LkV2ZW50LGV2ZW50LHt0eXBlOnR5cGUsaXNTaW11bGF0ZWQ6ITAsb3JpZ2luYWxFdmVudDp7fX0pO2J1YmJsZT9qUXVlcnkuZXZlbnQudHJpZ2dlcihlLG51bGwsZWxlbSk6alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmNhbGwoZWxlbSxlKSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZldmVudC5wcmV2ZW50RGVmYXVsdCgpfX0salF1ZXJ5LnJlbW92ZUV2ZW50PWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oZWxlbSx0eXBlLGhhbmRsZSl7ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyJiZlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSxoYW5kbGUsITEpfTpmdW5jdGlvbihlbGVtLHR5cGUsaGFuZGxlKXt2YXIgbmFtZT1cIm9uXCIrdHlwZTtlbGVtLmRldGFjaEV2ZW50JiYodHlwZW9mIGVsZW1bbmFtZV09PT1zdHJ1bmRlZmluZWQmJihlbGVtW25hbWVdPW51bGwpLGVsZW0uZGV0YWNoRXZlbnQobmFtZSxoYW5kbGUpKX0salF1ZXJ5LkV2ZW50PWZ1bmN0aW9uKHNyYyxwcm9wcyl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQ/KHNyYyYmc3JjLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1zcmMsdGhpcy50eXBlPXNyYy50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXNyYy5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1zcmMuZGVmYXVsdFByZXZlbnRlZCYmc3JjLnJldHVyblZhbHVlPT09ITE/cmV0dXJuVHJ1ZTpyZXR1cm5GYWxzZSk6dGhpcy50eXBlPXNyYyxwcm9wcyYmalF1ZXJ5LmV4dGVuZCh0aGlzLHByb3BzKSx0aGlzLnRpbWVTdGFtcD1zcmMmJnNyYy50aW1lU3RhbXB8fGpRdWVyeS5ub3coKSx2b2lkKHRoaXNbalF1ZXJ5LmV4cGFuZG9dPSEwKSk6bmV3IGpRdWVyeS5FdmVudChzcmMscHJvcHMpfSxqUXVlcnkuRXZlbnQucHJvdG90eXBlPXtpc0RlZmF1bHRQcmV2ZW50ZWQ6cmV0dXJuRmFsc2UsaXNQcm9wYWdhdGlvblN0b3BwZWQ6cmV0dXJuRmFsc2UsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6cmV0dXJuRmFsc2UscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cmV0dXJuVHJ1ZSxlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6ZS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXJldHVyblRydWUsZSYmKGUuc3RvcFByb3BhZ2F0aW9uJiZlLnN0b3BQcm9wYWdhdGlvbigpLGUuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9cmV0dXJuVHJ1ZSxlJiZlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0salF1ZXJ5LmVhY2goe21vdXNlZW50ZXI6XCJtb3VzZW92ZXJcIixtb3VzZWxlYXZlOlwibW91c2VvdXRcIixwb2ludGVyZW50ZXI6XCJwb2ludGVyb3ZlclwiLHBvaW50ZXJsZWF2ZTpcInBvaW50ZXJvdXRcIn0sZnVuY3Rpb24ob3JpZyxmaXgpe2pRdWVyeS5ldmVudC5zcGVjaWFsW29yaWddPXtkZWxlZ2F0ZVR5cGU6Zml4LGJpbmRUeXBlOmZpeCxoYW5kbGU6ZnVuY3Rpb24oZXZlbnQpe3ZhciByZXQsdGFyZ2V0PXRoaXMscmVsYXRlZD1ldmVudC5yZWxhdGVkVGFyZ2V0LGhhbmRsZU9iaj1ldmVudC5oYW5kbGVPYmo7cmV0dXJuKCFyZWxhdGVkfHxyZWxhdGVkIT09dGFyZ2V0JiYhalF1ZXJ5LmNvbnRhaW5zKHRhcmdldCxyZWxhdGVkKSkmJihldmVudC50eXBlPWhhbmRsZU9iai5vcmlnVHlwZSxyZXQ9aGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGV2ZW50LnR5cGU9Zml4KSxyZXR9fX0pLHN1cHBvcnQuc3VibWl0QnViYmxlc3x8KGpRdWVyeS5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKHRoaXMsXCJmb3JtXCIpPyExOnZvaWQgalF1ZXJ5LmV2ZW50LmFkZCh0aGlzLFwiY2xpY2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0XCIsZnVuY3Rpb24oZSl7dmFyIGVsZW09ZS50YXJnZXQsZm9ybT1qUXVlcnkubm9kZU5hbWUoZWxlbSxcImlucHV0XCIpfHxqUXVlcnkubm9kZU5hbWUoZWxlbSxcImJ1dHRvblwiKT9lbGVtLmZvcm06dm9pZCAwO2Zvcm0mJiFqUXVlcnkuX2RhdGEoZm9ybSxcInN1Ym1pdEJ1YmJsZXNcIikmJihqUXVlcnkuZXZlbnQuYWRkKGZvcm0sXCJzdWJtaXQuX3N1Ym1pdFwiLGZ1bmN0aW9uKGV2ZW50KXtldmVudC5fc3VibWl0X2J1YmJsZT0hMH0pLGpRdWVyeS5fZGF0YShmb3JtLFwic3VibWl0QnViYmxlc1wiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGV2ZW50KXtldmVudC5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBldmVudC5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFldmVudC5pc1RyaWdnZXImJmpRdWVyeS5ldmVudC5zaW11bGF0ZShcInN1Ym1pdFwiLHRoaXMucGFyZW50Tm9kZSxldmVudCwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBqUXVlcnkubm9kZU5hbWUodGhpcyxcImZvcm1cIik/ITE6dm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlKHRoaXMsXCIuX3N1Ym1pdFwiKX19KSxzdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fChqUXVlcnkuZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIHJmb3JtRWxlbXMudGVzdCh0aGlzLm5vZGVOYW1lKT8oKFwiY2hlY2tib3hcIj09PXRoaXMudHlwZXx8XCJyYWRpb1wiPT09dGhpcy50eXBlKSYmKGpRdWVyeS5ldmVudC5hZGQodGhpcyxcInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2VcIixmdW5jdGlvbihldmVudCl7XCJjaGVja2VkXCI9PT1ldmVudC5vcmlnaW5hbEV2ZW50LnByb3BlcnR5TmFtZSYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMCl9KSxqUXVlcnkuZXZlbnQuYWRkKHRoaXMsXCJjbGljay5fY2hhbmdlXCIsZnVuY3Rpb24oZXZlbnQpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWV2ZW50LmlzVHJpZ2dlciYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMSksalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKFwiY2hhbmdlXCIsdGhpcyxldmVudCwhMCl9KSksITEpOnZvaWQgalF1ZXJ5LmV2ZW50LmFkZCh0aGlzLFwiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZVwiLGZ1bmN0aW9uKGUpe3ZhciBlbGVtPWUudGFyZ2V0O3Jmb3JtRWxlbXMudGVzdChlbGVtLm5vZGVOYW1lKSYmIWpRdWVyeS5fZGF0YShlbGVtLFwiY2hhbmdlQnViYmxlc1wiKSYmKGpRdWVyeS5ldmVudC5hZGQoZWxlbSxcImNoYW5nZS5fY2hhbmdlXCIsZnVuY3Rpb24oZXZlbnQpeyF0aGlzLnBhcmVudE5vZGV8fGV2ZW50LmlzU2ltdWxhdGVkfHxldmVudC5pc1RyaWdnZXJ8fGpRdWVyeS5ldmVudC5zaW11bGF0ZShcImNoYW5nZVwiLHRoaXMucGFyZW50Tm9kZSxldmVudCwhMCl9KSxqUXVlcnkuX2RhdGEoZWxlbSxcImNoYW5nZUJ1YmJsZXNcIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihldmVudCl7dmFyIGVsZW09ZXZlbnQudGFyZ2V0O3JldHVybiB0aGlzIT09ZWxlbXx8ZXZlbnQuaXNTaW11bGF0ZWR8fGV2ZW50LmlzVHJpZ2dlcnx8XCJyYWRpb1wiIT09ZWxlbS50eXBlJiZcImNoZWNrYm94XCIhPT1lbGVtLnR5cGU/ZXZlbnQuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOnZvaWQgMH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5LmV2ZW50LnJlbW92ZSh0aGlzLFwiLl9jaGFuZ2VcIiksIXJmb3JtRWxlbXMudGVzdCh0aGlzLm5vZGVOYW1lKX19KSxzdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxqUXVlcnkuZWFjaCh7Zm9jdXM6XCJmb2N1c2luXCIsYmx1cjpcImZvY3Vzb3V0XCJ9LGZ1bmN0aW9uKG9yaWcsZml4KXt2YXIgaGFuZGxlcj1mdW5jdGlvbihldmVudCl7alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKGZpeCxldmVudC50YXJnZXQsalF1ZXJ5LmV2ZW50LmZpeChldmVudCksITApfTtqUXVlcnkuZXZlbnQuc3BlY2lhbFtmaXhdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBkb2M9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGF0dGFjaGVzPWpRdWVyeS5fZGF0YShkb2MsZml4KTthdHRhY2hlc3x8ZG9jLmFkZEV2ZW50TGlzdGVuZXIob3JpZyxoYW5kbGVyLCEwKSxqUXVlcnkuX2RhdGEoZG9jLGZpeCwoYXR0YWNoZXN8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkb2M9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGF0dGFjaGVzPWpRdWVyeS5fZGF0YShkb2MsZml4KS0xO2F0dGFjaGVzP2pRdWVyeS5fZGF0YShkb2MsZml4LGF0dGFjaGVzKTooZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIob3JpZyxoYW5kbGVyLCEwKSxqUXVlcnkuX3JlbW92ZURhdGEoZG9jLGZpeCkpfX19KSxqUXVlcnkuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbih0eXBlcyxzZWxlY3RvcixkYXRhLGZuLG9uZSl7dmFyIHR5cGUsb3JpZ0ZuO2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0eXBlcyl7XCJzdHJpbmdcIiE9dHlwZW9mIHNlbGVjdG9yJiYoZGF0YT1kYXRhfHxzZWxlY3RvcixzZWxlY3Rvcj12b2lkIDApO2Zvcih0eXBlIGluIHR5cGVzKXRoaXMub24odHlwZSxzZWxlY3RvcixkYXRhLHR5cGVzW3R5cGVdLG9uZSk7cmV0dXJuIHRoaXN9aWYobnVsbD09ZGF0YSYmbnVsbD09Zm4/KGZuPXNlbGVjdG9yLGRhdGE9c2VsZWN0b3I9dm9pZCAwKTpudWxsPT1mbiYmKFwic3RyaW5nXCI9PXR5cGVvZiBzZWxlY3Rvcj8oZm49ZGF0YSxkYXRhPXZvaWQgMCk6KGZuPWRhdGEsZGF0YT1zZWxlY3RvcixzZWxlY3Rvcj12b2lkIDApKSxmbj09PSExKWZuPXJldHVybkZhbHNlO2Vsc2UgaWYoIWZuKXJldHVybiB0aGlzO3JldHVybiAxPT09b25lJiYob3JpZ0ZuPWZuLGZuPWZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4galF1ZXJ5KCkub2ZmKGV2ZW50KSxvcmlnRm4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxmbi5ndWlkPW9yaWdGbi5ndWlkfHwob3JpZ0ZuLmd1aWQ9alF1ZXJ5Lmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5ldmVudC5hZGQodGhpcyx0eXBlcyxmbixkYXRhLHNlbGVjdG9yKX0pfSxvbmU6ZnVuY3Rpb24odHlwZXMsc2VsZWN0b3IsZGF0YSxmbil7cmV0dXJuIHRoaXMub24odHlwZXMsc2VsZWN0b3IsZGF0YSxmbiwxKX0sb2ZmOmZ1bmN0aW9uKHR5cGVzLHNlbGVjdG9yLGZuKXt2YXIgaGFuZGxlT2JqLHR5cGU7aWYodHlwZXMmJnR5cGVzLnByZXZlbnREZWZhdWx0JiZ0eXBlcy5oYW5kbGVPYmopcmV0dXJuIGhhbmRsZU9iaj10eXBlcy5oYW5kbGVPYmosalF1ZXJ5KHR5cGVzLmRlbGVnYXRlVGFyZ2V0KS5vZmYoaGFuZGxlT2JqLm5hbWVzcGFjZT9oYW5kbGVPYmoub3JpZ1R5cGUrXCIuXCIraGFuZGxlT2JqLm5hbWVzcGFjZTpoYW5kbGVPYmoub3JpZ1R5cGUsaGFuZGxlT2JqLnNlbGVjdG9yLGhhbmRsZU9iai5oYW5kbGVyKSx0aGlzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0eXBlcyl7Zm9yKHR5cGUgaW4gdHlwZXMpdGhpcy5vZmYodHlwZSxzZWxlY3Rvcix0eXBlc1t0eXBlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKHNlbGVjdG9yPT09ITF8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHNlbGVjdG9yKSYmKGZuPXNlbGVjdG9yLHNlbGVjdG9yPXZvaWQgMCksZm49PT0hMSYmKGZuPXJldHVybkZhbHNlKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtqUXVlcnkuZXZlbnQucmVtb3ZlKHRoaXMsdHlwZXMsZm4sc2VsZWN0b3IpfSl9LHRyaWdnZXI6ZnVuY3Rpb24odHlwZSxkYXRhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmV2ZW50LnRyaWdnZXIodHlwZSxkYXRhLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKHR5cGUsZGF0YSl7dmFyIGVsZW09dGhpc1swXTtyZXR1cm4gZWxlbT9qUXVlcnkuZXZlbnQudHJpZ2dlcih0eXBlLGRhdGEsZWxlbSwhMCk6dm9pZCAwfX0pO3ZhciBub2RlTmFtZXM9XCJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhlYWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFyeXx0aW1lfHZpZGVvXCIscmlubGluZWpRdWVyeT0vIGpRdWVyeVxcZCs9XCIoPzpudWxsfFxcZCspXCIvZyxybm9zaGltY2FjaGU9bmV3IFJlZ0V4cChcIjwoPzpcIitub2RlTmFtZXMrXCIpW1xcXFxzLz5dXCIsXCJpXCIpLHJsZWFkaW5nV2hpdGVzcGFjZT0vXlxccysvLHJ4aHRtbFRhZz0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXFx3Ol0rKVtePl0qKVxcLz4vZ2kscnRhZ05hbWU9LzwoW1xcdzpdKykvLHJ0Ym9keT0vPHRib2R5L2kscmh0bWw9Lzx8JiM/XFx3KzsvLHJub0lubmVyaHRtbD0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLHJjaGVja2VkPS9jaGVja2VkXFxzKig/OltePV18PVxccyouY2hlY2tlZC4pL2kscnNjcmlwdFR5cGU9L14kfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxyc2NyaXB0VHlwZU1hc2tlZD0vXnRydWVcXC8oLiopLyxyY2xlYW5TY3JpcHQ9L15cXHMqPCEoPzpcXFtDREFUQVxcW3wtLSl8KD86XFxdXFxdfC0tKT5cXHMqJC9nLHdyYXBNYXA9e29wdGlvbjpbMSxcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIixcIjwvc2VsZWN0PlwiXSxsZWdlbmQ6WzEsXCI8ZmllbGRzZXQ+XCIsXCI8L2ZpZWxkc2V0PlwiXSxhcmVhOlsxLFwiPG1hcD5cIixcIjwvbWFwPlwiXSxwYXJhbTpbMSxcIjxvYmplY3Q+XCIsXCI8L29iamVjdD5cIl0sdGhlYWQ6WzEsXCI8dGFibGU+XCIsXCI8L3RhYmxlPlwiXSx0cjpbMixcIjx0YWJsZT48dGJvZHk+XCIsXCI8L3Rib2R5PjwvdGFibGU+XCJdLGNvbDpbMixcIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+XCIsXCI8L2NvbGdyb3VwPjwvdGFibGU+XCJdLHRkOlszLFwiPHRhYmxlPjx0Ym9keT48dHI+XCIsXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIl0sX2RlZmF1bHQ6c3VwcG9ydC5odG1sU2VyaWFsaXplP1swLFwiXCIsXCJcIl06WzEsXCJYPGRpdj5cIixcIjwvZGl2PlwiXX0sc2FmZUZyYWdtZW50PWNyZWF0ZVNhZmVGcmFnbWVudChkb2N1bWVudCksZnJhZ21lbnREaXY9c2FmZUZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpO3dyYXBNYXAub3B0Z3JvdXA9d3JhcE1hcC5vcHRpb24sd3JhcE1hcC50Ym9keT13cmFwTWFwLnRmb290PXdyYXBNYXAuY29sZ3JvdXA9d3JhcE1hcC5jYXB0aW9uPXdyYXBNYXAudGhlYWQsd3JhcE1hcC50aD13cmFwTWFwLnRkLGpRdWVyeS5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGVsZW0sZGF0YUFuZEV2ZW50cyxkZWVwRGF0YUFuZEV2ZW50cyl7dmFyIGRlc3RFbGVtZW50cyxub2RlLGNsb25lLGksc3JjRWxlbWVudHMsaW5QYWdlPWpRdWVyeS5jb250YWlucyhlbGVtLm93bmVyRG9jdW1lbnQsZWxlbSk7aWYoc3VwcG9ydC5odG1sNUNsb25lfHxqUXVlcnkuaXNYTUxEb2MoZWxlbSl8fCFybm9zaGltY2FjaGUudGVzdChcIjxcIitlbGVtLm5vZGVOYW1lK1wiPlwiKT9jbG9uZT1lbGVtLmNsb25lTm9kZSghMCk6KGZyYWdtZW50RGl2LmlubmVySFRNTD1lbGVtLm91dGVySFRNTCxmcmFnbWVudERpdi5yZW1vdmVDaGlsZChjbG9uZT1mcmFnbWVudERpdi5maXJzdENoaWxkKSksIShzdXBwb3J0Lm5vQ2xvbmVFdmVudCYmc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZHx8MSE9PWVsZW0ubm9kZVR5cGUmJjExIT09ZWxlbS5ub2RlVHlwZXx8alF1ZXJ5LmlzWE1MRG9jKGVsZW0pKSlmb3IoZGVzdEVsZW1lbnRzPWdldEFsbChjbG9uZSksc3JjRWxlbWVudHM9Z2V0QWxsKGVsZW0pLGk9MDtudWxsIT0obm9kZT1zcmNFbGVtZW50c1tpXSk7KytpKWRlc3RFbGVtZW50c1tpXSYmZml4Q2xvbmVOb2RlSXNzdWVzKG5vZGUsZGVzdEVsZW1lbnRzW2ldKTtpZihkYXRhQW5kRXZlbnRzKWlmKGRlZXBEYXRhQW5kRXZlbnRzKWZvcihzcmNFbGVtZW50cz1zcmNFbGVtZW50c3x8Z2V0QWxsKGVsZW0pLGRlc3RFbGVtZW50cz1kZXN0RWxlbWVudHN8fGdldEFsbChjbG9uZSksaT0wO251bGwhPShub2RlPXNyY0VsZW1lbnRzW2ldKTtpKyspY2xvbmVDb3B5RXZlbnQobm9kZSxkZXN0RWxlbWVudHNbaV0pO2Vsc2UgY2xvbmVDb3B5RXZlbnQoZWxlbSxjbG9uZSk7cmV0dXJuIGRlc3RFbGVtZW50cz1nZXRBbGwoY2xvbmUsXCJzY3JpcHRcIiksZGVzdEVsZW1lbnRzLmxlbmd0aD4wJiZzZXRHbG9iYWxFdmFsKGRlc3RFbGVtZW50cywhaW5QYWdlJiZnZXRBbGwoZWxlbSxcInNjcmlwdFwiKSksZGVzdEVsZW1lbnRzPXNyY0VsZW1lbnRzPW5vZGU9bnVsbCxjbG9uZX0sYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlbGVtcyxjb250ZXh0LHNjcmlwdHMsc2VsZWN0aW9uKXtmb3IodmFyIGosZWxlbSxjb250YWlucyx0bXAsdGFnLHRib2R5LHdyYXAsbD1lbGVtcy5sZW5ndGgsc2FmZT1jcmVhdGVTYWZlRnJhZ21lbnQoY29udGV4dCksbm9kZXM9W10saT0wO2w+aTtpKyspaWYoZWxlbT1lbGVtc1tpXSxlbGVtfHwwPT09ZWxlbSlpZihcIm9iamVjdFwiPT09alF1ZXJ5LnR5cGUoZWxlbSkpalF1ZXJ5Lm1lcmdlKG5vZGVzLGVsZW0ubm9kZVR5cGU/W2VsZW1dOmVsZW0pO2Vsc2UgaWYocmh0bWwudGVzdChlbGVtKSl7Zm9yKHRtcD10bXB8fHNhZmUuYXBwZW5kQ2hpbGQoY29udGV4dC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKSx0YWc9KHJ0YWdOYW1lLmV4ZWMoZWxlbSl8fFtcIlwiLFwiXCJdKVsxXS50b0xvd2VyQ2FzZSgpLHdyYXA9d3JhcE1hcFt0YWddfHx3cmFwTWFwLl9kZWZhdWx0LHRtcC5pbm5lckhUTUw9d3JhcFsxXStlbGVtLnJlcGxhY2UocnhodG1sVGFnLFwiPCQxPjwvJDI+XCIpK3dyYXBbMl0saj13cmFwWzBdO2otLTspdG1wPXRtcC5sYXN0Q2hpbGQ7aWYoIXN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJnJsZWFkaW5nV2hpdGVzcGFjZS50ZXN0KGVsZW0pJiZub2Rlcy5wdXNoKGNvbnRleHQuY3JlYXRlVGV4dE5vZGUocmxlYWRpbmdXaGl0ZXNwYWNlLmV4ZWMoZWxlbSlbMF0pKSwhc3VwcG9ydC50Ym9keSlmb3IoZWxlbT1cInRhYmxlXCIhPT10YWd8fHJ0Ym9keS50ZXN0KGVsZW0pP1wiPHRhYmxlPlwiIT09d3JhcFsxXXx8cnRib2R5LnRlc3QoZWxlbSk/MDp0bXA6dG1wLmZpcnN0Q2hpbGQsaj1lbGVtJiZlbGVtLmNoaWxkTm9kZXMubGVuZ3RoO2otLTspalF1ZXJ5Lm5vZGVOYW1lKHRib2R5PWVsZW0uY2hpbGROb2Rlc1tqXSxcInRib2R5XCIpJiYhdGJvZHkuY2hpbGROb2Rlcy5sZW5ndGgmJmVsZW0ucmVtb3ZlQ2hpbGQodGJvZHkpO2ZvcihqUXVlcnkubWVyZ2Uobm9kZXMsdG1wLmNoaWxkTm9kZXMpLHRtcC50ZXh0Q29udGVudD1cIlwiO3RtcC5maXJzdENoaWxkOyl0bXAucmVtb3ZlQ2hpbGQodG1wLmZpcnN0Q2hpbGQpO3RtcD1zYWZlLmxhc3RDaGlsZH1lbHNlIG5vZGVzLnB1c2goY29udGV4dC5jcmVhdGVUZXh0Tm9kZShlbGVtKSk7Zm9yKHRtcCYmc2FmZS5yZW1vdmVDaGlsZCh0bXApLHN1cHBvcnQuYXBwZW5kQ2hlY2tlZHx8alF1ZXJ5LmdyZXAoZ2V0QWxsKG5vZGVzLFwiaW5wdXRcIiksZml4RGVmYXVsdENoZWNrZWQpLGk9MDtlbGVtPW5vZGVzW2krK107KWlmKCghc2VsZWN0aW9ufHwtMT09PWpRdWVyeS5pbkFycmF5KGVsZW0sc2VsZWN0aW9uKSkmJihjb250YWlucz1qUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pLHRtcD1nZXRBbGwoc2FmZS5hcHBlbmRDaGlsZChlbGVtKSxcInNjcmlwdFwiKSxjb250YWlucyYmc2V0R2xvYmFsRXZhbCh0bXApLHNjcmlwdHMpKWZvcihqPTA7ZWxlbT10bXBbaisrXTspcnNjcmlwdFR5cGUudGVzdChlbGVtLnR5cGV8fFwiXCIpJiZzY3JpcHRzLnB1c2goZWxlbSk7cmV0dXJuIHRtcD1udWxsLHNhZmV9LGNsZWFuRGF0YTpmdW5jdGlvbihlbGVtcyxhY2NlcHREYXRhKXtmb3IodmFyIGVsZW0sdHlwZSxpZCxkYXRhLGk9MCxpbnRlcm5hbEtleT1qUXVlcnkuZXhwYW5kbyxjYWNoZT1qUXVlcnkuY2FjaGUsZGVsZXRlRXhwYW5kbz1zdXBwb3J0LmRlbGV0ZUV4cGFuZG8sc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbDtudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKWlmKChhY2NlcHREYXRhfHxqUXVlcnkuYWNjZXB0RGF0YShlbGVtKSkmJihpZD1lbGVtW2ludGVybmFsS2V5XSxkYXRhPWlkJiZjYWNoZVtpZF0pKXtpZihkYXRhLmV2ZW50cylmb3IodHlwZSBpbiBkYXRhLmV2ZW50cylzcGVjaWFsW3R5cGVdP2pRdWVyeS5ldmVudC5yZW1vdmUoZWxlbSx0eXBlKTpqUXVlcnkucmVtb3ZlRXZlbnQoZWxlbSx0eXBlLGRhdGEuaGFuZGxlKTtjYWNoZVtpZF0mJihkZWxldGUgY2FjaGVbaWRdLGRlbGV0ZUV4cGFuZG8/ZGVsZXRlIGVsZW1baW50ZXJuYWxLZXldOnR5cGVvZiBlbGVtLnJlbW92ZUF0dHJpYnV0ZSE9PXN0cnVuZGVmaW5lZD9lbGVtLnJlbW92ZUF0dHJpYnV0ZShpbnRlcm5hbEtleSk6ZWxlbVtpbnRlcm5hbEtleV09bnVsbCxkZWxldGVkSWRzLnB1c2goaWQpKX19fSksalF1ZXJ5LmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGFjY2Vzcyh0aGlzLGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdm9pZCAwPT09dmFsdWU/alF1ZXJ5LnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUodmFsdWUpKX0sbnVsbCx2YWx1ZSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGVsZW0pe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgdGFyZ2V0PW1hbmlwdWxhdGlvblRhcmdldCh0aGlzLGVsZW0pO3RhcmdldC5hcHBlbmRDaGlsZChlbGVtKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihlbGVtKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHRhcmdldD1tYW5pcHVsYXRpb25UYXJnZXQodGhpcyxlbGVtKTt0YXJnZXQuaW5zZXJ0QmVmb3JlKGVsZW0sdGFyZ2V0LmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oZWxlbSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW0sdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oZWxlbSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW0sdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKHNlbGVjdG9yLGtlZXBEYXRhKXtmb3IodmFyIGVsZW0sZWxlbXM9c2VsZWN0b3I/alF1ZXJ5LmZpbHRlcihzZWxlY3Rvcix0aGlzKTp0aGlzLGk9MDtudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKWtlZXBEYXRhfHwxIT09ZWxlbS5ub2RlVHlwZXx8alF1ZXJ5LmNsZWFuRGF0YShnZXRBbGwoZWxlbSkpLGVsZW0ucGFyZW50Tm9kZSYmKGtlZXBEYXRhJiZqUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pJiZzZXRHbG9iYWxFdmFsKGdldEFsbChlbGVtLFwic2NyaXB0XCIpKSxlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSkpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZWxlbSxpPTA7bnVsbCE9KGVsZW09dGhpc1tpXSk7aSsrKXtmb3IoMT09PWVsZW0ubm9kZVR5cGUmJmpRdWVyeS5jbGVhbkRhdGEoZ2V0QWxsKGVsZW0sITEpKTtlbGVtLmZpcnN0Q2hpbGQ7KWVsZW0ucmVtb3ZlQ2hpbGQoZWxlbS5maXJzdENoaWxkKTtlbGVtLm9wdGlvbnMmJmpRdWVyeS5ub2RlTmFtZShlbGVtLFwic2VsZWN0XCIpJiYoZWxlbS5vcHRpb25zLmxlbmd0aD0wKX1yZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oZGF0YUFuZEV2ZW50cyxkZWVwRGF0YUFuZEV2ZW50cyl7cmV0dXJuIGRhdGFBbmRFdmVudHM9bnVsbD09ZGF0YUFuZEV2ZW50cz8hMTpkYXRhQW5kRXZlbnRzLGRlZXBEYXRhQW5kRXZlbnRzPW51bGw9PWRlZXBEYXRhQW5kRXZlbnRzP2RhdGFBbmRFdmVudHM6ZGVlcERhdGFBbmRFdmVudHMsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5LmNsb25lKHRoaXMsZGF0YUFuZEV2ZW50cyxkZWVwRGF0YUFuZEV2ZW50cyl9KX0saHRtbDpmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGFjY2Vzcyh0aGlzLGZ1bmN0aW9uKHZhbHVlKXt2YXIgZWxlbT10aGlzWzBdfHx7fSxpPTAsbD10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT12YWx1ZSlyZXR1cm4gMT09PWVsZW0ubm9kZVR5cGU/ZWxlbS5pbm5lckhUTUwucmVwbGFjZShyaW5saW5lalF1ZXJ5LFwiXCIpOnZvaWQgMDtpZihcInN0cmluZ1wiPT10eXBlb2YgdmFsdWUmJiFybm9Jbm5lcmh0bWwudGVzdCh2YWx1ZSkmJihzdXBwb3J0Lmh0bWxTZXJpYWxpemV8fCFybm9zaGltY2FjaGUudGVzdCh2YWx1ZSkpJiYoc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZXx8IXJsZWFkaW5nV2hpdGVzcGFjZS50ZXN0KHZhbHVlKSkmJiF3cmFwTWFwWyhydGFnTmFtZS5leGVjKHZhbHVlKXx8W1wiXCIsXCJcIl0pWzFdLnRvTG93ZXJDYXNlKCldKXt2YWx1ZT12YWx1ZS5yZXBsYWNlKHJ4aHRtbFRhZyxcIjwkMT48LyQyPlwiKTt0cnl7Zm9yKDtsPmk7aSsrKWVsZW09dGhpc1tpXXx8e30sMT09PWVsZW0ubm9kZVR5cGUmJihqUXVlcnkuY2xlYW5EYXRhKGdldEFsbChlbGVtLCExKSksZWxlbS5pbm5lckhUTUw9dmFsdWUpO2VsZW09MH1jYXRjaChlKXt9fWVsZW0mJnRoaXMuZW1wdHkoKS5hcHBlbmQodmFsdWUpfSxudWxsLHZhbHVlLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhcmc9YXJndW1lbnRzWzBdO3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihlbGVtKXthcmc9dGhpcy5wYXJlbnROb2RlLGpRdWVyeS5jbGVhbkRhdGEoZ2V0QWxsKHRoaXMpKSxhcmcmJmFyZy5yZXBsYWNlQ2hpbGQoZWxlbSx0aGlzKX0pLGFyZyYmKGFyZy5sZW5ndGh8fGFyZy5ub2RlVHlwZSk/dGhpczp0aGlzLnJlbW92ZSgpfSxkZXRhY2g6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiB0aGlzLnJlbW92ZShzZWxlY3RvciwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGFyZ3MsY2FsbGJhY2spe2FyZ3M9Y29uY2F0LmFwcGx5KFtdLGFyZ3MpO3ZhciBmaXJzdCxub2RlLGhhc1NjcmlwdHMsc2NyaXB0cyxkb2MsZnJhZ21lbnQsaT0wLGw9dGhpcy5sZW5ndGgsc2V0PXRoaXMsaU5vQ2xvbmU9bC0xLHZhbHVlPWFyZ3NbMF0saXNGdW5jdGlvbj1qUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSk7aWYoaXNGdW5jdGlvbnx8bD4xJiZcInN0cmluZ1wiPT10eXBlb2YgdmFsdWUmJiFzdXBwb3J0LmNoZWNrQ2xvbmUmJnJjaGVja2VkLnRlc3QodmFsdWUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaW5kZXgpe3ZhciBzZWxmPXNldC5lcShpbmRleCk7aXNGdW5jdGlvbiYmKGFyZ3NbMF09dmFsdWUuY2FsbCh0aGlzLGluZGV4LHNlbGYuaHRtbCgpKSksc2VsZi5kb21NYW5pcChhcmdzLGNhbGxiYWNrKX0pO2lmKGwmJihmcmFnbWVudD1qUXVlcnkuYnVpbGRGcmFnbWVudChhcmdzLHRoaXNbMF0ub3duZXJEb2N1bWVudCwhMSx0aGlzKSxmaXJzdD1mcmFnbWVudC5maXJzdENoaWxkLDE9PT1mcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCYmKGZyYWdtZW50PWZpcnN0KSxmaXJzdCkpe2ZvcihzY3JpcHRzPWpRdWVyeS5tYXAoZ2V0QWxsKGZyYWdtZW50LFwic2NyaXB0XCIpLGRpc2FibGVTY3JpcHQpLGhhc1NjcmlwdHM9c2NyaXB0cy5sZW5ndGg7bD5pO2krKylub2RlPWZyYWdtZW50LGkhPT1pTm9DbG9uZSYmKG5vZGU9alF1ZXJ5LmNsb25lKG5vZGUsITAsITApLGhhc1NjcmlwdHMmJmpRdWVyeS5tZXJnZShzY3JpcHRzLGdldEFsbChub2RlLFwic2NyaXB0XCIpKSksY2FsbGJhY2suY2FsbCh0aGlzW2ldLG5vZGUsaSk7aWYoaGFzU2NyaXB0cylmb3IoZG9jPXNjcmlwdHNbc2NyaXB0cy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxqUXVlcnkubWFwKHNjcmlwdHMscmVzdG9yZVNjcmlwdCksaT0wO2hhc1NjcmlwdHM+aTtpKyspbm9kZT1zY3JpcHRzW2ldLHJzY3JpcHRUeXBlLnRlc3Qobm9kZS50eXBlfHxcIlwiKSYmIWpRdWVyeS5fZGF0YShub2RlLFwiZ2xvYmFsRXZhbFwiKSYmalF1ZXJ5LmNvbnRhaW5zKGRvYyxub2RlKSYmKG5vZGUuc3JjP2pRdWVyeS5fZXZhbFVybCYmalF1ZXJ5Ll9ldmFsVXJsKG5vZGUuc3JjKTpqUXVlcnkuZ2xvYmFsRXZhbCgobm9kZS50ZXh0fHxub2RlLnRleHRDb250ZW50fHxub2RlLmlubmVySFRNTHx8XCJcIikucmVwbGFjZShyY2xlYW5TY3JpcHQsXCJcIikpKTtmcmFnbWVudD1maXJzdD1udWxsfXJldHVybiB0aGlzfX0pLGpRdWVyeS5lYWNoKHthcHBlbmRUbzpcImFwcGVuZFwiLHByZXBlbmRUbzpcInByZXBlbmRcIixpbnNlcnRCZWZvcmU6XCJiZWZvcmVcIixpbnNlcnRBZnRlcjpcImFmdGVyXCIscmVwbGFjZUFsbDpcInJlcGxhY2VXaXRoXCJ9LGZ1bmN0aW9uKG5hbWUsb3JpZ2luYWwpe2pRdWVyeS5mbltuYW1lXT1mdW5jdGlvbihzZWxlY3Rvcil7Zm9yKHZhciBlbGVtcyxpPTAscmV0PVtdLGluc2VydD1qUXVlcnkoc2VsZWN0b3IpLGxhc3Q9aW5zZXJ0Lmxlbmd0aC0xO2xhc3Q+PWk7aSsrKWVsZW1zPWk9PT1sYXN0P3RoaXM6dGhpcy5jbG9uZSghMCksalF1ZXJ5KGluc2VydFtpXSlbb3JpZ2luYWxdKGVsZW1zKSxwdXNoLmFwcGx5KHJldCxlbGVtcy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHJldCl9fSk7dmFyIGlmcmFtZSxlbGVtZGlzcGxheT17fTshZnVuY3Rpb24oKXt2YXIgc2hyaW5rV3JhcEJsb2Nrc1ZhbDtzdXBwb3J0LnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1zaHJpbmtXcmFwQmxvY2tzVmFsKXJldHVybiBzaHJpbmtXcmFwQmxvY2tzVmFsO3Nocmlua1dyYXBCbG9ja3NWYWw9ITE7dmFyIGRpdixib2R5LGNvbnRhaW5lcjtyZXR1cm4gYm9keT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0sYm9keSYmYm9keS5zdHlsZT8oZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyLnN0eWxlLmNzc1RleHQ9XCJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweFwiLGJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKS5hcHBlbmRDaGlsZChkaXYpLHR5cGVvZiBkaXYuc3R5bGUuem9vbSE9PXN0cnVuZGVmaW5lZCYmKGRpdi5zdHlsZS5jc3NUZXh0PVwiLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MVwiLGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5zdHlsZS53aWR0aD1cIjVweFwiLHNocmlua1dyYXBCbG9ja3NWYWw9MyE9PWRpdi5vZmZzZXRXaWR0aCksYm9keS5yZW1vdmVDaGlsZChjb250YWluZXIpLHNocmlua1dyYXBCbG9ja3NWYWwpOnZvaWQgMH19KCk7dmFyIGdldFN0eWxlcyxjdXJDU1Mscm1hcmdpbj0vXm1hcmdpbi8scm51bW5vbnB4PW5ldyBSZWdFeHAoXCJeKFwiK3BudW0rXCIpKD8hcHgpW2EteiVdKyRcIixcImlcIikscnBvc2l0aW9uPS9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLzt3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZT8oZ2V0U3R5bGVzPWZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcub3BlbmVyP2VsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW0sbnVsbCk6d2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbSxudWxsKTtcbn0sY3VyQ1NTPWZ1bmN0aW9uKGVsZW0sbmFtZSxjb21wdXRlZCl7dmFyIHdpZHRoLG1pbldpZHRoLG1heFdpZHRoLHJldCxzdHlsZT1lbGVtLnN0eWxlO3JldHVybiBjb21wdXRlZD1jb21wdXRlZHx8Z2V0U3R5bGVzKGVsZW0pLHJldD1jb21wdXRlZD9jb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpfHxjb21wdXRlZFtuYW1lXTp2b2lkIDAsY29tcHV0ZWQmJihcIlwiIT09cmV0fHxqUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pfHwocmV0PWpRdWVyeS5zdHlsZShlbGVtLG5hbWUpKSxybnVtbm9ucHgudGVzdChyZXQpJiZybWFyZ2luLnRlc3QobmFtZSkmJih3aWR0aD1zdHlsZS53aWR0aCxtaW5XaWR0aD1zdHlsZS5taW5XaWR0aCxtYXhXaWR0aD1zdHlsZS5tYXhXaWR0aCxzdHlsZS5taW5XaWR0aD1zdHlsZS5tYXhXaWR0aD1zdHlsZS53aWR0aD1yZXQscmV0PWNvbXB1dGVkLndpZHRoLHN0eWxlLndpZHRoPXdpZHRoLHN0eWxlLm1pbldpZHRoPW1pbldpZHRoLHN0eWxlLm1heFdpZHRoPW1heFdpZHRoKSksdm9pZCAwPT09cmV0P3JldDpyZXQrXCJcIn0pOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihnZXRTdHlsZXM9ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uY3VycmVudFN0eWxlfSxjdXJDU1M9ZnVuY3Rpb24oZWxlbSxuYW1lLGNvbXB1dGVkKXt2YXIgbGVmdCxycyxyc0xlZnQscmV0LHN0eWxlPWVsZW0uc3R5bGU7cmV0dXJuIGNvbXB1dGVkPWNvbXB1dGVkfHxnZXRTdHlsZXMoZWxlbSkscmV0PWNvbXB1dGVkP2NvbXB1dGVkW25hbWVdOnZvaWQgMCxudWxsPT1yZXQmJnN0eWxlJiZzdHlsZVtuYW1lXSYmKHJldD1zdHlsZVtuYW1lXSkscm51bW5vbnB4LnRlc3QocmV0KSYmIXJwb3NpdGlvbi50ZXN0KG5hbWUpJiYobGVmdD1zdHlsZS5sZWZ0LHJzPWVsZW0ucnVudGltZVN0eWxlLHJzTGVmdD1ycyYmcnMubGVmdCxyc0xlZnQmJihycy5sZWZ0PWVsZW0uY3VycmVudFN0eWxlLmxlZnQpLHN0eWxlLmxlZnQ9XCJmb250U2l6ZVwiPT09bmFtZT9cIjFlbVwiOnJldCxyZXQ9c3R5bGUucGl4ZWxMZWZ0K1wicHhcIixzdHlsZS5sZWZ0PWxlZnQscnNMZWZ0JiYocnMubGVmdD1yc0xlZnQpKSx2b2lkIDA9PT1yZXQ/cmV0OnJldCtcIlwifHxcImF1dG9cIn0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKXt2YXIgZGl2LGJvZHksY29udGFpbmVyLGNvbnRlbnRzO2JvZHk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdLGJvZHkmJmJvZHkuc3R5bGUmJihkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxjb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxjb250YWluZXIuc3R5bGUuY3NzVGV4dD1cInBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4XCIsYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpLmFwcGVuZENoaWxkKGRpdiksZGl2LnN0eWxlLmNzc1RleHQ9XCItd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjElO3RvcDoxJTtib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjRweDtwb3NpdGlvbjphYnNvbHV0ZVwiLHBpeGVsUG9zaXRpb25WYWw9Ym94U2l6aW5nUmVsaWFibGVWYWw9ITEscmVsaWFibGVNYXJnaW5SaWdodFZhbD0hMCx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmKHBpeGVsUG9zaXRpb25WYWw9XCIxJVwiIT09KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpdixudWxsKXx8e30pLnRvcCxib3hTaXppbmdSZWxpYWJsZVZhbD1cIjRweFwiPT09KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpdixudWxsKXx8e3dpZHRoOlwiNHB4XCJ9KS53aWR0aCxjb250ZW50cz1kaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSksY29udGVudHMuc3R5bGUuY3NzVGV4dD1kaXYuc3R5bGUuY3NzVGV4dD1cIi13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MFwiLGNvbnRlbnRzLnN0eWxlLm1hcmdpblJpZ2h0PWNvbnRlbnRzLnN0eWxlLndpZHRoPVwiMFwiLGRpdi5zdHlsZS53aWR0aD1cIjFweFwiLHJlbGlhYmxlTWFyZ2luUmlnaHRWYWw9IXBhcnNlRmxvYXQoKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnRzLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpLGRpdi5yZW1vdmVDaGlsZChjb250ZW50cykpLGRpdi5pbm5lckhUTUw9XCI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+XCIsY29udGVudHM9ZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGRcIiksY29udGVudHNbMF0uc3R5bGUuY3NzVGV4dD1cIm1hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MDtkaXNwbGF5Om5vbmVcIixyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWw9MD09PWNvbnRlbnRzWzBdLm9mZnNldEhlaWdodCxyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWwmJihjb250ZW50c1swXS5zdHlsZS5kaXNwbGF5PVwiXCIsY29udGVudHNbMV0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIixyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWw9MD09PWNvbnRlbnRzWzBdLm9mZnNldEhlaWdodCksYm9keS5yZW1vdmVDaGlsZChjb250YWluZXIpKX12YXIgZGl2LHN0eWxlLGEscGl4ZWxQb3NpdGlvblZhbCxib3hTaXppbmdSZWxpYWJsZVZhbCxyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWwscmVsaWFibGVNYXJnaW5SaWdodFZhbDtkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxkaXYuaW5uZXJIVE1MPVwiICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+XCIsYT1kaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJhXCIpWzBdLHN0eWxlPWEmJmEuc3R5bGUsc3R5bGUmJihzdHlsZS5jc3NUZXh0PVwiZmxvYXQ6bGVmdDtvcGFjaXR5Oi41XCIsc3VwcG9ydC5vcGFjaXR5PVwiMC41XCI9PT1zdHlsZS5vcGFjaXR5LHN1cHBvcnQuY3NzRmxvYXQ9ISFzdHlsZS5jc3NGbG9hdCxkaXYuc3R5bGUuYmFja2dyb3VuZENsaXA9XCJjb250ZW50LWJveFwiLGRpdi5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPVwiXCIsc3VwcG9ydC5jbGVhckNsb25lU3R5bGU9XCJjb250ZW50LWJveFwiPT09ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwLHN1cHBvcnQuYm94U2l6aW5nPVwiXCI9PT1zdHlsZS5ib3hTaXppbmd8fFwiXCI9PT1zdHlsZS5Nb3pCb3hTaXppbmd8fFwiXCI9PT1zdHlsZS5XZWJraXRCb3hTaXppbmcsalF1ZXJ5LmV4dGVuZChzdXBwb3J0LHtyZWxpYWJsZUhpZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09cmVsaWFibGVIaWRkZW5PZmZzZXRzVmFsJiZjb21wdXRlU3R5bGVUZXN0cygpLHJlbGlhYmxlSGlkZGVuT2Zmc2V0c1ZhbH0sYm94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09Ym94U2l6aW5nUmVsaWFibGVWYWwmJmNvbXB1dGVTdHlsZVRlc3RzKCksYm94U2l6aW5nUmVsaWFibGVWYWx9LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09cGl4ZWxQb3NpdGlvblZhbCYmY29tcHV0ZVN0eWxlVGVzdHMoKSxwaXhlbFBvc2l0aW9uVmFsfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXJlbGlhYmxlTWFyZ2luUmlnaHRWYWwmJmNvbXB1dGVTdHlsZVRlc3RzKCkscmVsaWFibGVNYXJnaW5SaWdodFZhbH19KSl9KCksalF1ZXJ5LnN3YXA9ZnVuY3Rpb24oZWxlbSxvcHRpb25zLGNhbGxiYWNrLGFyZ3Mpe3ZhciByZXQsbmFtZSxvbGQ9e307Zm9yKG5hbWUgaW4gb3B0aW9ucylvbGRbbmFtZV09ZWxlbS5zdHlsZVtuYW1lXSxlbGVtLnN0eWxlW25hbWVdPW9wdGlvbnNbbmFtZV07cmV0PWNhbGxiYWNrLmFwcGx5KGVsZW0sYXJnc3x8W10pO2ZvcihuYW1lIGluIG9wdGlvbnMpZWxlbS5zdHlsZVtuYW1lXT1vbGRbbmFtZV07cmV0dXJuIHJldH07dmFyIHJhbHBoYT0vYWxwaGFcXChbXildKlxcKS9pLHJvcGFjaXR5PS9vcGFjaXR5XFxzKj1cXHMqKFteKV0qKS8scmRpc3BsYXlzd2FwPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxybnVtc3BsaXQ9bmV3IFJlZ0V4cChcIl4oXCIrcG51bStcIikoLiopJFwiLFwiaVwiKSxycmVsTnVtPW5ldyBSZWdFeHAoXCJeKFsrLV0pPShcIitwbnVtK1wiKVwiLFwiaVwiKSxjc3NTaG93PXtwb3NpdGlvbjpcImFic29sdXRlXCIsdmlzaWJpbGl0eTpcImhpZGRlblwiLGRpc3BsYXk6XCJibG9ja1wifSxjc3NOb3JtYWxUcmFuc2Zvcm09e2xldHRlclNwYWNpbmc6XCIwXCIsZm9udFdlaWdodDpcIjQwMFwifSxjc3NQcmVmaXhlcz1bXCJXZWJraXRcIixcIk9cIixcIk1velwiLFwibXNcIl07alF1ZXJ5LmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlbGVtLGNvbXB1dGVkKXtpZihjb21wdXRlZCl7dmFyIHJldD1jdXJDU1MoZWxlbSxcIm9wYWNpdHlcIik7cmV0dXJuXCJcIj09PXJldD9cIjFcIjpyZXR9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6e1wiZmxvYXRcIjpzdXBwb3J0LmNzc0Zsb2F0P1wiY3NzRmxvYXRcIjpcInN0eWxlRmxvYXRcIn0sc3R5bGU6ZnVuY3Rpb24oZWxlbSxuYW1lLHZhbHVlLGV4dHJhKXtpZihlbGVtJiYzIT09ZWxlbS5ub2RlVHlwZSYmOCE9PWVsZW0ubm9kZVR5cGUmJmVsZW0uc3R5bGUpe3ZhciByZXQsdHlwZSxob29rcyxvcmlnTmFtZT1qUXVlcnkuY2FtZWxDYXNlKG5hbWUpLHN0eWxlPWVsZW0uc3R5bGU7aWYobmFtZT1qUXVlcnkuY3NzUHJvcHNbb3JpZ05hbWVdfHwoalF1ZXJ5LmNzc1Byb3BzW29yaWdOYW1lXT12ZW5kb3JQcm9wTmFtZShzdHlsZSxvcmlnTmFtZSkpLGhvb2tzPWpRdWVyeS5jc3NIb29rc1tuYW1lXXx8alF1ZXJ5LmNzc0hvb2tzW29yaWdOYW1lXSx2b2lkIDA9PT12YWx1ZSlyZXR1cm4gaG9va3MmJlwiZ2V0XCJpbiBob29rcyYmdm9pZCAwIT09KHJldD1ob29rcy5nZXQoZWxlbSwhMSxleHRyYSkpP3JldDpzdHlsZVtuYW1lXTtpZih0eXBlPXR5cGVvZiB2YWx1ZSxcInN0cmluZ1wiPT09dHlwZSYmKHJldD1ycmVsTnVtLmV4ZWModmFsdWUpKSYmKHZhbHVlPShyZXRbMV0rMSkqcmV0WzJdK3BhcnNlRmxvYXQoalF1ZXJ5LmNzcyhlbGVtLG5hbWUpKSx0eXBlPVwibnVtYmVyXCIpLG51bGwhPXZhbHVlJiZ2YWx1ZT09PXZhbHVlJiYoXCJudW1iZXJcIiE9PXR5cGV8fGpRdWVyeS5jc3NOdW1iZXJbb3JpZ05hbWVdfHwodmFsdWUrPVwicHhcIiksc3VwcG9ydC5jbGVhckNsb25lU3R5bGV8fFwiXCIhPT12YWx1ZXx8MCE9PW5hbWUuaW5kZXhPZihcImJhY2tncm91bmRcIil8fChzdHlsZVtuYW1lXT1cImluaGVyaXRcIiksIShob29rcyYmXCJzZXRcImluIGhvb2tzJiZ2b2lkIDA9PT0odmFsdWU9aG9va3Muc2V0KGVsZW0sdmFsdWUsZXh0cmEpKSkpKXRyeXtzdHlsZVtuYW1lXT12YWx1ZX1jYXRjaChlKXt9fX0sY3NzOmZ1bmN0aW9uKGVsZW0sbmFtZSxleHRyYSxzdHlsZXMpe3ZhciBudW0sdmFsLGhvb2tzLG9yaWdOYW1lPWpRdWVyeS5jYW1lbENhc2UobmFtZSk7cmV0dXJuIG5hbWU9alF1ZXJ5LmNzc1Byb3BzW29yaWdOYW1lXXx8KGpRdWVyeS5jc3NQcm9wc1tvcmlnTmFtZV09dmVuZG9yUHJvcE5hbWUoZWxlbS5zdHlsZSxvcmlnTmFtZSkpLGhvb2tzPWpRdWVyeS5jc3NIb29rc1tuYW1lXXx8alF1ZXJ5LmNzc0hvb2tzW29yaWdOYW1lXSxob29rcyYmXCJnZXRcImluIGhvb2tzJiYodmFsPWhvb2tzLmdldChlbGVtLCEwLGV4dHJhKSksdm9pZCAwPT09dmFsJiYodmFsPWN1ckNTUyhlbGVtLG5hbWUsc3R5bGVzKSksXCJub3JtYWxcIj09PXZhbCYmbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0mJih2YWw9Y3NzTm9ybWFsVHJhbnNmb3JtW25hbWVdKSxcIlwiPT09ZXh0cmF8fGV4dHJhPyhudW09cGFyc2VGbG9hdCh2YWwpLGV4dHJhPT09ITB8fGpRdWVyeS5pc051bWVyaWMobnVtKT9udW18fDA6dmFsKTp2YWx9fSksalF1ZXJ5LmVhY2goW1wiaGVpZ2h0XCIsXCJ3aWR0aFwiXSxmdW5jdGlvbihpLG5hbWUpe2pRdWVyeS5jc3NIb29rc1tuYW1lXT17Z2V0OmZ1bmN0aW9uKGVsZW0sY29tcHV0ZWQsZXh0cmEpe3JldHVybiBjb21wdXRlZD9yZGlzcGxheXN3YXAudGVzdChqUXVlcnkuY3NzKGVsZW0sXCJkaXNwbGF5XCIpKSYmMD09PWVsZW0ub2Zmc2V0V2lkdGg/alF1ZXJ5LnN3YXAoZWxlbSxjc3NTaG93LGZ1bmN0aW9uKCl7cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhKX0pOmdldFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhKTp2b2lkIDB9LHNldDpmdW5jdGlvbihlbGVtLHZhbHVlLGV4dHJhKXt2YXIgc3R5bGVzPWV4dHJhJiZnZXRTdHlsZXMoZWxlbSk7cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKGVsZW0sdmFsdWUsZXh0cmE/YXVnbWVudFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhLHN1cHBvcnQuYm94U2l6aW5nJiZcImJvcmRlci1ib3hcIj09PWpRdWVyeS5jc3MoZWxlbSxcImJveFNpemluZ1wiLCExLHN0eWxlcyksc3R5bGVzKTowKX19fSksc3VwcG9ydC5vcGFjaXR5fHwoalF1ZXJ5LmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihlbGVtLGNvbXB1dGVkKXtyZXR1cm4gcm9wYWNpdHkudGVzdCgoY29tcHV0ZWQmJmVsZW0uY3VycmVudFN0eWxlP2VsZW0uY3VycmVudFN0eWxlLmZpbHRlcjplbGVtLnN0eWxlLmZpbHRlcil8fFwiXCIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrXCJcIjpjb21wdXRlZD9cIjFcIjpcIlwifSxzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSl7dmFyIHN0eWxlPWVsZW0uc3R5bGUsY3VycmVudFN0eWxlPWVsZW0uY3VycmVudFN0eWxlLG9wYWNpdHk9alF1ZXJ5LmlzTnVtZXJpYyh2YWx1ZSk/XCJhbHBoYShvcGFjaXR5PVwiKzEwMCp2YWx1ZStcIilcIjpcIlwiLGZpbHRlcj1jdXJyZW50U3R5bGUmJmN1cnJlbnRTdHlsZS5maWx0ZXJ8fHN0eWxlLmZpbHRlcnx8XCJcIjtzdHlsZS56b29tPTEsKHZhbHVlPj0xfHxcIlwiPT09dmFsdWUpJiZcIlwiPT09alF1ZXJ5LnRyaW0oZmlsdGVyLnJlcGxhY2UocmFscGhhLFwiXCIpKSYmc3R5bGUucmVtb3ZlQXR0cmlidXRlJiYoc3R5bGUucmVtb3ZlQXR0cmlidXRlKFwiZmlsdGVyXCIpLFwiXCI9PT12YWx1ZXx8Y3VycmVudFN0eWxlJiYhY3VycmVudFN0eWxlLmZpbHRlcil8fChzdHlsZS5maWx0ZXI9cmFscGhhLnRlc3QoZmlsdGVyKT9maWx0ZXIucmVwbGFjZShyYWxwaGEsb3BhY2l0eSk6ZmlsdGVyK1wiIFwiK29wYWNpdHkpfX0pLGpRdWVyeS5jc3NIb29rcy5tYXJnaW5SaWdodD1hZGRHZXRIb29rSWYoc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGVsZW0sY29tcHV0ZWQpe3JldHVybiBjb21wdXRlZD9qUXVlcnkuc3dhcChlbGVtLHtkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCJ9LGN1ckNTUyxbZWxlbSxcIm1hcmdpblJpZ2h0XCJdKTp2b2lkIDB9KSxqUXVlcnkuZWFjaCh7bWFyZ2luOlwiXCIscGFkZGluZzpcIlwiLGJvcmRlcjpcIldpZHRoXCJ9LGZ1bmN0aW9uKHByZWZpeCxzdWZmaXgpe2pRdWVyeS5jc3NIb29rc1twcmVmaXgrc3VmZml4XT17ZXhwYW5kOmZ1bmN0aW9uKHZhbHVlKXtmb3IodmFyIGk9MCxleHBhbmRlZD17fSxwYXJ0cz1cInN0cmluZ1wiPT10eXBlb2YgdmFsdWU/dmFsdWUuc3BsaXQoXCIgXCIpOlt2YWx1ZV07ND5pO2krKylleHBhbmRlZFtwcmVmaXgrY3NzRXhwYW5kW2ldK3N1ZmZpeF09cGFydHNbaV18fHBhcnRzW2ktMl18fHBhcnRzWzBdO3JldHVybiBleHBhbmRlZH19LHJtYXJnaW4udGVzdChwcmVmaXgpfHwoalF1ZXJ5LmNzc0hvb2tzW3ByZWZpeCtzdWZmaXhdLnNldD1zZXRQb3NpdGl2ZU51bWJlcil9KSxqUXVlcnkuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24obmFtZSx2YWx1ZSl7cmV0dXJuIGFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGVsZW0sbmFtZSx2YWx1ZSl7dmFyIHN0eWxlcyxsZW4sbWFwPXt9LGk9MDtpZihqUXVlcnkuaXNBcnJheShuYW1lKSl7Zm9yKHN0eWxlcz1nZXRTdHlsZXMoZWxlbSksbGVuPW5hbWUubGVuZ3RoO2xlbj5pO2krKyltYXBbbmFtZVtpXV09alF1ZXJ5LmNzcyhlbGVtLG5hbWVbaV0sITEsc3R5bGVzKTtyZXR1cm4gbWFwfXJldHVybiB2b2lkIDAhPT12YWx1ZT9qUXVlcnkuc3R5bGUoZWxlbSxuYW1lLHZhbHVlKTpqUXVlcnkuY3NzKGVsZW0sbmFtZSl9LG5hbWUsdmFsdWUsYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiBzaG93SGlkZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBzaG93SGlkZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKHN0YXRlKXtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIHN0YXRlP3N0YXRlP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2lzSGlkZGVuKHRoaXMpP2pRdWVyeSh0aGlzKS5zaG93KCk6alF1ZXJ5KHRoaXMpLmhpZGUoKX0pfX0pLGpRdWVyeS5Ud2Vlbj1Ud2VlbixUd2Vlbi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlR3ZWVuLGluaXQ6ZnVuY3Rpb24oZWxlbSxvcHRpb25zLHByb3AsZW5kLGVhc2luZyx1bml0KXt0aGlzLmVsZW09ZWxlbSx0aGlzLnByb3A9cHJvcCx0aGlzLmVhc2luZz1lYXNpbmd8fFwic3dpbmdcIix0aGlzLm9wdGlvbnM9b3B0aW9ucyx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9ZW5kLHRoaXMudW5pdD11bml0fHwoalF1ZXJ5LmNzc051bWJlcltwcm9wXT9cIlwiOlwicHhcIil9LGN1cjpmdW5jdGlvbigpe3ZhciBob29rcz1Ud2Vlbi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gaG9va3MmJmhvb2tzLmdldD9ob29rcy5nZXQodGhpcyk6VHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKHBlcmNlbnQpe3ZhciBlYXNlZCxob29rcz1Ud2Vlbi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWVhc2VkPWpRdWVyeS5lYXNpbmdbdGhpcy5lYXNpbmddKHBlcmNlbnQsdGhpcy5vcHRpb25zLmR1cmF0aW9uKnBlcmNlbnQsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9ZWFzZWQ9cGVyY2VudCx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqZWFzZWQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksaG9va3MmJmhvb2tzLnNldD9ob29rcy5zZXQodGhpcyk6VHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sVHdlZW4ucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVR3ZWVuLnByb3RvdHlwZSxUd2Vlbi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24odHdlZW4pe3ZhciByZXN1bHQ7cmV0dXJuIG51bGw9PXR3ZWVuLmVsZW1bdHdlZW4ucHJvcF18fHR3ZWVuLmVsZW0uc3R5bGUmJm51bGwhPXR3ZWVuLmVsZW0uc3R5bGVbdHdlZW4ucHJvcF0/KHJlc3VsdD1qUXVlcnkuY3NzKHR3ZWVuLmVsZW0sdHdlZW4ucHJvcCxcIlwiKSxyZXN1bHQmJlwiYXV0b1wiIT09cmVzdWx0P3Jlc3VsdDowKTp0d2Vlbi5lbGVtW3R3ZWVuLnByb3BdfSxzZXQ6ZnVuY3Rpb24odHdlZW4pe2pRdWVyeS5meC5zdGVwW3R3ZWVuLnByb3BdP2pRdWVyeS5meC5zdGVwW3R3ZWVuLnByb3BdKHR3ZWVuKTp0d2Vlbi5lbGVtLnN0eWxlJiYobnVsbCE9dHdlZW4uZWxlbS5zdHlsZVtqUXVlcnkuY3NzUHJvcHNbdHdlZW4ucHJvcF1dfHxqUXVlcnkuY3NzSG9va3NbdHdlZW4ucHJvcF0pP2pRdWVyeS5zdHlsZSh0d2Vlbi5lbGVtLHR3ZWVuLnByb3AsdHdlZW4ubm93K3R3ZWVuLnVuaXQpOnR3ZWVuLmVsZW1bdHdlZW4ucHJvcF09dHdlZW4ubm93fX19LFR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3A9VHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbih0d2Vlbil7dHdlZW4uZWxlbS5ub2RlVHlwZSYmdHdlZW4uZWxlbS5wYXJlbnROb2RlJiYodHdlZW4uZWxlbVt0d2Vlbi5wcm9wXT10d2Vlbi5ub3cpfX0salF1ZXJ5LmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKHApe3JldHVybiBwfSxzd2luZzpmdW5jdGlvbihwKXtyZXR1cm4uNS1NYXRoLmNvcyhwKk1hdGguUEkpLzJ9fSxqUXVlcnkuZng9VHdlZW4ucHJvdG90eXBlLmluaXQsalF1ZXJ5LmZ4LnN0ZXA9e307dmFyIGZ4Tm93LHRpbWVySWQscmZ4dHlwZXM9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHJmeG51bT1uZXcgUmVnRXhwKFwiXig/OihbKy1dKT18KShcIitwbnVtK1wiKShbYS16JV0qKSRcIixcImlcIikscnJ1bj0vcXVldWVIb29rcyQvLGFuaW1hdGlvblByZWZpbHRlcnM9W2RlZmF1bHRQcmVmaWx0ZXJdLHR3ZWVuZXJzPXtcIipcIjpbZnVuY3Rpb24ocHJvcCx2YWx1ZSl7dmFyIHR3ZWVuPXRoaXMuY3JlYXRlVHdlZW4ocHJvcCx2YWx1ZSksdGFyZ2V0PXR3ZWVuLmN1cigpLHBhcnRzPXJmeG51bS5leGVjKHZhbHVlKSx1bml0PXBhcnRzJiZwYXJ0c1szXXx8KGpRdWVyeS5jc3NOdW1iZXJbcHJvcF0/XCJcIjpcInB4XCIpLHN0YXJ0PShqUXVlcnkuY3NzTnVtYmVyW3Byb3BdfHxcInB4XCIhPT11bml0JiYrdGFyZ2V0KSYmcmZ4bnVtLmV4ZWMoalF1ZXJ5LmNzcyh0d2Vlbi5lbGVtLHByb3ApKSxzY2FsZT0xLG1heEl0ZXJhdGlvbnM9MjA7aWYoc3RhcnQmJnN0YXJ0WzNdIT09dW5pdCl7dW5pdD11bml0fHxzdGFydFszXSxwYXJ0cz1wYXJ0c3x8W10sc3RhcnQ9K3RhcmdldHx8MTtkbyBzY2FsZT1zY2FsZXx8XCIuNVwiLHN0YXJ0Lz1zY2FsZSxqUXVlcnkuc3R5bGUodHdlZW4uZWxlbSxwcm9wLHN0YXJ0K3VuaXQpO3doaWxlKHNjYWxlIT09KHNjYWxlPXR3ZWVuLmN1cigpL3RhcmdldCkmJjEhPT1zY2FsZSYmLS1tYXhJdGVyYXRpb25zKX1yZXR1cm4gcGFydHMmJihzdGFydD10d2Vlbi5zdGFydD0rc3RhcnR8fCt0YXJnZXR8fDAsdHdlZW4udW5pdD11bml0LHR3ZWVuLmVuZD1wYXJ0c1sxXT9zdGFydCsocGFydHNbMV0rMSkqcGFydHNbMl06K3BhcnRzWzJdKSx0d2Vlbn1dfTtqUXVlcnkuQW5pbWF0aW9uPWpRdWVyeS5leHRlbmQoQW5pbWF0aW9uLHt0d2VlbmVyOmZ1bmN0aW9uKHByb3BzLGNhbGxiYWNrKXtqUXVlcnkuaXNGdW5jdGlvbihwcm9wcyk/KGNhbGxiYWNrPXByb3BzLHByb3BzPVtcIipcIl0pOnByb3BzPXByb3BzLnNwbGl0KFwiIFwiKTtmb3IodmFyIHByb3AsaW5kZXg9MCxsZW5ndGg9cHJvcHMubGVuZ3RoO2xlbmd0aD5pbmRleDtpbmRleCsrKXByb3A9cHJvcHNbaW5kZXhdLHR3ZWVuZXJzW3Byb3BdPXR3ZWVuZXJzW3Byb3BdfHxbXSx0d2VlbmVyc1twcm9wXS51bnNoaWZ0KGNhbGxiYWNrKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGNhbGxiYWNrLHByZXBlbmQpe3ByZXBlbmQ/YW5pbWF0aW9uUHJlZmlsdGVycy51bnNoaWZ0KGNhbGxiYWNrKTphbmltYXRpb25QcmVmaWx0ZXJzLnB1c2goY2FsbGJhY2spfX0pLGpRdWVyeS5zcGVlZD1mdW5jdGlvbihzcGVlZCxlYXNpbmcsZm4pe3ZhciBvcHQ9c3BlZWQmJlwib2JqZWN0XCI9PXR5cGVvZiBzcGVlZD9qUXVlcnkuZXh0ZW5kKHt9LHNwZWVkKTp7Y29tcGxldGU6Zm58fCFmbiYmZWFzaW5nfHxqUXVlcnkuaXNGdW5jdGlvbihzcGVlZCkmJnNwZWVkLGR1cmF0aW9uOnNwZWVkLGVhc2luZzpmbiYmZWFzaW5nfHxlYXNpbmcmJiFqUXVlcnkuaXNGdW5jdGlvbihlYXNpbmcpJiZlYXNpbmd9O3JldHVybiBvcHQuZHVyYXRpb249alF1ZXJ5LmZ4Lm9mZj8wOlwibnVtYmVyXCI9PXR5cGVvZiBvcHQuZHVyYXRpb24/b3B0LmR1cmF0aW9uOm9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzP2pRdWVyeS5meC5zcGVlZHNbb3B0LmR1cmF0aW9uXTpqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0LChudWxsPT1vcHQucXVldWV8fG9wdC5xdWV1ZT09PSEwKSYmKG9wdC5xdWV1ZT1cImZ4XCIpLG9wdC5vbGQ9b3B0LmNvbXBsZXRlLG9wdC5jb21wbGV0ZT1mdW5jdGlvbigpe2pRdWVyeS5pc0Z1bmN0aW9uKG9wdC5vbGQpJiZvcHQub2xkLmNhbGwodGhpcyksb3B0LnF1ZXVlJiZqUXVlcnkuZGVxdWV1ZSh0aGlzLG9wdC5xdWV1ZSl9LG9wdH0salF1ZXJ5LmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKHNwZWVkLHRvLGVhc2luZyxjYWxsYmFjayl7cmV0dXJuIHRoaXMuZmlsdGVyKGlzSGlkZGVuKS5jc3MoXCJvcGFjaXR5XCIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6dG99LHNwZWVkLGVhc2luZyxjYWxsYmFjayl9LGFuaW1hdGU6ZnVuY3Rpb24ocHJvcCxzcGVlZCxlYXNpbmcsY2FsbGJhY2spe3ZhciBlbXB0eT1qUXVlcnkuaXNFbXB0eU9iamVjdChwcm9wKSxvcHRhbGw9alF1ZXJ5LnNwZWVkKHNwZWVkLGVhc2luZyxjYWxsYmFjayksZG9BbmltYXRpb249ZnVuY3Rpb24oKXt2YXIgYW5pbT1BbmltYXRpb24odGhpcyxqUXVlcnkuZXh0ZW5kKHt9LHByb3ApLG9wdGFsbCk7KGVtcHR5fHxqUXVlcnkuX2RhdGEodGhpcyxcImZpbmlzaFwiKSkmJmFuaW0uc3RvcCghMCl9O3JldHVybiBkb0FuaW1hdGlvbi5maW5pc2g9ZG9BbmltYXRpb24sZW1wdHl8fG9wdGFsbC5xdWV1ZT09PSExP3RoaXMuZWFjaChkb0FuaW1hdGlvbik6dGhpcy5xdWV1ZShvcHRhbGwucXVldWUsZG9BbmltYXRpb24pfSxzdG9wOmZ1bmN0aW9uKHR5cGUsY2xlYXJRdWV1ZSxnb3RvRW5kKXt2YXIgc3RvcFF1ZXVlPWZ1bmN0aW9uKGhvb2tzKXt2YXIgc3RvcD1ob29rcy5zdG9wO2RlbGV0ZSBob29rcy5zdG9wLHN0b3AoZ290b0VuZCl9O3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0eXBlJiYoZ290b0VuZD1jbGVhclF1ZXVlLGNsZWFyUXVldWU9dHlwZSx0eXBlPXZvaWQgMCksY2xlYXJRdWV1ZSYmdHlwZSE9PSExJiZ0aGlzLnF1ZXVlKHR5cGV8fFwiZnhcIixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGRlcXVldWU9ITAsaW5kZXg9bnVsbCE9dHlwZSYmdHlwZStcInF1ZXVlSG9va3NcIix0aW1lcnM9alF1ZXJ5LnRpbWVycyxkYXRhPWpRdWVyeS5fZGF0YSh0aGlzKTtpZihpbmRleClkYXRhW2luZGV4XSYmZGF0YVtpbmRleF0uc3RvcCYmc3RvcFF1ZXVlKGRhdGFbaW5kZXhdKTtlbHNlIGZvcihpbmRleCBpbiBkYXRhKWRhdGFbaW5kZXhdJiZkYXRhW2luZGV4XS5zdG9wJiZycnVuLnRlc3QoaW5kZXgpJiZzdG9wUXVldWUoZGF0YVtpbmRleF0pO2ZvcihpbmRleD10aW1lcnMubGVuZ3RoO2luZGV4LS07KXRpbWVyc1tpbmRleF0uZWxlbSE9PXRoaXN8fG51bGwhPXR5cGUmJnRpbWVyc1tpbmRleF0ucXVldWUhPT10eXBlfHwodGltZXJzW2luZGV4XS5hbmltLnN0b3AoZ290b0VuZCksZGVxdWV1ZT0hMSx0aW1lcnMuc3BsaWNlKGluZGV4LDEpKTsoZGVxdWV1ZXx8IWdvdG9FbmQpJiZqUXVlcnkuZGVxdWV1ZSh0aGlzLHR5cGUpfSl9LGZpbmlzaDpmdW5jdGlvbih0eXBlKXtyZXR1cm4gdHlwZSE9PSExJiYodHlwZT10eXBlfHxcImZ4XCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpbmRleCxkYXRhPWpRdWVyeS5fZGF0YSh0aGlzKSxxdWV1ZT1kYXRhW3R5cGUrXCJxdWV1ZVwiXSxob29rcz1kYXRhW3R5cGUrXCJxdWV1ZUhvb2tzXCJdLHRpbWVycz1qUXVlcnkudGltZXJzLGxlbmd0aD1xdWV1ZT9xdWV1ZS5sZW5ndGg6MDtmb3IoZGF0YS5maW5pc2g9ITAsalF1ZXJ5LnF1ZXVlKHRoaXMsdHlwZSxbXSksaG9va3MmJmhvb2tzLnN0b3AmJmhvb2tzLnN0b3AuY2FsbCh0aGlzLCEwKSxpbmRleD10aW1lcnMubGVuZ3RoO2luZGV4LS07KXRpbWVyc1tpbmRleF0uZWxlbT09PXRoaXMmJnRpbWVyc1tpbmRleF0ucXVldWU9PT10eXBlJiYodGltZXJzW2luZGV4XS5hbmltLnN0b3AoITApLHRpbWVycy5zcGxpY2UoaW5kZXgsMSkpO2ZvcihpbmRleD0wO2xlbmd0aD5pbmRleDtpbmRleCsrKXF1ZXVlW2luZGV4XSYmcXVldWVbaW5kZXhdLmZpbmlzaCYmcXVldWVbaW5kZXhdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBkYXRhLmZpbmlzaH0pfX0pLGpRdWVyeS5lYWNoKFtcInRvZ2dsZVwiLFwic2hvd1wiLFwiaGlkZVwiXSxmdW5jdGlvbihpLG5hbWUpe3ZhciBjc3NGbj1qUXVlcnkuZm5bbmFtZV07alF1ZXJ5LmZuW25hbWVdPWZ1bmN0aW9uKHNwZWVkLGVhc2luZyxjYWxsYmFjayl7cmV0dXJuIG51bGw9PXNwZWVkfHxcImJvb2xlYW5cIj09dHlwZW9mIHNwZWVkP2Nzc0ZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2VuRngobmFtZSwhMCksc3BlZWQsZWFzaW5nLGNhbGxiYWNrKX19KSxqUXVlcnkuZWFjaCh7c2xpZGVEb3duOmdlbkZ4KFwic2hvd1wiKSxzbGlkZVVwOmdlbkZ4KFwiaGlkZVwiKSxzbGlkZVRvZ2dsZTpnZW5GeChcInRvZ2dsZVwiKSxmYWRlSW46e29wYWNpdHk6XCJzaG93XCJ9LGZhZGVPdXQ6e29wYWNpdHk6XCJoaWRlXCJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6XCJ0b2dnbGVcIn19LGZ1bmN0aW9uKG5hbWUscHJvcHMpe2pRdWVyeS5mbltuYW1lXT1mdW5jdGlvbihzcGVlZCxlYXNpbmcsY2FsbGJhY2spe3JldHVybiB0aGlzLmFuaW1hdGUocHJvcHMsc3BlZWQsZWFzaW5nLGNhbGxiYWNrKX19KSxqUXVlcnkudGltZXJzPVtdLGpRdWVyeS5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIHRpbWVyLHRpbWVycz1qUXVlcnkudGltZXJzLGk9MDtmb3IoZnhOb3c9alF1ZXJ5Lm5vdygpO2k8dGltZXJzLmxlbmd0aDtpKyspdGltZXI9dGltZXJzW2ldLHRpbWVyKCl8fHRpbWVyc1tpXSE9PXRpbWVyfHx0aW1lcnMuc3BsaWNlKGktLSwxKTt0aW1lcnMubGVuZ3RofHxqUXVlcnkuZnguc3RvcCgpLGZ4Tm93PXZvaWQgMH0salF1ZXJ5LmZ4LnRpbWVyPWZ1bmN0aW9uKHRpbWVyKXtqUXVlcnkudGltZXJzLnB1c2godGltZXIpLHRpbWVyKCk/alF1ZXJ5LmZ4LnN0YXJ0KCk6alF1ZXJ5LnRpbWVycy5wb3AoKX0salF1ZXJ5LmZ4LmludGVydmFsPTEzLGpRdWVyeS5meC5zdGFydD1mdW5jdGlvbigpe3RpbWVySWR8fCh0aW1lcklkPXNldEludGVydmFsKGpRdWVyeS5meC50aWNrLGpRdWVyeS5meC5pbnRlcnZhbCkpfSxqUXVlcnkuZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGltZXJJZCksdGltZXJJZD1udWxsfSxqUXVlcnkuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LGpRdWVyeS5mbi5kZWxheT1mdW5jdGlvbih0aW1lLHR5cGUpe3JldHVybiB0aW1lPWpRdWVyeS5meD9qUXVlcnkuZnguc3BlZWRzW3RpbWVdfHx0aW1lOnRpbWUsdHlwZT10eXBlfHxcImZ4XCIsdGhpcy5xdWV1ZSh0eXBlLGZ1bmN0aW9uKG5leHQsaG9va3Mpe3ZhciB0aW1lb3V0PXNldFRpbWVvdXQobmV4dCx0aW1lKTtob29rcy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRpbWVvdXQpfX0pfSxmdW5jdGlvbigpe3ZhciBpbnB1dCxkaXYsc2VsZWN0LGEsb3B0O2Rpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGRpdi5zZXRBdHRyaWJ1dGUoXCJjbGFzc05hbWVcIixcInRcIiksZGl2LmlubmVySFRNTD1cIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPlwiLGE9ZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYVwiKVswXSxzZWxlY3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiKSxvcHQ9c2VsZWN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIikpLGlucHV0PWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdLGEuc3R5bGUuY3NzVGV4dD1cInRvcDoxcHhcIixzdXBwb3J0LmdldFNldEF0dHJpYnV0ZT1cInRcIiE9PWRpdi5jbGFzc05hbWUsc3VwcG9ydC5zdHlsZT0vdG9wLy50ZXN0KGEuZ2V0QXR0cmlidXRlKFwic3R5bGVcIikpLHN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQ9XCIvYVwiPT09YS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpLHN1cHBvcnQuY2hlY2tPbj0hIWlucHV0LnZhbHVlLHN1cHBvcnQub3B0U2VsZWN0ZWQ9b3B0LnNlbGVjdGVkLHN1cHBvcnQuZW5jdHlwZT0hIWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIpLmVuY3R5cGUsc2VsZWN0LmRpc2FibGVkPSEwLHN1cHBvcnQub3B0RGlzYWJsZWQ9IW9wdC5kaXNhYmxlZCxpbnB1dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiksaW5wdXQuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiKSxzdXBwb3J0LmlucHV0PVwiXCI9PT1pbnB1dC5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSxpbnB1dC52YWx1ZT1cInRcIixpbnB1dC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJyYWRpb1wiKSxzdXBwb3J0LnJhZGlvVmFsdWU9XCJ0XCI9PT1pbnB1dC52YWx1ZX0oKTt2YXIgcnJldHVybj0vXFxyL2c7alF1ZXJ5LmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKHZhbHVlKXt2YXIgaG9va3MscmV0LGlzRnVuY3Rpb24sZWxlbT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBpc0Z1bmN0aW9uPWpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKSx0aGlzLmVhY2goZnVuY3Rpb24oaSl7dmFyIHZhbDsxPT09dGhpcy5ub2RlVHlwZSYmKHZhbD1pc0Z1bmN0aW9uP3ZhbHVlLmNhbGwodGhpcyxpLGpRdWVyeSh0aGlzKS52YWwoKSk6dmFsdWUsbnVsbD09dmFsP3ZhbD1cIlwiOlwibnVtYmVyXCI9PXR5cGVvZiB2YWw/dmFsKz1cIlwiOmpRdWVyeS5pc0FycmF5KHZhbCkmJih2YWw9alF1ZXJ5Lm1hcCh2YWwsZnVuY3Rpb24odmFsdWUpe3JldHVybiBudWxsPT12YWx1ZT9cIlwiOnZhbHVlK1wiXCJ9KSksaG9va3M9alF1ZXJ5LnZhbEhvb2tzW3RoaXMudHlwZV18fGpRdWVyeS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGhvb2tzJiZcInNldFwiaW4gaG9va3MmJnZvaWQgMCE9PWhvb2tzLnNldCh0aGlzLHZhbCxcInZhbHVlXCIpfHwodGhpcy52YWx1ZT12YWwpKX0pO2lmKGVsZW0pcmV0dXJuIGhvb2tzPWpRdWVyeS52YWxIb29rc1tlbGVtLnR5cGVdfHxqUXVlcnkudmFsSG9va3NbZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxob29rcyYmXCJnZXRcImluIGhvb2tzJiZ2b2lkIDAhPT0ocmV0PWhvb2tzLmdldChlbGVtLFwidmFsdWVcIikpP3JldDoocmV0PWVsZW0udmFsdWUsXCJzdHJpbmdcIj09dHlwZW9mIHJldD9yZXQucmVwbGFjZShycmV0dXJuLFwiXCIpOm51bGw9PXJldD9cIlwiOnJldCl9fX0pLGpRdWVyeS5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihlbGVtKXt2YXIgdmFsPWpRdWVyeS5maW5kLmF0dHIoZWxlbSxcInZhbHVlXCIpO3JldHVybiBudWxsIT12YWw/dmFsOmpRdWVyeS50cmltKGpRdWVyeS50ZXh0KGVsZW0pKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGVsZW0pe2Zvcih2YXIgdmFsdWUsb3B0aW9uLG9wdGlvbnM9ZWxlbS5vcHRpb25zLGluZGV4PWVsZW0uc2VsZWN0ZWRJbmRleCxvbmU9XCJzZWxlY3Qtb25lXCI9PT1lbGVtLnR5cGV8fDA+aW5kZXgsdmFsdWVzPW9uZT9udWxsOltdLG1heD1vbmU/aW5kZXgrMTpvcHRpb25zLmxlbmd0aCxpPTA+aW5kZXg/bWF4Om9uZT9pbmRleDowO21heD5pO2krKylpZihvcHRpb249b3B0aW9uc1tpXSwob3B0aW9uLnNlbGVjdGVkfHxpPT09aW5kZXgpJiYoc3VwcG9ydC5vcHREaXNhYmxlZD8hb3B0aW9uLmRpc2FibGVkOm51bGw9PT1vcHRpb24uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIikpJiYoIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhalF1ZXJ5Lm5vZGVOYW1lKG9wdGlvbi5wYXJlbnROb2RlLFwib3B0Z3JvdXBcIikpKXtpZih2YWx1ZT1qUXVlcnkob3B0aW9uKS52YWwoKSxvbmUpcmV0dXJuIHZhbHVlO3ZhbHVlcy5wdXNoKHZhbHVlKX1yZXR1cm4gdmFsdWVzfSxzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSl7Zm9yKHZhciBvcHRpb25TZXQsb3B0aW9uLG9wdGlvbnM9ZWxlbS5vcHRpb25zLHZhbHVlcz1qUXVlcnkubWFrZUFycmF5KHZhbHVlKSxpPW9wdGlvbnMubGVuZ3RoO2ktLTspaWYob3B0aW9uPW9wdGlvbnNbaV0salF1ZXJ5LmluQXJyYXkoalF1ZXJ5LnZhbEhvb2tzLm9wdGlvbi5nZXQob3B0aW9uKSx2YWx1ZXMpPj0wKXRyeXtvcHRpb24uc2VsZWN0ZWQ9b3B0aW9uU2V0PSEwfWNhdGNoKF8pe29wdGlvbi5zY3JvbGxIZWlnaHR9ZWxzZSBvcHRpb24uc2VsZWN0ZWQ9ITE7cmV0dXJuIG9wdGlvblNldHx8KGVsZW0uc2VsZWN0ZWRJbmRleD0tMSksb3B0aW9uc319fX0pLGpRdWVyeS5lYWNoKFtcInJhZGlvXCIsXCJjaGVja2JveFwiXSxmdW5jdGlvbigpe2pRdWVyeS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUpe3JldHVybiBqUXVlcnkuaXNBcnJheSh2YWx1ZSk/ZWxlbS5jaGVja2VkPWpRdWVyeS5pbkFycmF5KGpRdWVyeShlbGVtKS52YWwoKSx2YWx1ZSk+PTA6dm9pZCAwfX0sc3VwcG9ydC5jaGVja09ufHwoalF1ZXJ5LnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihlbGVtKXtyZXR1cm4gbnVsbD09PWVsZW0uZ2V0QXR0cmlidXRlKFwidmFsdWVcIik/XCJvblwiOmVsZW0udmFsdWV9KX0pO3ZhciBub2RlSG9vayxib29sSG9vayxhdHRySGFuZGxlPWpRdWVyeS5leHByLmF0dHJIYW5kbGUscnVzZURlZmF1bHQ9L14oPzpjaGVja2VkfHNlbGVjdGVkKSQvaSxnZXRTZXRBdHRyaWJ1dGU9c3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsZ2V0U2V0SW5wdXQ9c3VwcG9ydC5pbnB1dDtqUXVlcnkuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKG5hbWUsdmFsdWUpe3JldHVybiBhY2Nlc3ModGhpcyxqUXVlcnkuYXR0cixuYW1lLHZhbHVlLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24obmFtZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5yZW1vdmVBdHRyKHRoaXMsbmFtZSl9KX19KSxqUXVlcnkuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGVsZW0sbmFtZSx2YWx1ZSl7dmFyIGhvb2tzLHJldCxuVHlwZT1lbGVtLm5vZGVUeXBlO2lmKGVsZW0mJjMhPT1uVHlwZSYmOCE9PW5UeXBlJiYyIT09blR5cGUpcmV0dXJuIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZT09PXN0cnVuZGVmaW5lZD9qUXVlcnkucHJvcChlbGVtLG5hbWUsdmFsdWUpOigxPT09blR5cGUmJmpRdWVyeS5pc1hNTERvYyhlbGVtKXx8KG5hbWU9bmFtZS50b0xvd2VyQ2FzZSgpLGhvb2tzPWpRdWVyeS5hdHRySG9va3NbbmFtZV18fChqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QobmFtZSk/Ym9vbEhvb2s6bm9kZUhvb2spKSx2b2lkIDA9PT12YWx1ZT9ob29rcyYmXCJnZXRcImluIGhvb2tzJiZudWxsIT09KHJldD1ob29rcy5nZXQoZWxlbSxuYW1lKSk/cmV0OihyZXQ9alF1ZXJ5LmZpbmQuYXR0cihlbGVtLG5hbWUpLG51bGw9PXJldD92b2lkIDA6cmV0KTpudWxsIT09dmFsdWU/aG9va3MmJlwic2V0XCJpbiBob29rcyYmdm9pZCAwIT09KHJldD1ob29rcy5zZXQoZWxlbSx2YWx1ZSxuYW1lKSk/cmV0OihlbGVtLnNldEF0dHJpYnV0ZShuYW1lLHZhbHVlK1wiXCIpLHZhbHVlKTp2b2lkIGpRdWVyeS5yZW1vdmVBdHRyKGVsZW0sbmFtZSkpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGVsZW0sdmFsdWUpe3ZhciBuYW1lLHByb3BOYW1lLGk9MCxhdHRyTmFtZXM9dmFsdWUmJnZhbHVlLm1hdGNoKHJub3R3aGl0ZSk7aWYoYXR0ck5hbWVzJiYxPT09ZWxlbS5ub2RlVHlwZSlmb3IoO25hbWU9YXR0ck5hbWVzW2krK107KXByb3BOYW1lPWpRdWVyeS5wcm9wRml4W25hbWVdfHxuYW1lLGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdChuYW1lKT9nZXRTZXRJbnB1dCYmZ2V0U2V0QXR0cmlidXRlfHwhcnVzZURlZmF1bHQudGVzdChuYW1lKT9lbGVtW3Byb3BOYW1lXT0hMTplbGVtW2pRdWVyeS5jYW1lbENhc2UoXCJkZWZhdWx0LVwiK25hbWUpXT1lbGVtW3Byb3BOYW1lXT0hMTpqUXVlcnkuYXR0cihlbGVtLG5hbWUsXCJcIiksZWxlbS5yZW1vdmVBdHRyaWJ1dGUoZ2V0U2V0QXR0cmlidXRlP25hbWU6cHJvcE5hbWUpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihlbGVtLHZhbHVlKXtpZighc3VwcG9ydC5yYWRpb1ZhbHVlJiZcInJhZGlvXCI9PT12YWx1ZSYmalF1ZXJ5Lm5vZGVOYW1lKGVsZW0sXCJpbnB1dFwiKSl7dmFyIHZhbD1lbGVtLnZhbHVlO3JldHVybiBlbGVtLnNldEF0dHJpYnV0ZShcInR5cGVcIix2YWx1ZSksdmFsJiYoZWxlbS52YWx1ZT12YWwpLHZhbHVlfX19fX0pLGJvb2xIb29rPXtzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSxuYW1lKXtyZXR1cm4gdmFsdWU9PT0hMT9qUXVlcnkucmVtb3ZlQXR0cihlbGVtLG5hbWUpOmdldFNldElucHV0JiZnZXRTZXRBdHRyaWJ1dGV8fCFydXNlRGVmYXVsdC50ZXN0KG5hbWUpP2VsZW0uc2V0QXR0cmlidXRlKCFnZXRTZXRBdHRyaWJ1dGUmJmpRdWVyeS5wcm9wRml4W25hbWVdfHxuYW1lLG5hbWUpOmVsZW1balF1ZXJ5LmNhbWVsQ2FzZShcImRlZmF1bHQtXCIrbmFtZSldPWVsZW1bbmFtZV09ITAsbmFtZX19LGpRdWVyeS5lYWNoKGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cXHcrL2cpLGZ1bmN0aW9uKGksbmFtZSl7dmFyIGdldHRlcj1hdHRySGFuZGxlW25hbWVdfHxqUXVlcnkuZmluZC5hdHRyO2F0dHJIYW5kbGVbbmFtZV09Z2V0U2V0SW5wdXQmJmdldFNldEF0dHJpYnV0ZXx8IXJ1c2VEZWZhdWx0LnRlc3QobmFtZSk/ZnVuY3Rpb24oZWxlbSxuYW1lLGlzWE1MKXt2YXIgcmV0LGhhbmRsZTtyZXR1cm4gaXNYTUx8fChoYW5kbGU9YXR0ckhhbmRsZVtuYW1lXSxhdHRySGFuZGxlW25hbWVdPXJldCxyZXQ9bnVsbCE9Z2V0dGVyKGVsZW0sbmFtZSxpc1hNTCk/bmFtZS50b0xvd2VyQ2FzZSgpOm51bGwsYXR0ckhhbmRsZVtuYW1lXT1oYW5kbGUpLHJldH06ZnVuY3Rpb24oZWxlbSxuYW1lLGlzWE1MKXtyZXR1cm4gaXNYTUw/dm9pZCAwOmVsZW1balF1ZXJ5LmNhbWVsQ2FzZShcImRlZmF1bHQtXCIrbmFtZSldP25hbWUudG9Mb3dlckNhc2UoKTpudWxsfX0pLGdldFNldElucHV0JiZnZXRTZXRBdHRyaWJ1dGV8fChqUXVlcnkuYXR0ckhvb2tzLnZhbHVlPXtzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSxuYW1lKXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKGVsZW0sXCJpbnB1dFwiKT92b2lkKGVsZW0uZGVmYXVsdFZhbHVlPXZhbHVlKTpub2RlSG9vayYmbm9kZUhvb2suc2V0KGVsZW0sdmFsdWUsbmFtZSl9fSksZ2V0U2V0QXR0cmlidXRlfHwobm9kZUhvb2s9e3NldDpmdW5jdGlvbihlbGVtLHZhbHVlLG5hbWUpe3ZhciByZXQ9ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpO3JldHVybiByZXR8fGVsZW0uc2V0QXR0cmlidXRlTm9kZShyZXQ9ZWxlbS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShuYW1lKSkscmV0LnZhbHVlPXZhbHVlKz1cIlwiLFwidmFsdWVcIj09PW5hbWV8fHZhbHVlPT09ZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSk/dmFsdWU6dm9pZCAwfX0sYXR0ckhhbmRsZS5pZD1hdHRySGFuZGxlLm5hbWU9YXR0ckhhbmRsZS5jb29yZHM9ZnVuY3Rpb24oZWxlbSxuYW1lLGlzWE1MKXt2YXIgcmV0O3JldHVybiBpc1hNTD92b2lkIDA6KHJldD1lbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpJiZcIlwiIT09cmV0LnZhbHVlP3JldC52YWx1ZTpudWxsfSxqUXVlcnkudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oZWxlbSxuYW1lKXt2YXIgcmV0PWVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKTtyZXR1cm4gcmV0JiZyZXQuc3BlY2lmaWVkP3JldC52YWx1ZTp2b2lkIDB9LHNldDpub2RlSG9vay5zZXR9LGpRdWVyeS5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSxuYW1lKXtub2RlSG9vay5zZXQoZWxlbSxcIlwiPT09dmFsdWU/ITE6dmFsdWUsbmFtZSl9fSxqUXVlcnkuZWFjaChbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGZ1bmN0aW9uKGksbmFtZSl7alF1ZXJ5LmF0dHJIb29rc1tuYW1lXT17c2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUpe3JldHVyblwiXCI9PT12YWx1ZT8oZWxlbS5zZXRBdHRyaWJ1dGUobmFtZSxcImF1dG9cIiksdmFsdWUpOnZvaWQgMH19fSkpLHN1cHBvcnQuc3R5bGV8fChqUXVlcnkuYXR0ckhvb2tzLnN0eWxlPXtnZXQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dHx8dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSl7cmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dD12YWx1ZStcIlwifX0pO3ZhciByZm9jdXNhYmxlPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC9pLHJjbGlja2FibGU9L14oPzphfGFyZWEpJC9pO2pRdWVyeS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24obmFtZSx2YWx1ZSl7cmV0dXJuIGFjY2Vzcyh0aGlzLGpRdWVyeS5wcm9wLG5hbWUsdmFsdWUsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihuYW1lKXtyZXR1cm4gbmFtZT1qUXVlcnkucHJvcEZpeFtuYW1lXXx8bmFtZSx0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1tuYW1lXT12b2lkIDAsZGVsZXRlIHRoaXNbbmFtZV19Y2F0Y2goZSl7fX0pfX0pLGpRdWVyeS5leHRlbmQoe3Byb3BGaXg6e1wiZm9yXCI6XCJodG1sRm9yXCIsXCJjbGFzc1wiOlwiY2xhc3NOYW1lXCJ9LHByb3A6ZnVuY3Rpb24oZWxlbSxuYW1lLHZhbHVlKXt2YXIgcmV0LGhvb2tzLG5vdHhtbCxuVHlwZT1lbGVtLm5vZGVUeXBlO2lmKGVsZW0mJjMhPT1uVHlwZSYmOCE9PW5UeXBlJiYyIT09blR5cGUpcmV0dXJuIG5vdHhtbD0xIT09blR5cGV8fCFqUXVlcnkuaXNYTUxEb2MoZWxlbSksbm90eG1sJiYobmFtZT1qUXVlcnkucHJvcEZpeFtuYW1lXXx8bmFtZSxob29rcz1qUXVlcnkucHJvcEhvb2tzW25hbWVdKSx2b2lkIDAhPT12YWx1ZT9ob29rcyYmXCJzZXRcImluIGhvb2tzJiZ2b2lkIDAhPT0ocmV0PWhvb2tzLnNldChlbGVtLHZhbHVlLG5hbWUpKT9yZXQ6ZWxlbVtuYW1lXT12YWx1ZTpob29rcyYmXCJnZXRcImluIGhvb2tzJiZudWxsIT09KHJldD1ob29rcy5nZXQoZWxlbSxuYW1lKSk/cmV0OmVsZW1bbmFtZV19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlbGVtKXt2YXIgdGFiaW5kZXg9alF1ZXJ5LmZpbmQuYXR0cihlbGVtLFwidGFiaW5kZXhcIik7cmV0dXJuIHRhYmluZGV4P3BhcnNlSW50KHRhYmluZGV4LDEwKTpyZm9jdXNhYmxlLnRlc3QoZWxlbS5ub2RlTmFtZSl8fHJjbGlja2FibGUudGVzdChlbGVtLm5vZGVOYW1lKSYmZWxlbS5ocmVmPzA6LTF9fX19KSxzdXBwb3J0LmhyZWZOb3JtYWxpemVkfHxqUXVlcnkuZWFjaChbXCJocmVmXCIsXCJzcmNcIl0sZnVuY3Rpb24oaSxuYW1lKXtqUXVlcnkucHJvcEhvb2tzW25hbWVdPXtnZXQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKG5hbWUsNCl9fX0pLHN1cHBvcnQub3B0U2VsZWN0ZWR8fChqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZWxlbSl7dmFyIHBhcmVudD1lbGVtLnBhcmVudE5vZGU7cmV0dXJuIHBhcmVudCYmKHBhcmVudC5zZWxlY3RlZEluZGV4LHBhcmVudC5wYXJlbnROb2RlJiZwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pLGpRdWVyeS5lYWNoKFtcInRhYkluZGV4XCIsXCJyZWFkT25seVwiLFwibWF4TGVuZ3RoXCIsXCJjZWxsU3BhY2luZ1wiLFwiY2VsbFBhZGRpbmdcIixcInJvd1NwYW5cIixcImNvbFNwYW5cIixcInVzZU1hcFwiLFwiZnJhbWVCb3JkZXJcIixcImNvbnRlbnRFZGl0YWJsZVwiXSxmdW5jdGlvbigpe2pRdWVyeS5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pLHN1cHBvcnQuZW5jdHlwZXx8KGpRdWVyeS5wcm9wRml4LmVuY3R5cGU9XCJlbmNvZGluZ1wiKTt2YXIgcmNsYXNzPS9bXFx0XFxyXFxuXFxmXS9nO2pRdWVyeS5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHZhbHVlKXt2YXIgY2xhc3NlcyxlbGVtLGN1cixjbGF6eixqLGZpbmFsVmFsdWUsaT0wLGxlbj10aGlzLmxlbmd0aCxwcm9jZWVkPVwic3RyaW5nXCI9PXR5cGVvZiB2YWx1ZSYmdmFsdWU7aWYoalF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oail7alF1ZXJ5KHRoaXMpLmFkZENsYXNzKHZhbHVlLmNhbGwodGhpcyxqLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihwcm9jZWVkKWZvcihjbGFzc2VzPSh2YWx1ZXx8XCJcIikubWF0Y2gocm5vdHdoaXRlKXx8W107bGVuPmk7aSsrKWlmKGVsZW09dGhpc1tpXSxjdXI9MT09PWVsZW0ubm9kZVR5cGUmJihlbGVtLmNsYXNzTmFtZT8oXCIgXCIrZWxlbS5jbGFzc05hbWUrXCIgXCIpLnJlcGxhY2UocmNsYXNzLFwiIFwiKTpcIiBcIikpe2ZvcihqPTA7Y2xheno9Y2xhc3Nlc1tqKytdOyljdXIuaW5kZXhPZihcIiBcIitjbGF6eitcIiBcIik8MCYmKGN1cis9Y2xhenorXCIgXCIpO2ZpbmFsVmFsdWU9alF1ZXJ5LnRyaW0oY3VyKSxlbGVtLmNsYXNzTmFtZSE9PWZpbmFsVmFsdWUmJihlbGVtLmNsYXNzTmFtZT1maW5hbFZhbHVlKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odmFsdWUpe3ZhciBjbGFzc2VzLGVsZW0sY3VyLGNsYXp6LGosZmluYWxWYWx1ZSxpPTAsbGVuPXRoaXMubGVuZ3RoLHByb2NlZWQ9MD09PWFyZ3VtZW50cy5sZW5ndGh8fFwic3RyaW5nXCI9PXR5cGVvZiB2YWx1ZSYmdmFsdWU7aWYoalF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oail7alF1ZXJ5KHRoaXMpLnJlbW92ZUNsYXNzKHZhbHVlLmNhbGwodGhpcyxqLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihwcm9jZWVkKWZvcihjbGFzc2VzPSh2YWx1ZXx8XCJcIikubWF0Y2gocm5vdHdoaXRlKXx8W107bGVuPmk7aSsrKWlmKGVsZW09dGhpc1tpXSxjdXI9MT09PWVsZW0ubm9kZVR5cGUmJihlbGVtLmNsYXNzTmFtZT8oXCIgXCIrZWxlbS5jbGFzc05hbWUrXCIgXCIpLnJlcGxhY2UocmNsYXNzLFwiIFwiKTpcIlwiKSl7Zm9yKGo9MDtjbGF6ej1jbGFzc2VzW2orK107KWZvcig7Y3VyLmluZGV4T2YoXCIgXCIrY2xhenorXCIgXCIpPj0wOyljdXI9Y3VyLnJlcGxhY2UoXCIgXCIrY2xhenorXCIgXCIsXCIgXCIpO2ZpbmFsVmFsdWU9dmFsdWU/alF1ZXJ5LnRyaW0oY3VyKTpcIlwiLGVsZW0uY2xhc3NOYW1lIT09ZmluYWxWYWx1ZSYmKGVsZW0uY2xhc3NOYW1lPWZpbmFsVmFsdWUpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbih2YWx1ZSxzdGF0ZVZhbCl7dmFyIHR5cGU9dHlwZW9mIHZhbHVlO3JldHVyblwiYm9vbGVhblwiPT10eXBlb2Ygc3RhdGVWYWwmJlwic3RyaW5nXCI9PT10eXBlP3N0YXRlVmFsP3RoaXMuYWRkQ2xhc3ModmFsdWUpOnRoaXMucmVtb3ZlQ2xhc3ModmFsdWUpOmpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKT90aGlzLmVhY2goZnVuY3Rpb24oaSl7alF1ZXJ5KHRoaXMpLnRvZ2dsZUNsYXNzKHZhbHVlLmNhbGwodGhpcyxpLHRoaXMuY2xhc3NOYW1lLHN0YXRlVmFsKSxzdGF0ZVZhbCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihcInN0cmluZ1wiPT09dHlwZSlmb3IodmFyIGNsYXNzTmFtZSxpPTAsc2VsZj1qUXVlcnkodGhpcyksY2xhc3NOYW1lcz12YWx1ZS5tYXRjaChybm90d2hpdGUpfHxbXTtjbGFzc05hbWU9Y2xhc3NOYW1lc1tpKytdOylzZWxmLmhhc0NsYXNzKGNsYXNzTmFtZSk/c2VsZi5yZW1vdmVDbGFzcyhjbGFzc05hbWUpOnNlbGYuYWRkQ2xhc3MoY2xhc3NOYW1lKTtlbHNlKHR5cGU9PT1zdHJ1bmRlZmluZWR8fFwiYm9vbGVhblwiPT09dHlwZSkmJih0aGlzLmNsYXNzTmFtZSYmalF1ZXJ5Ll9kYXRhKHRoaXMsXCJfX2NsYXNzTmFtZV9fXCIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHx2YWx1ZT09PSExP1wiXCI6alF1ZXJ5Ll9kYXRhKHRoaXMsXCJfX2NsYXNzTmFtZV9fXCIpfHxcIlwiKX0pfSxoYXNDbGFzczpmdW5jdGlvbihzZWxlY3Rvcil7Zm9yKHZhciBjbGFzc05hbWU9XCIgXCIrc2VsZWN0b3IrXCIgXCIsaT0wLGw9dGhpcy5sZW5ndGg7bD5pO2krKylpZigxPT09dGhpc1tpXS5ub2RlVHlwZSYmKFwiIFwiK3RoaXNbaV0uY2xhc3NOYW1lK1wiIFwiKS5yZXBsYWNlKHJjbGFzcyxcIiBcIikuaW5kZXhPZihjbGFzc05hbWUpPj0wKXJldHVybiEwO3JldHVybiExfX0pLGpRdWVyeS5lYWNoKFwiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudVwiLnNwbGl0KFwiIFwiKSxmdW5jdGlvbihpLG5hbWUpe2pRdWVyeS5mbltuYW1lXT1mdW5jdGlvbihkYXRhLGZuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24obmFtZSxudWxsLGRhdGEsZm4pOnRoaXMudHJpZ2dlcihuYW1lKX19KSxqUXVlcnkuZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihmbk92ZXIsZm5PdXQpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoZm5PdmVyKS5tb3VzZWxlYXZlKGZuT3V0fHxmbk92ZXIpfSxiaW5kOmZ1bmN0aW9uKHR5cGVzLGRhdGEsZm4pe3JldHVybiB0aGlzLm9uKHR5cGVzLG51bGwsZGF0YSxmbil9LHVuYmluZDpmdW5jdGlvbih0eXBlcyxmbil7cmV0dXJuIHRoaXMub2ZmKHR5cGVzLG51bGwsZm4pfSxkZWxlZ2F0ZTpmdW5jdGlvbihzZWxlY3Rvcix0eXBlcyxkYXRhLGZuKXtyZXR1cm4gdGhpcy5vbih0eXBlcyxzZWxlY3RvcixkYXRhLGZuKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihzZWxlY3Rvcix0eXBlcyxmbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKHNlbGVjdG9yLFwiKipcIik6dGhpcy5vZmYodHlwZXMsc2VsZWN0b3J8fFwiKipcIixmbil9fSk7dmFyIG5vbmNlPWpRdWVyeS5ub3coKSxycXVlcnk9L1xcPy8scnZhbGlkdG9rZW5zPS8oLCl8KFxcW3x7KXwofXxdKXxcIig/OlteXCJcXFxcXFxyXFxuXXxcXFxcW1wiXFxcXFxcL2JmbnJ0XXxcXFxcdVtcXGRhLWZBLUZdezR9KSpcIlxccyo6P3x0cnVlfGZhbHNlfG51bGx8LT8oPyEwXFxkKVxcZCsoPzpcXC5cXGQrfCkoPzpbZUVdWystXT9cXGQrfCkvZztqUXVlcnkucGFyc2VKU09OPWZ1bmN0aW9uKGRhdGEpe2lmKHdpbmRvdy5KU09OJiZ3aW5kb3cuSlNPTi5wYXJzZSlyZXR1cm4gd2luZG93LkpTT04ucGFyc2UoZGF0YStcIlwiKTt2YXIgcmVxdWlyZU5vbkNvbW1hLGRlcHRoPW51bGwsc3RyPWpRdWVyeS50cmltKGRhdGErXCJcIik7cmV0dXJuIHN0ciYmIWpRdWVyeS50cmltKHN0ci5yZXBsYWNlKHJ2YWxpZHRva2VucyxmdW5jdGlvbih0b2tlbixjb21tYSxvcGVuLGNsb3NlKXtyZXR1cm4gcmVxdWlyZU5vbkNvbW1hJiZjb21tYSYmKGRlcHRoPTApLDA9PT1kZXB0aD90b2tlbjoocmVxdWlyZU5vbkNvbW1hPW9wZW58fGNvbW1hLGRlcHRoKz0hY2xvc2UtIW9wZW4sXCJcIil9KSk/RnVuY3Rpb24oXCJyZXR1cm4gXCIrc3RyKSgpOmpRdWVyeS5lcnJvcihcIkludmFsaWQgSlNPTjogXCIrZGF0YSl9LGpRdWVyeS5wYXJzZVhNTD1mdW5jdGlvbihkYXRhKXt2YXIgeG1sLHRtcDtpZighZGF0YXx8XCJzdHJpbmdcIiE9dHlwZW9mIGRhdGEpcmV0dXJuIG51bGw7dHJ5e3dpbmRvdy5ET01QYXJzZXI/KHRtcD1uZXcgRE9NUGFyc2VyLHhtbD10bXAucGFyc2VGcm9tU3RyaW5nKGRhdGEsXCJ0ZXh0L3htbFwiKSk6KHhtbD1uZXcgQWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxET01cIikseG1sLmFzeW5jPVwiZmFsc2VcIix4bWwubG9hZFhNTChkYXRhKSl9Y2F0Y2goZSl7eG1sPXZvaWQgMH1yZXR1cm4geG1sJiZ4bWwuZG9jdW1lbnRFbGVtZW50JiYheG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwicGFyc2VyZXJyb3JcIikubGVuZ3RofHxqUXVlcnkuZXJyb3IoXCJJbnZhbGlkIFhNTDogXCIrZGF0YSkseG1sfTt2YXIgYWpheExvY1BhcnRzLGFqYXhMb2NhdGlvbixyaGFzaD0vIy4qJC8scnRzPS8oWz8mXSlfPVteJl0qLyxyaGVhZGVycz0vXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKilcXHI/JC9nbSxybG9jYWxQcm90b2NvbD0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxybm9Db250ZW50PS9eKD86R0VUfEhFQUQpJC8scnByb3RvY29sPS9eXFwvXFwvLyxydXJsPS9eKFtcXHcuKy1dKzopKD86XFwvXFwvKD86W15cXC8/I10qQHwpKFteXFwvPyM6XSopKD86OihcXGQrKXwpfCkvLHByZWZpbHRlcnM9e30sdHJhbnNwb3J0cz17fSxhbGxUeXBlcz1cIiovXCIuY29uY2F0KFwiKlwiKTt0cnl7YWpheExvY2F0aW9uPWxvY2F0aW9uLmhyZWZ9Y2F0Y2goZSl7YWpheExvY2F0aW9uPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpLGFqYXhMb2NhdGlvbi5ocmVmPVwiXCIsYWpheExvY2F0aW9uPWFqYXhMb2NhdGlvbi5ocmVmfWFqYXhMb2NQYXJ0cz1ydXJsLmV4ZWMoYWpheExvY2F0aW9uLnRvTG93ZXJDYXNlKCkpfHxbXSxqUXVlcnkuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDphamF4TG9jYXRpb24sdHlwZTpcIkdFVFwiLGlzTG9jYWw6cmxvY2FsUHJvdG9jb2wudGVzdChhamF4TG9jUGFydHNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZTpcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiLGFjY2VwdHM6e1wiKlwiOmFsbFR5cGVzLHRleHQ6XCJ0ZXh0L3BsYWluXCIsaHRtbDpcInRleHQvaHRtbFwiLHhtbDpcImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWxcIixqc29uOlwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0XCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6XCJyZXNwb25zZVhNTFwiLHRleHQ6XCJyZXNwb25zZVRleHRcIixqc29uOlwicmVzcG9uc2VKU09OXCJ9LGNvbnZlcnRlcnM6e1wiKiB0ZXh0XCI6U3RyaW5nLFwidGV4dCBodG1sXCI6ITAsXCJ0ZXh0IGpzb25cIjpqUXVlcnkucGFyc2VKU09OLFwidGV4dCB4bWxcIjpqUXVlcnkucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbih0YXJnZXQsc2V0dGluZ3Mpe3JldHVybiBzZXR0aW5ncz9hamF4RXh0ZW5kKGFqYXhFeHRlbmQodGFyZ2V0LGpRdWVyeS5hamF4U2V0dGluZ3MpLHNldHRpbmdzKTphamF4RXh0ZW5kKGpRdWVyeS5hamF4U2V0dGluZ3MsdGFyZ2V0KX0sYWpheFByZWZpbHRlcjphZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMocHJlZmlsdGVycyksYWpheFRyYW5zcG9ydDphZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHModHJhbnNwb3J0cyksYWpheDpmdW5jdGlvbih1cmwsb3B0aW9ucyl7ZnVuY3Rpb24gZG9uZShzdGF0dXMsbmF0aXZlU3RhdHVzVGV4dCxyZXNwb25zZXMsaGVhZGVycyl7dmFyIGlzU3VjY2VzcyxzdWNjZXNzLGVycm9yLHJlc3BvbnNlLG1vZGlmaWVkLHN0YXR1c1RleHQ9bmF0aXZlU3RhdHVzVGV4dDsyIT09c3RhdGUmJihzdGF0ZT0yLHRpbWVvdXRUaW1lciYmY2xlYXJUaW1lb3V0KHRpbWVvdXRUaW1lciksdHJhbnNwb3J0PXZvaWQgMCxyZXNwb25zZUhlYWRlcnNTdHJpbmc9aGVhZGVyc3x8XCJcIixqcVhIUi5yZWFkeVN0YXRlPXN0YXR1cz4wPzQ6MCxpc1N1Y2Nlc3M9c3RhdHVzPj0yMDAmJjMwMD5zdGF0dXN8fDMwND09PXN0YXR1cyxyZXNwb25zZXMmJihyZXNwb25zZT1hamF4SGFuZGxlUmVzcG9uc2VzKHMsanFYSFIscmVzcG9uc2VzKSkscmVzcG9uc2U9YWpheENvbnZlcnQocyxyZXNwb25zZSxqcVhIUixpc1N1Y2Nlc3MpLGlzU3VjY2Vzcz8ocy5pZk1vZGlmaWVkJiYobW9kaWZpZWQ9anFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJMYXN0LU1vZGlmaWVkXCIpLG1vZGlmaWVkJiYoalF1ZXJ5Lmxhc3RNb2RpZmllZFtjYWNoZVVSTF09bW9kaWZpZWQpLG1vZGlmaWVkPWpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiZXRhZ1wiKSxtb2RpZmllZCYmKGpRdWVyeS5ldGFnW2NhY2hlVVJMXT1tb2RpZmllZCkpLDIwND09PXN0YXR1c3x8XCJIRUFEXCI9PT1zLnR5cGU/c3RhdHVzVGV4dD1cIm5vY29udGVudFwiOjMwND09PXN0YXR1cz9zdGF0dXNUZXh0PVwibm90bW9kaWZpZWRcIjooc3RhdHVzVGV4dD1yZXNwb25zZS5zdGF0ZSxzdWNjZXNzPXJlc3BvbnNlLmRhdGEsZXJyb3I9cmVzcG9uc2UuZXJyb3IsaXNTdWNjZXNzPSFlcnJvcikpOihlcnJvcj1zdGF0dXNUZXh0LChzdGF0dXN8fCFzdGF0dXNUZXh0KSYmKHN0YXR1c1RleHQ9XCJlcnJvclwiLDA+c3RhdHVzJiYoc3RhdHVzPTApKSksanFYSFIuc3RhdHVzPXN0YXR1cyxqcVhIUi5zdGF0dXNUZXh0PShuYXRpdmVTdGF0dXNUZXh0fHxzdGF0dXNUZXh0KStcIlwiLGlzU3VjY2Vzcz9kZWZlcnJlZC5yZXNvbHZlV2l0aChjYWxsYmFja0NvbnRleHQsW3N1Y2Nlc3Msc3RhdHVzVGV4dCxqcVhIUl0pOmRlZmVycmVkLnJlamVjdFdpdGgoY2FsbGJhY2tDb250ZXh0LFtqcVhIUixzdGF0dXNUZXh0LGVycm9yXSksanFYSFIuc3RhdHVzQ29kZShzdGF0dXNDb2RlKSxzdGF0dXNDb2RlPXZvaWQgMCxmaXJlR2xvYmFscyYmZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoaXNTdWNjZXNzP1wiYWpheFN1Y2Nlc3NcIjpcImFqYXhFcnJvclwiLFtqcVhIUixzLGlzU3VjY2Vzcz9zdWNjZXNzOmVycm9yXSksY29tcGxldGVEZWZlcnJlZC5maXJlV2l0aChjYWxsYmFja0NvbnRleHQsW2pxWEhSLHN0YXR1c1RleHRdKSxmaXJlR2xvYmFscyYmKGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKFwiYWpheENvbXBsZXRlXCIsW2pxWEhSLHNdKSwtLWpRdWVyeS5hY3RpdmV8fGpRdWVyeS5ldmVudC50cmlnZ2VyKFwiYWpheFN0b3BcIikpKX1cIm9iamVjdFwiPT10eXBlb2YgdXJsJiYob3B0aW9ucz11cmwsdXJsPXZvaWQgMCksb3B0aW9ucz1vcHRpb25zfHx7fTt2YXIgcGFydHMsaSxjYWNoZVVSTCxyZXNwb25zZUhlYWRlcnNTdHJpbmcsdGltZW91dFRpbWVyLGZpcmVHbG9iYWxzLHRyYW5zcG9ydCxyZXNwb25zZUhlYWRlcnMscz1qUXVlcnkuYWpheFNldHVwKHt9LG9wdGlvbnMpLGNhbGxiYWNrQ29udGV4dD1zLmNvbnRleHR8fHMsZ2xvYmFsRXZlbnRDb250ZXh0PXMuY29udGV4dCYmKGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZXx8Y2FsbGJhY2tDb250ZXh0LmpxdWVyeSk/alF1ZXJ5KGNhbGxiYWNrQ29udGV4dCk6alF1ZXJ5LmV2ZW50LGRlZmVycmVkPWpRdWVyeS5EZWZlcnJlZCgpLGNvbXBsZXRlRGVmZXJyZWQ9alF1ZXJ5LkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLHN0YXR1c0NvZGU9cy5zdGF0dXNDb2RlfHx7fSxyZXF1ZXN0SGVhZGVycz17fSxyZXF1ZXN0SGVhZGVyc05hbWVzPXt9LHN0YXRlPTAsc3RyQWJvcnQ9XCJjYW5jZWxlZFwiLGpxWEhSPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oa2V5KXt2YXIgbWF0Y2g7aWYoMj09PXN0YXRlKXtpZighcmVzcG9uc2VIZWFkZXJzKWZvcihyZXNwb25zZUhlYWRlcnM9e307bWF0Y2g9cmhlYWRlcnMuZXhlYyhyZXNwb25zZUhlYWRlcnNTdHJpbmcpOylyZXNwb25zZUhlYWRlcnNbbWF0Y2hbMV0udG9Mb3dlckNhc2UoKV09bWF0Y2hbMl07bWF0Y2g9cmVzcG9uc2VIZWFkZXJzW2tleS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09bWF0Y2g/bnVsbDptYXRjaH0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT1zdGF0ZT9yZXNwb25zZUhlYWRlcnNTdHJpbmc6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihuYW1lLHZhbHVlKXt2YXIgbG5hbWU9bmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBzdGF0ZXx8KG5hbWU9cmVxdWVzdEhlYWRlcnNOYW1lc1tsbmFtZV09cmVxdWVzdEhlYWRlcnNOYW1lc1tsbmFtZV18fG5hbWUscmVxdWVzdEhlYWRlcnNbbmFtZV09dmFsdWUpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24odHlwZSl7cmV0dXJuIHN0YXRlfHwocy5taW1lVHlwZT10eXBlKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKG1hcCl7dmFyIGNvZGU7aWYobWFwKWlmKDI+c3RhdGUpZm9yKGNvZGUgaW4gbWFwKXN0YXR1c0NvZGVbY29kZV09W3N0YXR1c0NvZGVbY29kZV0sbWFwW2NvZGVdXTtlbHNlIGpxWEhSLmFsd2F5cyhtYXBbanFYSFIuc3RhdHVzXSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKHN0YXR1c1RleHQpe3ZhciBmaW5hbFRleHQ9c3RhdHVzVGV4dHx8c3RyQWJvcnQ7cmV0dXJuIHRyYW5zcG9ydCYmdHJhbnNwb3J0LmFib3J0KGZpbmFsVGV4dCksZG9uZSgwLGZpbmFsVGV4dCksdGhpc319O2lmKGRlZmVycmVkLnByb21pc2UoanFYSFIpLmNvbXBsZXRlPWNvbXBsZXRlRGVmZXJyZWQuYWRkLGpxWEhSLnN1Y2Nlc3M9anFYSFIuZG9uZSxqcVhIUi5lcnJvcj1qcVhIUi5mYWlsLHMudXJsPSgodXJsfHxzLnVybHx8YWpheExvY2F0aW9uKStcIlwiKS5yZXBsYWNlKHJoYXNoLFwiXCIpLnJlcGxhY2UocnByb3RvY29sLGFqYXhMb2NQYXJ0c1sxXStcIi8vXCIpLHMudHlwZT1vcHRpb25zLm1ldGhvZHx8b3B0aW9ucy50eXBlfHxzLm1ldGhvZHx8cy50eXBlLHMuZGF0YVR5cGVzPWpRdWVyeS50cmltKHMuZGF0YVR5cGV8fFwiKlwiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKHJub3R3aGl0ZSl8fFtcIlwiXSxcbm51bGw9PXMuY3Jvc3NEb21haW4mJihwYXJ0cz1ydXJsLmV4ZWMocy51cmwudG9Mb3dlckNhc2UoKSkscy5jcm9zc0RvbWFpbj0hKCFwYXJ0c3x8cGFydHNbMV09PT1hamF4TG9jUGFydHNbMV0mJnBhcnRzWzJdPT09YWpheExvY1BhcnRzWzJdJiYocGFydHNbM118fChcImh0dHA6XCI9PT1wYXJ0c1sxXT9cIjgwXCI6XCI0NDNcIikpPT09KGFqYXhMb2NQYXJ0c1szXXx8KFwiaHR0cDpcIj09PWFqYXhMb2NQYXJ0c1sxXT9cIjgwXCI6XCI0NDNcIikpKSkscy5kYXRhJiZzLnByb2Nlc3NEYXRhJiZcInN0cmluZ1wiIT10eXBlb2Ygcy5kYXRhJiYocy5kYXRhPWpRdWVyeS5wYXJhbShzLmRhdGEscy50cmFkaXRpb25hbCkpLGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKHByZWZpbHRlcnMscyxvcHRpb25zLGpxWEhSKSwyPT09c3RhdGUpcmV0dXJuIGpxWEhSO2ZpcmVHbG9iYWxzPWpRdWVyeS5ldmVudCYmcy5nbG9iYWwsZmlyZUdsb2JhbHMmJjA9PT1qUXVlcnkuYWN0aXZlKysmJmpRdWVyeS5ldmVudC50cmlnZ2VyKFwiYWpheFN0YXJ0XCIpLHMudHlwZT1zLnR5cGUudG9VcHBlckNhc2UoKSxzLmhhc0NvbnRlbnQ9IXJub0NvbnRlbnQudGVzdChzLnR5cGUpLGNhY2hlVVJMPXMudXJsLHMuaGFzQ29udGVudHx8KHMuZGF0YSYmKGNhY2hlVVJMPXMudXJsKz0ocnF1ZXJ5LnRlc3QoY2FjaGVVUkwpP1wiJlwiOlwiP1wiKStzLmRhdGEsZGVsZXRlIHMuZGF0YSkscy5jYWNoZT09PSExJiYocy51cmw9cnRzLnRlc3QoY2FjaGVVUkwpP2NhY2hlVVJMLnJlcGxhY2UocnRzLFwiJDFfPVwiK25vbmNlKyspOmNhY2hlVVJMKyhycXVlcnkudGVzdChjYWNoZVVSTCk/XCImXCI6XCI/XCIpK1wiXz1cIitub25jZSsrKSkscy5pZk1vZGlmaWVkJiYoalF1ZXJ5Lmxhc3RNb2RpZmllZFtjYWNoZVVSTF0mJmpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXCJJZi1Nb2RpZmllZC1TaW5jZVwiLGpRdWVyeS5sYXN0TW9kaWZpZWRbY2FjaGVVUkxdKSxqUXVlcnkuZXRhZ1tjYWNoZVVSTF0mJmpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXCJJZi1Ob25lLU1hdGNoXCIsalF1ZXJ5LmV0YWdbY2FjaGVVUkxdKSksKHMuZGF0YSYmcy5oYXNDb250ZW50JiZzLmNvbnRlbnRUeXBlIT09ITF8fG9wdGlvbnMuY29udGVudFR5cGUpJiZqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIscy5jb250ZW50VHlwZSksanFYSFIuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLHMuZGF0YVR5cGVzWzBdJiZzLmFjY2VwdHNbcy5kYXRhVHlwZXNbMF1dP3MuYWNjZXB0c1tzLmRhdGFUeXBlc1swXV0rKFwiKlwiIT09cy5kYXRhVHlwZXNbMF0/XCIsIFwiK2FsbFR5cGVzK1wiOyBxPTAuMDFcIjpcIlwiKTpzLmFjY2VwdHNbXCIqXCJdKTtmb3IoaSBpbiBzLmhlYWRlcnMpanFYSFIuc2V0UmVxdWVzdEhlYWRlcihpLHMuaGVhZGVyc1tpXSk7aWYocy5iZWZvcmVTZW5kJiYocy5iZWZvcmVTZW5kLmNhbGwoY2FsbGJhY2tDb250ZXh0LGpxWEhSLHMpPT09ITF8fDI9PT1zdGF0ZSkpcmV0dXJuIGpxWEhSLmFib3J0KCk7c3RyQWJvcnQ9XCJhYm9ydFwiO2ZvcihpIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KWpxWEhSW2ldKHNbaV0pO2lmKHRyYW5zcG9ydD1pbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyh0cmFuc3BvcnRzLHMsb3B0aW9ucyxqcVhIUikpe2pxWEhSLnJlYWR5U3RhdGU9MSxmaXJlR2xvYmFscyYmZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoXCJhamF4U2VuZFwiLFtqcVhIUixzXSkscy5hc3luYyYmcy50aW1lb3V0PjAmJih0aW1lb3V0VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2pxWEhSLmFib3J0KFwidGltZW91dFwiKX0scy50aW1lb3V0KSk7dHJ5e3N0YXRlPTEsdHJhbnNwb3J0LnNlbmQocmVxdWVzdEhlYWRlcnMsZG9uZSl9Y2F0Y2goZSl7aWYoISgyPnN0YXRlKSl0aHJvdyBlO2RvbmUoLTEsZSl9fWVsc2UgZG9uZSgtMSxcIk5vIFRyYW5zcG9ydFwiKTtyZXR1cm4ganFYSFJ9LGdldEpTT046ZnVuY3Rpb24odXJsLGRhdGEsY2FsbGJhY2spe3JldHVybiBqUXVlcnkuZ2V0KHVybCxkYXRhLGNhbGxiYWNrLFwianNvblwiKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKHVybCxjYWxsYmFjayl7cmV0dXJuIGpRdWVyeS5nZXQodXJsLHZvaWQgMCxjYWxsYmFjayxcInNjcmlwdFwiKX19KSxqUXVlcnkuZWFjaChbXCJnZXRcIixcInBvc3RcIl0sZnVuY3Rpb24oaSxtZXRob2Qpe2pRdWVyeVttZXRob2RdPWZ1bmN0aW9uKHVybCxkYXRhLGNhbGxiYWNrLHR5cGUpe3JldHVybiBqUXVlcnkuaXNGdW5jdGlvbihkYXRhKSYmKHR5cGU9dHlwZXx8Y2FsbGJhY2ssY2FsbGJhY2s9ZGF0YSxkYXRhPXZvaWQgMCksalF1ZXJ5LmFqYXgoe3VybDp1cmwsdHlwZTptZXRob2QsZGF0YVR5cGU6dHlwZSxkYXRhOmRhdGEsc3VjY2VzczpjYWxsYmFja30pfX0pLGpRdWVyeS5fZXZhbFVybD1mdW5jdGlvbih1cmwpe3JldHVybiBqUXVlcnkuYWpheCh7dXJsOnVybCx0eXBlOlwiR0VUXCIsZGF0YVR5cGU6XCJzY3JpcHRcIixhc3luYzohMSxnbG9iYWw6ITEsXCJ0aHJvd3NcIjohMH0pfSxqUXVlcnkuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGh0bWwpe2lmKGpRdWVyeS5pc0Z1bmN0aW9uKGh0bWwpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7alF1ZXJ5KHRoaXMpLndyYXBBbGwoaHRtbC5jYWxsKHRoaXMsaSkpfSk7aWYodGhpc1swXSl7dmFyIHdyYXA9alF1ZXJ5KGh0bWwsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZ3cmFwLmluc2VydEJlZm9yZSh0aGlzWzBdKSx3cmFwLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgZWxlbT10aGlzO2VsZW0uZmlyc3RDaGlsZCYmMT09PWVsZW0uZmlyc3RDaGlsZC5ub2RlVHlwZTspZWxlbT1lbGVtLmZpcnN0Q2hpbGQ7cmV0dXJuIGVsZW19KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihodG1sKXtyZXR1cm4galF1ZXJ5LmlzRnVuY3Rpb24oaHRtbCk/dGhpcy5lYWNoKGZ1bmN0aW9uKGkpe2pRdWVyeSh0aGlzKS53cmFwSW5uZXIoaHRtbC5jYWxsKHRoaXMsaSkpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHNlbGY9alF1ZXJ5KHRoaXMpLGNvbnRlbnRzPXNlbGYuY29udGVudHMoKTtjb250ZW50cy5sZW5ndGg/Y29udGVudHMud3JhcEFsbChodG1sKTpzZWxmLmFwcGVuZChodG1sKX0pfSx3cmFwOmZ1bmN0aW9uKGh0bWwpe3ZhciBpc0Z1bmN0aW9uPWpRdWVyeS5pc0Z1bmN0aW9uKGh0bWwpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7alF1ZXJ5KHRoaXMpLndyYXBBbGwoaXNGdW5jdGlvbj9odG1sLmNhbGwodGhpcyxpKTpodG1sKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5Lm5vZGVOYW1lKHRoaXMsXCJib2R5XCIpfHxqUXVlcnkodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLGpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLm9mZnNldFdpZHRoPD0wJiZlbGVtLm9mZnNldEhlaWdodDw9MHx8IXN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzKCkmJlwibm9uZVwiPT09KGVsZW0uc3R5bGUmJmVsZW0uc3R5bGUuZGlzcGxheXx8alF1ZXJ5LmNzcyhlbGVtLFwiZGlzcGxheVwiKSl9LGpRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihlbGVtKXtyZXR1cm4halF1ZXJ5LmV4cHIuZmlsdGVycy5oaWRkZW4oZWxlbSl9O3ZhciByMjA9LyUyMC9nLHJicmFja2V0PS9cXFtcXF0kLyxyQ1JMRj0vXFxyP1xcbi9nLHJzdWJtaXR0ZXJUeXBlcz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2kscnN1Ym1pdHRhYmxlPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtqUXVlcnkucGFyYW09ZnVuY3Rpb24oYSx0cmFkaXRpb25hbCl7dmFyIHByZWZpeCxzPVtdLGFkZD1mdW5jdGlvbihrZXksdmFsdWUpe3ZhbHVlPWpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKT92YWx1ZSgpOm51bGw9PXZhbHVlP1wiXCI6dmFsdWUsc1tzLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGtleSkrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKX07aWYodm9pZCAwPT09dHJhZGl0aW9uYWwmJih0cmFkaXRpb25hbD1qUXVlcnkuYWpheFNldHRpbmdzJiZqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxqUXVlcnkuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFqUXVlcnkuaXNQbGFpbk9iamVjdChhKSlqUXVlcnkuZWFjaChhLGZ1bmN0aW9uKCl7YWRkKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHByZWZpeCBpbiBhKWJ1aWxkUGFyYW1zKHByZWZpeCxhW3ByZWZpeF0sdHJhZGl0aW9uYWwsYWRkKTtyZXR1cm4gcy5qb2luKFwiJlwiKS5yZXBsYWNlKHIyMCxcIitcIil9LGpRdWVyeS5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBqUXVlcnkucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZWxlbWVudHM9alF1ZXJ5LnByb3AodGhpcyxcImVsZW1lbnRzXCIpO3JldHVybiBlbGVtZW50cz9qUXVlcnkubWFrZUFycmF5KGVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIHR5cGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFqUXVlcnkodGhpcykuaXMoXCI6ZGlzYWJsZWRcIikmJnJzdWJtaXR0YWJsZS50ZXN0KHRoaXMubm9kZU5hbWUpJiYhcnN1Ym1pdHRlclR5cGVzLnRlc3QodHlwZSkmJih0aGlzLmNoZWNrZWR8fCFyY2hlY2thYmxlVHlwZS50ZXN0KHR5cGUpKX0pLm1hcChmdW5jdGlvbihpLGVsZW0pe3ZhciB2YWw9alF1ZXJ5KHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT12YWw/bnVsbDpqUXVlcnkuaXNBcnJheSh2YWwpP2pRdWVyeS5tYXAodmFsLGZ1bmN0aW9uKHZhbCl7cmV0dXJue25hbWU6ZWxlbS5uYW1lLHZhbHVlOnZhbC5yZXBsYWNlKHJDUkxGLFwiXFxyXFxuXCIpfX0pOntuYW1lOmVsZW0ubmFtZSx2YWx1ZTp2YWwucmVwbGFjZShyQ1JMRixcIlxcclxcblwiKX19KS5nZXQoKX19KSxqUXVlcnkuYWpheFNldHRpbmdzLnhocj12b2lkIDAhPT13aW5kb3cuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJi9eKGdldHxwb3N0fGhlYWR8cHV0fGRlbGV0ZXxvcHRpb25zKSQvaS50ZXN0KHRoaXMudHlwZSkmJmNyZWF0ZVN0YW5kYXJkWEhSKCl8fGNyZWF0ZUFjdGl2ZVhIUigpfTpjcmVhdGVTdGFuZGFyZFhIUjt2YXIgeGhySWQ9MCx4aHJDYWxsYmFja3M9e30seGhyU3VwcG9ydGVkPWpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7d2luZG93LmF0dGFjaEV2ZW50JiZ3aW5kb3cuYXR0YWNoRXZlbnQoXCJvbnVubG9hZFwiLGZ1bmN0aW9uKCl7Zm9yKHZhciBrZXkgaW4geGhyQ2FsbGJhY2tzKXhockNhbGxiYWNrc1trZXldKHZvaWQgMCwhMCl9KSxzdXBwb3J0LmNvcnM9ISF4aHJTdXBwb3J0ZWQmJlwid2l0aENyZWRlbnRpYWxzXCJpbiB4aHJTdXBwb3J0ZWQseGhyU3VwcG9ydGVkPXN1cHBvcnQuYWpheD0hIXhoclN1cHBvcnRlZCx4aHJTdXBwb3J0ZWQmJmpRdWVyeS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKG9wdGlvbnMpe2lmKCFvcHRpb25zLmNyb3NzRG9tYWlufHxzdXBwb3J0LmNvcnMpe3ZhciBjYWxsYmFjaztyZXR1cm57c2VuZDpmdW5jdGlvbihoZWFkZXJzLGNvbXBsZXRlKXt2YXIgaSx4aHI9b3B0aW9ucy54aHIoKSxpZD0rK3hocklkO2lmKHhoci5vcGVuKG9wdGlvbnMudHlwZSxvcHRpb25zLnVybCxvcHRpb25zLmFzeW5jLG9wdGlvbnMudXNlcm5hbWUsb3B0aW9ucy5wYXNzd29yZCksb3B0aW9ucy54aHJGaWVsZHMpZm9yKGkgaW4gb3B0aW9ucy54aHJGaWVsZHMpeGhyW2ldPW9wdGlvbnMueGhyRmllbGRzW2ldO29wdGlvbnMubWltZVR5cGUmJnhoci5vdmVycmlkZU1pbWVUeXBlJiZ4aHIub3ZlcnJpZGVNaW1lVHlwZShvcHRpb25zLm1pbWVUeXBlKSxvcHRpb25zLmNyb3NzRG9tYWlufHxoZWFkZXJzW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXXx8KGhlYWRlcnNbXCJYLVJlcXVlc3RlZC1XaXRoXCJdPVwiWE1MSHR0cFJlcXVlc3RcIik7Zm9yKGkgaW4gaGVhZGVycyl2b2lkIDAhPT1oZWFkZXJzW2ldJiZ4aHIuc2V0UmVxdWVzdEhlYWRlcihpLGhlYWRlcnNbaV0rXCJcIik7eGhyLnNlbmQob3B0aW9ucy5oYXNDb250ZW50JiZvcHRpb25zLmRhdGF8fG51bGwpLGNhbGxiYWNrPWZ1bmN0aW9uKF8saXNBYm9ydCl7dmFyIHN0YXR1cyxzdGF0dXNUZXh0LHJlc3BvbnNlcztpZihjYWxsYmFjayYmKGlzQWJvcnR8fDQ9PT14aHIucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIHhockNhbGxiYWNrc1tpZF0sY2FsbGJhY2s9dm9pZCAwLHhoci5vbnJlYWR5c3RhdGVjaGFuZ2U9alF1ZXJ5Lm5vb3AsaXNBYm9ydCk0IT09eGhyLnJlYWR5U3RhdGUmJnhoci5hYm9ydCgpO2Vsc2V7cmVzcG9uc2VzPXt9LHN0YXR1cz14aHIuc3RhdHVzLFwic3RyaW5nXCI9PXR5cGVvZiB4aHIucmVzcG9uc2VUZXh0JiYocmVzcG9uc2VzLnRleHQ9eGhyLnJlc3BvbnNlVGV4dCk7dHJ5e3N0YXR1c1RleHQ9eGhyLnN0YXR1c1RleHR9Y2F0Y2goZSl7c3RhdHVzVGV4dD1cIlwifXN0YXR1c3x8IW9wdGlvbnMuaXNMb2NhbHx8b3B0aW9ucy5jcm9zc0RvbWFpbj8xMjIzPT09c3RhdHVzJiYoc3RhdHVzPTIwNCk6c3RhdHVzPXJlc3BvbnNlcy50ZXh0PzIwMDo0MDR9cmVzcG9uc2VzJiZjb21wbGV0ZShzdGF0dXMsc3RhdHVzVGV4dCxyZXNwb25zZXMseGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sb3B0aW9ucy5hc3luYz80PT09eGhyLnJlYWR5U3RhdGU/c2V0VGltZW91dChjYWxsYmFjayk6eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT14aHJDYWxsYmFja3NbaWRdPWNhbGxiYWNrOmNhbGxiYWNrKCl9LGFib3J0OmZ1bmN0aW9uKCl7Y2FsbGJhY2smJmNhbGxiYWNrKHZvaWQgMCwhMCl9fX19KSxqUXVlcnkuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6XCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwifSxjb250ZW50czp7c2NyaXB0Oi8oPzpqYXZhfGVjbWEpc2NyaXB0L30sY29udmVydGVyczp7XCJ0ZXh0IHNjcmlwdFwiOmZ1bmN0aW9uKHRleHQpe3JldHVybiBqUXVlcnkuZ2xvYmFsRXZhbCh0ZXh0KSx0ZXh0fX19KSxqUXVlcnkuYWpheFByZWZpbHRlcihcInNjcmlwdFwiLGZ1bmN0aW9uKHMpe3ZvaWQgMD09PXMuY2FjaGUmJihzLmNhY2hlPSExKSxzLmNyb3NzRG9tYWluJiYocy50eXBlPVwiR0VUXCIscy5nbG9iYWw9ITEpfSksalF1ZXJ5LmFqYXhUcmFuc3BvcnQoXCJzY3JpcHRcIixmdW5jdGlvbihzKXtpZihzLmNyb3NzRG9tYWluKXt2YXIgc2NyaXB0LGhlYWQ9ZG9jdW1lbnQuaGVhZHx8alF1ZXJ5KFwiaGVhZFwiKVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKF8sY2FsbGJhY2spe3NjcmlwdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpLHNjcmlwdC5hc3luYz0hMCxzLnNjcmlwdENoYXJzZXQmJihzY3JpcHQuY2hhcnNldD1zLnNjcmlwdENoYXJzZXQpLHNjcmlwdC5zcmM9cy51cmwsc2NyaXB0Lm9ubG9hZD1zY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKF8saXNBYm9ydCl7KGlzQWJvcnR8fCFzY3JpcHQucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChzY3JpcHQucmVhZHlTdGF0ZSkpJiYoc2NyaXB0Lm9ubG9hZD1zY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsc2NyaXB0LnBhcmVudE5vZGUmJnNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCksc2NyaXB0PW51bGwsaXNBYm9ydHx8Y2FsbGJhY2soMjAwLFwic3VjY2Vzc1wiKSl9LGhlYWQuaW5zZXJ0QmVmb3JlKHNjcmlwdCxoZWFkLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe3NjcmlwdCYmc2NyaXB0Lm9ubG9hZCh2b2lkIDAsITApfX19fSk7dmFyIG9sZENhbGxiYWNrcz1bXSxyanNvbnA9Lyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztqUXVlcnkuYWpheFNldHVwKHtqc29ucDpcImNhbGxiYWNrXCIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBjYWxsYmFjaz1vbGRDYWxsYmFja3MucG9wKCl8fGpRdWVyeS5leHBhbmRvK1wiX1wiK25vbmNlKys7cmV0dXJuIHRoaXNbY2FsbGJhY2tdPSEwLGNhbGxiYWNrfX0pLGpRdWVyeS5hamF4UHJlZmlsdGVyKFwianNvbiBqc29ucFwiLGZ1bmN0aW9uKHMsb3JpZ2luYWxTZXR0aW5ncyxqcVhIUil7dmFyIGNhbGxiYWNrTmFtZSxvdmVyd3JpdHRlbixyZXNwb25zZUNvbnRhaW5lcixqc29uUHJvcD1zLmpzb25wIT09ITEmJihyanNvbnAudGVzdChzLnVybCk/XCJ1cmxcIjpcInN0cmluZ1wiPT10eXBlb2Ygcy5kYXRhJiYhKHMuY29udGVudFR5cGV8fFwiXCIpLmluZGV4T2YoXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIikmJnJqc29ucC50ZXN0KHMuZGF0YSkmJlwiZGF0YVwiKTtyZXR1cm4ganNvblByb3B8fFwianNvbnBcIj09PXMuZGF0YVR5cGVzWzBdPyhjYWxsYmFja05hbWU9cy5qc29ucENhbGxiYWNrPWpRdWVyeS5pc0Z1bmN0aW9uKHMuanNvbnBDYWxsYmFjayk/cy5qc29ucENhbGxiYWNrKCk6cy5qc29ucENhbGxiYWNrLGpzb25Qcm9wP3NbanNvblByb3BdPXNbanNvblByb3BdLnJlcGxhY2Uocmpzb25wLFwiJDFcIitjYWxsYmFja05hbWUpOnMuanNvbnAhPT0hMSYmKHMudXJsKz0ocnF1ZXJ5LnRlc3Qocy51cmwpP1wiJlwiOlwiP1wiKStzLmpzb25wK1wiPVwiK2NhbGxiYWNrTmFtZSkscy5jb252ZXJ0ZXJzW1wic2NyaXB0IGpzb25cIl09ZnVuY3Rpb24oKXtyZXR1cm4gcmVzcG9uc2VDb250YWluZXJ8fGpRdWVyeS5lcnJvcihjYWxsYmFja05hbWUrXCIgd2FzIG5vdCBjYWxsZWRcIikscmVzcG9uc2VDb250YWluZXJbMF19LHMuZGF0YVR5cGVzWzBdPVwianNvblwiLG92ZXJ3cml0dGVuPXdpbmRvd1tjYWxsYmFja05hbWVdLHdpbmRvd1tjYWxsYmFja05hbWVdPWZ1bmN0aW9uKCl7cmVzcG9uc2VDb250YWluZXI9YXJndW1lbnRzfSxqcVhIUi5hbHdheXMoZnVuY3Rpb24oKXt3aW5kb3dbY2FsbGJhY2tOYW1lXT1vdmVyd3JpdHRlbixzW2NhbGxiYWNrTmFtZV0mJihzLmpzb25wQ2FsbGJhY2s9b3JpZ2luYWxTZXR0aW5ncy5qc29ucENhbGxiYWNrLG9sZENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrTmFtZSkpLHJlc3BvbnNlQ29udGFpbmVyJiZqUXVlcnkuaXNGdW5jdGlvbihvdmVyd3JpdHRlbikmJm92ZXJ3cml0dGVuKHJlc3BvbnNlQ29udGFpbmVyWzBdKSxyZXNwb25zZUNvbnRhaW5lcj1vdmVyd3JpdHRlbj12b2lkIDB9KSxcInNjcmlwdFwiKTp2b2lkIDB9KSxqUXVlcnkucGFyc2VIVE1MPWZ1bmN0aW9uKGRhdGEsY29udGV4dCxrZWVwU2NyaXB0cyl7aWYoIWRhdGF8fFwic3RyaW5nXCIhPXR5cGVvZiBkYXRhKXJldHVybiBudWxsO1wiYm9vbGVhblwiPT10eXBlb2YgY29udGV4dCYmKGtlZXBTY3JpcHRzPWNvbnRleHQsY29udGV4dD0hMSksY29udGV4dD1jb250ZXh0fHxkb2N1bWVudDt2YXIgcGFyc2VkPXJzaW5nbGVUYWcuZXhlYyhkYXRhKSxzY3JpcHRzPSFrZWVwU2NyaXB0cyYmW107cmV0dXJuIHBhcnNlZD9bY29udGV4dC5jcmVhdGVFbGVtZW50KHBhcnNlZFsxXSldOihwYXJzZWQ9alF1ZXJ5LmJ1aWxkRnJhZ21lbnQoW2RhdGFdLGNvbnRleHQsc2NyaXB0cyksc2NyaXB0cyYmc2NyaXB0cy5sZW5ndGgmJmpRdWVyeShzY3JpcHRzKS5yZW1vdmUoKSxqUXVlcnkubWVyZ2UoW10scGFyc2VkLmNoaWxkTm9kZXMpKX07dmFyIF9sb2FkPWpRdWVyeS5mbi5sb2FkO2pRdWVyeS5mbi5sb2FkPWZ1bmN0aW9uKHVybCxwYXJhbXMsY2FsbGJhY2spe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB1cmwmJl9sb2FkKXJldHVybiBfbG9hZC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIHNlbGVjdG9yLHJlc3BvbnNlLHR5cGUsc2VsZj10aGlzLG9mZj11cmwuaW5kZXhPZihcIiBcIik7cmV0dXJuIG9mZj49MCYmKHNlbGVjdG9yPWpRdWVyeS50cmltKHVybC5zbGljZShvZmYsdXJsLmxlbmd0aCkpLHVybD11cmwuc2xpY2UoMCxvZmYpKSxqUXVlcnkuaXNGdW5jdGlvbihwYXJhbXMpPyhjYWxsYmFjaz1wYXJhbXMscGFyYW1zPXZvaWQgMCk6cGFyYW1zJiZcIm9iamVjdFwiPT10eXBlb2YgcGFyYW1zJiYodHlwZT1cIlBPU1RcIiksc2VsZi5sZW5ndGg+MCYmalF1ZXJ5LmFqYXgoe3VybDp1cmwsdHlwZTp0eXBlLGRhdGFUeXBlOlwiaHRtbFwiLGRhdGE6cGFyYW1zfSkuZG9uZShmdW5jdGlvbihyZXNwb25zZVRleHQpe3Jlc3BvbnNlPWFyZ3VtZW50cyxzZWxmLmh0bWwoc2VsZWN0b3I/alF1ZXJ5KFwiPGRpdj5cIikuYXBwZW5kKGpRdWVyeS5wYXJzZUhUTUwocmVzcG9uc2VUZXh0KSkuZmluZChzZWxlY3Rvcik6cmVzcG9uc2VUZXh0KX0pLmNvbXBsZXRlKGNhbGxiYWNrJiZmdW5jdGlvbihqcVhIUixzdGF0dXMpe3NlbGYuZWFjaChjYWxsYmFjayxyZXNwb25zZXx8W2pxWEhSLnJlc3BvbnNlVGV4dCxzdGF0dXMsanFYSFJdKX0pLHRoaXN9LGpRdWVyeS5lYWNoKFtcImFqYXhTdGFydFwiLFwiYWpheFN0b3BcIixcImFqYXhDb21wbGV0ZVwiLFwiYWpheEVycm9yXCIsXCJhamF4U3VjY2Vzc1wiLFwiYWpheFNlbmRcIl0sZnVuY3Rpb24oaSx0eXBlKXtqUXVlcnkuZm5bdHlwZV09ZnVuY3Rpb24oZm4pe3JldHVybiB0aGlzLm9uKHR5cGUsZm4pfX0pLGpRdWVyeS5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVyeS50aW1lcnMsZnVuY3Rpb24oZm4pe3JldHVybiBlbGVtPT09Zm4uZWxlbX0pLmxlbmd0aH07dmFyIGRvY0VsZW09d2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtqUXVlcnkub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oZWxlbSxvcHRpb25zLGkpe3ZhciBjdXJQb3NpdGlvbixjdXJMZWZ0LGN1ckNTU1RvcCxjdXJUb3AsY3VyT2Zmc2V0LGN1ckNTU0xlZnQsY2FsY3VsYXRlUG9zaXRpb24scG9zaXRpb249alF1ZXJ5LmNzcyhlbGVtLFwicG9zaXRpb25cIiksY3VyRWxlbT1qUXVlcnkoZWxlbSkscHJvcHM9e307XCJzdGF0aWNcIj09PXBvc2l0aW9uJiYoZWxlbS5zdHlsZS5wb3NpdGlvbj1cInJlbGF0aXZlXCIpLGN1ck9mZnNldD1jdXJFbGVtLm9mZnNldCgpLGN1ckNTU1RvcD1qUXVlcnkuY3NzKGVsZW0sXCJ0b3BcIiksY3VyQ1NTTGVmdD1qUXVlcnkuY3NzKGVsZW0sXCJsZWZ0XCIpLGNhbGN1bGF0ZVBvc2l0aW9uPShcImFic29sdXRlXCI9PT1wb3NpdGlvbnx8XCJmaXhlZFwiPT09cG9zaXRpb24pJiZqUXVlcnkuaW5BcnJheShcImF1dG9cIixbY3VyQ1NTVG9wLGN1ckNTU0xlZnRdKT4tMSxjYWxjdWxhdGVQb3NpdGlvbj8oY3VyUG9zaXRpb249Y3VyRWxlbS5wb3NpdGlvbigpLGN1clRvcD1jdXJQb3NpdGlvbi50b3AsY3VyTGVmdD1jdXJQb3NpdGlvbi5sZWZ0KTooY3VyVG9wPXBhcnNlRmxvYXQoY3VyQ1NTVG9wKXx8MCxjdXJMZWZ0PXBhcnNlRmxvYXQoY3VyQ1NTTGVmdCl8fDApLGpRdWVyeS5pc0Z1bmN0aW9uKG9wdGlvbnMpJiYob3B0aW9ucz1vcHRpb25zLmNhbGwoZWxlbSxpLGN1ck9mZnNldCkpLG51bGwhPW9wdGlvbnMudG9wJiYocHJvcHMudG9wPW9wdGlvbnMudG9wLWN1ck9mZnNldC50b3ArY3VyVG9wKSxudWxsIT1vcHRpb25zLmxlZnQmJihwcm9wcy5sZWZ0PW9wdGlvbnMubGVmdC1jdXJPZmZzZXQubGVmdCtjdXJMZWZ0KSxcInVzaW5nXCJpbiBvcHRpb25zP29wdGlvbnMudXNpbmcuY2FsbChlbGVtLHByb3BzKTpjdXJFbGVtLmNzcyhwcm9wcyl9fSxqUXVlcnkuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24ob3B0aW9ucyl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09b3B0aW9ucz90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihpKXtqUXVlcnkub2Zmc2V0LnNldE9mZnNldCh0aGlzLG9wdGlvbnMsaSl9KTt2YXIgZG9jRWxlbSx3aW4sYm94PXt0b3A6MCxsZWZ0OjB9LGVsZW09dGhpc1swXSxkb2M9ZWxlbSYmZWxlbS5vd25lckRvY3VtZW50O2lmKGRvYylyZXR1cm4gZG9jRWxlbT1kb2MuZG9jdW1lbnRFbGVtZW50LGpRdWVyeS5jb250YWlucyhkb2NFbGVtLGVsZW0pPyh0eXBlb2YgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1zdHJ1bmRlZmluZWQmJihib3g9ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksd2luPWdldFdpbmRvdyhkb2MpLHt0b3A6Ym94LnRvcCsod2luLnBhZ2VZT2Zmc2V0fHxkb2NFbGVtLnNjcm9sbFRvcCktKGRvY0VsZW0uY2xpZW50VG9wfHwwKSxsZWZ0OmJveC5sZWZ0Kyh3aW4ucGFnZVhPZmZzZXR8fGRvY0VsZW0uc2Nyb2xsTGVmdCktKGRvY0VsZW0uY2xpZW50TGVmdHx8MCl9KTpib3h9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIG9mZnNldFBhcmVudCxvZmZzZXQscGFyZW50T2Zmc2V0PXt0b3A6MCxsZWZ0OjB9LGVsZW09dGhpc1swXTtyZXR1cm5cImZpeGVkXCI9PT1qUXVlcnkuY3NzKGVsZW0sXCJwb3NpdGlvblwiKT9vZmZzZXQ9ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKToob2Zmc2V0UGFyZW50PXRoaXMub2Zmc2V0UGFyZW50KCksb2Zmc2V0PXRoaXMub2Zmc2V0KCksalF1ZXJ5Lm5vZGVOYW1lKG9mZnNldFBhcmVudFswXSxcImh0bWxcIil8fChwYXJlbnRPZmZzZXQ9b2Zmc2V0UGFyZW50Lm9mZnNldCgpKSxwYXJlbnRPZmZzZXQudG9wKz1qUXVlcnkuY3NzKG9mZnNldFBhcmVudFswXSxcImJvcmRlclRvcFdpZHRoXCIsITApLHBhcmVudE9mZnNldC5sZWZ0Kz1qUXVlcnkuY3NzKG9mZnNldFBhcmVudFswXSxcImJvcmRlckxlZnRXaWR0aFwiLCEwKSkse3RvcDpvZmZzZXQudG9wLXBhcmVudE9mZnNldC50b3AtalF1ZXJ5LmNzcyhlbGVtLFwibWFyZ2luVG9wXCIsITApLGxlZnQ6b2Zmc2V0LmxlZnQtcGFyZW50T2Zmc2V0LmxlZnQtalF1ZXJ5LmNzcyhlbGVtLFwibWFyZ2luTGVmdFwiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIG9mZnNldFBhcmVudD10aGlzLm9mZnNldFBhcmVudHx8ZG9jRWxlbTtvZmZzZXRQYXJlbnQmJiFqUXVlcnkubm9kZU5hbWUob2Zmc2V0UGFyZW50LFwiaHRtbFwiKSYmXCJzdGF0aWNcIj09PWpRdWVyeS5jc3Mob2Zmc2V0UGFyZW50LFwicG9zaXRpb25cIik7KW9mZnNldFBhcmVudD1vZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O3JldHVybiBvZmZzZXRQYXJlbnR8fGRvY0VsZW19KX19KSxqUXVlcnkuZWFjaCh7c2Nyb2xsTGVmdDpcInBhZ2VYT2Zmc2V0XCIsc2Nyb2xsVG9wOlwicGFnZVlPZmZzZXRcIn0sZnVuY3Rpb24obWV0aG9kLHByb3Ape3ZhciB0b3A9L1kvLnRlc3QocHJvcCk7alF1ZXJ5LmZuW21ldGhvZF09ZnVuY3Rpb24odmFsKXtyZXR1cm4gYWNjZXNzKHRoaXMsZnVuY3Rpb24oZWxlbSxtZXRob2QsdmFsKXt2YXIgd2luPWdldFdpbmRvdyhlbGVtKTtyZXR1cm4gdm9pZCAwPT09dmFsP3dpbj9wcm9wIGluIHdpbj93aW5bcHJvcF06d2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFttZXRob2RdOmVsZW1bbWV0aG9kXTp2b2lkKHdpbj93aW4uc2Nyb2xsVG8odG9wP2pRdWVyeSh3aW4pLnNjcm9sbExlZnQoKTp2YWwsdG9wP3ZhbDpqUXVlcnkod2luKS5zY3JvbGxUb3AoKSk6ZWxlbVttZXRob2RdPXZhbCl9LG1ldGhvZCx2YWwsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KSxqUXVlcnkuZWFjaChbXCJ0b3BcIixcImxlZnRcIl0sZnVuY3Rpb24oaSxwcm9wKXtqUXVlcnkuY3NzSG9va3NbcHJvcF09YWRkR2V0SG9va0lmKHN1cHBvcnQucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihlbGVtLGNvbXB1dGVkKXtyZXR1cm4gY29tcHV0ZWQ/KGNvbXB1dGVkPWN1ckNTUyhlbGVtLHByb3ApLHJudW1ub25weC50ZXN0KGNvbXB1dGVkKT9qUXVlcnkoZWxlbSkucG9zaXRpb24oKVtwcm9wXStcInB4XCI6Y29tcHV0ZWQpOnZvaWQgMH0pfSksalF1ZXJ5LmVhY2goe0hlaWdodDpcImhlaWdodFwiLFdpZHRoOlwid2lkdGhcIn0sZnVuY3Rpb24obmFtZSx0eXBlKXtqUXVlcnkuZWFjaCh7cGFkZGluZzpcImlubmVyXCIrbmFtZSxjb250ZW50OnR5cGUsXCJcIjpcIm91dGVyXCIrbmFtZX0sZnVuY3Rpb24oZGVmYXVsdEV4dHJhLGZ1bmNOYW1lKXtqUXVlcnkuZm5bZnVuY05hbWVdPWZ1bmN0aW9uKG1hcmdpbix2YWx1ZSl7dmFyIGNoYWluYWJsZT1hcmd1bWVudHMubGVuZ3RoJiYoZGVmYXVsdEV4dHJhfHxcImJvb2xlYW5cIiE9dHlwZW9mIG1hcmdpbiksZXh0cmE9ZGVmYXVsdEV4dHJhfHwobWFyZ2luPT09ITB8fHZhbHVlPT09ITA/XCJtYXJnaW5cIjpcImJvcmRlclwiKTtyZXR1cm4gYWNjZXNzKHRoaXMsZnVuY3Rpb24oZWxlbSx0eXBlLHZhbHVlKXt2YXIgZG9jO3JldHVybiBqUXVlcnkuaXNXaW5kb3coZWxlbSk/ZWxlbS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbXCJjbGllbnRcIituYW1lXTo5PT09ZWxlbS5ub2RlVHlwZT8oZG9jPWVsZW0uZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGVsZW0uYm9keVtcInNjcm9sbFwiK25hbWVdLGRvY1tcInNjcm9sbFwiK25hbWVdLGVsZW0uYm9keVtcIm9mZnNldFwiK25hbWVdLGRvY1tcIm9mZnNldFwiK25hbWVdLGRvY1tcImNsaWVudFwiK25hbWVdKSk6dm9pZCAwPT09dmFsdWU/alF1ZXJ5LmNzcyhlbGVtLHR5cGUsZXh0cmEpOmpRdWVyeS5zdHlsZShlbGVtLHR5cGUsdmFsdWUsZXh0cmEpfSx0eXBlLGNoYWluYWJsZT9tYXJnaW46dm9pZCAwLGNoYWluYWJsZSxudWxsKX19KX0pLGpRdWVyeS5mbi5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxqUXVlcnkuZm4uYW5kU2VsZj1qUXVlcnkuZm4uYWRkQmFjayxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZShcImpxdWVyeVwiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeX0pO3ZhciBfalF1ZXJ5PXdpbmRvdy5qUXVlcnksXyQ9d2luZG93LiQ7cmV0dXJuIGpRdWVyeS5ub0NvbmZsaWN0PWZ1bmN0aW9uKGRlZXApe3JldHVybiB3aW5kb3cuJD09PWpRdWVyeSYmKHdpbmRvdy4kPV8kKSxkZWVwJiZ3aW5kb3cualF1ZXJ5PT09alF1ZXJ5JiYod2luZG93LmpRdWVyeT1falF1ZXJ5KSxqUXVlcnl9LHR5cGVvZiBub0dsb2JhbD09PXN0cnVuZGVmaW5lZCYmKHdpbmRvdy5qUXVlcnk9d2luZG93LiQ9alF1ZXJ5KSxqUXVlcnl9KTsiXSwibWFwcGluZ3MiOiI7O0FBQUEsQ0FBQyxVQUFTQSxNQUFNLEVBQUNDLE9BQU8sRUFBQztFQUFDLFFBQVEsSUFBRSxPQUFPQyxNQUFNLElBQUUsUUFBUSxJQUFFLE9BQU9BLE1BQU0sQ0FBQ0MsT0FBTyxHQUFDRCxNQUFNLENBQUNDLE9BQU8sR0FBQ0gsTUFBTSxDQUFDSSxRQUFRLEdBQUNILE9BQU8sQ0FBQ0QsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBU0ssQ0FBQyxFQUFDO0lBQUMsSUFBRyxDQUFDQSxDQUFDLENBQUNELFFBQVEsRUFBQyxNQUFNLElBQUlFLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQztJQUFDLE9BQU9MLE9BQU8sQ0FBQ0ksQ0FBQyxDQUFDO0VBQUEsQ0FBQyxHQUFDSixPQUFPLENBQUNELE1BQU0sQ0FBQztBQUFBLENBQUMsQ0FBQyxXQUFXLElBQUUsT0FBT08sTUFBTSxHQUFDQSxNQUFNLFNBQUssRUFBQyxVQUFTQSxNQUFNLEVBQUNDLFFBQVEsRUFBQztFQUFDLFNBQVNDLFdBQVdBLENBQUNDLEdBQUcsRUFBQztJQUFDLElBQUlDLE1BQU0sR0FBQyxRQUFRLElBQUdELEdBQUcsSUFBRUEsR0FBRyxDQUFDQyxNQUFNO01BQUNDLElBQUksR0FBQ0MsTUFBTSxDQUFDRCxJQUFJLENBQUNGLEdBQUcsQ0FBQztJQUFDLE9BQU0sVUFBVSxLQUFHRSxJQUFJLElBQUVDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSixHQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEtBQUdBLEdBQUcsQ0FBQ0ssUUFBUSxJQUFFSixNQUFNLEdBQUMsQ0FBQyxDQUFDLEdBQUMsT0FBTyxLQUFHQyxJQUFJLElBQUUsQ0FBQyxLQUFHRCxNQUFNLElBQUUsUUFBUSxJQUFFLE9BQU9BLE1BQU0sSUFBRUEsTUFBTSxHQUFDLENBQUMsSUFBRUEsTUFBTSxHQUFDLENBQUMsSUFBSUQsR0FBRztFQUFBO0VBQUMsU0FBU00sTUFBTUEsQ0FBQ0MsUUFBUSxFQUFDQyxTQUFTLEVBQUNDLEdBQUcsRUFBQztJQUFDLElBQUdOLE1BQU0sQ0FBQ08sVUFBVSxDQUFDRixTQUFTLENBQUMsRUFBQyxPQUFPTCxNQUFNLENBQUNRLElBQUksQ0FBQ0osUUFBUSxFQUFDLFVBQVNLLElBQUksRUFBQ0MsQ0FBQyxFQUFDO01BQUMsT0FBTSxDQUFDLENBQUNMLFNBQVMsQ0FBQ00sSUFBSSxDQUFDRixJQUFJLEVBQUNDLENBQUMsRUFBQ0QsSUFBSSxDQUFDLEtBQUdILEdBQUc7SUFBQSxDQUFDLENBQUM7SUFBQyxJQUFHRCxTQUFTLENBQUNILFFBQVEsRUFBQyxPQUFPRixNQUFNLENBQUNRLElBQUksQ0FBQ0osUUFBUSxFQUFDLFVBQVNLLElBQUksRUFBQztNQUFDLE9BQU9BLElBQUksS0FBR0osU0FBUyxLQUFHQyxHQUFHO0lBQUEsQ0FBQyxDQUFDO0lBQUMsSUFBRyxRQUFRLElBQUUsT0FBT0QsU0FBUyxFQUFDO01BQUMsSUFBR08sU0FBUyxDQUFDQyxJQUFJLENBQUNSLFNBQVMsQ0FBQyxFQUFDLE9BQU9MLE1BQU0sQ0FBQ2MsTUFBTSxDQUFDVCxTQUFTLEVBQUNELFFBQVEsRUFBQ0UsR0FBRyxDQUFDO01BQUNELFNBQVMsR0FBQ0wsTUFBTSxDQUFDYyxNQUFNLENBQUNULFNBQVMsRUFBQ0QsUUFBUSxDQUFDO0lBQUE7SUFBQyxPQUFPSixNQUFNLENBQUNRLElBQUksQ0FBQ0osUUFBUSxFQUFDLFVBQVNLLElBQUksRUFBQztNQUFDLE9BQU9ULE1BQU0sQ0FBQ2UsT0FBTyxDQUFDTixJQUFJLEVBQUNKLFNBQVMsQ0FBQyxJQUFFLENBQUMsS0FBR0MsR0FBRztJQUFBLENBQUMsQ0FBQztFQUFBO0VBQUMsU0FBU1UsT0FBT0EsQ0FBQ0MsR0FBRyxFQUFDQyxHQUFHLEVBQUM7SUFBQyxHQUFHRCxHQUFHLEdBQUNBLEdBQUcsQ0FBQ0MsR0FBRyxDQUFDLENBQUMsUUFBTUQsR0FBRyxJQUFFLENBQUMsS0FB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