@grafana/scenes 6.8.0 → 6.9.0--canary.1093.14409340532.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/esm/components/VizPanel/VizPanelRenderer.js +4 -3
  3. package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
  4. package/dist/esm/index.js +1 -1
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.js +5 -4
  8. package/dist/index.js.map +1 -1
  9. package/package.json +2 -2
  10. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +0 -33
  11. package/dist/esm/dist/esm/behaviors/CursorSync.js +0 -76
  12. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +0 -44
  13. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +0 -14
  14. package/dist/esm/dist/esm/components/EmbeddedScene.js +0 -59
  15. package/dist/esm/dist/esm/components/NestedScene.js +0 -95
  16. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +0 -27
  17. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +0 -176
  18. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +0 -104
  19. package/dist/esm/dist/esm/components/SceneApp/utils.js +0 -42
  20. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +0 -41
  21. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +0 -55
  22. package/dist/esm/dist/esm/components/SceneCanvasText.js +0 -32
  23. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +0 -17
  24. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +0 -82
  25. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +0 -72
  26. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +0 -77
  27. package/dist/esm/dist/esm/components/SceneReactObject.js +0 -34
  28. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +0 -205
  29. package/dist/esm/dist/esm/components/SceneTimePicker.js +0 -139
  30. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +0 -240
  31. package/dist/esm/dist/esm/components/SceneToolbarButton.js +0 -33
  32. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +0 -406
  33. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +0 -44
  34. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +0 -59
  35. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +0 -285
  36. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +0 -45
  37. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +0 -72
  38. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +0 -11
  39. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +0 -164
  40. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +0 -124
  41. package/dist/esm/dist/esm/components/layout/LazyLoader.js +0 -103
  42. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +0 -135
  43. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +0 -30
  44. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +0 -283
  45. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +0 -178
  46. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +0 -190
  47. package/dist/esm/dist/esm/components/layout/grid/constants.js +0 -7
  48. package/dist/esm/dist/esm/components/layout/grid/utils.js +0 -36
  49. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +0 -17
  50. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +0 -29
  51. package/dist/esm/dist/esm/components/layout/split/Splitter.js +0 -386
  52. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +0 -57
  53. package/dist/esm/dist/esm/core/SceneDataNode.js +0 -43
  54. package/dist/esm/dist/esm/core/SceneObjectBase.js +0 -286
  55. package/dist/esm/dist/esm/core/SceneObjectRef.js +0 -32
  56. package/dist/esm/dist/esm/core/SceneTimeRange.js +0 -231
  57. package/dist/esm/dist/esm/core/events.js +0 -11
  58. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +0 -10
  59. package/dist/esm/dist/esm/core/sceneGraph/index.js +0 -25
  60. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +0 -178
  61. package/dist/esm/dist/esm/core/sceneGraph/utils.js +0 -64
  62. package/dist/esm/dist/esm/core/types.js +0 -15
  63. package/dist/esm/dist/esm/querying/DataLayersMerger.js +0 -46
  64. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +0 -6
  65. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +0 -6
  66. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +0 -100
  67. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +0 -468
  68. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +0 -46
  69. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +0 -12
  70. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +0 -112
  71. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +0 -51
  72. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +0 -130
  73. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +0 -85
  74. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +0 -121
  75. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +0 -211
  76. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +0 -77
  77. package/dist/esm/dist/esm/querying/registerQueryWithController.js +0 -41
  78. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +0 -30
  79. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +0 -45
  80. package/dist/esm/dist/esm/services/UrlSyncManager.js +0 -167
  81. package/dist/esm/dist/esm/services/useUrlSync.js +0 -29
  82. package/dist/esm/dist/esm/services/utils.js +0 -71
  83. package/dist/esm/dist/esm/utils/ControlsLabel.js +0 -107
  84. package/dist/esm/dist/esm/utils/LoadingIndicator.js +0 -19
  85. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +0 -39
  86. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +0 -16
  87. package/dist/esm/dist/esm/utils/date.js +0 -15
  88. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +0 -16
  89. package/dist/esm/dist/esm/utils/explore.js +0 -47
  90. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +0 -4
  91. package/dist/esm/dist/esm/utils/getDataSource.js +0 -18
  92. package/dist/esm/dist/esm/utils/getMessageFromError.js +0 -24
  93. package/dist/esm/dist/esm/utils/metricTree.js +0 -53
  94. package/dist/esm/dist/esm/utils/parseUrlParam.js +0 -41
  95. package/dist/esm/dist/esm/utils/utils.js +0 -11
  96. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +0 -30
  97. package/dist/esm/dist/esm/utils/writeSceneLog.js +0 -12
  98. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +0 -150
  99. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +0 -71
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +0 -24
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +0 -303
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -162
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -20
  104. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -640
  105. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -65
  106. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -146
  107. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -114
  108. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -68
  109. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -146
  110. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +0 -289
  111. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -76
  112. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +0 -13
  113. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +0 -47
  114. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +0 -23
  115. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +0 -33
  116. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +0 -228
  117. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +0 -72
  118. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +0 -15
  119. package/dist/esm/dist/esm/variables/constants.js +0 -9
  120. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +0 -12
  121. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +0 -259
  122. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +0 -63
  123. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +0 -13
  124. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +0 -40
  125. package/dist/esm/dist/esm/variables/interpolation/defaults.js +0 -21
  126. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +0 -13
  127. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +0 -296
  128. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +0 -87
  129. package/dist/esm/dist/esm/variables/lookupVariable.js +0 -20
  130. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +0 -57
  131. package/dist/esm/dist/esm/variables/macros/contextMacros.js +0 -43
  132. package/dist/esm/dist/esm/variables/macros/dataMacros.js +0 -134
  133. package/dist/esm/dist/esm/variables/macros/index.js +0 -26
  134. package/dist/esm/dist/esm/variables/macros/templateProxies.js +0 -51
  135. package/dist/esm/dist/esm/variables/macros/timeMacros.js +0 -86
  136. package/dist/esm/dist/esm/variables/macros/types.js +0 -11
  137. package/dist/esm/dist/esm/variables/macros/urlMacros.js +0 -56
  138. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +0 -254
  139. package/dist/esm/dist/esm/variables/types.js +0 -11
  140. package/dist/esm/dist/esm/variables/utils.js +0 -172
  141. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +0 -38
  142. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +0 -60
  143. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +0 -88
  144. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +0 -117
  145. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +0 -295
  146. package/dist/esm/dist/esm/variables/variants/TestVariable.js +0 -117
  147. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +0 -61
  148. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +0 -139
  149. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +0 -129
  150. package/dist/esm/dist/esm/variables/variants/query/guards.js +0 -28
  151. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +0 -96
  152. package/dist/esm/dist/esm/variables/variants/query/utils.js +0 -124
  153. package/dist/esm/querying/DataProviderSharer.js +0 -39
  154. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +0 -27
  155. package/dist/esm/src/behaviors/CursorSync.js +0 -76
  156. package/dist/esm/src/behaviors/LiveNowTimer.js +0 -44
  157. package/dist/esm/src/behaviors/SceneQueryController.js +0 -60
  158. package/dist/esm/src/behaviors/index.js +0 -5
  159. package/dist/esm/src/components/EmbeddedScene.js +0 -59
  160. package/dist/esm/src/components/NestedScene.js +0 -95
  161. package/dist/esm/src/components/SceneApp/SceneApp.js +0 -37
  162. package/dist/esm/src/components/SceneApp/SceneAppPage.js +0 -176
  163. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +0 -104
  164. package/dist/esm/src/components/SceneApp/utils.js +0 -42
  165. package/dist/esm/src/components/SceneByFrameRepeater.js +0 -41
  166. package/dist/esm/src/components/SceneByVariableRepeater.js +0 -55
  167. package/dist/esm/src/components/SceneCanvasText.js +0 -32
  168. package/dist/esm/src/components/SceneControlsSpacer.js +0 -17
  169. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +0 -82
  170. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +0 -72
  171. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +0 -77
  172. package/dist/esm/src/components/SceneReactObject.js +0 -34
  173. package/dist/esm/src/components/SceneRefreshPicker.js +0 -205
  174. package/dist/esm/src/components/SceneTimePicker.js +0 -139
  175. package/dist/esm/src/components/SceneTimeRangeCompare.js +0 -240
  176. package/dist/esm/src/components/SceneToolbarButton.js +0 -33
  177. package/dist/esm/src/components/VizPanel/VizPanel.js +0 -406
  178. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +0 -44
  179. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +0 -59
  180. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +0 -285
  181. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +0 -45
  182. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +0 -72
  183. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +0 -56
  184. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +0 -164
  185. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +0 -124
  186. package/dist/esm/src/components/layout/LazyLoader.js +0 -103
  187. package/dist/esm/src/components/layout/SceneFlexLayout.js +0 -135
  188. package/dist/esm/src/components/layout/grid/SceneGridItem.js +0 -30
  189. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +0 -283
  190. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +0 -178
  191. package/dist/esm/src/components/layout/grid/SceneGridRow.js +0 -190
  192. package/dist/esm/src/components/layout/grid/constants.js +0 -7
  193. package/dist/esm/src/components/layout/grid/utils.js +0 -36
  194. package/dist/esm/src/components/layout/split/SplitLayout.js +0 -17
  195. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +0 -29
  196. package/dist/esm/src/components/layout/split/Splitter.js +0 -386
  197. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +0 -100
  198. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +0 -75
  199. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +0 -75
  200. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +0 -22
  201. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +0 -85
  202. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +0 -52
  203. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +0 -78
  204. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +0 -114
  205. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +0 -162
  206. package/dist/esm/src/core/PanelBuilders/index.js +0 -116
  207. package/dist/esm/src/core/SceneComponentWrapper.js +0 -57
  208. package/dist/esm/src/core/SceneDataNode.js +0 -43
  209. package/dist/esm/src/core/SceneObjectBase.js +0 -286
  210. package/dist/esm/src/core/SceneObjectRef.js +0 -32
  211. package/dist/esm/src/core/SceneTimeRange.js +0 -231
  212. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +0 -35
  213. package/dist/esm/src/core/SceneTimeZoneOverride.js +0 -63
  214. package/dist/esm/src/core/events.js +0 -11
  215. package/dist/esm/src/core/sceneGraph/getTimeRange.js +0 -10
  216. package/dist/esm/src/core/sceneGraph/index.js +0 -25
  217. package/dist/esm/src/core/sceneGraph/sceneGraph.js +0 -178
  218. package/dist/esm/src/core/sceneGraph/utils.js +0 -64
  219. package/dist/esm/src/core/types.js +0 -15
  220. package/dist/esm/src/index.js +0 -108
  221. package/dist/esm/src/querying/DataLayersMerger.js +0 -46
  222. package/dist/esm/src/querying/DataProviderProxy.js +0 -37
  223. package/dist/esm/src/querying/DataProviderSharer.js +0 -108
  224. package/dist/esm/src/querying/ExtraQueryProvider.js +0 -6
  225. package/dist/esm/src/querying/RuntimeDataSource.js +0 -49
  226. package/dist/esm/src/querying/SceneDataLayerSet.js +0 -100
  227. package/dist/esm/src/querying/SceneDataTransformer.js +0 -178
  228. package/dist/esm/src/querying/SceneQueryRunner.js +0 -468
  229. package/dist/esm/src/querying/extraQueryProcessingOperator.js +0 -46
  230. package/dist/esm/src/querying/getEnrichedDataRequest.js +0 -12
  231. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +0 -112
  232. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +0 -51
  233. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +0 -130
  234. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +0 -85
  235. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +0 -121
  236. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +0 -211
  237. package/dist/esm/src/querying/layers/annotations/utils.js +0 -77
  238. package/dist/esm/src/querying/layers/index.js +0 -2
  239. package/dist/esm/src/querying/registerQueryWithController.js +0 -41
  240. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +0 -30
  241. package/dist/esm/src/services/UniqueUrlKeyMapper.js +0 -45
  242. package/dist/esm/src/services/UrlSyncContextProvider.js +0 -17
  243. package/dist/esm/src/services/UrlSyncManager.js +0 -167
  244. package/dist/esm/src/services/useUrlSync.js +0 -29
  245. package/dist/esm/src/services/utils.js +0 -75
  246. package/dist/esm/src/utils/ControlsLabel.js +0 -107
  247. package/dist/esm/src/utils/LoadingIndicator.js +0 -19
  248. package/dist/esm/src/utils/SafeSerializableSceneObject.js +0 -39
  249. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +0 -16
  250. package/dist/esm/src/utils/date.js +0 -15
  251. package/dist/esm/src/utils/evaluateTimeRange.js +0 -16
  252. package/dist/esm/src/utils/explore.js +0 -47
  253. package/dist/esm/src/utils/getCompareSeriesRefId.js +0 -4
  254. package/dist/esm/src/utils/getDataSource.js +0 -18
  255. package/dist/esm/src/utils/getMessageFromError.js +0 -24
  256. package/dist/esm/src/utils/metricTree.js +0 -53
  257. package/dist/esm/src/utils/parseUrlParam.js +0 -41
  258. package/dist/esm/src/utils/utils.js +0 -11
  259. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +0 -30
  260. package/dist/esm/src/utils/writeSceneLog.js +0 -12
  261. package/dist/esm/src/variables/VariableDependencyConfig.js +0 -150
  262. package/dist/esm/src/variables/VariableValueRecorder.js +0 -71
  263. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +0 -24
  264. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +0 -303
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -162
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -20
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -640
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -65
  269. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -146
  270. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -114
  271. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -68
  272. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -146
  273. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +0 -289
  274. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -76
  275. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +0 -13
  276. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +0 -47
  277. package/dist/esm/src/variables/components/VariableValueControl.js +0 -23
  278. package/dist/esm/src/variables/components/VariableValueInput.js +0 -33
  279. package/dist/esm/src/variables/components/VariableValueSelect.js +0 -228
  280. package/dist/esm/src/variables/components/VariableValueSelectors.js +0 -72
  281. package/dist/esm/src/variables/components/getOptionSearcher.js +0 -15
  282. package/dist/esm/src/variables/constants.js +0 -9
  283. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +0 -12
  284. package/dist/esm/src/variables/groupby/GroupByVariable.js +0 -259
  285. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +0 -63
  286. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +0 -13
  287. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +0 -40
  288. package/dist/esm/src/variables/interpolation/defaults.js +0 -21
  289. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +0 -13
  290. package/dist/esm/src/variables/interpolation/formatRegistry.js +0 -296
  291. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +0 -87
  292. package/dist/esm/src/variables/lookupVariable.js +0 -20
  293. package/dist/esm/src/variables/macros/AllVariablesMacro.js +0 -57
  294. package/dist/esm/src/variables/macros/contextMacros.js +0 -43
  295. package/dist/esm/src/variables/macros/dataMacros.js +0 -134
  296. package/dist/esm/src/variables/macros/index.js +0 -35
  297. package/dist/esm/src/variables/macros/templateProxies.js +0 -51
  298. package/dist/esm/src/variables/macros/timeMacros.js +0 -86
  299. package/dist/esm/src/variables/macros/types.js +0 -11
  300. package/dist/esm/src/variables/macros/urlMacros.js +0 -56
  301. package/dist/esm/src/variables/sets/SceneVariableSet.js +0 -254
  302. package/dist/esm/src/variables/types.js +0 -11
  303. package/dist/esm/src/variables/utils.js +0 -172
  304. package/dist/esm/src/variables/variants/ConstantVariable.js +0 -38
  305. package/dist/esm/src/variables/variants/CustomVariable.js +0 -60
  306. package/dist/esm/src/variables/variants/DataSourceVariable.js +0 -88
  307. package/dist/esm/src/variables/variants/IntervalVariable.js +0 -117
  308. package/dist/esm/src/variables/variants/JsonVariable.js +0 -193
  309. package/dist/esm/src/variables/variants/LocalValueVariable.js +0 -56
  310. package/dist/esm/src/variables/variants/MultiValueVariable.js +0 -295
  311. package/dist/esm/src/variables/variants/TestVariable.js +0 -117
  312. package/dist/esm/src/variables/variants/TextBoxVariable.js +0 -61
  313. package/dist/esm/src/variables/variants/guards.js +0 -27
  314. package/dist/esm/src/variables/variants/query/QueryVariable.js +0 -139
  315. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +0 -129
  316. package/dist/esm/src/variables/variants/query/guards.js +0 -28
  317. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +0 -96
  318. package/dist/esm/src/variables/variants/query/utils.js +0 -124
  319. package/dist/esm/variables/variants/JsonVariable.js +0 -96
  320. package/dist/esm/variables/variants/json/JsonVariable.js +0 -95
  321. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +0 -70
@@ -1,296 +0,0 @@
1
- import { map, isArray, replace } from 'lodash';
2
- import { Registry, escapeRegex, textUtil, dateTime, urlUtil } from '@grafana/data';
3
- import { VariableFormatID } from '@grafana/schema';
4
-
5
- const formatRegistry = new Registry(() => {
6
- const formats = [
7
- {
8
- id: VariableFormatID.Lucene,
9
- name: "Lucene",
10
- description: "Values are lucene escaped and multi-valued variables generate an OR expression",
11
- formatter: (value) => {
12
- if (typeof value === "string") {
13
- return luceneEscape(value);
14
- }
15
- if (Array.isArray(value)) {
16
- if (value.length === 0) {
17
- return "__empty__";
18
- }
19
- const quotedValues = map(value, (val) => {
20
- return '"' + luceneEscape(val) + '"';
21
- });
22
- return "(" + quotedValues.join(" OR ") + ")";
23
- } else {
24
- return luceneEscape(`${value}`);
25
- }
26
- }
27
- },
28
- {
29
- id: VariableFormatID.Raw,
30
- name: "raw",
31
- description: "Keep value as is",
32
- formatter: (value) => String(value)
33
- },
34
- {
35
- id: VariableFormatID.Regex,
36
- name: "Regex",
37
- description: "Values are regex escaped and multi-valued variables generate a (<value>|<value>) expression",
38
- formatter: (value) => {
39
- if (typeof value === "string") {
40
- return escapeRegex(value);
41
- }
42
- if (Array.isArray(value)) {
43
- const escapedValues = value.map((item) => {
44
- if (typeof item === "string") {
45
- return escapeRegex(item);
46
- } else {
47
- return escapeRegex(String(item));
48
- }
49
- });
50
- if (escapedValues.length === 1) {
51
- return escapedValues[0];
52
- }
53
- return "(" + escapedValues.join("|") + ")";
54
- }
55
- return escapeRegex(`${value}`);
56
- }
57
- },
58
- {
59
- id: VariableFormatID.Pipe,
60
- name: "Pipe",
61
- description: "Values are separated by | character",
62
- formatter: (value) => {
63
- if (typeof value === "string") {
64
- return value;
65
- }
66
- if (Array.isArray(value)) {
67
- return value.join("|");
68
- }
69
- return `${value}`;
70
- }
71
- },
72
- {
73
- id: VariableFormatID.Distributed,
74
- name: "Distributed",
75
- description: "Multiple values are formatted like variable=value",
76
- formatter: (value, args, variable) => {
77
- if (typeof value === "string") {
78
- return value;
79
- }
80
- if (Array.isArray(value)) {
81
- value = map(value, (val, index) => {
82
- if (index !== 0) {
83
- return variable.state.name + "=" + val;
84
- } else {
85
- return val;
86
- }
87
- });
88
- return value.join(",");
89
- }
90
- return `${value}`;
91
- }
92
- },
93
- {
94
- id: VariableFormatID.CSV,
95
- name: "Csv",
96
- description: "Comma-separated values",
97
- formatter: (value) => {
98
- if (typeof value === "string") {
99
- return value;
100
- }
101
- if (isArray(value)) {
102
- return value.join(",");
103
- }
104
- return String(value);
105
- }
106
- },
107
- {
108
- id: VariableFormatID.HTML,
109
- name: "HTML",
110
- description: "HTML escaping of values",
111
- formatter: (value) => {
112
- if (typeof value === "string") {
113
- return textUtil.escapeHtml(value);
114
- }
115
- if (isArray(value)) {
116
- return textUtil.escapeHtml(value.join(", "));
117
- }
118
- return textUtil.escapeHtml(String(value));
119
- }
120
- },
121
- {
122
- id: VariableFormatID.JSON,
123
- name: "JSON",
124
- description: "JSON stringify value",
125
- formatter: (value) => {
126
- if (typeof value === "string") {
127
- return value;
128
- }
129
- return JSON.stringify(value);
130
- }
131
- },
132
- {
133
- id: VariableFormatID.PercentEncode,
134
- name: "Percent encode",
135
- description: "Useful for URL escaping values",
136
- formatter: (value) => {
137
- if (isArray(value)) {
138
- return encodeURIComponentStrict("{" + value.join(",") + "}");
139
- }
140
- return encodeURIComponentStrict(value);
141
- }
142
- },
143
- {
144
- id: VariableFormatID.SingleQuote,
145
- name: "Single quote",
146
- description: "Single quoted values",
147
- formatter: (value) => {
148
- const regExp = new RegExp(`'`, "g");
149
- if (isArray(value)) {
150
- return map(value, (v) => `'${replace(v, regExp, `\\'`)}'`).join(",");
151
- }
152
- let strVal = typeof value === "string" ? value : String(value);
153
- return `'${replace(strVal, regExp, `\\'`)}'`;
154
- }
155
- },
156
- {
157
- id: VariableFormatID.DoubleQuote,
158
- name: "Double quote",
159
- description: "Double quoted values",
160
- formatter: (value) => {
161
- const regExp = new RegExp('"', "g");
162
- if (isArray(value)) {
163
- return map(value, (v) => `"${replace(v, regExp, '\\"')}"`).join(",");
164
- }
165
- let strVal = typeof value === "string" ? value : String(value);
166
- return `"${replace(strVal, regExp, '\\"')}"`;
167
- }
168
- },
169
- {
170
- id: VariableFormatID.SQLString,
171
- name: "SQL string",
172
- description: "SQL string quoting and commas for use in IN statements and other scenarios",
173
- formatter: sqlStringFormatter
174
- },
175
- {
176
- id: VariableFormatID.Date,
177
- name: "Date",
178
- description: "Format date in different ways",
179
- formatter: (value, args) => {
180
- var _a;
181
- let nrValue = NaN;
182
- if (typeof value === "number") {
183
- nrValue = value;
184
- } else if (typeof value === "string") {
185
- nrValue = parseInt(value, 10);
186
- }
187
- if (isNaN(nrValue)) {
188
- return "NaN";
189
- }
190
- const arg = (_a = args[0]) != null ? _a : "iso";
191
- switch (arg) {
192
- case "ms":
193
- return String(value);
194
- case "seconds":
195
- return `${Math.round(nrValue / 1e3)}`;
196
- case "iso":
197
- return dateTime(nrValue).toISOString();
198
- default:
199
- if ((args || []).length > 1) {
200
- return dateTime(nrValue).format(args.join(":"));
201
- }
202
- return dateTime(nrValue).format(arg);
203
- }
204
- }
205
- },
206
- {
207
- id: VariableFormatID.Glob,
208
- name: "Glob",
209
- description: "Format multi-valued variables using glob syntax, example {value1,value2}",
210
- formatter: (value) => {
211
- if (isArray(value) && value.length > 1) {
212
- return "{" + value.join(",") + "}";
213
- }
214
- return String(value);
215
- }
216
- },
217
- {
218
- id: VariableFormatID.Text,
219
- name: "Text",
220
- description: "Format variables in their text representation. Example in multi-variable scenario A + B + C.",
221
- formatter: (value, _args, variable) => {
222
- if (variable.getValueText) {
223
- return variable.getValueText();
224
- }
225
- return String(value);
226
- }
227
- },
228
- {
229
- id: VariableFormatID.QueryParam,
230
- name: "Query parameter",
231
- description: "Format variables as URL parameters. Example in multi-variable scenario A + B + C => var-foo=A&var-foo=B&var-foo=C.",
232
- formatter: (value, _args, variable) => {
233
- if (variable.urlSync) {
234
- const urlParam = variable.urlSync.getUrlState();
235
- return urlUtil.toUrlParams(urlParam);
236
- }
237
- if (Array.isArray(value)) {
238
- return value.map((v) => formatQueryParameter(variable.state.name, v)).join("&");
239
- }
240
- return formatQueryParameter(variable.state.name, value);
241
- }
242
- },
243
- {
244
- id: VariableFormatID.UriEncode,
245
- name: "Percent encode as URI",
246
- description: "Useful for URL escaping values, taking into URI syntax characters",
247
- formatter: (value) => {
248
- if (isArray(value)) {
249
- return encodeURIStrict("{" + value.join(",") + "}");
250
- }
251
- return encodeURIStrict(value);
252
- }
253
- }
254
- ];
255
- return formats;
256
- });
257
- function luceneEscape(value) {
258
- if (isNaN(+value) === false) {
259
- return value;
260
- }
261
- return value.replace(/([\!\*\+\-\=<>\s\&\|\(\)\[\]\{\}\^\~\?\:\\/"])/g, "\\$1");
262
- }
263
- function encodeURIComponentStrict(str) {
264
- if (typeof str === "object") {
265
- str = String(str);
266
- }
267
- return replaceSpecialCharactersToASCII(encodeURIComponent(str));
268
- }
269
- const encodeURIStrict = (str) => replaceSpecialCharactersToASCII(encodeURI(String(str)));
270
- const replaceSpecialCharactersToASCII = (value) => value.replace(/[!'()*]/g, (c) => {
271
- return "%" + c.charCodeAt(0).toString(16).toUpperCase();
272
- });
273
- function formatQueryParameter(name, value) {
274
- return `var-${name}=${encodeURIComponentStrict(value)}`;
275
- }
276
- const SQL_ESCAPE_MAP = {
277
- "'": "''",
278
- '"': '\\"'
279
- };
280
- function sqlStringFormatter(value) {
281
- const regExp = new RegExp(`'|"`, "g");
282
- if (isArray(value)) {
283
- return map(value, (v) => `'${replace(v, regExp, (match) => {
284
- var _a;
285
- return (_a = SQL_ESCAPE_MAP[match]) != null ? _a : "";
286
- })}'`).join(",");
287
- }
288
- let strVal = typeof value === "string" ? value : String(value);
289
- return `'${replace(strVal, regExp, (match) => {
290
- var _a;
291
- return (_a = SQL_ESCAPE_MAP[match]) != null ? _a : "";
292
- })}'`;
293
- }
294
-
295
- export { formatRegistry };
296
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0UmVnaXN0cnkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy9pbnRlcnBvbGF0aW9uL2Zvcm1hdFJlZ2lzdHJ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcCwgaXNBcnJheSwgcmVwbGFjZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSZWdpc3RyeSwgZXNjYXBlUmVnZXgsIHRleHRVdGlsLCBkYXRlVGltZSwgdXJsVXRpbCB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgVmFyaWFibGVGb3JtYXRJRCB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5cbmNvbnN0IGZvcm1hdFJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCgpID0+IHtcbiAgY29uc3QgZm9ybWF0cyA9IFtcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5MdWNlbmUsXG4gICAgICBuYW1lOiBcIkx1Y2VuZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVmFsdWVzIGFyZSBsdWNlbmUgZXNjYXBlZCBhbmQgbXVsdGktdmFsdWVkIHZhcmlhYmxlcyBnZW5lcmF0ZSBhbiBPUiBleHByZXNzaW9uXCIsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIGx1Y2VuZUVzY2FwZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiX19lbXB0eV9fXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHF1b3RlZFZhbHVlcyA9IG1hcCh2YWx1ZSwgKHZhbCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICdcIicgKyBsdWNlbmVFc2NhcGUodmFsKSArICdcIic7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIFwiKFwiICsgcXVvdGVkVmFsdWVzLmpvaW4oXCIgT1IgXCIpICsgXCIpXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGx1Y2VuZUVzY2FwZShgJHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuUmF3LFxuICAgICAgbmFtZTogXCJyYXdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIktlZXAgdmFsdWUgYXMgaXNcIixcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiBTdHJpbmcodmFsdWUpXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5SZWdleCxcbiAgICAgIG5hbWU6IFwiUmVnZXhcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlZhbHVlcyBhcmUgcmVnZXggZXNjYXBlZCBhbmQgbXVsdGktdmFsdWVkIHZhcmlhYmxlcyBnZW5lcmF0ZSBhICg8dmFsdWU+fDx2YWx1ZT4pIGV4cHJlc3Npb25cIixcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gZXNjYXBlUmVnZXgodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZXMgPSB2YWx1ZS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlUmVnZXgoaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlUmVnZXgoU3RyaW5nKGl0ZW0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoZXNjYXBlZFZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBlc2NhcGVkVmFsdWVzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gXCIoXCIgKyBlc2NhcGVkVmFsdWVzLmpvaW4oXCJ8XCIpICsgXCIpXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVzY2FwZVJlZ2V4KGAke3ZhbHVlfWApO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuUGlwZSxcbiAgICAgIG5hbWU6IFwiUGlwZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVmFsdWVzIGFyZSBzZXBhcmF0ZWQgYnkgfCBjaGFyYWN0ZXJcIixcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4oXCJ8XCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuRGlzdHJpYnV0ZWQsXG4gICAgICBuYW1lOiBcIkRpc3RyaWJ1dGVkXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJNdWx0aXBsZSB2YWx1ZXMgYXJlIGZvcm1hdHRlZCBsaWtlIHZhcmlhYmxlPXZhbHVlXCIsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSwgYXJncywgdmFyaWFibGUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICB2YWx1ZSA9IG1hcCh2YWx1ZSwgKHZhbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGUuc3RhdGUubmFtZSArIFwiPVwiICsgdmFsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdmFsdWUuam9pbihcIixcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5DU1YsXG4gICAgICBuYW1lOiBcIkNzdlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ29tbWEtc2VwYXJhdGVkIHZhbHVlc1wiLFxuICAgICAgZm9ybWF0dGVyOiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUuam9pbihcIixcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5IVE1MLFxuICAgICAgbmFtZTogXCJIVE1MXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJIVE1MIGVzY2FwaW5nIG9mIHZhbHVlc1wiLFxuICAgICAgZm9ybWF0dGVyOiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiB0ZXh0VXRpbC5lc2NhcGVIdG1sKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGV4dFV0aWwuZXNjYXBlSHRtbCh2YWx1ZS5qb2luKFwiLCBcIikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0VXRpbC5lc2NhcGVIdG1sKFN0cmluZyh2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuSlNPTixcbiAgICAgIG5hbWU6IFwiSlNPTlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSlNPTiBzdHJpbmdpZnkgdmFsdWVcIixcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELlBlcmNlbnRFbmNvZGUsXG4gICAgICBuYW1lOiBcIlBlcmNlbnQgZW5jb2RlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJVc2VmdWwgZm9yIFVSTCBlc2NhcGluZyB2YWx1ZXNcIixcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnRTdHJpY3QoXCJ7XCIgKyB2YWx1ZS5qb2luKFwiLFwiKSArIFwifVwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50U3RyaWN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELlNpbmdsZVF1b3RlLFxuICAgICAgbmFtZTogXCJTaW5nbGUgcXVvdGVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNpbmdsZSBxdW90ZWQgdmFsdWVzXCIsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKGAnYCwgXCJnXCIpO1xuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gbWFwKHZhbHVlLCAodikgPT4gYCcke3JlcGxhY2UodiwgcmVnRXhwLCBgXFxcXCdgKX0nYCkuam9pbihcIixcIik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0clZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGAnJHtyZXBsYWNlKHN0clZhbCwgcmVnRXhwLCBgXFxcXCdgKX0nYDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELkRvdWJsZVF1b3RlLFxuICAgICAgbmFtZTogXCJEb3VibGUgcXVvdGVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkRvdWJsZSBxdW90ZWQgdmFsdWVzXCIsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKCdcIicsIFwiZ1wiKTtcbiAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIG1hcCh2YWx1ZSwgKHYpID0+IGBcIiR7cmVwbGFjZSh2LCByZWdFeHAsICdcXFxcXCInKX1cImApLmpvaW4oXCIsXCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdHJWYWwgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBgXCIke3JlcGxhY2Uoc3RyVmFsLCByZWdFeHAsICdcXFxcXCInKX1cImA7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5TUUxTdHJpbmcsXG4gICAgICBuYW1lOiBcIlNRTCBzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNRTCBzdHJpbmcgcXVvdGluZyBhbmQgY29tbWFzIGZvciB1c2UgaW4gSU4gc3RhdGVtZW50cyBhbmQgb3RoZXIgc2NlbmFyaW9zXCIsXG4gICAgICBmb3JtYXR0ZXI6IHNxbFN0cmluZ0Zvcm1hdHRlclxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuRGF0ZSxcbiAgICAgIG5hbWU6IFwiRGF0ZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiRm9ybWF0IGRhdGUgaW4gZGlmZmVyZW50IHdheXNcIixcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlLCBhcmdzKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IG5yVmFsdWUgPSBOYU47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBuclZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgbnJWYWx1ZSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTmFOKG5yVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIFwiTmFOXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXJnID0gKF9hID0gYXJnc1swXSkgIT0gbnVsbCA/IF9hIDogXCJpc29cIjtcbiAgICAgICAgc3dpdGNoIChhcmcpIHtcbiAgICAgICAgICBjYXNlIFwibXNcIjpcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgIGNhc2UgXCJzZWNvbmRzXCI6XG4gICAgICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChuclZhbHVlIC8gMWUzKX1gO1xuICAgICAgICAgIGNhc2UgXCJpc29cIjpcbiAgICAgICAgICAgIHJldHVybiBkYXRlVGltZShuclZhbHVlKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAoKGFyZ3MgfHwgW10pLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGVUaW1lKG5yVmFsdWUpLmZvcm1hdChhcmdzLmpvaW4oXCI6XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRlVGltZShuclZhbHVlKS5mb3JtYXQoYXJnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuR2xvYixcbiAgICAgIG5hbWU6IFwiR2xvYlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiRm9ybWF0IG11bHRpLXZhbHVlZCB2YXJpYWJsZXMgdXNpbmcgZ2xvYiBzeW50YXgsIGV4YW1wbGUge3ZhbHVlMSx2YWx1ZTJ9XCIsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHJldHVybiBcIntcIiArIHZhbHVlLmpvaW4oXCIsXCIpICsgXCJ9XCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5UZXh0LFxuICAgICAgbmFtZTogXCJUZXh0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJGb3JtYXQgdmFyaWFibGVzIGluIHRoZWlyIHRleHQgcmVwcmVzZW50YXRpb24uIEV4YW1wbGUgaW4gbXVsdGktdmFyaWFibGUgc2NlbmFyaW8gQSArIEIgKyBDLlwiLFxuICAgICAgZm9ybWF0dGVyOiAodmFsdWUsIF9hcmdzLCB2YXJpYWJsZSkgPT4ge1xuICAgICAgICBpZiAodmFyaWFibGUuZ2V0VmFsdWVUZXh0KSB7XG4gICAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmdldFZhbHVlVGV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuUXVlcnlQYXJhbSxcbiAgICAgIG5hbWU6IFwiUXVlcnkgcGFyYW1ldGVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJGb3JtYXQgdmFyaWFibGVzIGFzIFVSTCBwYXJhbWV0ZXJzLiBFeGFtcGxlIGluIG11bHRpLXZhcmlhYmxlIHNjZW5hcmlvIEEgKyBCICsgQyA9PiB2YXItZm9vPUEmdmFyLWZvbz1CJnZhci1mb289Qy5cIixcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlLCBfYXJncywgdmFyaWFibGUpID0+IHtcbiAgICAgICAgaWYgKHZhcmlhYmxlLnVybFN5bmMpIHtcbiAgICAgICAgICBjb25zdCB1cmxQYXJhbSA9IHZhcmlhYmxlLnVybFN5bmMuZ2V0VXJsU3RhdGUoKTtcbiAgICAgICAgICByZXR1cm4gdXJsVXRpbC50b1VybFBhcmFtcyh1cmxQYXJhbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgodikgPT4gZm9ybWF0UXVlcnlQYXJhbWV0ZXIodmFyaWFibGUuc3RhdGUubmFtZSwgdikpLmpvaW4oXCImXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXRRdWVyeVBhcmFtZXRlcih2YXJpYWJsZS5zdGF0ZS5uYW1lLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5VcmlFbmNvZGUsXG4gICAgICBuYW1lOiBcIlBlcmNlbnQgZW5jb2RlIGFzIFVSSVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVXNlZnVsIGZvciBVUkwgZXNjYXBpbmcgdmFsdWVzLCB0YWtpbmcgaW50byBVUkkgc3ludGF4IGNoYXJhY3RlcnNcIixcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBlbmNvZGVVUklTdHJpY3QoXCJ7XCIgKyB2YWx1ZS5qb2luKFwiLFwiKSArIFwifVwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5jb2RlVVJJU3RyaWN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG4gIHJldHVybiBmb3JtYXRzO1xufSk7XG5mdW5jdGlvbiBsdWNlbmVFc2NhcGUodmFsdWUpIHtcbiAgaWYgKGlzTmFOKCt2YWx1ZSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oW1xcIVxcKlxcK1xcLVxcPTw+XFxzXFwmXFx8XFwoXFwpXFxbXFxdXFx7XFx9XFxeXFx+XFw/XFw6XFxcXC9cIl0pL2csIFwiXFxcXCQxXCIpO1xufVxuZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50U3RyaWN0KHN0cikge1xuICBpZiAodHlwZW9mIHN0ciA9PT0gXCJvYmplY3RcIikge1xuICAgIHN0ciA9IFN0cmluZyhzdHIpO1xuICB9XG4gIHJldHVybiByZXBsYWNlU3BlY2lhbENoYXJhY3RlcnNUb0FTQ0lJKGVuY29kZVVSSUNvbXBvbmVudChzdHIpKTtcbn1cbmNvbnN0IGVuY29kZVVSSVN0cmljdCA9IChzdHIpID0+IHJlcGxhY2VTcGVjaWFsQ2hhcmFjdGVyc1RvQVNDSUkoZW5jb2RlVVJJKFN0cmluZyhzdHIpKSk7XG5jb25zdCByZXBsYWNlU3BlY2lhbENoYXJhY3RlcnNUb0FTQ0lJID0gKHZhbHVlKSA9PiB2YWx1ZS5yZXBsYWNlKC9bIScoKSpdL2csIChjKSA9PiB7XG4gIHJldHVybiBcIiVcIiArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbn0pO1xuZnVuY3Rpb24gZm9ybWF0UXVlcnlQYXJhbWV0ZXIobmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGB2YXItJHtuYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudFN0cmljdCh2YWx1ZSl9YDtcbn1cbmNvbnN0IFNRTF9FU0NBUEVfTUFQID0ge1xuICBcIidcIjogXCInJ1wiLFxuICAnXCInOiAnXFxcXFwiJ1xufTtcbmZ1bmN0aW9uIHNxbFN0cmluZ0Zvcm1hdHRlcih2YWx1ZSkge1xuICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKGAnfFwiYCwgXCJnXCIpO1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gbWFwKHZhbHVlLCAodikgPT4gYCcke3JlcGxhY2UodiwgcmVnRXhwLCAobWF0Y2gpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIHJldHVybiAoX2EgPSBTUUxfRVNDQVBFX01BUFttYXRjaF0pICE9IG51bGwgPyBfYSA6IFwiXCI7XG4gICAgfSl9J2ApLmpvaW4oXCIsXCIpO1xuICB9XG4gIGxldCBzdHJWYWwgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IFN0cmluZyh2YWx1ZSk7XG4gIHJldHVybiBgJyR7cmVwbGFjZShzdHJWYWwsIHJlZ0V4cCwgKG1hdGNoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBTUUxfRVNDQVBFX01BUFttYXRjaF0pICE9IG51bGwgPyBfYSA6IFwiXCI7XG4gIH0pfSdgO1xufVxuXG5leHBvcnQgeyBmb3JtYXRSZWdpc3RyeSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2labTl5YldGMFVtVm5hWE4wY25rdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwzTnlZeTkyWVhKcFlXSnNaWE12YVc1MFpYSndiMnhoZEdsdmJpOW1iM0p0WVhSU1pXZHBjM1J5ZVM1MGN5SmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJwYzBGeWNtRjVMQ0J0WVhBc0lISmxjR3hoWTJVZ2ZTQm1jbTl0SUNkc2IyUmhjMmduTzF4dVhHNXBiWEJ2Y25RZ2V5QmtZWFJsVkdsdFpTd2dVbVZuYVhOMGNua3NJRkpsWjJsemRISjVTWFJsYlN3Z2RHVjRkRlYwYVd3c0lHVnpZMkZ3WlZKbFoyVjRMQ0IxY214VmRHbHNJSDBnWm5KdmJTQW5RR2R5WVdaaGJtRXZaR0YwWVNjN1hHNXBiWEJ2Y25RZ2V5QldZWEpwWVdKc1pWUjVjR1VzSUZaaGNtbGhZbXhsUm05eWJXRjBTVVFnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzl6WTJobGJXRW5PMXh1WEc1cGJYQnZjblFnZXlCV1lYSnBZV0pzWlZaaGJIVmxMQ0JXWVhKcFlXSnNaVlpoYkhWbFUybHVaMnhsSUgwZ1puSnZiU0FuTGk0dmRIbHdaWE1uTzF4dWFXMXdiM0owSUhzZ1FVeE1YMVpCVWtsQlFreEZYMVpCVEZWRklIMGdabkp2YlNBbkxpNHZZMjl1YzNSaGJuUnpKenRjYm1sdGNHOXlkQ0I3SUZOalpXNWxUMkpxWldOMFZYSnNVM2x1WTBoaGJtUnNaWElnZlNCbWNtOXRJQ2N1TGk4dUxpOWpiM0psTDNSNWNHVnpKenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCR2IzSnRZWFJTWldkcGMzUnllVWwwWlcwZ1pYaDBaVzVrY3lCU1pXZHBjM1J5ZVVsMFpXMGdlMXh1SUNCbWIzSnRZWFIwWlhJb2RtRnNkV1U2SUZaaGNtbGhZbXhsVm1Gc2RXVXNJR0Z5WjNNNklITjBjbWx1WjF0ZExDQjJZWEpwWVdKc1pUb2dSbTl5YldGMFZtRnlhV0ZpYkdVcE9pQnpkSEpwYm1jN1hHNTlYRzVjYmk4cUtseHVJQ29nVTJ4cGJXMWxaQ0JrYjNkdUlIWmxjbk5wYjI0Z2IyWWdkR2hsSUZOalpXNWxWbUZ5YVdGaWJHVWdhVzUwWlhKbVlXTmxJSE52SUhSb1lYUWdhWFFnYjI1c2VTQmpiMjUwWVdsdWN5QjNhR0YwSUhSb1pTQm1iM0p0WVhSMFpYSnpJR0ZqZEhWaGJHeDVJSFZ6WlM1Y2JpQXFJRlJvYVhNZ2FYTWdkWE5sWm5Wc0lHRnpJSGRsSUdoaGRtVWdjMjl0WlNCcGJYQnNaVzFsYm5SaGRHbHZibk1nYjJZZ2RHaHBjeUJwYm5SbGNtWmhZMlVnZEdoaGRDQmtiMlZ6SUc1dmRDQnVaV1ZrSUhSdklHSmxJR1oxYkd3Z2MyTmxibVVnYjJKcVpXTjBjeTVjYmlBcUlFWnZjaUJsZUdGdGNHeGxJRk5qYjNCbFpGWmhjbk5XWVhKcFlXSnNaU0JoYm1RZ1RHVm5ZV041Vm1GeWFXRmliR1ZYY21Gd2NHVnlMbHh1SUNvdlhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFWnZjbTFoZEZaaGNtbGhZbXhsSUh0Y2JpQWdjM1JoZEdVNklIdGNiaUFnSUNCdVlXMWxPaUJ6ZEhKcGJtYzdYRzRnSUNBZ2RIbHdaVG9nVm1GeWFXRmliR1ZVZVhCbElId2djM1J5YVc1bk8xeHVJQ0FnSUdselRYVnNkR2svT2lCaWIyOXNaV0Z1TzF4dUlDQWdJR2x1WTJ4MVpHVkJiR3cvT2lCaWIyOXNaV0Z1TzF4dUlDQjlPMXh1WEc0Z0lHZGxkRlpoYkhWbEtHWnBaV3hrVUdGMGFEODZJSE4wY21sdVp5azZJRlpoY21saFlteGxWbUZzZFdVZ2ZDQjFibVJsWm1sdVpXUWdmQ0J1ZFd4c08xeHVJQ0JuWlhSV1lXeDFaVlJsZUhRL0tHWnBaV3hrVUdGMGFEODZJSE4wY21sdVp5azZJSE4wY21sdVp6dGNiaUFnZFhKc1UzbHVZejg2SUZOalpXNWxUMkpxWldOMFZYSnNVM2x1WTBoaGJtUnNaWEk3WEc1OVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCbWIzSnRZWFJTWldkcGMzUnllU0E5SUc1bGR5QlNaV2RwYzNSeWVUeEdiM0p0WVhSU1pXZHBjM1J5ZVVsMFpXMCtLQ2dwSUQwK0lIdGNiaUFnWTI5dWMzUWdabTl5YldGMGN6b2dSbTl5YldGMFVtVm5hWE4wY25sSmRHVnRXMTBnUFNCYlhHNGdJQ0FnZTF4dUlDQWdJQ0FnYVdRNklGWmhjbWxoWW14bFJtOXliV0YwU1VRdVRIVmpaVzVsTEZ4dUlDQWdJQ0FnYm1GdFpUb2dKMHgxWTJWdVpTY3NYRzRnSUNBZ0lDQmtaWE5qY21sd2RHbHZiam9nSjFaaGJIVmxjeUJoY21VZ2JIVmpaVzVsSUdWelkyRndaV1FnWVc1a0lHMTFiSFJwTFhaaGJIVmxaQ0IyWVhKcFlXSnNaWE1nWjJWdVpYSmhkR1VnWVc0Z1QxSWdaWGh3Y21WemMybHZiaWNzWEc0Z0lDQWdJQ0JtYjNKdFlYUjBaWEk2SUNoMllXeDFaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSFpoYkhWbElEMDlQU0FuYzNSeWFXNW5KeWtnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCc2RXTmxibVZGYzJOaGNHVW9kbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvZG1Gc2RXVXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLSFpoYkhWbExteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDZGZYMlZ0Y0hSNVgxOG5PMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCeGRXOTBaV1JXWVd4MVpYTWdQU0J0WVhBb2RtRnNkV1VzSUNoMllXdzZJSE4wY21sdVp5a2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDZGNJaWNnS3lCc2RXTmxibVZGYzJOaGNHVW9kbUZzS1NBcklDZGNJaWM3WEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2NvSnlBcklIRjFiM1JsWkZaaGJIVmxjeTVxYjJsdUtDY2dUMUlnSnlrZ0t5QW5LU2M3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUd4MVkyVnVaVVZ6WTJGd1pTaGdKSHQyWVd4MVpYMWdLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0I5TEZ4dUlDQWdJSHRjYmlBZ0lDQWdJR2xrT2lCV1lYSnBZV0pzWlVadmNtMWhkRWxFTGxKaGR5eGNiaUFnSUNBZ0lHNWhiV1U2SUNkeVlYY25MRnh1SUNBZ0lDQWdaR1Z6WTNKcGNIUnBiMjQ2SUNkTFpXVndJSFpoYkhWbElHRnpJR2x6Snl4Y2JpQWdJQ0FnSUdadmNtMWhkSFJsY2pvZ0tIWmhiSFZsS1NBOVBpQlRkSEpwYm1jb2RtRnNkV1VwTEZ4dUlDQWdJSDBzWEc0Z0lDQWdlMXh1SUNBZ0lDQWdhV1E2SUZaaGNtbGhZbXhsUm05eWJXRjBTVVF1VW1WblpYZ3NYRzRnSUNBZ0lDQnVZVzFsT2lBblVtVm5aWGduTEZ4dUlDQWdJQ0FnWkdWelkzSnBjSFJwYjI0NklDZFdZV3gxWlhNZ1lYSmxJSEpsWjJWNElHVnpZMkZ3WldRZ1lXNWtJRzExYkhScExYWmhiSFZsWkNCMllYSnBZV0pzWlhNZ1oyVnVaWEpoZEdVZ1lTQW9QSFpoYkhWbFBudzhkbUZzZFdVK0tTQmxlSEJ5WlhOemFXOXVKeXhjYmlBZ0lDQWdJR1p2Y20xaGRIUmxjam9nS0haaGJIVmxLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdkbUZzZFdVZ1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdWelkyRndaVkpsWjJWNEtIWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1Z6WTJGd1pXUldZV3gxWlhNZ1BTQjJZV3gxWlM1dFlYQW9LR2wwWlcwcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdhWFJsYlNBOVBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHVnpZMkZ3WlZKbFoyVjRLR2wwWlcwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHVnpZMkZ3WlZKbFoyVjRLRk4wY21sdVp5aHBkR1Z0S1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJQ0FnSUNCcFppQW9aWE5qWVhCbFpGWmhiSFZsY3k1c1pXNW5kR2dnUFQwOUlERXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbGMyTmhjR1ZrVm1Gc2RXVnpXekJkTzF4dUlDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFuS0NjZ0t5QmxjMk5oY0dWa1ZtRnNkV1Z6TG1wdmFXNG9KM3duS1NBcklDY3BKenRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbGMyTmhjR1ZTWldkbGVDaGdKSHQyWVd4MVpYMWdLVHRjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdmU3hjYmlBZ0lDQjdYRzRnSUNBZ0lDQnBaRG9nVm1GeWFXRmliR1ZHYjNKdFlYUkpSQzVRYVhCbExGeHVJQ0FnSUNBZ2JtRnRaVG9nSjFCcGNHVW5MRnh1SUNBZ0lDQWdaR1Z6WTNKcGNIUnBiMjQ2SUNkV1lXeDFaWE1nWVhKbElITmxjR0Z5WVhSbFpDQmllU0I4SUdOb1lYSmhZM1JsY2ljc1hHNGdJQ0FnSUNCbWIzSnRZWFIwWlhJNklDaDJZV3gxWlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBbmMzUnlhVzVuSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIyWVd4MVpTNXFiMmx1S0NkOEp5azdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWUNSN2RtRnNkV1Y5WUR0Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnZlN4Y2JpQWdJQ0I3WEc0Z0lDQWdJQ0JwWkRvZ1ZtRnlhV0ZpYkdWR2IzSnRZWFJKUkM1RWFYTjBjbWxpZFhSbFpDeGNiaUFnSUNBZ0lHNWhiV1U2SUNkRWFYTjBjbWxpZFhSbFpDY3NYRzRnSUNBZ0lDQmtaWE5qY21sd2RHbHZiam9nSjAxMWJIUnBjR3hsSUhaaGJIVmxjeUJoY21VZ1ptOXliV0YwZEdWa0lHeHBhMlVnZG1GeWFXRmliR1U5ZG1Gc2RXVW5MRnh1SUNBZ0lDQWdabTl5YldGMGRHVnlPaUFvZG1Gc2RXVXNJR0Z5WjNNc0lIWmhjbWxoWW14bEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvZG1Gc2RXVXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCdFlYQW9kbUZzZFdVc0lDaDJZV3c2SUhOMGNtbHVaeXdnYVc1a1pYZzZJRzUxYldKbGNpa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dsdVpHVjRJQ0U5UFNBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMllYSnBZV0pzWlM1emRHRjBaUzV1WVcxbElDc2dKejBuSUNzZ2RtRnNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFpoYkR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIyWVd4MVpTNXFiMmx1S0Njc0p5azdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWUNSN2RtRnNkV1Y5WUR0Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnZlN4Y2JpQWdJQ0I3WEc0Z0lDQWdJQ0JwWkRvZ1ZtRnlhV0ZpYkdWR2IzSnRZWFJKUkM1RFUxWXNYRzRnSUNBZ0lDQnVZVzFsT2lBblEzTjJKeXhjYmlBZ0lDQWdJR1JsYzJOeWFYQjBhVzl1T2lBblEyOXRiV0V0YzJWd1lYSmhkR1ZrSUhaaGJIVmxjeWNzWEc0Z0lDQWdJQ0JtYjNKdFlYUjBaWEk2SUNoMllXeDFaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSFpoYkhWbElEMDlQU0FuYzNSeWFXNW5KeWtnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzBGeWNtRjVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIyWVd4MVpTNXFiMmx1S0Njc0p5azdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVTNSeWFXNW5LSFpoYkhWbEtUdGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ2ZTeGNiaUFnSUNCN1hHNGdJQ0FnSUNCcFpEb2dWbUZ5YVdGaWJHVkdiM0p0WVhSSlJDNUlWRTFNTEZ4dUlDQWdJQ0FnYm1GdFpUb2dKMGhVVFV3bkxGeHVJQ0FnSUNBZ1pHVnpZM0pwY0hScGIyNDZJQ2RJVkUxTUlHVnpZMkZ3YVc1bklHOW1JSFpoYkhWbGN5Y3NYRzRnSUNBZ0lDQm1iM0p0WVhSMFpYSTZJQ2gyWVd4MVpTa2dQVDRnZTF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIWmhiSFZsSUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwWlhoMFZYUnBiQzVsYzJOaGNHVklkRzFzS0haaGJIVmxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzBGeWNtRjVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwWlhoMFZYUnBiQzVsYzJOaGNHVklkRzFzS0haaGJIVmxMbXB2YVc0b0p5d2dKeWtwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUmxlSFJWZEdsc0xtVnpZMkZ3WlVoMGJXd29VM1J5YVc1bktIWmhiSFZsS1NrN1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUgwc1hHNGdJQ0FnZTF4dUlDQWdJQ0FnYVdRNklGWmhjbWxoWW14bFJtOXliV0YwU1VRdVNsTlBUaXhjYmlBZ0lDQWdJRzVoYldVNklDZEtVMDlPSnl4Y2JpQWdJQ0FnSUdSbGMyTnlhWEIwYVc5dU9pQW5TbE5QVGlCemRISnBibWRwWm5rZ2RtRnNkV1VuTEZ4dUlDQWdJQ0FnWm05eWJXRjBkR1Z5T2lBb2RtRnNkV1VwSUQwK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUIyWVd4MVpTQTlQVDBnSjNOMGNtbHVaeWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RtRnNkV1U3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUVwVFQwNHVjM1J5YVc1bmFXWjVLSFpoYkhWbEtUdGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ2ZTeGNiaUFnSUNCN1hHNGdJQ0FnSUNCcFpEb2dWbUZ5YVdGaWJHVkdiM0p0WVhSSlJDNVFaWEpqWlc1MFJXNWpiMlJsTEZ4dUlDQWdJQ0FnYm1GdFpUb2dKMUJsY21ObGJuUWdaVzVqYjJSbEp5eGNiaUFnSUNBZ0lHUmxjMk55YVhCMGFXOXVPaUFuVlhObFpuVnNJR1p2Y2lCVlVrd2daWE5qWVhCcGJtY2dkbUZzZFdWekp5eGNiaUFnSUNBZ0lHWnZjbTFoZEhSbGNqb2dLSFpoYkhWbEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUM4dklHeHBhMlVnWjJ4dllpd2dZblYwSUhWeWJDQmxjMk5oY0dWa1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzBGeWNtRjVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJsYm1OdlpHVlZVa2xEYjIxd2IyNWxiblJUZEhKcFkzUW9KM3NuSUNzZ2RtRnNkV1V1YW05cGJpZ25MQ2NwSUNzZ0ozMG5LVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbGJtTnZaR1ZWVWtsRGIyMXdiMjVsYm5SVGRISnBZM1FvZG1Gc2RXVXBPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQjlMRnh1SUNBZ0lIdGNiaUFnSUNBZ0lHbGtPaUJXWVhKcFlXSnNaVVp2Y20xaGRFbEVMbE5wYm1kc1pWRjFiM1JsTEZ4dUlDQWdJQ0FnYm1GdFpUb2dKMU5wYm1kc1pTQnhkVzkwWlNjc1hHNGdJQ0FnSUNCa1pYTmpjbWx3ZEdsdmJqb2dKMU5wYm1kc1pTQnhkVzkwWldRZ2RtRnNkV1Z6Snl4Y2JpQWdJQ0FnSUdadmNtMWhkSFJsY2pvZ0tIWmhiSFZsS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQzh2SUdWelkyRndaU0J6YVc1bmJHVWdjWFZ2ZEdWeklIZHBkR2dnWW1GamEzTnNZWE5vWEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEpsWjBWNGNDQTlJRzVsZHlCU1pXZEZlSEFvWUNkZ0xDQW5aeWNwTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzBGeWNtRjVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ0WVhBb2RtRnNkV1VzSUNoMk9pQnpkSEpwYm1jcElEMCtJR0FuSkh0eVpYQnNZV05sS0hZc0lISmxaMFY0Y0N3Z1lGeGNYRnduWUNsOUoyQXBMbXB2YVc0b0p5d25LVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHeGxkQ0J6ZEhKV1lXd2dQU0IwZVhCbGIyWWdkbUZzZFdVZ1BUMDlJQ2R6ZEhKcGJtY25JRDhnZG1Gc2RXVWdPaUJUZEhKcGJtY29kbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lDY2tlM0psY0d4aFkyVW9jM1J5Vm1Gc0xDQnlaV2RGZUhBc0lHQmNYRnhjSjJBcGZTZGdPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQjlMRnh1SUNBZ0lIdGNiaUFnSUNBZ0lHbGtPaUJXWVhKcFlXSnNaVVp2Y20xaGRFbEVMa1J2ZFdKc1pWRjFiM1JsTEZ4dUlDQWdJQ0FnYm1GdFpUb2dKMFJ2ZFdKc1pTQnhkVzkwWlNjc1hHNGdJQ0FnSUNCa1pYTmpjbWx3ZEdsdmJqb2dKMFJ2ZFdKc1pTQnhkVzkwWldRZ2RtRnNkV1Z6Snl4Y2JpQWdJQ0FnSUdadmNtMWhkSFJsY2pvZ0tIWmhiSFZsS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQzh2SUdWelkyRndaU0JrYjNWaWJHVWdjWFZ2ZEdWeklIZHBkR2dnWW1GamEzTnNZWE5vWEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEpsWjBWNGNDQTlJRzVsZHlCU1pXZEZlSEFvSjF3aUp5d2dKMmNuS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6UVhKeVlYa29kbUZzZFdVcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRzFoY0NoMllXeDFaU3dnS0hZNklITjBjbWx1WnlrZ1BUNGdZRndpSkh0eVpYQnNZV05sS0hZc0lISmxaMFY0Y0N3Z0oxeGNYRnhjSWljcGZWd2lZQ2t1YW05cGJpZ25MQ2NwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdiR1YwSUhOMGNsWmhiQ0E5SUhSNWNHVnZaaUIyWVd4MVpTQTlQVDBnSjNOMGNtbHVaeWNnUHlCMllXeDFaU0E2SUZOMGNtbHVaeWgyWVd4MVpTazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmdYQ0lrZTNKbGNHeGhZMlVvYzNSeVZtRnNMQ0J5WldkRmVIQXNJQ2RjWEZ4Y1hDSW5LWDFjSW1BN1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUgwc1hHNGdJQ0FnZTF4dUlDQWdJQ0FnYVdRNklGWmhjbWxoWW14bFJtOXliV0YwU1VRdVUxRk1VM1J5YVc1bkxGeHVJQ0FnSUNBZ2JtRnRaVG9nSjFOUlRDQnpkSEpwYm1jbkxGeHVJQ0FnSUNBZ1pHVnpZM0pwY0hScGIyNDZJQ2RUVVV3Z2MzUnlhVzVuSUhGMWIzUnBibWNnWVc1a0lHTnZiVzFoY3lCbWIzSWdkWE5sSUdsdUlFbE9JSE4wWVhSbGJXVnVkSE1nWVc1a0lHOTBhR1Z5SUhOalpXNWhjbWx2Y3ljc1hHNGdJQ0FnSUNCbWIzSnRZWFIwWlhJNklITnhiRk4wY21sdVowWnZjbTFoZEhSbGNpeGNiaUFnSUNCOUxGeHVJQ0FnSUh0Y2JpQWdJQ0FnSUdsa09pQldZWEpwWVdKc1pVWnZjbTFoZEVsRUxrUmhkR1VzWEc0Z0lDQWdJQ0J1WVcxbE9pQW5SR0YwWlNjc1hHNGdJQ0FnSUNCa1pYTmpjbWx3ZEdsdmJqb2dKMFp2Y20xaGRDQmtZWFJsSUdsdUlHUnBabVpsY21WdWRDQjNZWGx6Snl4Y2JpQWdJQ0FnSUdadmNtMWhkSFJsY2pvZ0tIWmhiSFZsTENCaGNtZHpLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0J1Y2xaaGJIVmxJRDBnVG1GT08xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUNkdWRXMWlaWEluS1NCN1hHNGdJQ0FnSUNBZ0lDQWdibkpXWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNCdWNsWmhiSFZsSUQwZ2NHRnljMlZKYm5Rb2RtRnNkV1VzSURFd0tUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUdsbUlDaHBjMDVoVGlodWNsWmhiSFZsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW5UbUZPSnp0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR052Ym5OMElHRnlaeUE5SUdGeVozTmJNRjBnUHo4Z0oybHpieWM3WEc0Z0lDQWdJQ0FnSUhOM2FYUmphQ0FvWVhKbktTQjdYRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQW5iWE1uT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlGTjBjbWx1WnloMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYzJWamIyNWtjeWM2WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lDUjdUV0YwYUM1eWIzVnVaQ2h1Y2xaaGJIVmxJU0F2SURFd01EQXBmV0E3WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYVhOdkp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJrWVhSbFZHbHRaU2h1Y2xaaGJIVmxLUzUwYjBsVFQxTjBjbWx1WnlncE8xeHVJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUTZYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9LR0Z5WjNNZ2ZId2dXMTBwTG14bGJtZDBhQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdSaGRHVlVhVzFsS0c1eVZtRnNkV1VwTG1admNtMWhkQ2hoY21kekxtcHZhVzRvSnpvbktTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR0YwWlZScGJXVW9ibkpXWVd4MVpTa3VabTl5YldGMEtHRnlaeWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwc1hHNGdJQ0FnZlN4Y2JpQWdJQ0I3WEc0Z0lDQWdJQ0JwWkRvZ1ZtRnlhV0ZpYkdWR2IzSnRZWFJKUkM1SGJHOWlMRnh1SUNBZ0lDQWdibUZ0WlRvZ0owZHNiMkluTEZ4dUlDQWdJQ0FnWkdWelkzSnBjSFJwYjI0NklDZEdiM0p0WVhRZ2JYVnNkR2t0ZG1Gc2RXVmtJSFpoY21saFlteGxjeUIxYzJsdVp5Qm5iRzlpSUhONWJuUmhlQ3dnWlhoaGJYQnNaU0I3ZG1Gc2RXVXhMSFpoYkhWbE1uMG5MRnh1SUNBZ0lDQWdabTl5YldGMGRHVnlPaUFvZG1Gc2RXVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6UVhKeVlYa29kbUZzZFdVcElDWW1JSFpoYkhWbExteGxibWQwYUNBK0lERXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSjNzbklDc2dkbUZzZFdVdWFtOXBiaWduTENjcElDc2dKMzBuTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCVGRISnBibWNvZG1Gc2RXVXBPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQjlMRnh1SUNBZ0lIdGNiaUFnSUNBZ0lHbGtPaUJXWVhKcFlXSnNaVVp2Y20xaGRFbEVMbFJsZUhRc1hHNGdJQ0FnSUNCdVlXMWxPaUFuVkdWNGRDY3NYRzRnSUNBZ0lDQmtaWE5qY21sd2RHbHZiam9nSjBadmNtMWhkQ0IyWVhKcFlXSnNaWE1nYVc0Z2RHaGxhWElnZEdWNGRDQnlaWEJ5WlhObGJuUmhkR2x2Ymk0Z1JYaGhiWEJzWlNCcGJpQnRkV3gwYVMxMllYSnBZV0pzWlNCelkyVnVZWEpwYnlCQklDc2dRaUFySUVNdUp5eGNiaUFnSUNBZ0lHWnZjbTFoZEhSbGNqb2dLSFpoYkhWbExDQmZZWEpuY3l3Z2RtRnlhV0ZpYkdVcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIWmhjbWxoWW14bExtZGxkRlpoYkhWbFZHVjRkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMllYSnBZV0pzWlM1blpYUldZV3gxWlZSbGVIUW9LVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCVGRISnBibWNvZG1Gc2RXVXBPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQjlMRnh1SUNBZ0lIdGNiaUFnSUNBZ0lHbGtPaUJXWVhKcFlXSnNaVVp2Y20xaGRFbEVMbEYxWlhKNVVHRnlZVzBzWEc0Z0lDQWdJQ0J1WVcxbE9pQW5VWFZsY25rZ2NHRnlZVzFsZEdWeUp5eGNiaUFnSUNBZ0lHUmxjMk55YVhCMGFXOXVPbHh1SUNBZ0lDQWdJQ0FuUm05eWJXRjBJSFpoY21saFlteGxjeUJoY3lCVlVrd2djR0Z5WVcxbGRHVnljeTRnUlhoaGJYQnNaU0JwYmlCdGRXeDBhUzEyWVhKcFlXSnNaU0J6WTJWdVlYSnBieUJCSUNzZ1FpQXJJRU1nUFQ0Z2RtRnlMV1p2YnoxQkpuWmhjaTFtYjI4OVFpWjJZWEl0Wm05dlBVTXVKeXhjYmlBZ0lDQWdJR1p2Y20xaGRIUmxjam9nS0haaGJIVmxMQ0JmWVhKbmN5d2dkbUZ5YVdGaWJHVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoY21saFlteGxMblZ5YkZONWJtTXBJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0IxY214UVlYSmhiU0E5SUhaaGNtbGhZbXhsTG5WeWJGTjVibU11WjJWMFZYSnNVM1JoZEdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkWEpzVlhScGJDNTBiMVZ5YkZCaGNtRnRjeWgxY214UVlYSmhiU2s3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaDJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkbUZzZFdVdWJXRndLQ2gyS1NBOVBpQm1iM0p0WVhSUmRXVnllVkJoY21GdFpYUmxjaWgyWVhKcFlXSnNaUzV6ZEdGMFpTNXVZVzFsTENCMktTa3VhbTlwYmlnbkppY3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdadmNtMWhkRkYxWlhKNVVHRnlZVzFsZEdWeUtIWmhjbWxoWW14bExuTjBZWFJsTG01aGJXVXNJSFpoYkhWbEtUdGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ2ZTeGNiaUFnSUNCN1hHNGdJQ0FnSUNCcFpEb2dWbUZ5YVdGaWJHVkdiM0p0WVhSSlJDNVZjbWxGYm1OdlpHVXNYRzRnSUNBZ0lDQnVZVzFsT2lBblVHVnlZMlZ1ZENCbGJtTnZaR1VnWVhNZ1ZWSkpKeXhjYmlBZ0lDQWdJR1JsYzJOeWFYQjBhVzl1T2lBblZYTmxablZzSUdadmNpQlZVa3dnWlhOallYQnBibWNnZG1Gc2RXVnpMQ0IwWVd0cGJtY2dhVzUwYnlCVlVra2djM2x1ZEdGNElHTm9ZWEpoWTNSbGNuTW5MRnh1SUNBZ0lDQWdabTl5YldGMGRHVnlPaUFvZG1Gc2RXVTZJRlpoY21saFlteGxWbUZzZFdVcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHpRWEp5WVhrb2RtRnNkV1VwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHVnVZMjlrWlZWU1NWTjBjbWxqZENnbmV5Y2dLeUIyWVd4MVpTNXFiMmx1S0Njc0p5a2dLeUFuZlNjcE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1Z1WTI5a1pWVlNTVk4wY21samRDaDJZV3gxWlNrN1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUgwc1hHNGdJRjA3WEc1Y2JpQWdjbVYwZFhKdUlHWnZjbTFoZEhNN1hHNTlLVHRjYmx4dVpuVnVZM1JwYjI0Z2JIVmpaVzVsUlhOallYQmxLSFpoYkhWbE9pQnpkSEpwYm1jcElIdGNiaUFnYVdZZ0tHbHpUbUZPS0N0MllXeDFaU2tnUFQwOUlHWmhiSE5sS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIWmhiSFZsTG5KbGNHeGhZMlVvTHloYlhGd2hYRndxWEZ3clhGd3RYRnc5UEQ1Y1hITmNYQ1pjWEh4Y1hDaGNYQ2xjWEZ0Y1hGMWNYSHRjWEgxY1hGNWNYSDVjWEQ5Y1hEcGNYRnhjTDF3aVhTa3ZaeXdnSjF4Y1hGd2tNU2NwTzF4dWZWeHVYRzR2S2lwY2JpQXFJR1Z1WTI5a1pTQnpkSEpwYm1jZ1lXTmpiM0prYVc1bklIUnZJRkpHUXlBek9UZzJPeUJwYmlCamIyNTBjbUZ6ZENCMGJ5QmxibU52WkdWVlVrbERiMjF3YjI1bGJuUW9LVnh1SUNvZ1lXeHpieUIwYUdVZ2MzVmlMV1JsYkdsdGN5QmNJaUZjSWl3Z1hDSW5YQ0lzSUZ3aUtGd2lMQ0JjSWlsY0lpQmhibVFnWENJcVhDSWdZWEpsSUdWdVkyOWtaV1E3WEc0Z0tpQjFibWxqYjJSbElHaGhibVJzYVc1bklIVnpaWE1nVlZSR0xUZ2dZWE1nYVc0Z1JVTk5RUzB5TmpJdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZEZOMGNtbGpkQ2h6ZEhJNklGWmhjbWxoWW14bFZtRnNkV1ZUYVc1bmJHVXBJSHRjYmlBZ2FXWWdLSFI1Y0dWdlppQnpkSElnUFQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ2MzUnlJRDBnVTNSeWFXNW5LSE4wY2lrN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2NtVndiR0ZqWlZOd1pXTnBZV3hEYUdGeVlXTjBaWEp6Vkc5QlUwTkpTU2hsYm1OdlpHVlZVa2xEYjIxd2IyNWxiblFvYzNSeUtTazdYRzU5WEc1Y2JtTnZibk4wSUdWdVkyOWtaVlZTU1ZOMGNtbGpkQ0E5SUNoemRISTZJRlpoY21saFlteGxWbUZzZFdWVGFXNW5iR1VwT2lCemRISnBibWNnUFQ0Z2NtVndiR0ZqWlZOd1pXTnBZV3hEYUdGeVlXTjBaWEp6Vkc5QlUwTkpTU2hsYm1OdlpHVlZVa2tvVTNSeWFXNW5LSE4wY2lrcEtUdGNibHh1WTI5dWMzUWdjbVZ3YkdGalpWTndaV05wWVd4RGFHRnlZV04wWlhKelZHOUJVME5KU1NBOUlDaDJZV3gxWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUQwK1hHNGdJSFpoYkhWbExuSmxjR3hoWTJVb0wxc2hKeWdwS2wwdlp5d2dLR01wSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnSnlVbklDc2dZeTVqYUdGeVEyOWtaVUYwS0RBcExuUnZVM1J5YVc1bktERTJLUzUwYjFWd2NHVnlRMkZ6WlNncE8xeHVJQ0I5S1R0Y2JseHVablZ1WTNScGIyNGdabTl5YldGMFVYVmxjbmxRWVhKaGJXVjBaWElvYm1GdFpUb2djM1J5YVc1bkxDQjJZV3gxWlRvZ1ZtRnlhV0ZpYkdWV1lXeDFaVk5wYm1kc1pTazZJSE4wY21sdVp5QjdYRzRnSUhKbGRIVnliaUJnZG1GeUxTUjdibUZ0WlgwOUpIdGxibU52WkdWVlVrbERiMjF3YjI1bGJuUlRkSEpwWTNRb2RtRnNkV1VwZldBN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBGc2JGWmhiSFZsS0haaGJIVmxPaUJXWVhKcFlXSnNaVlpoYkhWbFUybHVaMnhsS1NCN1hHNGdJSEpsZEhWeWJpQjJZV3gxWlNBOVBUMGdRVXhNWDFaQlVrbEJRa3hGWDFaQlRGVkZJSHg4SUNoQmNuSmhlUzVwYzBGeWNtRjVLSFpoYkhWbEtTQW1KaUIyWVd4MVpWc3dYU0E5UFQwZ1FVeE1YMVpCVWtsQlFreEZYMVpCVEZWRktUdGNibjFjYmx4dVkyOXVjM1FnVTFGTVgwVlRRMEZRUlY5TlFWQTZJRkpsWTI5eVpEeHpkSEpwYm1jc0lITjBjbWx1Wno0Z1BTQjdYRzRnSUZ3aUoxd2lPaUJjSWljblhDSXNYRzRnSUNkY0lpYzZJQ2RjWEZ4Y1hDSW5MRnh1ZlR0Y2JseHVablZ1WTNScGIyNGdjM0ZzVTNSeWFXNW5SbTl5YldGMGRHVnlLSFpoYkhWbE9pQldZWEpwWVdKc1pWWmhiSFZsS1NCN1hHNGdJQzh2SUdWelkyRndaU0J6YVc1bmJHVWdjWFZ2ZEdWeklHSjVJSEJoYVhKcGJtY2dkR2hsYlZ4dUlDQmpiMjV6ZENCeVpXZEZlSEFnUFNCdVpYY2dVbVZuUlhod0tHQW5mRndpWUN3Z0oyY25LVHRjYmx4dUlDQnBaaUFvYVhOQmNuSmhlU2gyWVd4MVpTa3BJSHRjYmlBZ0lDQnlaWFIxY200Z2JXRndLSFpoYkhWbExDQW9kam9nYzNSeWFXNW5LU0E5UGlCZ0p5UjdjbVZ3YkdGalpTaDJMQ0J5WldkRmVIQXNJQ2h0WVhSamFDa2dQVDRnVTFGTVgwVlRRMEZRUlY5TlFWQmJiV0YwWTJoZElEOC9JQ2NuS1gwbllDa3VhbTlwYmlnbkxDY3BPMXh1SUNCOVhHNWNiaUFnYkdWMElITjBjbFpoYkNBOUlIUjVjR1Z2WmlCMllXeDFaU0E5UFQwZ0ozTjBjbWx1WnljZ1B5QjJZV3gxWlNBNklGTjBjbWx1WnloMllXeDFaU2s3WEc0Z0lISmxkSFZ5YmlCZ0p5UjdjbVZ3YkdGalpTaHpkSEpXWVd3c0lISmxaMFY0Y0N3Z0tHMWhkR05vS1NBOVBpQlRVVXhmUlZORFFWQkZYMDFCVUZ0dFlYUmphRjBnUHo4Z0p5Y3BmU2RnTzF4dWZWeHVJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3UVVFclFtRXNUVUZCUVN4alFVRkJMRWRCUVdsQ0xFbEJRVWtzVVVGQlFTeERRVUUyUWl4TlFVRk5PMEZCUTI1RkxFVkJRVUVzVFVGQlRTeFBRVUZuUXl4SFFVRkJPMEZCUVVFc1NVRkRjRU03UVVGQlFTeE5RVU5GTEVsQlFVa3NaMEpCUVdsQ0xFTkJRVUVzVFVGQlFUdEJRVUZCTEUxQlEzSkNMRWxCUVUwc1JVRkJRU3hSUVVGQk8wRkJRVUVzVFVGRFRpeFhRVUZoTEVWQlFVRXNaMFpCUVVFN1FVRkJRU3hOUVVOaUxGTkJRVUVzUlVGQlZ5eERRVUZETEV0QlFWVXNTMEZCUVR0QlFVTndRaXhSUVVGSkxFbEJRVUVzVDBGQlR5eFZRVUZWTEZGQlFWVXNSVUZCUVR0QlFVTTNRaXhWUVVGQkxFOUJRVThzWVVGQllTeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVRkJMRk5CUXpOQ08wRkJSVUVzVVVGQlNTeEpRVUZCTEV0QlFVRXNRMEZCVFN4UFFVRlJMRU5CUVVFc1MwRkJTeXhEUVVGSExFVkJRVUU3UVVGRGVFSXNWVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hYUVVGWExFTkJRVWNzUlVGQlFUdEJRVU4wUWl4WlFVRlBMRTlCUVVFc1YwRkJRU3hEUVVGQk8wRkJRVUVzVjBGRFZEdEJRVU5CTEZWQlFVRXNUVUZCVFN4WlFVRmxMRWRCUVVFc1IwRkJRU3hEUVVGSkxFdEJRVThzUlVGQlFTeERRVUZETEVkQlFXZENMRXRCUVVFN1FVRkRMME1zV1VGQlR5eFBRVUZCTEVkQlFVRXNSMEZCVFN4WlFVRmhMRU5CUVVFc1IwRkJSeXhEUVVGSkxFZEJRVUVzUjBGQlFTeERRVUZCTzBGQlFVRXNWMEZEYkVNc1EwRkJRU3hEUVVGQk8wRkJRMFFzVlVGQlFTeFBRVUZQTEVkQlFVMHNSMEZCUVN4WlFVRkJMRU5CUVdFc1NVRkJTeXhEUVVGQkxFMUJRVTBzUTBGQlNTeEhRVUZCTEVkQlFVRXNRMEZCUVR0QlFVRkJMRk5CUTNCRExFMUJRVUU3UVVGRFRDeFZRVUZQTEU5QlFVRXNXVUZCUVN4RFFVRmhMRWRCUVVjc1MwRkJUeXhEUVVGQkxFTkJRVUVzUTBGQlFTeERRVUZCTzBGQlFVRXNVMEZEYUVNN1FVRkJRU3hQUVVOR08wRkJRVUVzUzBGRFJqdEJRVUZCTEVsQlEwRTdRVUZCUVN4TlFVTkZMRWxCUVVrc1owSkJRV2xDTEVOQlFVRXNSMEZCUVR0QlFVRkJMRTFCUTNKQ0xFbEJRVTBzUlVGQlFTeExRVUZCTzBGQlFVRXNUVUZEVGl4WFFVRmhMRVZCUVVFc2EwSkJRVUU3UVVGQlFTeE5RVU5pTEZOQlFWY3NSVUZCUVN4RFFVRkRMRXRCUVZVc1MwRkJRU3hOUVVGQkxFTkJRVThzUzBGQlN5eERRVUZCTzBGQlFVRXNTMEZEY0VNN1FVRkJRU3hKUVVOQk8wRkJRVUVzVFVGRFJTeEpRVUZKTEdkQ1FVRnBRaXhEUVVGQkxFdEJRVUU3UVVGQlFTeE5RVU55UWl4SlFVRk5MRVZCUVVFc1QwRkJRVHRCUVVGQkxFMUJRMDRzVjBGQllTeEZRVUZCTERaR1FVRkJPMEZCUVVFc1RVRkRZaXhUUVVGQkxFVkJRVmNzUTBGQlF5eExRVUZWTEV0QlFVRTdRVUZEY0VJc1VVRkJTU3hKUVVGQkxFOUJRVThzVlVGQlZTeFJRVUZWTEVWQlFVRTdRVUZETjBJc1ZVRkJRU3hQUVVGUExGbEJRVmtzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4VFFVTXhRanRCUVVWQkxGRkJRVWtzU1VGQlFTeExRVUZCTEVOQlFVMHNUMEZCVVN4RFFVRkJMRXRCUVVzc1EwRkJSeXhGUVVGQk8wRkJRM2hDTEZWQlFVRXNUVUZCVFN4aFFVRm5RaXhIUVVGQkxFdEJRVUVzUTBGQlRTeEhRVUZKTEVOQlFVRXNRMEZCUXl4SlFVRlRMRXRCUVVFN1FVRkRlRU1zV1VGQlNTeEpRVUZCTEU5QlFVOHNVMEZCVXl4UlFVRlZMRVZCUVVFN1FVRkROVUlzWTBGQlFTeFBRVUZQTEZsQlFWa3NTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkJRU3hoUVVOc1FpeE5RVUZCTzBGQlEwd3NZMEZCVHl4UFFVRkJMRmRCUVVFc1EwRkJXU3hOUVVGUExFTkJRVUVzU1VGQlNTeERRVUZETEVOQlFVRXNRMEZCUVR0QlFVRkJMR0ZCUTJwRE8wRkJRVUVzVjBGRFJDeERRVUZCTEVOQlFVRTdRVUZGUkN4VlFVRkpMRWxCUVVFc1lVRkJRU3hEUVVGakxGZEJRVmNzUTBGQlJ5eEZRVUZCTzBGQlF6bENMRmxCUVVFc1QwRkJUeXhoUVVGakxFTkJRVUVzUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4WFFVTjJRanRCUVVWQkxGVkJRVUVzVDBGQlR5eEhRVUZOTEVkQlFVRXNZVUZCUVN4RFFVRmpMRWxCUVVzc1EwRkJRU3hIUVVGSExFTkJRVWtzUjBGQlFTeEhRVUZCTEVOQlFVRTdRVUZCUVN4VFFVTjZRenRCUVVWQkxGRkJRVThzVDBGQlFTeFhRVUZCTEVOQlFWa3NSMEZCUnl4TFFVRlBMRU5CUVVFc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU12UWp0QlFVRkJMRXRCUTBZN1FVRkJRU3hKUVVOQk8wRkJRVUVzVFVGRFJTeEpRVUZKTEdkQ1FVRnBRaXhEUVVGQkxFbEJRVUU3UVVGQlFTeE5RVU55UWl4SlFVRk5MRVZCUVVFc1RVRkJRVHRCUVVGQkxFMUJRMDRzVjBGQllTeEZRVUZCTEhGRFFVRkJPMEZCUVVFc1RVRkRZaXhUUVVGQkxFVkJRVmNzUTBGQlF5eExRVUZWTEV0QlFVRTdRVUZEY0VJc1VVRkJTU3hKUVVGQkxFOUJRVThzVlVGQlZTeFJRVUZWTEVWQlFVRTdRVUZETjBJc1ZVRkJUeXhQUVVGQkxFdEJRVUVzUTBGQlFUdEJRVUZCTEZOQlExUTdRVUZGUVN4UlFVRkpMRWxCUVVFc1MwRkJRU3hEUVVGTkxFOUJRVkVzUTBGQlFTeExRVUZMTEVOQlFVY3NSVUZCUVR0QlFVTjRRaXhWUVVGUExFOUJRVUVzUzBGQlFTeERRVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkJRU3hUUVVOMlFqdEJRVVZCTEZGQlFVRXNUMEZCVHl4RFFVRkhMRVZCUVVFc1MwRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlExbzdRVUZCUVN4TFFVTkdPMEZCUVVFc1NVRkRRVHRCUVVGQkxFMUJRMFVzU1VGQlNTeG5Ra0ZCYVVJc1EwRkJRU3hYUVVGQk8wRkJRVUVzVFVGRGNrSXNTVUZCVFN4RlFVRkJMR0ZCUVVFN1FVRkJRU3hOUVVOT0xGZEJRV0VzUlVGQlFTeHRSRUZCUVR0QlFVRkJMRTFCUTJJc1UwRkJWeXhGUVVGQkxFTkJRVU1zUzBGQlR5eEZRVUZCTEVsQlFVRXNSVUZCVFN4UlFVRmhMRXRCUVVFN1FVRkRjRU1zVVVGQlNTeEpRVUZCTEU5QlFVOHNWVUZCVlN4UlFVRlZMRVZCUVVFN1FVRkROMElzVlVGQlR5eFBRVUZCTEV0QlFVRXNRMEZCUVR0QlFVRkJMRk5CUTFRN1FVRkZRU3hSUVVGSkxFbEJRVUVzUzBGQlFTeERRVUZOTEU5QlFWRXNRMEZCUVN4TFFVRkxMRU5CUVVjc1JVRkJRVHRCUVVONFFpeFZRVUZCTEV0QlFVRXNSMEZCVVN4SFFVRkpMRU5CUVVFc1MwRkJRU3hGUVVGUExFTkJRVU1zUjBGQlFTeEZRVUZoTEV0QlFXdENMRXRCUVVFN1FVRkRha1FzV1VGQlFTeEpRVUZKTEZWQlFWVXNRMEZCUnl4RlFVRkJPMEZCUTJZc1kwRkJUeXhQUVVGQkxGRkJRVUVzUTBGQlV5eExRVUZOTEVOQlFVRXNTVUZCUVN4SFFVRlBMRWRCUVUwc1IwRkJRU3hIUVVGQkxFTkJRVUU3UVVGQlFTeGhRVU01UWl4TlFVRkJPMEZCUTB3c1kwRkJUeXhQUVVGQkxFZEJRVUVzUTBGQlFUdEJRVUZCTEdGQlExUTdRVUZCUVN4WFFVTkVMRU5CUVVFc1EwRkJRVHRCUVVWRUxGVkJRVThzVDBGQlFTeExRVUZCTEVOQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVFc1EwRkJRVHRCUVVGQkxGTkJRM1pDTzBGQlJVRXNVVUZCUVN4UFFVRlBMRU5CUVVjc1JVRkJRU3hMUVVGQkxFTkJRVUVzUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZEV2p0QlFVRkJMRXRCUTBZN1FVRkJRU3hKUVVOQk8wRkJRVUVzVFVGRFJTeEpRVUZKTEdkQ1FVRnBRaXhEUVVGQkxFZEJRVUU3UVVGQlFTeE5RVU55UWl4SlFVRk5MRVZCUVVFc1MwRkJRVHRCUVVGQkxFMUJRMDRzVjBGQllTeEZRVUZCTEhkQ1FVRkJPMEZCUVVFc1RVRkRZaXhUUVVGQkxFVkJRVmNzUTBGQlF5eExRVUZWTEV0QlFVRTdRVUZEY0VJc1VVRkJTU3hKUVVGQkxFOUJRVThzVlVGQlZTeFJRVUZWTEVWQlFVRTdRVUZETjBJc1ZVRkJUeXhQUVVGQkxFdEJRVUVzUTBGQlFUdEJRVUZCTEZOQlExUTdRVUZGUVN4UlFVRkpMRWxCUVVFc1QwRkJRU3hEUVVGUkxFdEJRVXNzUTBGQlJ5eEZRVUZCTzBGQlEyeENMRlZCUVU4c1QwRkJRU3hMUVVGQkxFTkJRVTBzUzBGQlN5eEhRVUZITEVOQlFVRXNRMEZCUVR0QlFVRkJMRk5CUTNaQ08wRkJSVUVzVVVGQlFTeFBRVUZQTEU5QlFVOHNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkJRU3hQUVVOeVFqdEJRVUZCTEV0QlEwWTdRVUZCUVN4SlFVTkJPMEZCUVVFc1RVRkRSU3hKUVVGSkxHZENRVUZwUWl4RFFVRkJMRWxCUVVFN1FVRkJRU3hOUVVOeVFpeEpRVUZOTEVWQlFVRXNUVUZCUVR0QlFVRkJMRTFCUTA0c1YwRkJZU3hGUVVGQkxIbENRVUZCTzBGQlFVRXNUVUZEWWl4VFFVRkJMRVZCUVZjc1EwRkJReXhMUVVGVkxFdEJRVUU3UVVGRGNFSXNVVUZCU1N4SlFVRkJMRTlCUVU4c1ZVRkJWU3hSUVVGVkxFVkJRVUU3UVVGRE4wSXNWVUZCVHl4UFFVRkJMRkZCUVVFc1EwRkJVeXhYUVVGWExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNVMEZEYkVNN1FVRkZRU3hSUVVGSkxFbEJRVUVzVDBGQlFTeERRVUZSTEV0QlFVc3NRMEZCUnl4RlFVRkJPMEZCUTJ4Q0xGVkJRVUVzVDBGQlR5eFJRVUZUTEVOQlFVRXNWVUZCUVN4RFFVRlhMRXRCUVUwc1EwRkJRU3hKUVVGQkxFTkJRVXNzU1VGQlNTeERRVUZETEVOQlFVRXNRMEZCUVR0QlFVRkJMRk5CUXpkRE8wRkJSVUVzVVVGQlFTeFBRVUZQTEZGQlFWTXNRMEZCUVN4VlFVRkJMRU5CUVZjc1RVRkJUeXhEUVVGQkxFdEJRVXNzUTBGQlF5eERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTXhRenRCUVVGQkxFdEJRMFk3UVVGQlFTeEpRVU5CTzBGQlFVRXNUVUZEUlN4SlFVRkpMR2RDUVVGcFFpeERRVUZCTEVsQlFVRTdRVUZCUVN4TlFVTnlRaXhKUVVGTkxFVkJRVUVzVFVGQlFUdEJRVUZCTEUxQlEwNHNWMEZCWVN4RlFVRkJMSE5DUVVGQk8wRkJRVUVzVFVGRFlpeFRRVUZCTEVWQlFWY3NRMEZCUXl4TFFVRlZMRXRCUVVFN1FVRkRjRUlzVVVGQlNTeEpRVUZCTEU5QlFVOHNWVUZCVlN4UlFVRlZMRVZCUVVFN1FVRkROMElzVlVGQlR5eFBRVUZCTEV0QlFVRXNRMEZCUVR0QlFVRkJMRk5CUTFRN1FVRkRRU3hSUVVGUExFOUJRVUVzU1VGQlFTeERRVUZMTEZWQlFWVXNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkJRU3hQUVVNM1FqdEJRVUZCTEV0QlEwWTdRVUZCUVN4SlFVTkJPMEZCUVVFc1RVRkRSU3hKUVVGSkxHZENRVUZwUWl4RFFVRkJMR0ZCUVVFN1FVRkJRU3hOUVVOeVFpeEpRVUZOTEVWQlFVRXNaMEpCUVVFN1FVRkJRU3hOUVVOT0xGZEJRV0VzUlVGQlFTeG5RMEZCUVR0QlFVRkJMRTFCUTJJc1UwRkJRU3hGUVVGWExFTkJRVU1zUzBGQlZTeExRVUZCTzBGQlJYQkNMRkZCUVVrc1NVRkJRU3hQUVVGQkxFTkJRVkVzUzBGQlN5eERRVUZITEVWQlFVRTdRVUZEYkVJc1ZVRkJRU3hQUVVGUExIbENRVUY1UWl4SFFVRk5MRWRCUVVFc1MwRkJRU3hEUVVGTkxFbEJRVXNzUTBGQlFTeEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkJRU3hUUVVNM1JEdEJRVVZCTEZGQlFVRXNUMEZCVHl4NVFrRkJlVUlzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTjJRenRCUVVGQkxFdEJRMFk3UVVGQlFTeEpRVU5CTzBGQlFVRXNUVUZEUlN4SlFVRkpMR2RDUVVGcFFpeERRVUZCTEZkQlFVRTdRVUZCUVN4TlFVTnlRaXhKUVVGTkxFVkJRVUVzWTBGQlFUdEJRVUZCTEUxQlEwNHNWMEZCWVN4RlFVRkJMSE5DUVVGQk8wRkJRVUVzVFVGRFlpeFRRVUZCTEVWQlFWY3NRMEZCUXl4TFFVRlZMRXRCUVVFN1FVRkZjRUlzVVVGQlFTeE5RVUZOTEUxQlFWTXNSMEZCUVN4SlFVRkpMRTFCUVU4c1EwRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlFTeEZRVUZMTEVkQlFVY3NRMEZCUVN4RFFVRkJPMEZCUld4RExGRkJRVWtzU1VGQlFTeFBRVUZCTEVOQlFWRXNTMEZCU3l4RFFVRkhMRVZCUVVFN1FVRkRiRUlzVlVGQlFTeFBRVUZQTEVkQlFVa3NRMEZCUVN4TFFVRkJMRVZCUVU4c1EwRkJReXhEUVVGQkxFdEJRV01zUTBGQlNTeERRVUZCTEVWQlFVRXNUMEZCUVN4RFFVRlJMRU5CUVVjc1JVRkJRU3hOUVVGQkxFVkJRVkVzUTBGQlN5eEhRVUZCTEVOQlFVRXNRMEZCUVN4RFFVRkJMRU5CUVVFc1EwRkJTU3hEUVVGRkxFTkJRVUVzU1VGQlFTeERRVUZMTEVkQlFVY3NRMEZCUVN4RFFVRkJPMEZCUVVFc1UwRkROMFU3UVVGRlFTeFJRVUZCTEVsQlFVa3NVMEZCVXl4UFFVRlBMRXRCUVVFc1MwRkJWU3hSUVVGWExFZEJRVUVzUzBGQlFTeEhRVUZSTEU5QlFVOHNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkROMFFzVVVGQlFTeFBRVUZQTEVOQlFVa3NRMEZCUVN4RlFVRkJMRTlCUVVFc1EwRkJVU3hOUVVGUkxFVkJRVUVzVFVGQlFTeEZRVUZSTEVOQlFVc3NSMEZCUVN4RFFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlF6RkRPMEZCUVVFc1MwRkRSanRCUVVGQkxFbEJRMEU3UVVGQlFTeE5RVU5GTEVsQlFVa3NaMEpCUVdsQ0xFTkJRVUVzVjBGQlFUdEJRVUZCTEUxQlEzSkNMRWxCUVUwc1JVRkJRU3hqUVVGQk8wRkJRVUVzVFVGRFRpeFhRVUZoTEVWQlFVRXNjMEpCUVVFN1FVRkJRU3hOUVVOaUxGTkJRVUVzUlVGQlZ5eERRVUZETEV0QlFWVXNTMEZCUVR0QlFVVndRaXhSUVVGQkxFMUJRVTBzVFVGQlV5eEhRVUZCTEVsQlFVa3NUVUZCVHl4RFFVRkJMRWRCUVVFc1JVRkJTeXhIUVVGSExFTkJRVUVzUTBGQlFUdEJRVU5zUXl4UlFVRkpMRWxCUVVFc1QwRkJRU3hEUVVGUkxFdEJRVXNzUTBGQlJ5eEZRVUZCTzBGQlEyeENMRlZCUVVFc1QwRkJUeXhIUVVGSkxFTkJRVUVzUzBGQlFTeEZRVUZQTEVOQlFVTXNRMEZCUVN4TFFVRmpMRU5CUVVrc1EwRkJRU3hGUVVGQkxFOUJRVUVzUTBGQlVTeERRVUZITEVWQlFVRXNUVUZCUVN4RlFVRlJMRXRCUVVzc1EwRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlNTeERRVUZGTEVOQlFVRXNTVUZCUVN4RFFVRkxMRWRCUVVjc1EwRkJRU3hEUVVGQk8wRkJRVUVzVTBGRE4wVTdRVUZGUVN4UlFVRkJMRWxCUVVrc1UwRkJVeXhQUVVGUExFdEJRVUVzUzBGQlZTeFJRVUZYTEVkQlFVRXNTMEZCUVN4SFFVRlJMRTlCUVU4c1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGRE4wUXNVVUZCUVN4UFFVRlBMRU5CUVVrc1EwRkJRU3hGUVVGQkxFOUJRVUVzUTBGQlVTeE5RVUZSTEVWQlFVRXNUVUZCUVN4RlFVRlJMRXRCUVVzc1EwRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZETVVNN1FVRkJRU3hMUVVOR08wRkJRVUVzU1VGRFFUdEJRVUZCTEUxQlEwVXNTVUZCU1N4blFrRkJhVUlzUTBGQlFTeFRRVUZCTzBGQlFVRXNUVUZEY2tJc1NVRkJUU3hGUVVGQkxGbEJRVUU3UVVGQlFTeE5RVU5PTEZkQlFXRXNSVUZCUVN3MFJVRkJRVHRCUVVGQkxFMUJRMklzVTBGQlZ5eEZRVUZCTEd0Q1FVRkJPMEZCUVVFc1MwRkRZanRCUVVGQkxFbEJRMEU3UVVGQlFTeE5RVU5GTEVsQlFVa3NaMEpCUVdsQ0xFTkJRVUVzU1VGQlFUdEJRVUZCTEUxQlEzSkNMRWxCUVUwc1JVRkJRU3hOUVVGQk8wRkJRVUVzVFVGRFRpeFhRVUZoTEVWQlFVRXNLMEpCUVVFN1FVRkJRU3hOUVVOaUxGTkJRVUVzUlVGQlZ5eERRVUZETEV0QlFVRXNSVUZCVHl4SlFVRlRMRXRCUVVFN1FVRnNUMnhETEZGQlFVRXNTVUZCUVN4RlFVRkJMRU5CUVVFN1FVRnRUMUVzVVVGQlFTeEpRVUZKTEU5QlFWVXNSMEZCUVN4SFFVRkJMRU5CUVVFN1FVRkZaQ3hSUVVGSkxFbEJRVUVzVDBGQlR5eFZRVUZWTEZGQlFWVXNSVUZCUVR0QlFVTTNRaXhWUVVGVkxFOUJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRTdRVUZCUVN4VFFVTmFMRTFCUVVFc1NVRkJWeXhQUVVGUExFdEJRVUVzUzBGQlZTeFJRVUZWTEVWQlFVRTdRVUZEY0VNc1ZVRkJWU3hQUVVGQkxFZEJRVUVzVVVGQlFTeERRVUZUTEU5QlFVOHNSVUZCUlN4RFFVRkJMRU5CUVVFN1FVRkJRU3hUUVVNNVFqdEJRVVZCTEZGQlFVa3NTVUZCUVN4TFFVRkJMRU5CUVUwc1QwRkJUeXhEUVVGSExFVkJRVUU3UVVGRGJFSXNWVUZCVHl4UFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVGQkxGTkJRMVE3UVVGRlFTeFJRVUZOTEUxQlFVRXNSMEZCUVN4SFFVRkJMRU5CUVUwc1JVRkJTeXhIUVVGQkxFbEJRVUVzUTBGQlFTeERRVUZCTEVOQlFVRXNTMEZCVEN4SlFVRlhMRWRCUVVFc1JVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFUdEJRVU4yUWl4UlFVRlJMRkZCUVVFc1IwRkJRVHRCUVVGQkxGVkJRMFFzUzBGQlFTeEpRVUZCTzBGQlEwZ3NXVUZCUVN4UFFVRlBMRTlCUVU4c1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGQlFTeFZRVU5vUWl4TFFVRkJMRk5CUVVFN1FVRkRTQ3haUVVGQkxFOUJRVThzUTBGQlJ5eEZRVUZCTEVsQlFVRXNRMEZCU3l4TFFVRk5MRU5CUVVFc1QwRkJRU3hIUVVGWExFZEJRVWtzUTBGQlFTeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRlZCUTJwRExFdEJRVUVzUzBGQlFUdEJRVU5JTEZsQlFVOHNUMEZCUVN4UlFVRkJMRU5CUVZNc1QwRkJUeXhEUVVGQkxFTkJRVVVzVjBGQldTeEZRVUZCTEVOQlFVRTdRVUZCUVN4VlFVRkJPMEZCUlhKRExGbEJRVUVzU1VGQlFTeERRVUZMTEVsQlFWRXNTVUZCUVN4RlFVRkpMRVZCUVVFc1RVRkJRU3hIUVVGVExFTkJRVWNzUlVGQlFUdEJRVU16UWl4alFVRkJMRTlCUVU4c1UwRkJVeXhQUVVGUExFTkJRVUVzUTBGQlJTeFBRVUZQTEVsQlFVc3NRMEZCUVN4SlFVRkJMRU5CUVVzc1IwRkJSeXhEUVVGRExFTkJRVUVzUTBGQlFUdEJRVUZCTEdGQlEyaEVPMEZCUTBFc1dVRkJRU3hQUVVGUExGRkJRVk1zUTBGQlFTeFBRVUZQTEVOQlFVVXNRMEZCUVN4TlFVRkJMRU5CUVU4c1IwRkJSeXhEUVVGQkxFTkJRVUU3UVVGQlFTeFRRVUZCTzBGQlFVRXNUMEZGZWtNN1FVRkJRU3hMUVVOR08wRkJRVUVzU1VGRFFUdEJRVUZCTEUxQlEwVXNTVUZCU1N4blFrRkJhVUlzUTBGQlFTeEpRVUZCTzBGQlFVRXNUVUZEY2tJc1NVRkJUU3hGUVVGQkxFMUJRVUU3UVVGQlFTeE5RVU5PTEZkQlFXRXNSVUZCUVN3d1JVRkJRVHRCUVVGQkxFMUJRMklzVTBGQlFTeEZRVUZYTEVOQlFVTXNTMEZCVlN4TFFVRkJPMEZCUTNCQ0xGRkJRVUVzU1VGQlNTeFBRVUZSTEVOQlFVRXNTMEZCU3l4RFFVRkxMRWxCUVVFc1MwRkJRU3hEUVVGTkxGTkJRVk1zUTBGQlJ5eEZRVUZCTzBGQlEzUkRMRlZCUVVFc1QwRkJUeXhIUVVGTkxFZEJRVUVzUzBGQlFTeERRVUZOTEVsQlFVc3NRMEZCUVN4SFFVRkhMRU5CUVVrc1IwRkJRU3hIUVVGQkxFTkJRVUU3UVVGQlFTeFRRVU5xUXp0QlFVTkJMRkZCUVVFc1QwRkJUeXhQUVVGUExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZEY2tJN1FVRkJRU3hMUVVOR08wRkJRVUVzU1VGRFFUdEJRVUZCTEUxQlEwVXNTVUZCU1N4blFrRkJhVUlzUTBGQlFTeEpRVUZCTzBGQlFVRXNUVUZEY2tJc1NVRkJUU3hGUVVGQkxFMUJRVUU3UVVGQlFTeE5RVU5PTEZkQlFXRXNSVUZCUVN3NFJrRkJRVHRCUVVGQkxFMUJRMklzVTBGQlZ5eEZRVUZCTEVOQlFVTXNTMEZCVHl4RlFVRkJMRXRCUVVFc1JVRkJUeXhSUVVGaExFdEJRVUU3UVVGRGNrTXNVVUZCUVN4SlFVRkpMRk5CUVZNc1dVRkJZeXhGUVVGQk8wRkJRM3BDTEZWQlFVRXNUMEZCVHl4VFFVRlRMRmxCUVdFc1JVRkJRU3hEUVVGQk8wRkJRVUVzVTBGREwwSTdRVUZGUVN4UlFVRkJMRTlCUVU4c1QwRkJUeXhMUVVGTExFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEzSkNPMEZCUVVFc1MwRkRSanRCUVVGQkxFbEJRMEU3UVVGQlFTeE5RVU5GTEVsQlFVa3NaMEpCUVdsQ0xFTkJRVUVzVlVGQlFUdEJRVUZCTEUxQlEzSkNMRWxCUVUwc1JVRkJRU3hwUWtGQlFUdEJRVUZCTEUxQlEwNHNWMEZEUlN4RlFVRkJMRzlJUVVGQk8wRkJRVUVzVFVGRFJpeFRRVUZYTEVWQlFVRXNRMEZCUXl4TFFVRlBMRVZCUVVFc1MwRkJRU3hGUVVGUExGRkJRV0VzUzBGQlFUdEJRVU55UXl4UlFVRkJMRWxCUVVrc1UwRkJVeXhQUVVGVExFVkJRVUU3UVVGRGNFSXNWVUZCVFN4TlFVRkJMRkZCUVVFc1IwRkJWeXhSUVVGVExFTkJRVUVzVDBGQlFTeERRVUZSTEZkQlFWa3NSVUZCUVN4RFFVRkJPMEZCUXpsRExGVkJRVThzVDBGQlFTeFBRVUZCTEVOQlFWRXNXVUZCV1N4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxGTkJRM0pETzBGQlJVRXNVVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hQUVVGUkxFTkJRVUVzUzBGQlN5eERRVUZITEVWQlFVRTdRVUZEZUVJc1ZVRkJRU3hQUVVGUExFdEJRVTBzUTBGQlFTeEhRVUZCTEVOQlFVa3NRMEZCUXl4RFFVRkJMRXRCUVUwc2IwSkJRWEZDTEVOQlFVRXNVVUZCUVN4RFFVRlRMRXRCUVUwc1EwRkJRU3hKUVVGQkxFVkJRVTBzUTBGQlF5eERRVUZETEVOQlFVVXNRMEZCUVN4SlFVRkJMRU5CUVVzc1IwRkJSeXhEUVVGQkxFTkJRVUU3UVVGQlFTeFRRVU5vUmp0QlFVVkJMRkZCUVVFc1QwRkJUeXh2UWtGQmNVSXNRMEZCUVN4UlFVRkJMRU5CUVZNc1MwRkJUU3hEUVVGQkxFbEJRVUVzUlVGQlRTeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTNoRU8wRkJRVUVzUzBGRFJqdEJRVUZCTEVsQlEwRTdRVUZCUVN4TlFVTkZMRWxCUVVrc1owSkJRV2xDTEVOQlFVRXNVMEZCUVR0QlFVRkJMRTFCUTNKQ0xFbEJRVTBzUlVGQlFTeDFRa0ZCUVR0QlFVRkJMRTFCUTA0c1YwRkJZU3hGUVVGQkxHMUZRVUZCTzBGQlFVRXNUVUZEWWl4VFFVRkJMRVZCUVZjc1EwRkJReXhMUVVGNVFpeExRVUZCTzBGQlEyNURMRkZCUVVrc1NVRkJRU3hQUVVGQkxFTkJRVkVzUzBGQlN5eERRVUZITEVWQlFVRTdRVUZEYkVJc1ZVRkJRU3hQUVVGUExHZENRVUZuUWl4SFFVRk5MRWRCUVVFc1MwRkJRU3hEUVVGTkxFbEJRVXNzUTBGQlFTeEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkJRU3hUUVVOd1JEdEJRVVZCTEZGQlFVRXNUMEZCVHl4blFrRkJaMElzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTTVRanRCUVVGQkxFdEJRMFk3UVVGQlFTeEhRVU5HTEVOQlFVRTdRVUZGUVN4RlFVRlBMRTlCUVVFc1QwRkJRU3hEUVVGQk8wRkJRMVFzUTBGQlF5eEZRVUZCTzBGQlJVUXNVMEZCVXl4aFFVRmhMRXRCUVdVc1JVRkJRVHRCUVVOdVF5eEZRVUZCTEVsQlFVa3NTMEZCVFN4RFFVRkJMRU5CUVVNc1MwRkJTeXhEUVVGQkxFdEJRVTBzUzBGQlR5eEZRVUZCTzBGQlF6TkNMRWxCUVU4c1QwRkJRU3hMUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5VTzBGQlJVRXNSVUZCVHl4UFFVRkJMRXRCUVVFc1EwRkJUU3hQUVVGUkxFTkJRVUVzYVVSQlFVRXNSVUZCYlVRc1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGRGFFWXNRMEZCUVR0QlFVOUJMRk5CUVZNc2VVSkJRWGxDTEVkQlFUQkNMRVZCUVVFN1FVRkRNVVFzUlVGQlNTeEpRVUZCTEU5QlFVOHNVVUZCVVN4UlFVRlZMRVZCUVVFN1FVRkRNMElzU1VGQlFTeEhRVUZCTEVkQlFVMHNUMEZCVHl4SFFVRkhMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRMnhDTzBGQlJVRXNSVUZCVHl4UFFVRkJMQ3RDUVVGQkxFTkJRV2RETEd0Q1FVRnRRaXhEUVVGQkxFZEJRVWNzUTBGQlF5eERRVUZCTEVOQlFVRTdRVUZEYUVVc1EwRkJRVHRCUVVWQkxFMUJRVTBzWlVGQlFTeEhRVUZyUWl4RFFVRkRMRWRCUVhGRExFdEJRVUVzSzBKQlFVRXNRMEZCWjBNc1ZVRkJWU3hOUVVGUExFTkJRVUVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUlhCSUxFMUJRVTBzYTBOQlFXdERMRU5CUVVNc1MwRkJRU3hMUVVOMlF5eE5RVUZOTEU5QlFWRXNRMEZCUVN4VlFVRkJMRVZCUVZrc1EwRkJReXhEUVVGTkxFdEJRVUU3UVVGREwwSXNSVUZCVHl4UFFVRkJMRWRCUVVFc1IwRkJUU3hGUVVGRkxGVkJRVmNzUTBGQlFTeERRVUZETEVWQlFVVXNVVUZCVXl4RFFVRkJMRVZCUVVVc1JVRkJSU3hYUVVGWkxFVkJRVUVzUTBGQlFUdEJRVU40UkN4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVWSUxGTkJRVk1zYjBKQlFVRXNRMEZCY1VJc1RVRkJZeXhMUVVGdlF5eEZRVUZCTzBGQlF6bEZMRVZCUVU4c1QwRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlR5eEpRVUZSTEVOQlFVRXNRMEZCUVN4RlFVRkJMSGRDUVVGQkxFTkJRWGxDTEV0QlFVc3NRMEZCUVN4RFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVOMFJDeERRVUZCTzBGQlRVRXNUVUZCVFN4alFVRjVReXhIUVVGQk8wRkJRVUVzUlVGRE4wTXNSMEZCU3l4RlFVRkJMRWxCUVVFN1FVRkJRU3hGUVVOTUxFZEJRVXNzUlVGQlFTeExRVUZCTzBGQlExQXNRMEZCUVN4RFFVRkJPMEZCUlVFc1UwRkJVeXh0UWtGQmJVSXNTMEZCYzBJc1JVRkJRVHRCUVVWb1JDeEZRVUZCTEUxQlFVMHNUVUZCVXl4SFFVRkJMRWxCUVVrc1RVRkJUeXhEUVVGQkxFTkJRVUVzUjBGQlFTeERRVUZCTEVWQlFVOHNSMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkZjRU1zUlVGQlNTeEpRVUZCTEU5QlFVRXNRMEZCVVN4TFFVRkxMRU5CUVVjc1JVRkJRVHRCUVVOc1FpeEpRVUZQTEU5QlFVRXNSMEZCUVN4RFFVRkpMRTlCUVU4c1EwRkJReXhEUVVGQkxFdEJRV01zU1VGQlNTeFBRVUZSTEVOQlFVRXNRMEZCUVN4RlFVRkhMRTFCUVZFc1JVRkJRU3hEUVVGRExFdEJRVThzUzBGQlFUdEJRWFpYY0VVc1RVRkJRU3hKUVVGQkxFVkJRVUVzUTBGQlFUdEJRWFZYZFVVc1RVRkJRU3hQUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEdOQlFVRXNRMEZCWlN4WFFVRm1MRWxCUVhsQ0xFZEJRVUVzUlVGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUVR0QlFVRkJMRXRCUVVVc1EwRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlNTeERRVUZGTEVOQlFVRXNTVUZCUVN4RFFVRkxMRWRCUVVjc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRE9VYzdRVUZGUVN4RlFVRkJMRWxCUVVrc1UwRkJVeXhQUVVGUExFdEJRVUVzUzBGQlZTeFJRVUZYTEVkQlFVRXNTMEZCUVN4SFFVRlJMRTlCUVU4c1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGRE4wUXNSVUZCUVN4UFFVRlBMRU5CUVVrc1EwRkJRU3hGUVVGQkxFOUJRVUVzUTBGQlVTeE5RVUZSTEVWQlFVRXNUVUZCUVN4RlFVRlJMRU5CUVVNc1MwRkJUeXhMUVVGQk8wRkJNMWMzUXl4SlFVRkJMRWxCUVVFc1JVRkJRU3hEUVVGQk8wRkJNbGRuUkN4SlFVRkJMRTlCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzWTBGQlFTeERRVUZsTEZkQlFXWXNTVUZCZVVJc1IwRkJRU3hGUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZCTzBGQlFVRXNSMEZCUlN4RFFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGRE0wVTdPenM3SW4wPVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUErQmEsTUFBQSxjQUFBLEdBQWlCLElBQUksUUFBQSxDQUE2QixNQUFNO0FBQ25FLEVBQUEsTUFBTSxPQUFnQyxHQUFBO0FBQ3BDLElBQUE7QUFDRSxNQUFBLEVBQUEsRUFBSSxnQkFBaUIsQ0FBQSxNQUFBO01BQ3JCLElBQU0sRUFBQSxRQUFBO01BQ04sV0FBYSxFQUFBLGdGQUFBO0FBQ2IsTUFBQSxTQUFBLEVBQVcsQ0FBQyxLQUFVLEtBQUE7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
@@ -1,87 +0,0 @@
1
- import { VariableFormatID } from '@grafana/schema';
2
- import { isCustomVariableValue } from '../types.js';
3
- import { getSceneVariableForScopedVar } from './ScopedVarsVariable.js';
4
- import { formatRegistry } from './formatRegistry.js';
5
- import { VARIABLE_REGEX } from '../constants.js';
6
- import { lookupVariable } from '../lookupVariable.js';
7
- import { macrosIndex } from '../macros/index.js';
8
-
9
- function sceneInterpolator(sceneObject, target, scopedVars, format, interpolations) {
10
- if (!target || typeof target !== "string") {
11
- return target != null ? target : "";
12
- }
13
- VARIABLE_REGEX.lastIndex = 0;
14
- return target.replace(VARIABLE_REGEX, (match, var1, var2, fmt2, var3, fieldPath, fmt3) => {
15
- const variableName = var1 || var2 || var3;
16
- const fmt = fmt2 || fmt3 || format;
17
- const variable = lookupFormatVariable(variableName, match, scopedVars, sceneObject);
18
- if (!variable) {
19
- if (interpolations) {
20
- interpolations.push({ match, variableName, fieldPath, format: fmt, value: match, found: false });
21
- }
22
- return match;
23
- }
24
- const value = formatValue(sceneObject, variable, variable.getValue(fieldPath), fmt);
25
- if (interpolations) {
26
- interpolations.push({ match, variableName, fieldPath, format: fmt, value, found: value !== match });
27
- }
28
- return value;
29
- });
30
- }
31
- function lookupFormatVariable(name, match, scopedVars, sceneObject) {
32
- if (scopedVars && scopedVars.hasOwnProperty(name)) {
33
- const scopedVar = scopedVars[name];
34
- if (scopedVar) {
35
- return getSceneVariableForScopedVar(name, scopedVar);
36
- }
37
- }
38
- const variable = lookupVariable(name, sceneObject);
39
- if (variable) {
40
- return variable;
41
- }
42
- const Macro = macrosIndex.get(name);
43
- if (Macro) {
44
- return new Macro(name, sceneObject, match, scopedVars);
45
- }
46
- return null;
47
- }
48
- function formatValue(context, variable, value, formatNameOrFn) {
49
- if (value === null || value === void 0) {
50
- return "";
51
- }
52
- if (isCustomVariableValue(value)) {
53
- return sceneInterpolator(context, value.formatter(formatNameOrFn));
54
- }
55
- if (!Array.isArray(value) && typeof value === "object") {
56
- value = `${value}`;
57
- }
58
- if (typeof formatNameOrFn === "function") {
59
- return formatNameOrFn(value, {
60
- name: variable.state.name,
61
- type: variable.state.type,
62
- multi: variable.state.isMulti,
63
- includeAll: variable.state.includeAll
64
- });
65
- }
66
- let args = [];
67
- if (!formatNameOrFn) {
68
- formatNameOrFn = VariableFormatID.Glob;
69
- } else {
70
- args = formatNameOrFn.split(":");
71
- if (args.length > 1) {
72
- formatNameOrFn = args[0];
73
- args = args.slice(1);
74
- } else {
75
- args = [];
76
- }
77
- }
78
- let formatter = formatRegistry.getIfExists(formatNameOrFn);
79
- if (!formatter) {
80
- console.error(`Variable format ${formatNameOrFn} not found. Using glob format as fallback.`);
81
- formatter = formatRegistry.get(VariableFormatID.Glob);
82
- }
83
- return formatter.formatter(value, args, variable);
84
- }
85
-
86
- export { sceneInterpolator };
87
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmVJbnRlcnBvbGF0b3IuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy9pbnRlcnBvbGF0aW9uL3NjZW5lSW50ZXJwb2xhdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhcmlhYmxlRm9ybWF0SUQgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuaW1wb3J0IHsgaXNDdXN0b21WYXJpYWJsZVZhbHVlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHsgZ2V0U2NlbmVWYXJpYWJsZUZvclNjb3BlZFZhciB9IGZyb20gJy4vU2NvcGVkVmFyc1ZhcmlhYmxlLmpzJztcbmltcG9ydCB7IGZvcm1hdFJlZ2lzdHJ5IH0gZnJvbSAnLi9mb3JtYXRSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBWQVJJQUJMRV9SRUdFWCB9IGZyb20gJy4uL2NvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBsb29rdXBWYXJpYWJsZSB9IGZyb20gJy4uL2xvb2t1cFZhcmlhYmxlLmpzJztcbmltcG9ydCB7IG1hY3Jvc0luZGV4IH0gZnJvbSAnLi4vbWFjcm9zL2luZGV4LmpzJztcblxuZnVuY3Rpb24gc2NlbmVJbnRlcnBvbGF0b3Ioc2NlbmVPYmplY3QsIHRhcmdldCwgc2NvcGVkVmFycywgZm9ybWF0LCBpbnRlcnBvbGF0aW9ucykge1xuICBpZiAoIXRhcmdldCB8fCB0eXBlb2YgdGFyZ2V0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHRhcmdldCAhPSBudWxsID8gdGFyZ2V0IDogXCJcIjtcbiAgfVxuICBWQVJJQUJMRV9SRUdFWC5sYXN0SW5kZXggPSAwO1xuICByZXR1cm4gdGFyZ2V0LnJlcGxhY2UoVkFSSUFCTEVfUkVHRVgsIChtYXRjaCwgdmFyMSwgdmFyMiwgZm10MiwgdmFyMywgZmllbGRQYXRoLCBmbXQzKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdmFyMSB8fCB2YXIyIHx8IHZhcjM7XG4gICAgY29uc3QgZm10ID0gZm10MiB8fCBmbXQzIHx8IGZvcm1hdDtcbiAgICBjb25zdCB2YXJpYWJsZSA9IGxvb2t1cEZvcm1hdFZhcmlhYmxlKHZhcmlhYmxlTmFtZSwgbWF0Y2gsIHNjb3BlZFZhcnMsIHNjZW5lT2JqZWN0KTtcbiAgICBpZiAoIXZhcmlhYmxlKSB7XG4gICAgICBpZiAoaW50ZXJwb2xhdGlvbnMpIHtcbiAgICAgICAgaW50ZXJwb2xhdGlvbnMucHVzaCh7IG1hdGNoLCB2YXJpYWJsZU5hbWUsIGZpZWxkUGF0aCwgZm9ybWF0OiBmbXQsIHZhbHVlOiBtYXRjaCwgZm91bmQ6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGZvcm1hdFZhbHVlKHNjZW5lT2JqZWN0LCB2YXJpYWJsZSwgdmFyaWFibGUuZ2V0VmFsdWUoZmllbGRQYXRoKSwgZm10KTtcbiAgICBpZiAoaW50ZXJwb2xhdGlvbnMpIHtcbiAgICAgIGludGVycG9sYXRpb25zLnB1c2goeyBtYXRjaCwgdmFyaWFibGVOYW1lLCBmaWVsZFBhdGgsIGZvcm1hdDogZm10LCB2YWx1ZSwgZm91bmQ6IHZhbHVlICE9PSBtYXRjaCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGxvb2t1cEZvcm1hdFZhcmlhYmxlKG5hbWUsIG1hdGNoLCBzY29wZWRWYXJzLCBzY2VuZU9iamVjdCkge1xuICBpZiAoc2NvcGVkVmFycyAmJiBzY29wZWRWYXJzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgY29uc3Qgc2NvcGVkVmFyID0gc2NvcGVkVmFyc1tuYW1lXTtcbiAgICBpZiAoc2NvcGVkVmFyKSB7XG4gICAgICByZXR1cm4gZ2V0U2NlbmVWYXJpYWJsZUZvclNjb3BlZFZhcihuYW1lLCBzY29wZWRWYXIpO1xuICAgIH1cbiAgfVxuICBjb25zdCB2YXJpYWJsZSA9IGxvb2t1cFZhcmlhYmxlKG5hbWUsIHNjZW5lT2JqZWN0KTtcbiAgaWYgKHZhcmlhYmxlKSB7XG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG4gIGNvbnN0IE1hY3JvID0gbWFjcm9zSW5kZXguZ2V0KG5hbWUpO1xuICBpZiAoTWFjcm8pIHtcbiAgICByZXR1cm4gbmV3IE1hY3JvKG5hbWUsIHNjZW5lT2JqZWN0LCBtYXRjaCwgc2NvcGVkVmFycyk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBmb3JtYXRWYWx1ZShjb250ZXh0LCB2YXJpYWJsZSwgdmFsdWUsIGZvcm1hdE5hbWVPckZuKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgaWYgKGlzQ3VzdG9tVmFyaWFibGVWYWx1ZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc2NlbmVJbnRlcnBvbGF0b3IoY29udGV4dCwgdmFsdWUuZm9ybWF0dGVyKGZvcm1hdE5hbWVPckZuKSk7XG4gIH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICB2YWx1ZSA9IGAke3ZhbHVlfWA7XG4gIH1cbiAgaWYgKHR5cGVvZiBmb3JtYXROYW1lT3JGbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGZvcm1hdE5hbWVPckZuKHZhbHVlLCB7XG4gICAgICBuYW1lOiB2YXJpYWJsZS5zdGF0ZS5uYW1lLFxuICAgICAgdHlwZTogdmFyaWFibGUuc3RhdGUudHlwZSxcbiAgICAgIG11bHRpOiB2YXJpYWJsZS5zdGF0ZS5pc011bHRpLFxuICAgICAgaW5jbHVkZUFsbDogdmFyaWFibGUuc3RhdGUuaW5jbHVkZUFsbFxuICAgIH0pO1xuICB9XG4gIGxldCBhcmdzID0gW107XG4gIGlmICghZm9ybWF0TmFtZU9yRm4pIHtcbiAgICBmb3JtYXROYW1lT3JGbiA9IFZhcmlhYmxlRm9ybWF0SUQuR2xvYjtcbiAgfSBlbHNlIHtcbiAgICBhcmdzID0gZm9ybWF0TmFtZU9yRm4uc3BsaXQoXCI6XCIpO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGZvcm1hdE5hbWVPckZuID0gYXJnc1swXTtcbiAgICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW107XG4gICAgfVxuICB9XG4gIGxldCBmb3JtYXR0ZXIgPSBmb3JtYXRSZWdpc3RyeS5nZXRJZkV4aXN0cyhmb3JtYXROYW1lT3JGbik7XG4gIGlmICghZm9ybWF0dGVyKSB7XG4gICAgY29uc29sZS5lcnJvcihgVmFyaWFibGUgZm9ybWF0ICR7Zm9ybWF0TmFtZU9yRm59IG5vdCBmb3VuZC4gVXNpbmcgZ2xvYiBmb3JtYXQgYXMgZmFsbGJhY2suYCk7XG4gICAgZm9ybWF0dGVyID0gZm9ybWF0UmVnaXN0cnkuZ2V0KFZhcmlhYmxlRm9ybWF0SUQuR2xvYik7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXR0ZXIodmFsdWUsIGFyZ3MsIHZhcmlhYmxlKTtcbn1cblxuZXhwb3J0IHsgc2NlbmVJbnRlcnBvbGF0b3IgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJObGJtVkpiblJsY25CdmJHRjBiM0l1YW5NaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OTJZWEpwWVdKc1pYTXZhVzUwWlhKd2IyeGhkR2x2Ymk5elkyVnVaVWx1ZEdWeWNHOXNZWFJ2Y2k1MGN5SmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJUWTI5d1pXUldZWEp6SUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2WkdGMFlTYzdYRzVwYlhCdmNuUWdleUJXWVhKcFlXSnNaVWx1ZEdWeWNHOXNZWFJwYjI0Z2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5eWRXNTBhVzFsSnp0Y2JtbHRjRzl5ZENCN0lGWmhjbWxoWW14bFZIbHdaU3dnVm1GeWFXRmliR1ZHYjNKdFlYUkpSQ0I5SUdaeWIyMGdKMEJuY21GbVlXNWhMM05qYUdWdFlTYzdYRzVjYm1sdGNHOXlkQ0I3SUZOalpXNWxUMkpxWldOMElIMGdabkp2YlNBbkxpNHZMaTR2WTI5eVpTOTBlWEJsY3ljN1hHNXBiWEJ2Y25RZ2V5QkpiblJsY25CdmJHRjBhVzl1Um05eWJXRjBVR0Z5WVcxbGRHVnlMQ0JwYzBOMWMzUnZiVlpoY21saFlteGxWbUZzZFdVc0lGWmhjbWxoWW14bFZtRnNkV1VnZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1Y2JtbHRjRzl5ZENCN0lHZGxkRk5qWlc1bFZtRnlhV0ZpYkdWR2IzSlRZMjl3WldSV1lYSWdmU0JtY205dElDY3VMMU5qYjNCbFpGWmhjbk5XWVhKcFlXSnNaU2M3WEc1cGJYQnZjblFnZXlCbWIzSnRZWFJTWldkcGMzUnllU3dnUm05eWJXRjBWbUZ5YVdGaWJHVWdmU0JtY205dElDY3VMMlp2Y20xaGRGSmxaMmx6ZEhKNUp6dGNibWx0Y0c5eWRDQjdJRlpCVWtsQlFreEZYMUpGUjBWWUlIMGdabkp2YlNBbkxpNHZZMjl1YzNSaGJuUnpKenRjYm1sdGNHOXlkQ0I3SUd4dmIydDFjRlpoY21saFlteGxJSDBnWm5KdmJTQW5MaTR2Ykc5dmEzVndWbUZ5YVdGaWJHVW5PMXh1YVcxd2IzSjBJSHNnYldGamNtOXpTVzVrWlhnZ2ZTQm1jbTl0SUNjdUxpOXRZV055YjNNbk8xeHVYRzR2S2lwY2JpQXFJRlJvYVhNZ1puVnVZM1JwYjI0Z2QybHNiQ0IwY25rZ2RHOGdjR0Z5YzJVZ1lXNWtJSEpsY0d4aFkyVWdZVzU1SUhaaGNtbGhZbXhsSUdWNGNISmxjM05wYjI0Z1ptOTFibVFnYVc0Z2RHaGxJSFJoY21kbGRDQnpkSEpwYm1jdUlGUm9aU0J6WTJWdVpVOWlhbVZqZENCM2FXeHNJR0psSUhWelpXUWdZWE1nZEdobElITnZkWEpqWlNCdlppQjJZWEpwWVdKc1pYTXVJRWwwSUhkcGJHeGNiaUFxSUhWelpTQjBhR1VnYzJObGJtVWdaM0poY0dnZ1lXNWtJSGRoYkdzZ2RYQWdkR2hsSUhCaGNtVnVkQ0IwY21WbElIVnVkR2xzSUdsMElHWnBibVJ6SUhSb1pTQmpiRzl6WlhOMElIWmhjbWxoWW14bExseHVJQ3BjYmlBcUlGTmpiM0JsWkZaaGNuTWdjMmh2ZFd4a0lHNXZkQ0J5WldGc2JIa2dZbVVnYm1WbFpHVmtJRzExWTJnZ2FXNGdkR2hsSUc1bGR5QnpZMlZ1WlNCaGNtTm9hWFJsWTNSMWNtVWdZWE1nZEdobGVTQmpZVzRnWW1VZ1lXUmtaV1FnZEc4Z2RHaGxJR3h2WTJGc0lITmpaVzVsSUc1dlpHVWdhVzV6ZEdWaFpDQnZaaUJ3WVhOelpXUWdhVzRnYVc1MFpYSndiMnhoZEdVZ1puVnVZM1JwYjI0dVhHNGdLaUJKZENCcGN5QnpkWEJ3YjNKMFpXUWdhR1Z5WlNCbWIzSWdZbUZqYTNkaGNtUWdZMjl0Y0dGMGFXSnBiR2wwZVNCaGJtUWdjMjl0WlNCbFpHZGxJR05oYzJWeklIZG9aWEpsSUdGa1pHbHVaeUJ6WTI5d1pXUWdkbUZ5Y3lCMGJ5QnNiMk5oYkNCelkyVnVaU0J1YjJSbElHbHpJRzV2ZENCd2NtRmpkR2xqWVd3dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6WTJWdVpVbHVkR1Z5Y0c5c1lYUnZjaWhjYmlBZ2MyTmxibVZQWW1wbFkzUTZJRk5qWlc1bFQySnFaV04wTEZ4dUlDQjBZWEpuWlhRNklITjBjbWx1WnlCOElIVnVaR1ZtYVc1bFpDQjhJRzUxYkd3c1hHNGdJSE5qYjNCbFpGWmhjbk0vT2lCVFkyOXdaV1JXWVhKekxGeHVJQ0JtYjNKdFlYUS9PaUJKYm5SbGNuQnZiR0YwYVc5dVJtOXliV0YwVUdGeVlXMWxkR1Z5TEZ4dUlDQnBiblJsY25CdmJHRjBhVzl1Y3o4NklGWmhjbWxoWW14bFNXNTBaWEp3YjJ4aGRHbHZibHRkWEc0cE9pQnpkSEpwYm1jZ2UxeHVJQ0JwWmlBb0lYUmhjbWRsZENCOGZDQjBlWEJsYjJZZ2RHRnlaMlYwSUNFOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCMFlYSm5aWFFnUHo4Z0p5YzdYRzRnSUgxY2JseHVJQ0JXUVZKSlFVSk1SVjlTUlVkRldDNXNZWE4wU1c1a1pYZ2dQU0F3TzF4dVhHNGdJSEpsZEhWeWJpQjBZWEpuWlhRdWNtVndiR0ZqWlNoV1FWSkpRVUpNUlY5U1JVZEZXQ3dnS0cxaGRHTm9MQ0IyWVhJeExDQjJZWEl5TENCbWJYUXlMQ0IyWVhJekxDQm1hV1ZzWkZCaGRHZ3NJR1p0ZERNcElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCMllYSnBZV0pzWlU1aGJXVWdQU0IyWVhJeElIeDhJSFpoY2pJZ2ZId2dkbUZ5TXp0Y2JpQWdJQ0JqYjI1emRDQm1iWFFnUFNCbWJYUXlJSHg4SUdadGRETWdmSHdnWm05eWJXRjBPMXh1SUNBZ0lHTnZibk4wSUhaaGNtbGhZbXhsSUQwZ2JHOXZhM1Z3Um05eWJXRjBWbUZ5YVdGaWJHVW9kbUZ5YVdGaWJHVk9ZVzFsTENCdFlYUmphQ3dnYzJOdmNHVmtWbUZ5Y3l3Z2MyTmxibVZQWW1wbFkzUXBPMXh1WEc0Z0lDQWdhV1lnS0NGMllYSnBZV0pzWlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR2x1ZEdWeWNHOXNZWFJwYjI1ektTQjdYRzRnSUNBZ0lDQWdJQzh2SUZObGRDQmdkbUZzZFdWZ0lHVnhkV0ZzSUhSdklHQnRZWFJqYUdBZ1lYTWdaRzlqZFcxbGJuUmxaQ0JwYmlCMGFHVWdZRlpoY21saFlteGxTVzUwWlhKd2IyeGhkR2x2Ym1BZ2FXNTBaWEptWVdObExseHVJQ0FnSUNBZ0lDQnBiblJsY25CdmJHRjBhVzl1Y3k1d2RYTm9LSHNnYldGMFkyZ3NJSFpoY21saFlteGxUbUZ0WlN3Z1ptbGxiR1JRWVhSb0xDQm1iM0p0WVhRNklHWnRkQ3dnZG1Gc2RXVTZJRzFoZEdOb0xDQm1iM1Z1WkRvZ1ptRnNjMlVnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnYldGMFkyZzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnZG1Gc2RXVWdQU0JtYjNKdFlYUldZV3gxWlNoelkyVnVaVTlpYW1WamRDd2dkbUZ5YVdGaWJHVXNJSFpoY21saFlteGxMbWRsZEZaaGJIVmxLR1pwWld4a1VHRjBhQ2tzSUdadGRDazdYRzVjYmlBZ0lDQnBaaUFvYVc1MFpYSndiMnhoZEdsdmJuTXBJSHRjYmlBZ0lDQWdJR2x1ZEdWeWNHOXNZWFJwYjI1ekxuQjFjMmdvZXlCdFlYUmphQ3dnZG1GeWFXRmliR1ZPWVcxbExDQm1hV1ZzWkZCaGRHZ3NJR1p2Y20xaGREb2dabTEwTENCMllXeDFaU3dnWm05MWJtUTZJSFpoYkhWbElDRTlQU0J0WVhSamFDQjlLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RtRnNkV1U3WEc0Z0lIMHBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnNiMjlyZFhCR2IzSnRZWFJXWVhKcFlXSnNaU2hjYmlBZ2JtRnRaVG9nYzNSeWFXNW5MRnh1SUNCdFlYUmphRG9nYzNSeWFXNW5MRnh1SUNCelkyOXdaV1JXWVhKek9pQlRZMjl3WldSV1lYSnpJSHdnZFc1a1pXWnBibVZrTEZ4dUlDQnpZMlZ1WlU5aWFtVmpkRG9nVTJObGJtVlBZbXBsWTNSY2JpazZJRVp2Y20xaGRGWmhjbWxoWW14bElId2diblZzYkNCN1hHNGdJR2xtSUNoelkyOXdaV1JXWVhKeklDWW1JSE5qYjNCbFpGWmhjbk11YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcElIdGNiaUFnSUNCamIyNXpkQ0J6WTI5d1pXUldZWElnUFNCelkyOXdaV1JXWVhKelcyNWhiV1ZkTzF4dVhHNGdJQ0FnYVdZZ0tITmpiM0JsWkZaaGNpa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHZGxkRk5qWlc1bFZtRnlhV0ZpYkdWR2IzSlRZMjl3WldSV1lYSW9ibUZ0WlN3Z2MyTnZjR1ZrVm1GeUtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQmpiMjV6ZENCMllYSnBZV0pzWlNBOUlHeHZiMnQxY0ZaaGNtbGhZbXhsS0c1aGJXVXNJSE5qWlc1bFQySnFaV04wS1R0Y2JpQWdhV1lnS0haaGNtbGhZbXhsS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFpoY21saFlteGxPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUWdUV0ZqY204Z1BTQnRZV055YjNOSmJtUmxlQzVuWlhRb2JtRnRaU2s3WEc0Z0lHbG1JQ2hOWVdOeWJ5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dUV0ZqY204b2JtRnRaU3dnYzJObGJtVlBZbXBsWTNRc0lHMWhkR05vTENCelkyOXdaV1JXWVhKektUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnVkV3hzTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJtYjNKdFlYUldZV3gxWlNoY2JpQWdZMjl1ZEdWNGREb2dVMk5sYm1WUFltcGxZM1FzWEc0Z0lIWmhjbWxoWW14bE9pQkdiM0p0WVhSV1lYSnBZV0pzWlN4Y2JpQWdkbUZzZFdVNklGWmhjbWxoWW14bFZtRnNkV1VnZkNCMWJtUmxabWx1WldRZ2ZDQnVkV3hzTEZ4dUlDQm1iM0p0WVhST1lXMWxUM0pHYmo4NklFbHVkR1Z5Y0c5c1lYUnBiMjVHYjNKdFlYUlFZWEpoYldWMFpYSmNiaWs2SUhOMGNtbHVaeUI3WEc0Z0lHbG1JQ2gyWVd4MVpTQTlQVDBnYm5Wc2JDQjhmQ0IyWVd4MVpTQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2NuTzF4dUlDQjlYRzVjYmlBZ0x5OGdWbUZ5YVdGaWJHVWdZMkZ1SUhKbGRIVnliaUJoSUdOMWMzUnZiU0IyWVd4MVpTQjBhR0YwSUdoaGJtUnNaWE1nWm05eWJXRjBkR2x1WjF4dUlDQXZMeUJVYUdseklHbHpJSFZ6WldaMWJDQm1iM0lnWTNWemRHOXRRV3hzVm1Gc2RXVWdZVzVrSUcxaFkzSnZjeUIwYUdGMElISmxkSFZ5YmlCMllXeDFaWE1nZEdoaGRDQmhjbVVnWVd4eVpXRmtlU0JtYjNKdFlYUjBaV1FnYjNJZ2JtVmxaQ0J6Y0dWamFXRnNJR1p2Y20xaGRIUnBibWRjYmlBZ2FXWWdLR2x6UTNWemRHOXRWbUZ5YVdGaWJHVldZV3gxWlNoMllXeDFaU2twSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjMk5sYm1WSmJuUmxjbkJ2YkdGMGIzSW9ZMjl1ZEdWNGRDd2dkbUZzZFdVdVptOXliV0YwZEdWeUtHWnZjbTFoZEU1aGJXVlBja1p1S1NrN1hHNGdJSDFjYmx4dUlDQXZMeUJwWmlCcGRDZHpJR0Z1SUc5aWFtVmpkQ0IwY21GdWMyWnZjbTBnZG1Gc2RXVWdkRzhnYzNSeWFXNW5YRzRnSUdsbUlDZ2hRWEp5WVhrdWFYTkJjbkpoZVNoMllXeDFaU2tnSmlZZ2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBbmIySnFaV04wSnlrZ2UxeHVJQ0FnSUhaaGJIVmxJRDBnWUNSN2RtRnNkV1Y5WUR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2gwZVhCbGIyWWdabTl5YldGMFRtRnRaVTl5Um00Z1BUMDlJQ2RtZFc1amRHbHZiaWNwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdabTl5YldGMFRtRnRaVTl5Um00b2RtRnNkV1VzSUh0Y2JpQWdJQ0FnSUc1aGJXVTZJSFpoY21saFlteGxMbk4wWVhSbExtNWhiV1VzWEc0Z0lDQWdJQ0IwZVhCbE9pQjJZWEpwWVdKc1pTNXpkR0YwWlM1MGVYQmxJR0Z6SUZaaGNtbGhZbXhsVkhsd1pTeGNiaUFnSUNBZ0lHMTFiSFJwT2lCMllYSnBZV0pzWlM1emRHRjBaUzVwYzAxMWJIUnBMRnh1SUNBZ0lDQWdhVzVqYkhWa1pVRnNiRG9nZG1GeWFXRmliR1V1YzNSaGRHVXVhVzVqYkhWa1pVRnNiQ3hjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUd4bGRDQmhjbWR6T2lCemRISnBibWRiWFNBOUlGdGRPMXh1WEc0Z0lHbG1JQ2doWm05eWJXRjBUbUZ0WlU5eVJtNHBJSHRjYmlBZ0lDQm1iM0p0WVhST1lXMWxUM0pHYmlBOUlGWmhjbWxoWW14bFJtOXliV0YwU1VRdVIyeHZZanRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0F2THlCemIyMWxJR1p2Y20xaGRITWdhR0YyWlNCaGNtZDFiV1Z1ZEhNZ2RHaGhkQ0JqYjIxbElHRm1kR1Z5SUNjNkp5QmphR0Z5WVdOMFpYSmNiaUFnSUNCaGNtZHpJRDBnWm05eWJXRjBUbUZ0WlU5eVJtNHVjM0JzYVhRb0p6b25LVHRjYmlBZ0lDQnBaaUFvWVhKbmN5NXNaVzVuZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0JtYjNKdFlYUk9ZVzFsVDNKR2JpQTlJR0Z5WjNOYk1GMDdYRzRnSUNBZ0lDQmhjbWR6SUQwZ1lYSm5jeTV6YkdsalpTZ3hLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1lYSm5jeUE5SUZ0ZE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHeGxkQ0JtYjNKdFlYUjBaWElnUFNCbWIzSnRZWFJTWldkcGMzUnllUzVuWlhSSlprVjRhWE4wY3lobWIzSnRZWFJPWVcxbFQzSkdiaWs3WEc1Y2JpQWdhV1lnS0NGbWIzSnRZWFIwWlhJcElIdGNiaUFnSUNCamIyNXpiMnhsTG1WeWNtOXlLR0JXWVhKcFlXSnNaU0JtYjNKdFlYUWdKSHRtYjNKdFlYUk9ZVzFsVDNKR2JuMGdibTkwSUdadmRXNWtMaUJWYzJsdVp5Qm5iRzlpSUdadmNtMWhkQ0JoY3lCbVlXeHNZbUZqYXk1Z0tUdGNiaUFnSUNCbWIzSnRZWFIwWlhJZ1BTQm1iM0p0WVhSU1pXZHBjM1J5ZVM1blpYUW9WbUZ5YVdGaWJHVkdiM0p0WVhSSlJDNUhiRzlpS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCbWIzSnRZWFIwWlhJdVptOXliV0YwZEdWeUtIWmhiSFZsTENCaGNtZHpMQ0IyWVhKcFlXSnNaU2s3WEc1OVhHNGlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN1FVRnZRazhzVTBGQlV5eHBRa0ZEWkN4RFFVRkJMRmRCUVVFc1JVRkRRU3hOUVVOQkxFVkJRVUVzVlVGQlFTeEZRVU5CTEZGQlEwRXNZMEZEVVN4RlFVRkJPMEZCUTFJc1JVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlFTeEpRVUZWTEU5QlFVOHNUVUZCUVN4TFFVRlhMRkZCUVZVc1JVRkJRVHRCUVVONlF5eEpRVUZCTEU5QlFVOHNUVUZCVlN4SlFVRkJMRWxCUVVFc1IwRkJRU3hOUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZCTzBGQlFVRXNSMEZEYmtJN1FVRkZRU3hGUVVGQkxHTkJRVUVzUTBGQlpTeFRRVUZaTEVkQlFVRXNRMEZCUVN4RFFVRkJPMEZCUlROQ0xFVkJRVThzVDBGQlFTeE5RVUZCTEVOQlFVOHNUMEZCVVN4RFFVRkJMR05CUVVFc1JVRkJaMElzUTBGQlF5eExRVUZCTEVWQlFVOHNUVUZCVFN4SlFVRk5MRVZCUVVFc1NVRkJRU3hGUVVGTkxFbEJRVTBzUlVGQlFTeFRRVUZCTEVWQlFWY3NTVUZCVXl4TFFVRkJPMEZCUTNoR0xFbEJRVTBzVFVGQlFTeFpRVUZCTEVkQlFXVXNVVUZCVVN4SlFVRlJMRWxCUVVFc1NVRkJRU3hEUVVGQk8wRkJRM0pETEVsQlFVMHNUVUZCUVN4SFFVRkJMRWRCUVUwc1VVRkJVU3hKUVVGUkxFbEJRVUVzVFVGQlFTeERRVUZCTzBGQlF6VkNMRWxCUVVFc1RVRkJUU3hSUVVGWExFZEJRVUVzYjBKQlFVRXNRMEZCY1VJc1dVRkJZeXhGUVVGQkxFdEJRVUVzUlVGQlR5eFpRVUZaTEZkQlFWY3NRMEZCUVN4RFFVRkJPMEZCUld4R0xFbEJRVUVzU1VGQlNTeERRVUZETEZGQlFWVXNSVUZCUVR0QlFVTmlMRTFCUVVFc1NVRkJTU3hqUVVGblFpeEZRVUZCTzBGQlJXeENMRkZCUVdVc1kwRkJRU3hEUVVGQkxFbEJRVUVzUTBGQlN5eEZRVUZGTEV0QlFVRXNSVUZCVHl4WlFVRmpMRVZCUVVFc1UwRkJRU3hGUVVGWExFMUJRVkVzUlVGQlFTeEhRVUZCTEVWQlFVc3NTMEZCVHl4RlFVRkJMRXRCUVVFc1JVRkJUeXhMUVVGUExFVkJRVUVzUzBGQlFTeEZRVUZQTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTJwSE8wRkJRMEVzVFVGQlR5eFBRVUZCTEV0QlFVRXNRMEZCUVR0QlFVRkJMRXRCUTFRN1FVRkZRU3hKUVVGTkxFMUJRVUVzUzBGQlFTeEhRVUZSTEZsQlFWa3NWMEZCWVN4RlFVRkJMRkZCUVVFc1JVRkJWU3hUUVVGVExGRkJRVk1zUTBGQlFTeFRRVUZUTEVkQlFVY3NSMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkZiRVlzU1VGQlFTeEpRVUZKTEdOQlFXZENMRVZCUVVFN1FVRkRiRUlzVFVGQlpTeGpRVUZCTEVOQlFVRXNTVUZCUVN4RFFVRkxMRVZCUVVVc1MwRkJRU3hGUVVGUExGbEJRV01zUlVGQlFTeFRRVUZCTEVWQlFWY3NUVUZCVVN4RlFVRkJMRWRCUVVFc1JVRkJTeXhMUVVGUExFVkJRVUVzUzBGQlFTeEZRVUZQTEV0QlFWVXNTMEZCUVN4TFFVRkJMRVZCUVU4c1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGNFYzdRVUZGUVN4SlFVRlBMRTlCUVVFc1MwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFVpeERRVUZCTEVOQlFVRTdRVUZEU0N4RFFVRkJPMEZCUlVFc1UwRkJVeXh2UWtGRFVDeERRVUZCTEVsQlFVRXNSVUZEUVN4TFFVTkJMRVZCUVVFc1ZVRkJRU3hGUVVOQkxGZEJRM1ZDTEVWQlFVRTdRVUZEZGtJc1JVRkJRU3hKUVVGSkxGVkJRV01zU1VGQlFTeFZRVUZCTEVOQlFWY3NZMEZCWlN4RFFVRkJMRWxCUVVrc1EwRkJSeXhGUVVGQk8wRkJRMnBFTEVsQlFVRXNUVUZCVFN4WlFVRlpMRlZCUVZjc1EwRkJRU3hKUVVGQkxFTkJRVUVzUTBGQlFUdEJRVVUzUWl4SlFVRkJMRWxCUVVrc1UwRkJWeXhGUVVGQk8wRkJRMklzVFVGQlR5eFBRVUZCTERSQ1FVRkJMRU5CUVRaQ0xFMUJRVTBzVTBGQlV5eERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTnlSRHRCUVVGQkxFZEJRMFk3UVVGRlFTeEZRVUZOTEUxQlFVRXNVVUZCUVN4SFFVRlhMR05CUVdVc1EwRkJRU3hKUVVGQkxFVkJRVTBzVjBGQlZ5eERRVUZCTEVOQlFVRTdRVUZEYWtRc1JVRkJRU3hKUVVGSkxGRkJRVlVzUlVGQlFUdEJRVU5hTEVsQlFVOHNUMEZCUVN4UlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJSVUVzUlVGQlRTeE5RVUZCTEV0QlFVRXNSMEZCVVN4WFFVRlpMRU5CUVVFc1IwRkJRU3hEUVVGSkxFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlEyeERMRVZCUVVFc1NVRkJTU3hMUVVGUExFVkJRVUU3UVVGRFZDeEpRVUZCTEU5QlFVOHNTVUZCU1N4TFFVRkJMRU5CUVUwc1NVRkJUU3hGUVVGQkxGZEJRVUVzUlVGQllTeFBRVUZQTEZWQlFWVXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRka1E3UVVGRlFTeEZRVUZQTEU5QlFVRXNTVUZCUVN4RFFVRkJPMEZCUTFRc1EwRkJRVHRCUVVWQkxGTkJRVk1zVjBGRFVDeERRVUZCTEU5QlFVRXNSVUZEUVN4UlFVTkJMRVZCUVVFc1MwRkJRU3hGUVVOQkxHTkJRMUVzUlVGQlFUdEJRVU5TTEVWQlFVa3NTVUZCUVN4TFFVRkJMRXRCUVZVc1NVRkJVU3hKUVVGQkxFdEJRVUVzUzBGQlZTeExRVUZYTEVOQlFVRXNSVUZCUVR0QlFVTjZReXhKUVVGUExFOUJRVUVzUlVGQlFTeERRVUZCTzBGQlFVRXNSMEZEVkR0QlFVbEJMRVZCUVVrc1NVRkJRU3h4UWtGQlFTeERRVUZ6UWl4TFFVRkxMRU5CUVVjc1JVRkJRVHRCUVVOb1F5eEpRVUZCTEU5QlFVOHNhVUpCUVd0Q0xFTkJRVUVzVDBGQlFTeEZRVUZUTEV0QlFVMHNRMEZCUVN4VFFVRkJMRU5CUVZVc1kwRkJZeXhEUVVGRExFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyNUZPMEZCUjBFc1JVRkJRU3hKUVVGSkxFTkJRVU1zUzBGQlRTeERRVUZCTEU5QlFVRXNRMEZCVVN4TFFVRkxMRU5CUVVzc1NVRkJRU3hQUVVGUExGVkJRVlVzVVVGQlZTeEZRVUZCTzBGQlEzUkVMRWxCUVVFc1MwRkJRU3hIUVVGUkxFTkJRVWNzUlVGQlFTeExRVUZCTEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRZanRCUVVWQkxFVkJRVWtzU1VGQlFTeFBRVUZQTEcxQ1FVRnRRaXhWUVVGWkxFVkJRVUU3UVVGRGVFTXNTVUZCUVN4UFFVRlBMR1ZCUVdVc1MwRkJUeXhGUVVGQk8wRkJRVUVzVFVGRE0wSXNTVUZCUVN4RlFVRk5MRk5CUVZNc1MwRkJUU3hEUVVGQkxFbEJRVUU3UVVGQlFTeE5RVU55UWl4SlFVRkJMRVZCUVUwc1UwRkJVeXhMUVVGTkxFTkJRVUVzU1VGQlFUdEJRVUZCTEUxQlEzSkNMRXRCUVVFc1JVRkJUeXhUUVVGVExFdEJRVTBzUTBGQlFTeFBRVUZCTzBGQlFVRXNUVUZEZEVJc1ZVRkJRU3hGUVVGWkxGTkJRVk1zUzBGQlRTeERRVUZCTEZWQlFVRTdRVUZCUVN4TFFVTTFRaXhEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5JTzBGQlJVRXNSVUZCUVN4SlFVRkpMRTlCUVdsQ0xFVkJRVU1zUTBGQlFUdEJRVVYwUWl4RlFVRkJMRWxCUVVrc1EwRkJReXhqUVVGblFpeEZRVUZCTzBGQlEyNUNMRWxCUVVFc1kwRkJRU3hIUVVGcFFpeG5Ra0ZCYVVJc1EwRkJRU3hKUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU0zUWl4TlFVRkJPMEZCUlV3c1NVRkJUeXhKUVVGQkxFZEJRVUVzWTBGQlFTeERRVUZsTEUxQlFVMHNSMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkRMMElzU1VGQlNTeEpRVUZCTEVsQlFVRXNRMEZCU3l4VFFVRlRMRU5CUVVjc1JVRkJRVHRCUVVOdVFpeE5RVUZCTEdOQlFVRXNSMEZCYVVJc1NVRkJTeXhEUVVGQkxFTkJRVUVzUTBGQlFTeERRVUZCTzBGQlEzUkNMRTFCUVU4c1NVRkJRU3hIUVVGQkxFbEJRVUVzUTBGQlN5eE5RVUZOTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRaQ3hOUVVGQk8wRkJRMHdzVFVGQlFTeEpRVUZCTEVkQlFVOHNSVUZCUXl4RFFVRkJPMEZCUVVFc1MwRkRWanRCUVVGQkxFZEJRMFk3UVVGRlFTeEZRVUZKTEVsQlFVRXNVMEZCUVN4SFFVRlpMR05CUVdVc1EwRkJRU3hYUVVGQkxFTkJRVmtzWTBGQll5eERRVUZCTEVOQlFVRTdRVUZGZWtRc1JVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlZ5eEZRVUZCTzBGQlEyUXNTVUZCVVN4UFFVRkJMRU5CUVVFc1MwRkJRU3hEUVVGTkxHMUNRVUZ0UWl4alFVRXdSQ3hEUVVGQkxEQkRRVUZCTEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUXpOR0xFbEJRVmtzVTBGQlFTeEhRVUZCTEdOQlFVRXNRMEZCWlN4SFFVRkpMRU5CUVVFc1owSkJRVUVzUTBGQmFVSXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOMFJEdEJRVVZCTEVWQlFVRXNUMEZCVHl4VFFVRlZMRU5CUVVFc1UwRkJRU3hEUVVGVkxFdEJRVThzUlVGQlFTeEpRVUZCTEVWQlFVMHNVVUZCVVN4RFFVRkJMRU5CUVVFN1FVRkRiRVE3T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQW9CTyxTQUFTLGlCQUNkLENBQUEsV0FBQSxFQUNBLE1BQ0EsRUFBQSxVQUFBLEVBQ0EsUUFDQSxjQUNRLEVBQUE7QUFDUixFQUFBLElBQUksQ0FBQyxNQUFBLElBQVUsT0FBTyxNQUFBLEtBQVcsUUFBVSxFQUFBO0FBQ3pDLElBQU8sT0FBQSxNQUFBLElBQVUsT0FBQSxNQUFBLEdBQUEsRUFBQSxDQUFBO0FBQUEsR0FBQTtBQUduQixFQUFBLGNBQUEsQ0FBZSxTQUFZLEdBQUEsQ0FBQSxDQUFBO0FBRXBCLEVBQUEsT0FBQSxNQUFBLENBQU8sT0FBUSxDQUFBLGNBQUEsRUFBZ0IsQ0FBQyxLQUFBLEVBQU8sTUFBTSxJQUFNLEVBQUEsSUFBQSxFQUFNLElBQU0sRUFBQSxTQUFBLEVBQVcsSUFBUyxLQUFBO0FBQ2xGLElBQUEsTUFBQSxZQUFBLEdBQWUsUUFBUSxJQUFRLElBQUEsSUFBQSxDQUFBO0FBQy9CLElBQUEsTUFBQSxHQUFBLEdBQU0sUUFBUSxJQUFRLElBQUEsTUFBQSxDQUFBO0FBQzVCLElBQUEsTUFBTSxRQUFXLEdBQUEsb0JBQUEsQ0FBcUIsWUFBYyxFQUFBLEtBQUEsRUFBTyxZQUFZLFdBQVcsQ0FBQSxDQUFBO0FBRWxGLElBQUEsSUFBSSxDQUFDLFFBQVUsRUFBQTtBQUNiLE1BQUEsSUFBSSxjQUFnQixFQUFBO0FBRUgsUUFBQSxjQUFBLENBQUEsSUFBQSxDQUFLLEVBQUUsS0FBQSxFQUFPLFlBQWMsRUFBQSxTQUFBLEVBQVcsTUFBUSxFQUFBLEdBQUEsRUFBSyxLQUFPLEVBQUEsS0FBQSxFQUFP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
@@ -1,20 +0,0 @@
1
- function lookupVariable(name, sceneObject) {
2
- const variables = sceneObject.state.$variables;
3
- if (!variables) {
4
- if (sceneObject.parent) {
5
- return lookupVariable(name, sceneObject.parent);
6
- } else {
7
- return null;
8
- }
9
- }
10
- const found = variables.getByName(name);
11
- if (found) {
12
- return found;
13
- } else if (sceneObject.parent) {
14
- return lookupVariable(name, sceneObject.parent);
15
- }
16
- return null;
17
- }
18
-
19
- export { lookupVariable };
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwVmFyaWFibGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3ZhcmlhYmxlcy9sb29rdXBWYXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBsb29rdXBWYXJpYWJsZShuYW1lLCBzY2VuZU9iamVjdCkge1xuICBjb25zdCB2YXJpYWJsZXMgPSBzY2VuZU9iamVjdC5zdGF0ZS4kdmFyaWFibGVzO1xuICBpZiAoIXZhcmlhYmxlcykge1xuICAgIGlmIChzY2VuZU9iamVjdC5wYXJlbnQpIHtcbiAgICAgIHJldHVybiBsb29rdXBWYXJpYWJsZShuYW1lLCBzY2VuZU9iamVjdC5wYXJlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgY29uc3QgZm91bmQgPSB2YXJpYWJsZXMuZ2V0QnlOYW1lKG5hbWUpO1xuICBpZiAoZm91bmQpIHtcbiAgICByZXR1cm4gZm91bmQ7XG4gIH0gZWxzZSBpZiAoc2NlbmVPYmplY3QucGFyZW50KSB7XG4gICAgcmV0dXJuIGxvb2t1cFZhcmlhYmxlKG5hbWUsIHNjZW5lT2JqZWN0LnBhcmVudCk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCB7IGxvb2t1cFZhcmlhYmxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHOXZhM1Z3Vm1GeWFXRmliR1V1YW5NaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMM055WXk5MllYSnBZV0pzWlhNdmJHOXZhM1Z3Vm1GeWFXRmliR1V1ZEhNaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dVMk5sYm1WUFltcGxZM1FnZlNCbWNtOXRJQ2N1TGk5amIzSmxMM1I1Y0dWekp6dGNibWx0Y0c5eWRDQjdJRk5qWlc1bFZtRnlhV0ZpYkdVZ2ZTQm1jbTl0SUNjdUwzUjVjR1Z6Snp0Y2JseHVMeW9xWEc0Z0tpQlhhV3hzSUhkaGJHc2dkR2hsSUhOalpXNWxJRzlpYW1WamRDQm5jbUZ3YUNCMWNDQjBieUIwYUdVZ2NtOXZkQ0JzYjI5cmFXNW5JR1p2Y2lCMGFHVWdabWx5YzNRZ2RtRnlhV0ZpYkdVZ2QybDBhQ0IwYUdVZ2MzQmxZMmxtYVdWa0lHNWhiV1ZjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHeHZiMnQxY0ZaaGNtbGhZbXhsS0c1aGJXVTZJSE4wY21sdVp5d2djMk5sYm1WUFltcGxZM1E2SUZOalpXNWxUMkpxWldOMEtUb2dVMk5sYm1WV1lYSnBZV0pzWlNCOElHNTFiR3dnZTF4dUlDQmpiMjV6ZENCMllYSnBZV0pzWlhNZ1BTQnpZMlZ1WlU5aWFtVmpkQzV6ZEdGMFpTNGtkbUZ5YVdGaWJHVnpPMXh1SUNCcFppQW9JWFpoY21saFlteGxjeWtnZTF4dUlDQWdJR2xtSUNoelkyVnVaVTlpYW1WamRDNXdZWEpsYm5RcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCc2IyOXJkWEJXWVhKcFlXSnNaU2h1WVcxbExDQnpZMlZ1WlU5aWFtVmpkQzV3WVhKbGJuUXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQmpiMjV6ZENCbWIzVnVaQ0E5SUhaaGNtbGhZbXhsY3k1blpYUkNlVTVoYldVb2JtRnRaU2s3WEc0Z0lHbG1JQ2htYjNWdVpDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCbWIzVnVaRHRjYmlBZ2ZTQmxiSE5sSUdsbUlDaHpZMlZ1WlU5aWFtVmpkQzV3WVhKbGJuUXBJSHRjYmlBZ0lDQnlaWFIxY200Z2JHOXZhM1Z3Vm1GeWFXRmliR1VvYm1GdFpTd2djMk5sYm1WUFltcGxZM1F1Y0dGeVpXNTBLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ1ZFd4c08xeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVUxblFpeFRRVUZCTEdOQlFVRXNRMEZCWlN4TlFVRmpMRmRCUVdkRUxFVkJRVUU3UVVGRE0wWXNSVUZCVFN4TlFVRkJMRk5CUVVFc1IwRkJXU3haUVVGWkxFdEJRVTBzUTBGQlFTeFZRVUZCTEVOQlFVRTdRVUZEY0VNc1JVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlZ5eEZRVUZCTzBGQlEyUXNTVUZCUVN4SlFVRkpMRmxCUVZrc1RVRkJVU3hGUVVGQk8wRkJRM1JDTEUxQlFVOHNUMEZCUVN4alFVRkJMRU5CUVdVc1NVRkJUU3hGUVVGQkxGZEJRVUVzUTBGQldTeE5RVUZOTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTNwRExFMUJRVUU3UVVGRFRDeE5RVUZQTEU5QlFVRXNTVUZCUVN4RFFVRkJPMEZCUVVFc1MwRkRWRHRCUVVGQkxFZEJRMFk3UVVGRlFTeEZRVUZOTEUxQlFVRXNTMEZCUVN4SFFVRlJMRk5CUVZVc1EwRkJRU3hUUVVGQkxFTkJRVlVzU1VGQlNTeERRVUZCTEVOQlFVRTdRVUZEZEVNc1JVRkJRU3hKUVVGSkxFdEJRVThzUlVGQlFUdEJRVU5VTEVsQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVUxFMUJRVUVzU1VGQlZ5eFpRVUZaTEUxQlFWRXNSVUZCUVR0QlFVTTNRaXhKUVVGUExFOUJRVUVzWTBGQlFTeERRVUZsTEVsQlFVMHNSVUZCUVN4WFFVRkJMRU5CUVZrc1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5vUkR0QlFVVkJMRVZCUVU4c1QwRkJRU3hKUVVGQkxFTkJRVUU3UVVGRFZEczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1nQixTQUFBLGNBQUEsQ0FBZSxNQUFjLFdBQWdELEVBQUE7QUFDckYsRUFBQSxNQUFBLFNBQUEsR0FBWSxZQUFZLEtBQU0sQ0FBQSxVQUFBLENBQUE7QUFDcEMsRUFBQSxJQUFJLENBQUMsU0FBVyxFQUFBO0FBQ2QsSUFBQSxJQUFJLFlBQVksTUFBUSxFQUFBO0FBQ2YsTUFBQSxPQUFBLGNBQUEsQ0FBZSxJQUFNLEVBQUEsV0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBO0tBQ3pDLE1BQUE7QUFDRSxNQUFBLE9BQUEsSUFBQSxDQUFBO0FBQUEsS0FBQTtBQUNULEdBQUE7QUFHSSxFQUFBLE1BQUEsS0FBQSxHQUFRLFNBQVUsQ0FBQSxTQUFBLENBQVUsSUFBSSxDQUFBLENBQUE7QUFDdEMsRUFBQSxJQUFJLEtBQU8sRUFBQTtBQUNGLElBQUEsT0FBQSxLQUFBLENBQUE7QUFBQSxHQUFBLE1BQUEsSUFDRSxZQUFZLE1BQVEsRUFBQTtBQUN0QixJQUFBLE9BQUEsY0FBQSxDQUFlLElBQU0sRUFBQSxXQUFBLENBQVksTUFBTSxDQUFBLENBQUE7QUFBQSxHQUFBO0FBR3pDLEVBQUEsT0FBQSxJQUFBLENBQUE7QUFDVDs7OzsifQ==