@jsenv/plugin-react 0.0.1 → 0.0.4

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 (159) hide show
  1. package/package.json +15 -9
  2. package/script/test/test.mjs +0 -14
  3. package/test/react_build/client/.jsenv/build/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.js +0 -2438
  4. package/test/react_build/client/.jsenv/build/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-runtime.js +0 -1332
  5. package/test/react_build/client/.jsenv/build/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.js +0 -27173
  6. package/test/react_build/client/.jsenv/build/app.jsx +0 -6
  7. package/test/react_build/client/.jsenv/build/main.html +0 -15
  8. package/test/react_build/client/.jsenv/build/main.html@L14-L16.js +0 -1
  9. package/test/react_build/client/.jsenv/build/main.html@L8-L12.js +0 -3
  10. package/test/react_build/client/.jsenv/build/main.jsx +0 -22
  11. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.js +0 -2482
  12. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.js__compile_info__.json +0 -22
  13. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.map +0 -1
  14. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-runtime.js +0 -1347
  15. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-runtime.js__compile_info__.json +0 -22
  16. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-runtime.map +0 -1
  17. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.js +0 -27410
  18. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.js__compile_info__.json +0 -38
  19. package/test/react_build/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.map +0 -1
  20. package/test/react_build/client/.jsenv/postbuild/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/test/react_build/dist/js/app.es5.js +0 -17
  21. package/test/react_build/client/.jsenv/postbuild/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/test/react_build/dist/js/main.es5.js +0 -30944
  22. package/test/react_build/client/.jsenv/postbuild/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/test/react_build/dist/js/main.html@L14-L16.es5.js +0 -10
  23. package/test/react_build/client/.jsenv/postbuild/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/test/react_build/dist/js/s.js +0 -777
  24. package/test/react_build/client/.jsenv/postbuild/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/test/react_build/dist/main.html +0 -25
  25. package/test/react_build/client/.jsenv/postbuild/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/test/react_build/dist/main.html@L8-L12.js +0 -3
  26. package/test/react_build/client/app.jsx +0 -3
  27. package/test/react_build/client/main.html +0 -20
  28. package/test/react_build/client/main.jsx +0 -9
  29. package/test/react_build/dist/asset-manifest.json +0 -8
  30. package/test/react_build/dist/js/app.es5.js +0 -17
  31. package/test/react_build/dist/js/main.es5.js +0 -30944
  32. package/test/react_build/dist/js/s.js +0 -777
  33. package/test/react_build/dist/main.html +0 -35
  34. package/test/react_build/react_build.test.mjs +0 -57
  35. package/test/react_refresh/client/.jsenv/build/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.js +0 -2438
  36. package/test/react_refresh/client/.jsenv/build/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-runtime.js +0 -1332
  37. package/test/react_refresh/client/.jsenv/build/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.js +0 -27165
  38. package/test/react_refresh/client/.jsenv/build/app.jsx +0 -24
  39. package/test/react_refresh/client/.jsenv/build/index.html +0 -12
  40. package/test/react_refresh/client/.jsenv/build/main.jsx +0 -8
  41. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.js +0 -2482
  42. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.js__compile_info__.json +0 -21
  43. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.map +0 -1
  44. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-dev-runtime.js +0 -1328
  45. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-dev-runtime.js__compile_info__.json +0 -21
  46. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-dev-runtime.map +0 -1
  47. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-runtime.js +0 -1347
  48. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-runtime.js__compile_info__.json +0 -22
  49. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-runtime.map +0 -1
  50. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.js +0 -27410
  51. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.js__compile_info__.json +0 -37
  52. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.map +0 -1
  53. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-refresh/runtime.js +0 -694
  54. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-refresh/runtime.js__compile_info__.json +0 -17
  55. package/test/react_refresh/client/.jsenv/cjs_to_esm/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-refresh/runtime.map +0 -1
  56. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/plugin-preact/src/client/preact_refresh.js +0 -38
  57. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/plugin-preact/src/client/preact_refresh.js.map +0 -9
  58. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/plugin-react/src/client/react_refresh.js +0 -35
  59. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/plugin-react/src/client/react_refresh.js.map +0 -27
  60. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/index.js +0 -3
  61. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/index.js.map +0 -9
  62. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/decompose.js +0 -405
  63. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/decompose.js.map +0 -9
  64. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/escapeString.js +0 -28
  65. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/escapeString.js.map +0 -19
  66. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/global-value-path.js +0 -60
  67. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/global-value-path.js.map +0 -9
  68. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/isComposite.js +0 -18
  69. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/isComposite.js.map +0 -12
  70. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/sortRecipe.js +0 -76
  71. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/sortRecipe.js.map +0 -31
  72. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/uneval.js +0 -212
  73. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/uneval.js.map +0 -9
  74. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/utils/event_source/event_source.js +0 -197
  75. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/utils/event_source/event_source.js.map +0 -71
  76. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/utils/html_ast/html_attribute_src_set.js +0 -19
  77. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/utils/html_ast/html_attribute_src_set.js.map +0 -23
  78. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/computeKey.js +0 -38
  79. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/computeKey.js.map +0 -9
  80. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/constants.js +0 -13
  81. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/constants.js.map +0 -22
  82. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/index.js +0 -206
  83. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/index.js.map +0 -9
  84. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/catchError.js +0 -17
  85. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/catchError.js.map +0 -9
  86. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/debounceRendering.js +0 -21
  87. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/debounceRendering.js.map +0 -9
  88. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/signaturesForType.js +0 -2
  89. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/signaturesForType.js.map +0 -11
  90. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/unmount.js +0 -20
  91. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/unmount.js.map +0 -9
  92. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/vnode.js +0 -46
  93. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/vnode.js.map +0 -9
  94. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/vnodesForComponent.js +0 -3
  95. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/core/src/runtime/vnodesForComponent.js.map +0 -12
  96. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/utils/src/index.js +0 -43
  97. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@prefresh/utils/src/index.js.map +0 -33
  98. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/compat/dist/compat.module.js +0 -408
  99. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/compat/dist/compat.module.js.map +0 -229
  100. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/debug/dist/debug.module.js +0 -2
  101. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/debug/dist/debug.module.js.map +0 -135
  102. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/devtools/dist/devtools.module.js +0 -2
  103. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/devtools/dist/devtools.module.js.map +0 -20
  104. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/dist/preact.module.js +0 -2
  105. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/dist/preact.module.js.map +0 -231
  106. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/hooks/dist/hooks.module.js +0 -167
  107. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/hooks/dist/hooks.module.js.map +0 -100
  108. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -2
  109. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +0 -24
  110. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.js +0 -2484
  111. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/index.js.map +0 -19
  112. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-dev-runtime.js +0 -1330
  113. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react/jsx-dev-runtime.js.map +0 -13
  114. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.js +0 -27412
  115. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-dom/index.js.map +0 -19
  116. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-refresh/runtime.js +0 -696
  117. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/react-refresh/runtime.js.map +0 -16
  118. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/src/client/react_refresh.js +0 -35
  119. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/src/client/react_refresh.js.map +0 -9
  120. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/src/client/react_refresh_preamble.js +0 -24
  121. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-react/src/client/react_refresh_preamble.js.map +0 -9
  122. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/autoreload_preference.js +0 -11
  123. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/autoreload_preference.js.map +0 -16
  124. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/event_source_client.js +0 -188
  125. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/event_source_client.js.map +0 -9
  126. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/reload.js +0 -103
  127. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/reload.js.map +0 -9
  128. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/url_helpers.js +0 -20
  129. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/url_helpers.js.map +0 -26
  130. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/error_in_document.js +0 -198
  131. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/error_in_document.js.map +0 -70
  132. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/error_in_notification.js +0 -21
  133. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/error_in_notification.js.map +0 -23
  134. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/html_supervisor_installer.js +0 -171
  135. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/html_supervisor_installer.js.map +0 -9
  136. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
  137. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/uneval_exception.js +0 -10
  138. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/uneval_exception.js.map +0 -9
  139. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/import_meta_hot/client/import_meta_hot.js +0 -82
  140. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/import_meta_hot/client/import_meta_hot.js.map +0 -38
  141. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/app.jsx +0 -58
  142. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/app.jsx.map +0 -16
  143. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/count_label.jsx +0 -29
  144. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/count_label.jsx.map +0 -13
  145. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/main.html +0 -26
  146. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/main.html@L3-L8.js +0 -7
  147. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/main.html@L3-L8.js.map +0 -12
  148. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/main.html@L9-L11.js +0 -4
  149. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/main.html@L9-L11.js.map +0 -12
  150. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/main.jsx +0 -16
  151. package/test/react_refresh/client/.jsenv/dev/chrome@101.00/main.jsx.map +0 -18
  152. package/test/react_refresh/client/.jsenv/postbuild/@fs/Users/d.maillard/dev/jsenv/jsenv-core/test/dev_server/react_and_autoreload/dist/index.html +0 -12
  153. package/test/react_refresh/client/.jsenv/postbuild/@fs/Users/d.maillard/dev/jsenv/jsenv-core/test/dev_server/react_and_autoreload/dist/js/main.js +0 -30952
  154. package/test/react_refresh/client/app.jsx +0 -29
  155. package/test/react_refresh/client/count_label.jsx +0 -7
  156. package/test/react_refresh/client/main.html +0 -13
  157. package/test/react_refresh/client/main.jsx +0 -8
  158. package/test/react_refresh/react_refresh.test.mjs +0 -93
  159. package/test/react_refresh/react_refresh.test_manual.mjs +0 -26
@@ -1,696 +0,0 @@
1
- function getDefaultExportFromCjs (x) {
2
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
3
- }
4
-
5
- var runtime = {exports: {}};
6
-
7
- var reactRefreshRuntime_development = {};
8
-
9
- /**
10
- * @license React
11
- * react-refresh-runtime.development.js
12
- *
13
- * Copyright (c) Facebook, Inc. and its affiliates.
14
- *
15
- * This source code is licensed under the MIT license found in the
16
- * LICENSE file in the root directory of this source tree.
17
- */
18
-
19
- var hasRequiredReactRefreshRuntime_development;
20
-
21
- function requireReactRefreshRuntime_development () {
22
- if (hasRequiredReactRefreshRuntime_development) return reactRefreshRuntime_development;
23
- hasRequiredReactRefreshRuntime_development = 1;
24
-
25
- {
26
- (function() {
27
-
28
- // ATTENTION
29
- var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
30
- var REACT_MEMO_TYPE = Symbol.for('react.memo');
31
-
32
- var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; // We never remove these associations.
33
- // It's OK to reference families, but use WeakMap/Set for types.
34
-
35
- var allFamiliesByID = new Map();
36
- var allFamiliesByType = new PossiblyWeakMap();
37
- var allSignaturesByType = new PossiblyWeakMap(); // This WeakMap is read by React, so we only put families
38
- // that have actually been edited here. This keeps checks fast.
39
- // $FlowIssue
40
-
41
- var updatedFamiliesByType = new PossiblyWeakMap(); // This is cleared on every performReactRefresh() call.
42
- // It is an array of [Family, NextType] tuples.
43
-
44
- var pendingUpdates = []; // This is injected by the renderer via DevTools globalThis hook.
45
-
46
- var helpersByRendererID = new Map();
47
- var helpersByRoot = new Map(); // We keep track of mounted roots so we can schedule updates.
48
-
49
- var mountedRoots = new Set(); // If a root captures an error, we remember it so we can retry on edit.
50
-
51
- var failedRoots = new Set(); // In environments that support WeakMap, we also remember the last element for every root.
52
- // It needs to be weak because we do this even for roots that failed to mount.
53
- // If there is no WeakMap, we won't attempt to do retrying.
54
- // $FlowIssue
55
-
56
- var rootElements = // $FlowIssue
57
- typeof WeakMap === 'function' ? new WeakMap() : null;
58
- var isPerformingRefresh = false;
59
-
60
- function computeFullKey(signature) {
61
- if (signature.fullKey !== null) {
62
- return signature.fullKey;
63
- }
64
-
65
- var fullKey = signature.ownKey;
66
- var hooks;
67
-
68
- try {
69
- hooks = signature.getCustomHooks();
70
- } catch (err) {
71
- // This can happen in an edge case, e.g. if expression like Foo.useSomething
72
- // depends on Foo which is lazily initialized during rendering.
73
- // In that case just assume we'll have to remount.
74
- signature.forceReset = true;
75
- signature.fullKey = fullKey;
76
- return fullKey;
77
- }
78
-
79
- for (var i = 0; i < hooks.length; i++) {
80
- var hook = hooks[i];
81
-
82
- if (typeof hook !== 'function') {
83
- // Something's wrong. Assume we need to remount.
84
- signature.forceReset = true;
85
- signature.fullKey = fullKey;
86
- return fullKey;
87
- }
88
-
89
- var nestedHookSignature = allSignaturesByType.get(hook);
90
-
91
- if (nestedHookSignature === undefined) {
92
- // No signature means Hook wasn't in the source code, e.g. in a library.
93
- // We'll skip it because we can assume it won't change during this session.
94
- continue;
95
- }
96
-
97
- var nestedHookKey = computeFullKey(nestedHookSignature);
98
-
99
- if (nestedHookSignature.forceReset) {
100
- signature.forceReset = true;
101
- }
102
-
103
- fullKey += '\n---\n' + nestedHookKey;
104
- }
105
-
106
- signature.fullKey = fullKey;
107
- return fullKey;
108
- }
109
-
110
- function haveEqualSignatures(prevType, nextType) {
111
- var prevSignature = allSignaturesByType.get(prevType);
112
- var nextSignature = allSignaturesByType.get(nextType);
113
-
114
- if (prevSignature === undefined && nextSignature === undefined) {
115
- return true;
116
- }
117
-
118
- if (prevSignature === undefined || nextSignature === undefined) {
119
- return false;
120
- }
121
-
122
- if (computeFullKey(prevSignature) !== computeFullKey(nextSignature)) {
123
- return false;
124
- }
125
-
126
- if (nextSignature.forceReset) {
127
- return false;
128
- }
129
-
130
- return true;
131
- }
132
-
133
- function isReactClass(type) {
134
- return type.prototype && type.prototype.isReactComponent;
135
- }
136
-
137
- function canPreserveStateBetween(prevType, nextType) {
138
- if (isReactClass(prevType) || isReactClass(nextType)) {
139
- return false;
140
- }
141
-
142
- if (haveEqualSignatures(prevType, nextType)) {
143
- return true;
144
- }
145
-
146
- return false;
147
- }
148
-
149
- function resolveFamily(type) {
150
- // Only check updated types to keep lookups fast.
151
- return updatedFamiliesByType.get(type);
152
- } // If we didn't care about IE11, we could use new Map/Set(iterable).
153
-
154
-
155
- function cloneMap(map) {
156
- var clone = new Map();
157
- map.forEach(function (value, key) {
158
- clone.set(key, value);
159
- });
160
- return clone;
161
- }
162
-
163
- function cloneSet(set) {
164
- var clone = new Set();
165
- set.forEach(function (value) {
166
- clone.add(value);
167
- });
168
- return clone;
169
- } // This is a safety mechanism to protect against rogue getters and Proxies.
170
-
171
-
172
- function getProperty(object, property) {
173
- try {
174
- return object[property];
175
- } catch (err) {
176
- // Intentionally ignore.
177
- return undefined;
178
- }
179
- }
180
-
181
- function performReactRefresh() {
182
-
183
- if (pendingUpdates.length === 0) {
184
- return null;
185
- }
186
-
187
- if (isPerformingRefresh) {
188
- return null;
189
- }
190
-
191
- isPerformingRefresh = true;
192
-
193
- try {
194
- var staleFamilies = new Set();
195
- var updatedFamilies = new Set();
196
- var updates = pendingUpdates;
197
- pendingUpdates = [];
198
- updates.forEach(function (_ref) {
199
- var family = _ref[0],
200
- nextType = _ref[1];
201
- // Now that we got a real edit, we can create associations
202
- // that will be read by the React reconciler.
203
- var prevType = family.current;
204
- updatedFamiliesByType.set(prevType, family);
205
- updatedFamiliesByType.set(nextType, family);
206
- family.current = nextType; // Determine whether this should be a re-render or a re-mount.
207
-
208
- if (canPreserveStateBetween(prevType, nextType)) {
209
- updatedFamilies.add(family);
210
- } else {
211
- staleFamilies.add(family);
212
- }
213
- }); // TODO: rename these fields to something more meaningful.
214
-
215
- var update = {
216
- updatedFamilies: updatedFamilies,
217
- // Families that will re-render preserving state
218
- staleFamilies: staleFamilies // Families that will be remounted
219
-
220
- };
221
- helpersByRendererID.forEach(function (helpers) {
222
- // Even if there are no roots, set the handler on first update.
223
- // This ensures that if *new* roots are mounted, they'll use the resolve handler.
224
- helpers.setRefreshHandler(resolveFamily);
225
- });
226
- var didError = false;
227
- var firstError = null; // We snapshot maps and sets that are mutated during commits.
228
- // If we don't do this, there is a risk they will be mutated while
229
- // we iterate over them. For example, trying to recover a failed root
230
- // may cause another root to be added to the failed list -- an infinite loop.
231
-
232
- var failedRootsSnapshot = cloneSet(failedRoots);
233
- var mountedRootsSnapshot = cloneSet(mountedRoots);
234
- var helpersByRootSnapshot = cloneMap(helpersByRoot);
235
- failedRootsSnapshot.forEach(function (root) {
236
- var helpers = helpersByRootSnapshot.get(root);
237
-
238
- if (helpers === undefined) {
239
- throw new Error('Could not find helpers for a root. This is a bug in React Refresh.');
240
- }
241
-
242
- if (!failedRoots.has(root)) {// No longer failed.
243
- }
244
-
245
- if (rootElements === null) {
246
- return;
247
- }
248
-
249
- if (!rootElements.has(root)) {
250
- return;
251
- }
252
-
253
- var element = rootElements.get(root);
254
-
255
- try {
256
- helpers.scheduleRoot(root, element);
257
- } catch (err) {
258
- if (!didError) {
259
- didError = true;
260
- firstError = err;
261
- } // Keep trying other roots.
262
-
263
- }
264
- });
265
- mountedRootsSnapshot.forEach(function (root) {
266
- var helpers = helpersByRootSnapshot.get(root);
267
-
268
- if (helpers === undefined) {
269
- throw new Error('Could not find helpers for a root. This is a bug in React Refresh.');
270
- }
271
-
272
- if (!mountedRoots.has(root)) {// No longer mounted.
273
- }
274
-
275
- try {
276
- helpers.scheduleRefresh(root, update);
277
- } catch (err) {
278
- if (!didError) {
279
- didError = true;
280
- firstError = err;
281
- } // Keep trying other roots.
282
-
283
- }
284
- });
285
-
286
- if (didError) {
287
- throw firstError;
288
- }
289
-
290
- return update;
291
- } finally {
292
- isPerformingRefresh = false;
293
- }
294
- }
295
- function register(type, id) {
296
- {
297
- if (type === null) {
298
- return;
299
- }
300
-
301
- if (typeof type !== 'function' && typeof type !== 'object') {
302
- return;
303
- } // This can happen in an edge case, e.g. if we register
304
- // return value of a HOC but it returns a cached component.
305
- // Ignore anything but the first registration for each type.
306
-
307
-
308
- if (allFamiliesByType.has(type)) {
309
- return;
310
- } // Create family or remember to update it.
311
- // None of this bookkeeping affects reconciliation
312
- // until the first performReactRefresh() call above.
313
-
314
-
315
- var family = allFamiliesByID.get(id);
316
-
317
- if (family === undefined) {
318
- family = {
319
- current: type
320
- };
321
- allFamiliesByID.set(id, family);
322
- } else {
323
- pendingUpdates.push([family, type]);
324
- }
325
-
326
- allFamiliesByType.set(type, family); // Visit inner types because we might not have registered them.
327
-
328
- if (typeof type === 'object' && type !== null) {
329
- switch (getProperty(type, '$$typeof')) {
330
- case REACT_FORWARD_REF_TYPE:
331
- register(type.render, id + '$render');
332
- break;
333
-
334
- case REACT_MEMO_TYPE:
335
- register(type.type, id + '$type');
336
- break;
337
- }
338
- }
339
- }
340
- }
341
- function setSignature(type, key) {
342
- var forceReset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
343
- var getCustomHooks = arguments.length > 3 ? arguments[3] : undefined;
344
-
345
- {
346
- if (!allSignaturesByType.has(type)) {
347
- allSignaturesByType.set(type, {
348
- forceReset: forceReset,
349
- ownKey: key,
350
- fullKey: null,
351
- getCustomHooks: getCustomHooks || function () {
352
- return [];
353
- }
354
- });
355
- } // Visit inner types because we might not have signed them.
356
-
357
-
358
- if (typeof type === 'object' && type !== null) {
359
- switch (getProperty(type, '$$typeof')) {
360
- case REACT_FORWARD_REF_TYPE:
361
- setSignature(type.render, key, forceReset, getCustomHooks);
362
- break;
363
-
364
- case REACT_MEMO_TYPE:
365
- setSignature(type.type, key, forceReset, getCustomHooks);
366
- break;
367
- }
368
- }
369
- }
370
- } // This is lazily called during first render for a type.
371
- // It captures Hook list at that time so inline requires don't break comparisons.
372
-
373
- function collectCustomHooksForSignature(type) {
374
- {
375
- var signature = allSignaturesByType.get(type);
376
-
377
- if (signature !== undefined) {
378
- computeFullKey(signature);
379
- }
380
- }
381
- }
382
- function getFamilyByID(id) {
383
- {
384
- return allFamiliesByID.get(id);
385
- }
386
- }
387
- function getFamilyByType(type) {
388
- {
389
- return allFamiliesByType.get(type);
390
- }
391
- }
392
- function findAffectedHostInstances(families) {
393
- {
394
- var affectedInstances = new Set();
395
- mountedRoots.forEach(function (root) {
396
- var helpers = helpersByRoot.get(root);
397
-
398
- if (helpers === undefined) {
399
- throw new Error('Could not find helpers for a root. This is a bug in React Refresh.');
400
- }
401
-
402
- var instancesForRoot = helpers.findHostInstancesForRefresh(root, families);
403
- instancesForRoot.forEach(function (inst) {
404
- affectedInstances.add(inst);
405
- });
406
- });
407
- return affectedInstances;
408
- }
409
- }
410
- function injectIntoGlobalHook(globalObject) {
411
- {
412
- // For React Native, the globalThis hook will be set up by require('react-devtools-core').
413
- // That code will run before us. So we need to monkeypatch functions on existing hook.
414
- // For React Web, the globalThis hook will be set up by the extension.
415
- // This will also run before us.
416
- var hook = globalObject.__REACT_DEVTOOLS_GLOBAL_HOOK__;
417
-
418
- if (hook === undefined) {
419
- // However, if there is no DevTools extension, we'll need to set up the globalThis hook ourselves.
420
- // Note that in this case it's important that renderer code runs *after* this method call.
421
- // Otherwise, the renderer will think that there is no globalThis hook, and won't do the injection.
422
- var nextID = 0;
423
- globalObject.__REACT_DEVTOOLS_GLOBAL_HOOK__ = hook = {
424
- renderers: new Map(),
425
- supportsFiber: true,
426
- inject: function (injected) {
427
- return nextID++;
428
- },
429
- onScheduleFiberRoot: function (id, root, children) {},
430
- onCommitFiberRoot: function (id, root, maybePriorityLevel, didError) {},
431
- onCommitFiberUnmount: function () {}
432
- };
433
- }
434
-
435
- if (hook.isDisabled) {
436
- // This isn't a real property on the hook, but it can be set to opt out
437
- // of DevTools integration and associated warnings and logs.
438
- // Using console['warn'] to evade Babel and ESLint
439
- console['warn']('Something has shimmed the React DevTools globalThis hook (__REACT_DEVTOOLS_GLOBAL_HOOK__). ' + 'Fast Refresh is not compatible with this shim and will be disabled.');
440
- return;
441
- } // Here, we just want to get a reference to scheduleRefresh.
442
-
443
-
444
- var oldInject = hook.inject;
445
-
446
- hook.inject = function (injected) {
447
- var id = oldInject.apply(this, arguments);
448
-
449
- if (typeof injected.scheduleRefresh === 'function' && typeof injected.setRefreshHandler === 'function') {
450
- // This version supports React Refresh.
451
- helpersByRendererID.set(id, injected);
452
- }
453
-
454
- return id;
455
- }; // Do the same for any already injected roots.
456
- // This is useful if ReactDOM has already been initialized.
457
- // https://github.com/facebook/react/issues/17626
458
-
459
-
460
- hook.renderers.forEach(function (injected, id) {
461
- if (typeof injected.scheduleRefresh === 'function' && typeof injected.setRefreshHandler === 'function') {
462
- // This version supports React Refresh.
463
- helpersByRendererID.set(id, injected);
464
- }
465
- }); // We also want to track currently mounted roots.
466
-
467
- var oldOnCommitFiberRoot = hook.onCommitFiberRoot;
468
-
469
- var oldOnScheduleFiberRoot = hook.onScheduleFiberRoot || function () {};
470
-
471
- hook.onScheduleFiberRoot = function (id, root, children) {
472
- if (!isPerformingRefresh) {
473
- // If it was intentionally scheduled, don't attempt to restore.
474
- // This includes intentionally scheduled unmounts.
475
- failedRoots.delete(root);
476
-
477
- if (rootElements !== null) {
478
- rootElements.set(root, children);
479
- }
480
- }
481
-
482
- return oldOnScheduleFiberRoot.apply(this, arguments);
483
- };
484
-
485
- hook.onCommitFiberRoot = function (id, root, maybePriorityLevel, didError) {
486
- var helpers = helpersByRendererID.get(id);
487
-
488
- if (helpers !== undefined) {
489
- helpersByRoot.set(root, helpers);
490
- var current = root.current;
491
- var alternate = current.alternate; // We need to determine whether this root has just (un)mounted.
492
- // This logic is copy-pasted from similar logic in the DevTools backend.
493
- // If this breaks with some refactoring, you'll want to update DevTools too.
494
-
495
- if (alternate !== null) {
496
- var wasMounted = alternate.memoizedState != null && alternate.memoizedState.element != null && mountedRoots.has(root);
497
- var isMounted = current.memoizedState != null && current.memoizedState.element != null;
498
-
499
- if (!wasMounted && isMounted) {
500
- // Mount a new root.
501
- mountedRoots.add(root);
502
- failedRoots.delete(root);
503
- } else if (wasMounted && isMounted) ; else if (wasMounted && !isMounted) {
504
- // Unmount an existing root.
505
- mountedRoots.delete(root);
506
-
507
- if (didError) {
508
- // We'll remount it on future edits.
509
- failedRoots.add(root);
510
- } else {
511
- helpersByRoot.delete(root);
512
- }
513
- } else if (!wasMounted && !isMounted) {
514
- if (didError) {
515
- // We'll remount it on future edits.
516
- failedRoots.add(root);
517
- }
518
- }
519
- } else {
520
- // Mount a new root.
521
- mountedRoots.add(root);
522
- }
523
- } // Always call the decorated DevTools hook.
524
-
525
-
526
- return oldOnCommitFiberRoot.apply(this, arguments);
527
- };
528
- }
529
- }
530
- function hasUnrecoverableErrors() {
531
- // TODO: delete this after removing dependency in RN.
532
- return false;
533
- } // Exposed for testing.
534
-
535
- function _getMountedRootCount() {
536
- {
537
- return mountedRoots.size;
538
- }
539
- } // This is a wrapper over more primitive functions for setting signature.
540
- // Signatures let us decide whether the Hook order has changed on refresh.
541
- //
542
- // This function is intended to be used as a transform target, e.g.:
543
- // var _s = createSignatureFunctionForTransform()
544
- //
545
- // function Hello() {
546
- // const [foo, setFoo] = useState(0);
547
- // const value = useCustomHook();
548
- // _s(); /* Call without arguments triggers collecting the custom Hook list.
549
- // * This doesn't happen during the module evaluation because we
550
- // * don't want to change the module order with inline requires.
551
- // * Next calls are noops. */
552
- // return <h1>Hi</h1>;
553
- // }
554
- //
555
- // /* Call with arguments attaches the signature to the type: */
556
- // _s(
557
- // Hello,
558
- // 'useState{[foo, setFoo]}(0)',
559
- // () => [useCustomHook], /* Lazy to avoid triggering inline requires */
560
- // );
561
-
562
- function createSignatureFunctionForTransform() {
563
- {
564
- var savedType;
565
- var hasCustomHooks;
566
- var didCollectHooks = false;
567
- return function (type, key, forceReset, getCustomHooks) {
568
- if (typeof key === 'string') {
569
- // We're in the initial phase that associates signatures
570
- // with the functions. Note this may be called multiple times
571
- // in HOC chains like _s(hoc1(_s(hoc2(_s(actualFunction))))).
572
- if (!savedType) {
573
- // We're in the innermost call, so this is the actual type.
574
- savedType = type;
575
- hasCustomHooks = typeof getCustomHooks === 'function';
576
- } // Set the signature for all types (even wrappers!) in case
577
- // they have no signatures of their own. This is to prevent
578
- // problems like https://github.com/facebook/react/issues/20417.
579
-
580
-
581
- if (type != null && (typeof type === 'function' || typeof type === 'object')) {
582
- setSignature(type, key, forceReset, getCustomHooks);
583
- }
584
-
585
- return type;
586
- } else {
587
- // We're in the _s() call without arguments, which means
588
- // this is the time to collect custom Hook signatures.
589
- // Only do this once. This path is hot and runs *inside* every render!
590
- if (!didCollectHooks && hasCustomHooks) {
591
- didCollectHooks = true;
592
- collectCustomHooksForSignature(savedType);
593
- }
594
- }
595
- };
596
- }
597
- }
598
- function isLikelyComponentType(type) {
599
- {
600
- switch (typeof type) {
601
- case 'function':
602
- {
603
- // First, deal with classes.
604
- if (type.prototype != null) {
605
- if (type.prototype.isReactComponent) {
606
- // React class.
607
- return true;
608
- }
609
-
610
- var ownNames = Object.getOwnPropertyNames(type.prototype);
611
-
612
- if (ownNames.length > 1 || ownNames[0] !== 'constructor') {
613
- // This looks like a class.
614
- return false;
615
- } // eslint-disable-next-line no-proto
616
-
617
-
618
- if (type.prototype.__proto__ !== Object.prototype) {
619
- // It has a superclass.
620
- return false;
621
- } // Pass through.
622
- // This looks like a regular function with empty prototype.
623
-
624
- } // For plain functions and arrows, use name as a heuristic.
625
-
626
-
627
- var name = type.name || type.displayName;
628
- return typeof name === 'string' && /^[A-Z]/.test(name);
629
- }
630
-
631
- case 'object':
632
- {
633
- if (type != null) {
634
- switch (getProperty(type, '$$typeof')) {
635
- case REACT_FORWARD_REF_TYPE:
636
- case REACT_MEMO_TYPE:
637
- // Definitely React components.
638
- return true;
639
-
640
- default:
641
- return false;
642
- }
643
- }
644
-
645
- return false;
646
- }
647
-
648
- default:
649
- {
650
- return false;
651
- }
652
- }
653
- }
654
- }
655
-
656
- reactRefreshRuntime_development._getMountedRootCount = _getMountedRootCount;
657
- reactRefreshRuntime_development.collectCustomHooksForSignature = collectCustomHooksForSignature;
658
- reactRefreshRuntime_development.createSignatureFunctionForTransform = createSignatureFunctionForTransform;
659
- reactRefreshRuntime_development.findAffectedHostInstances = findAffectedHostInstances;
660
- reactRefreshRuntime_development.getFamilyByID = getFamilyByID;
661
- reactRefreshRuntime_development.getFamilyByType = getFamilyByType;
662
- reactRefreshRuntime_development.hasUnrecoverableErrors = hasUnrecoverableErrors;
663
- reactRefreshRuntime_development.injectIntoGlobalHook = injectIntoGlobalHook;
664
- reactRefreshRuntime_development.isLikelyComponentType = isLikelyComponentType;
665
- reactRefreshRuntime_development.performReactRefresh = performReactRefresh;
666
- reactRefreshRuntime_development.register = register;
667
- reactRefreshRuntime_development.setSignature = setSignature;
668
- })();
669
- }
670
- return reactRefreshRuntime_development;
671
- }
672
-
673
- (function (module) {
674
-
675
- {
676
- module.exports = requireReactRefreshRuntime_development();
677
- }
678
- } (runtime));
679
-
680
- var __jsenv_default_import__ = /*@__PURE__*/getDefaultExportFromCjs(runtime.exports);
681
-
682
- var _getMountedRootCount = runtime.exports._getMountedRootCount;
683
- var collectCustomHooksForSignature = runtime.exports.collectCustomHooksForSignature;
684
- var createSignatureFunctionForTransform = runtime.exports.createSignatureFunctionForTransform;
685
- var findAffectedHostInstances = runtime.exports.findAffectedHostInstances;
686
- var getFamilyByID = runtime.exports.getFamilyByID;
687
- var getFamilyByType = runtime.exports.getFamilyByType;
688
- var hasUnrecoverableErrors = runtime.exports.hasUnrecoverableErrors;
689
- var injectIntoGlobalHook = runtime.exports.injectIntoGlobalHook;
690
- var isLikelyComponentType = runtime.exports.isLikelyComponentType;
691
- var performReactRefresh = runtime.exports.performReactRefresh;
692
- var register = runtime.exports.register;
693
- var setSignature = runtime.exports.setSignature;
694
- export { _getMountedRootCount, collectCustomHooksForSignature, createSignatureFunctionForTransform, __jsenv_default_import__ as default, findAffectedHostInstances, getFamilyByID, getFamilyByType, hasUnrecoverableErrors, injectIntoGlobalHook, isLikelyComponentType, performReactRefresh, register, setSignature };
695
-
696
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZXMiOlsiZmlsZTovLy9Vc2Vycy9kLm1haWxsYXJkL2Rldi9qc2Vudi9qc2Vudi1jb3JlL25vZGVfbW9kdWxlcy9yZWFjdC1yZWZyZXNoL2Nqcy9yZWFjdC1yZWZyZXNoLXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMiLCJmaWxlOi8vL1VzZXJzL2QubWFpbGxhcmQvZGV2L2pzZW52L2pzZW52LWNvcmUvbm9kZV9tb2R1bGVzL3JlYWN0LXJlZnJlc2gvcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1yZWZyZXNoLXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBBVFRFTlRJT05cbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gIFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJyk7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gIFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKTtcblxudmFyIFBvc3NpYmx5V2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nID8gV2Vha01hcCA6IE1hcDsgLy8gV2UgbmV2ZXIgcmVtb3ZlIHRoZXNlIGFzc29jaWF0aW9ucy5cbi8vIEl0J3MgT0sgdG8gcmVmZXJlbmNlIGZhbWlsaWVzLCBidXQgdXNlIFdlYWtNYXAvU2V0IGZvciB0eXBlcy5cblxudmFyIGFsbEZhbWlsaWVzQnlJRCA9IG5ldyBNYXAoKTtcbnZhciBhbGxGYW1pbGllc0J5VHlwZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcbnZhciBhbGxTaWduYXR1cmVzQnlUeXBlID0gbmV3IFBvc3NpYmx5V2Vha01hcCgpOyAvLyBUaGlzIFdlYWtNYXAgaXMgcmVhZCBieSBSZWFjdCwgc28gd2Ugb25seSBwdXQgZmFtaWxpZXNcbi8vIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVuIGVkaXRlZCBoZXJlLiBUaGlzIGtlZXBzIGNoZWNrcyBmYXN0LlxuLy8gJEZsb3dJc3N1ZVxuXG52YXIgdXBkYXRlZEZhbWlsaWVzQnlUeXBlID0gbmV3IFBvc3NpYmx5V2Vha01hcCgpOyAvLyBUaGlzIGlzIGNsZWFyZWQgb24gZXZlcnkgcGVyZm9ybVJlYWN0UmVmcmVzaCgpIGNhbGwuXG4vLyBJdCBpcyBhbiBhcnJheSBvZiBbRmFtaWx5LCBOZXh0VHlwZV0gdHVwbGVzLlxuXG52YXIgcGVuZGluZ1VwZGF0ZXMgPSBbXTsgLy8gVGhpcyBpcyBpbmplY3RlZCBieSB0aGUgcmVuZGVyZXIgdmlhIERldlRvb2xzIGdsb2JhbCBob29rLlxuXG52YXIgaGVscGVyc0J5UmVuZGVyZXJJRCA9IG5ldyBNYXAoKTtcbnZhciBoZWxwZXJzQnlSb290ID0gbmV3IE1hcCgpOyAvLyBXZSBrZWVwIHRyYWNrIG9mIG1vdW50ZWQgcm9vdHMgc28gd2UgY2FuIHNjaGVkdWxlIHVwZGF0ZXMuXG5cbnZhciBtb3VudGVkUm9vdHMgPSBuZXcgU2V0KCk7IC8vIElmIGEgcm9vdCBjYXB0dXJlcyBhbiBlcnJvciwgd2UgcmVtZW1iZXIgaXQgc28gd2UgY2FuIHJldHJ5IG9uIGVkaXQuXG5cbnZhciBmYWlsZWRSb290cyA9IG5ldyBTZXQoKTsgLy8gSW4gZW52aXJvbm1lbnRzIHRoYXQgc3VwcG9ydCBXZWFrTWFwLCB3ZSBhbHNvIHJlbWVtYmVyIHRoZSBsYXN0IGVsZW1lbnQgZm9yIGV2ZXJ5IHJvb3QuXG4vLyBJdCBuZWVkcyB0byBiZSB3ZWFrIGJlY2F1c2Ugd2UgZG8gdGhpcyBldmVuIGZvciByb290cyB0aGF0IGZhaWxlZCB0byBtb3VudC5cbi8vIElmIHRoZXJlIGlzIG5vIFdlYWtNYXAsIHdlIHdvbid0IGF0dGVtcHQgdG8gZG8gcmV0cnlpbmcuXG4vLyAkRmxvd0lzc3VlXG5cbnZhciByb290RWxlbWVudHMgPSAvLyAkRmxvd0lzc3VlXG50eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBXZWFrTWFwKCkgOiBudWxsO1xudmFyIGlzUGVyZm9ybWluZ1JlZnJlc2ggPSBmYWxzZTtcblxuZnVuY3Rpb24gY29tcHV0ZUZ1bGxLZXkoc2lnbmF0dXJlKSB7XG4gIGlmIChzaWduYXR1cmUuZnVsbEtleSAhPT0gbnVsbCkge1xuICAgIHJldHVybiBzaWduYXR1cmUuZnVsbEtleTtcbiAgfVxuXG4gIHZhciBmdWxsS2V5ID0gc2lnbmF0dXJlLm93bktleTtcbiAgdmFyIGhvb2tzO1xuXG4gIHRyeSB7XG4gICAgaG9va3MgPSBzaWduYXR1cmUuZ2V0Q3VzdG9tSG9va3MoKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gVGhpcyBjYW4gaGFwcGVuIGluIGFuIGVkZ2UgY2FzZSwgZS5nLiBpZiBleHByZXNzaW9uIGxpa2UgRm9vLnVzZVNvbWV0aGluZ1xuICAgIC8vIGRlcGVuZHMgb24gRm9vIHdoaWNoIGlzIGxhemlseSBpbml0aWFsaXplZCBkdXJpbmcgcmVuZGVyaW5nLlxuICAgIC8vIEluIHRoYXQgY2FzZSBqdXN0IGFzc3VtZSB3ZSdsbCBoYXZlIHRvIHJlbW91bnQuXG4gICAgc2lnbmF0dXJlLmZvcmNlUmVzZXQgPSB0cnVlO1xuICAgIHNpZ25hdHVyZS5mdWxsS2V5ID0gZnVsbEtleTtcbiAgICByZXR1cm4gZnVsbEtleTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaG9vayA9IGhvb2tzW2ldO1xuXG4gICAgaWYgKHR5cGVvZiBob29rICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBTb21ldGhpbmcncyB3cm9uZy4gQXNzdW1lIHdlIG5lZWQgdG8gcmVtb3VudC5cbiAgICAgIHNpZ25hdHVyZS5mb3JjZVJlc2V0ID0gdHJ1ZTtcbiAgICAgIHNpZ25hdHVyZS5mdWxsS2V5ID0gZnVsbEtleTtcbiAgICAgIHJldHVybiBmdWxsS2V5O1xuICAgIH1cblxuICAgIHZhciBuZXN0ZWRIb29rU2lnbmF0dXJlID0gYWxsU2lnbmF0dXJlc0J5VHlwZS5nZXQoaG9vayk7XG5cbiAgICBpZiAobmVzdGVkSG9va1NpZ25hdHVyZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBObyBzaWduYXR1cmUgbWVhbnMgSG9vayB3YXNuJ3QgaW4gdGhlIHNvdXJjZSBjb2RlLCBlLmcuIGluIGEgbGlicmFyeS5cbiAgICAgIC8vIFdlJ2xsIHNraXAgaXQgYmVjYXVzZSB3ZSBjYW4gYXNzdW1lIGl0IHdvbid0IGNoYW5nZSBkdXJpbmcgdGhpcyBzZXNzaW9uLlxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIG5lc3RlZEhvb2tLZXkgPSBjb21wdXRlRnVsbEtleShuZXN0ZWRIb29rU2lnbmF0dXJlKTtcblxuICAgIGlmIChuZXN0ZWRIb29rU2lnbmF0dXJlLmZvcmNlUmVzZXQpIHtcbiAgICAgIHNpZ25hdHVyZS5mb3JjZVJlc2V0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdWxsS2V5ICs9ICdcXG4tLS1cXG4nICsgbmVzdGVkSG9va0tleTtcbiAgfVxuXG4gIHNpZ25hdHVyZS5mdWxsS2V5ID0gZnVsbEtleTtcbiAgcmV0dXJuIGZ1bGxLZXk7XG59XG5cbmZ1bmN0aW9uIGhhdmVFcXVhbFNpZ25hdHVyZXMocHJldlR5cGUsIG5leHRUeXBlKSB7XG4gIHZhciBwcmV2U2lnbmF0dXJlID0gYWxsU2lnbmF0dXJlc0J5VHlwZS5nZXQocHJldlR5cGUpO1xuICB2YXIgbmV4dFNpZ25hdHVyZSA9IGFsbFNpZ25hdHVyZXNCeVR5cGUuZ2V0KG5leHRUeXBlKTtcblxuICBpZiAocHJldlNpZ25hdHVyZSA9PT0gdW5kZWZpbmVkICYmIG5leHRTaWduYXR1cmUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHByZXZTaWduYXR1cmUgPT09IHVuZGVmaW5lZCB8fCBuZXh0U2lnbmF0dXJlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoY29tcHV0ZUZ1bGxLZXkocHJldlNpZ25hdHVyZSkgIT09IGNvbXB1dGVGdWxsS2V5KG5leHRTaWduYXR1cmUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKG5leHRTaWduYXR1cmUuZm9yY2VSZXNldCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc1JlYWN0Q2xhc3ModHlwZSkge1xuICByZXR1cm4gdHlwZS5wcm90b3R5cGUgJiYgdHlwZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudDtcbn1cblxuZnVuY3Rpb24gY2FuUHJlc2VydmVTdGF0ZUJldHdlZW4ocHJldlR5cGUsIG5leHRUeXBlKSB7XG4gIGlmIChpc1JlYWN0Q2xhc3MocHJldlR5cGUpIHx8IGlzUmVhY3RDbGFzcyhuZXh0VHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaGF2ZUVxdWFsU2lnbmF0dXJlcyhwcmV2VHlwZSwgbmV4dFR5cGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVGYW1pbHkodHlwZSkge1xuICAvLyBPbmx5IGNoZWNrIHVwZGF0ZWQgdHlwZXMgdG8ga2VlcCBsb29rdXBzIGZhc3QuXG4gIHJldHVybiB1cGRhdGVkRmFtaWxpZXNCeVR5cGUuZ2V0KHR5cGUpO1xufSAvLyBJZiB3ZSBkaWRuJ3QgY2FyZSBhYm91dCBJRTExLCB3ZSBjb3VsZCB1c2UgbmV3IE1hcC9TZXQoaXRlcmFibGUpLlxuXG5cbmZ1bmN0aW9uIGNsb25lTWFwKG1hcCkge1xuICB2YXIgY2xvbmUgPSBuZXcgTWFwKCk7XG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgY2xvbmUuc2V0KGtleSwgdmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGNsb25lO1xufVxuXG5mdW5jdGlvbiBjbG9uZVNldChzZXQpIHtcbiAgdmFyIGNsb25lID0gbmV3IFNldCgpO1xuICBzZXQuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBjbG9uZS5hZGQodmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGNsb25lO1xufSAvLyBUaGlzIGlzIGEgc2FmZXR5IG1lY2hhbmlzbSB0byBwcm90ZWN0IGFnYWluc3Qgcm9ndWUgZ2V0dGVycyBhbmQgUHJveGllcy5cblxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG9iamVjdFtwcm9wZXJ0eV07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlLlxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGVyZm9ybVJlYWN0UmVmcmVzaCgpIHtcblxuICBpZiAocGVuZGluZ1VwZGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoaXNQZXJmb3JtaW5nUmVmcmVzaCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaXNQZXJmb3JtaW5nUmVmcmVzaCA9IHRydWU7XG5cbiAgdHJ5IHtcbiAgICB2YXIgc3RhbGVGYW1pbGllcyA9IG5ldyBTZXQoKTtcbiAgICB2YXIgdXBkYXRlZEZhbWlsaWVzID0gbmV3IFNldCgpO1xuICAgIHZhciB1cGRhdGVzID0gcGVuZGluZ1VwZGF0ZXM7XG4gICAgcGVuZGluZ1VwZGF0ZXMgPSBbXTtcbiAgICB1cGRhdGVzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBmYW1pbHkgPSBfcmVmWzBdLFxuICAgICAgICAgIG5leHRUeXBlID0gX3JlZlsxXTtcbiAgICAgIC8vIE5vdyB0aGF0IHdlIGdvdCBhIHJlYWwgZWRpdCwgd2UgY2FuIGNyZWF0ZSBhc3NvY2lhdGlvbnNcbiAgICAgIC8vIHRoYXQgd2lsbCBiZSByZWFkIGJ5IHRoZSBSZWFjdCByZWNvbmNpbGVyLlxuICAgICAgdmFyIHByZXZUeXBlID0gZmFtaWx5LmN1cnJlbnQ7XG4gICAgICB1cGRhdGVkRmFtaWxpZXNCeVR5cGUuc2V0KHByZXZUeXBlLCBmYW1pbHkpO1xuICAgICAgdXBkYXRlZEZhbWlsaWVzQnlUeXBlLnNldChuZXh0VHlwZSwgZmFtaWx5KTtcbiAgICAgIGZhbWlseS5jdXJyZW50ID0gbmV4dFR5cGU7IC8vIERldGVybWluZSB3aGV0aGVyIHRoaXMgc2hvdWxkIGJlIGEgcmUtcmVuZGVyIG9yIGEgcmUtbW91bnQuXG5cbiAgICAgIGlmIChjYW5QcmVzZXJ2ZVN0YXRlQmV0d2VlbihwcmV2VHlwZSwgbmV4dFR5cGUpKSB7XG4gICAgICAgIHVwZGF0ZWRGYW1pbGllcy5hZGQoZmFtaWx5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YWxlRmFtaWxpZXMuYWRkKGZhbWlseSk7XG4gICAgICB9XG4gICAgfSk7IC8vIFRPRE86IHJlbmFtZSB0aGVzZSBmaWVsZHMgdG8gc29tZXRoaW5nIG1vcmUgbWVhbmluZ2Z1bC5cblxuICAgIHZhciB1cGRhdGUgPSB7XG4gICAgICB1cGRhdGVkRmFtaWxpZXM6IHVwZGF0ZWRGYW1pbGllcyxcbiAgICAgIC8vIEZhbWlsaWVzIHRoYXQgd2lsbCByZS1yZW5kZXIgcHJlc2VydmluZyBzdGF0ZVxuICAgICAgc3RhbGVGYW1pbGllczogc3RhbGVGYW1pbGllcyAvLyBGYW1pbGllcyB0aGF0IHdpbGwgYmUgcmVtb3VudGVkXG5cbiAgICB9O1xuICAgIGhlbHBlcnNCeVJlbmRlcmVySUQuZm9yRWFjaChmdW5jdGlvbiAoaGVscGVycykge1xuICAgICAgLy8gRXZlbiBpZiB0aGVyZSBhcmUgbm8gcm9vdHMsIHNldCB0aGUgaGFuZGxlciBvbiBmaXJzdCB1cGRhdGUuXG4gICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBpZiAqbmV3KiByb290cyBhcmUgbW91bnRlZCwgdGhleSdsbCB1c2UgdGhlIHJlc29sdmUgaGFuZGxlci5cbiAgICAgIGhlbHBlcnMuc2V0UmVmcmVzaEhhbmRsZXIocmVzb2x2ZUZhbWlseSk7XG4gICAgfSk7XG4gICAgdmFyIGRpZEVycm9yID0gZmFsc2U7XG4gICAgdmFyIGZpcnN0RXJyb3IgPSBudWxsOyAvLyBXZSBzbmFwc2hvdCBtYXBzIGFuZCBzZXRzIHRoYXQgYXJlIG11dGF0ZWQgZHVyaW5nIGNvbW1pdHMuXG4gICAgLy8gSWYgd2UgZG9uJ3QgZG8gdGhpcywgdGhlcmUgaXMgYSByaXNrIHRoZXkgd2lsbCBiZSBtdXRhdGVkIHdoaWxlXG4gICAgLy8gd2UgaXRlcmF0ZSBvdmVyIHRoZW0uIEZvciBleGFtcGxlLCB0cnlpbmcgdG8gcmVjb3ZlciBhIGZhaWxlZCByb290XG4gICAgLy8gbWF5IGNhdXNlIGFub3RoZXIgcm9vdCB0byBiZSBhZGRlZCB0byB0aGUgZmFpbGVkIGxpc3QgLS0gYW4gaW5maW5pdGUgbG9vcC5cblxuICAgIHZhciBmYWlsZWRSb290c1NuYXBzaG90ID0gY2xvbmVTZXQoZmFpbGVkUm9vdHMpO1xuICAgIHZhciBtb3VudGVkUm9vdHNTbmFwc2hvdCA9IGNsb25lU2V0KG1vdW50ZWRSb290cyk7XG4gICAgdmFyIGhlbHBlcnNCeVJvb3RTbmFwc2hvdCA9IGNsb25lTWFwKGhlbHBlcnNCeVJvb3QpO1xuICAgIGZhaWxlZFJvb3RzU25hcHNob3QuZm9yRWFjaChmdW5jdGlvbiAocm9vdCkge1xuICAgICAgdmFyIGhlbHBlcnMgPSBoZWxwZXJzQnlSb290U25hcHNob3QuZ2V0KHJvb3QpO1xuXG4gICAgICBpZiAoaGVscGVycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgaGVscGVycyBmb3IgYSByb290LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0IFJlZnJlc2guJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmFpbGVkUm9vdHMuaGFzKHJvb3QpKSB7Ly8gTm8gbG9uZ2VyIGZhaWxlZC5cbiAgICAgIH1cblxuICAgICAgaWYgKHJvb3RFbGVtZW50cyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghcm9vdEVsZW1lbnRzLmhhcyhyb290KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50ID0gcm9vdEVsZW1lbnRzLmdldChyb290KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaGVscGVycy5zY2hlZHVsZVJvb3Qocm9vdCwgZWxlbWVudCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCFkaWRFcnJvcikge1xuICAgICAgICAgIGRpZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBmaXJzdEVycm9yID0gZXJyO1xuICAgICAgICB9IC8vIEtlZXAgdHJ5aW5nIG90aGVyIHJvb3RzLlxuXG4gICAgICB9XG4gICAgfSk7XG4gICAgbW91bnRlZFJvb3RzU25hcHNob3QuZm9yRWFjaChmdW5jdGlvbiAocm9vdCkge1xuICAgICAgdmFyIGhlbHBlcnMgPSBoZWxwZXJzQnlSb290U25hcHNob3QuZ2V0KHJvb3QpO1xuXG4gICAgICBpZiAoaGVscGVycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgaGVscGVycyBmb3IgYSByb290LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0IFJlZnJlc2guJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghbW91bnRlZFJvb3RzLmhhcyhyb290KSkgey8vIE5vIGxvbmdlciBtb3VudGVkLlxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBoZWxwZXJzLnNjaGVkdWxlUmVmcmVzaChyb290LCB1cGRhdGUpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmICghZGlkRXJyb3IpIHtcbiAgICAgICAgICBkaWRFcnJvciA9IHRydWU7XG4gICAgICAgICAgZmlyc3RFcnJvciA9IGVycjtcbiAgICAgICAgfSAvLyBLZWVwIHRyeWluZyBvdGhlciByb290cy5cblxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGRpZEVycm9yKSB7XG4gICAgICB0aHJvdyBmaXJzdEVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiB1cGRhdGU7XG4gIH0gZmluYWxseSB7XG4gICAgaXNQZXJmb3JtaW5nUmVmcmVzaCA9IGZhbHNlO1xuICB9XG59XG5mdW5jdGlvbiByZWdpc3Rlcih0eXBlLCBpZCkge1xuICB7XG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHR5cGUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBUaGlzIGNhbiBoYXBwZW4gaW4gYW4gZWRnZSBjYXNlLCBlLmcuIGlmIHdlIHJlZ2lzdGVyXG4gICAgLy8gcmV0dXJuIHZhbHVlIG9mIGEgSE9DIGJ1dCBpdCByZXR1cm5zIGEgY2FjaGVkIGNvbXBvbmVudC5cbiAgICAvLyBJZ25vcmUgYW55dGhpbmcgYnV0IHRoZSBmaXJzdCByZWdpc3RyYXRpb24gZm9yIGVhY2ggdHlwZS5cblxuXG4gICAgaWYgKGFsbEZhbWlsaWVzQnlUeXBlLmhhcyh0eXBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gQ3JlYXRlIGZhbWlseSBvciByZW1lbWJlciB0byB1cGRhdGUgaXQuXG4gICAgLy8gTm9uZSBvZiB0aGlzIGJvb2trZWVwaW5nIGFmZmVjdHMgcmVjb25jaWxpYXRpb25cbiAgICAvLyB1bnRpbCB0aGUgZmlyc3QgcGVyZm9ybVJlYWN0UmVmcmVzaCgpIGNhbGwgYWJvdmUuXG5cblxuICAgIHZhciBmYW1pbHkgPSBhbGxGYW1pbGllc0J5SUQuZ2V0KGlkKTtcblxuICAgIGlmIChmYW1pbHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZmFtaWx5ID0ge1xuICAgICAgICBjdXJyZW50OiB0eXBlXG4gICAgICB9O1xuICAgICAgYWxsRmFtaWxpZXNCeUlELnNldChpZCwgZmFtaWx5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGVuZGluZ1VwZGF0ZXMucHVzaChbZmFtaWx5LCB0eXBlXSk7XG4gICAgfVxuXG4gICAgYWxsRmFtaWxpZXNCeVR5cGUuc2V0KHR5cGUsIGZhbWlseSk7IC8vIFZpc2l0IGlubmVyIHR5cGVzIGJlY2F1c2Ugd2UgbWlnaHQgbm90IGhhdmUgcmVnaXN0ZXJlZCB0aGVtLlxuXG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsKSB7XG4gICAgICBzd2l0Y2ggKGdldFByb3BlcnR5KHR5cGUsICckJHR5cGVvZicpKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICByZWdpc3Rlcih0eXBlLnJlbmRlciwgaWQgKyAnJHJlbmRlcicpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgIHJlZ2lzdGVyKHR5cGUudHlwZSwgaWQgKyAnJHR5cGUnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIHNldFNpZ25hdHVyZSh0eXBlLCBrZXkpIHtcbiAgdmFyIGZvcmNlUmVzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGZhbHNlO1xuICB2YXIgZ2V0Q3VzdG9tSG9va3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMyA/IGFyZ3VtZW50c1szXSA6IHVuZGVmaW5lZDtcblxuICB7XG4gICAgaWYgKCFhbGxTaWduYXR1cmVzQnlUeXBlLmhhcyh0eXBlKSkge1xuICAgICAgYWxsU2lnbmF0dXJlc0J5VHlwZS5zZXQodHlwZSwge1xuICAgICAgICBmb3JjZVJlc2V0OiBmb3JjZVJlc2V0LFxuICAgICAgICBvd25LZXk6IGtleSxcbiAgICAgICAgZnVsbEtleTogbnVsbCxcbiAgICAgICAgZ2V0Q3VzdG9tSG9va3M6IGdldEN1c3RvbUhvb2tzIHx8IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gLy8gVmlzaXQgaW5uZXIgdHlwZXMgYmVjYXVzZSB3ZSBtaWdodCBub3QgaGF2ZSBzaWduZWQgdGhlbS5cblxuXG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsKSB7XG4gICAgICBzd2l0Y2ggKGdldFByb3BlcnR5KHR5cGUsICckJHR5cGVvZicpKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICBzZXRTaWduYXR1cmUodHlwZS5yZW5kZXIsIGtleSwgZm9yY2VSZXNldCwgZ2V0Q3VzdG9tSG9va3MpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgIHNldFNpZ25hdHVyZSh0eXBlLnR5cGUsIGtleSwgZm9yY2VSZXNldCwgZ2V0Q3VzdG9tSG9va3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSAvLyBUaGlzIGlzIGxhemlseSBjYWxsZWQgZHVyaW5nIGZpcnN0IHJlbmRlciBmb3IgYSB0eXBlLlxuLy8gSXQgY2FwdHVyZXMgSG9vayBsaXN0IGF0IHRoYXQgdGltZSBzbyBpbmxpbmUgcmVxdWlyZXMgZG9uJ3QgYnJlYWsgY29tcGFyaXNvbnMuXG5cbmZ1bmN0aW9uIGNvbGxlY3RDdXN0b21Ib29rc0ZvclNpZ25hdHVyZSh0eXBlKSB7XG4gIHtcbiAgICB2YXIgc2lnbmF0dXJlID0gYWxsU2lnbmF0dXJlc0J5VHlwZS5nZXQodHlwZSk7XG5cbiAgICBpZiAoc2lnbmF0dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbXB1dGVGdWxsS2V5KHNpZ25hdHVyZSk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBnZXRGYW1pbHlCeUlEKGlkKSB7XG4gIHtcbiAgICByZXR1cm4gYWxsRmFtaWxpZXNCeUlELmdldChpZCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldEZhbWlseUJ5VHlwZSh0eXBlKSB7XG4gIHtcbiAgICByZXR1cm4gYWxsRmFtaWxpZXNCeVR5cGUuZ2V0KHR5cGUpO1xuICB9XG59XG5mdW5jdGlvbiBmaW5kQWZmZWN0ZWRIb3N0SW5zdGFuY2VzKGZhbWlsaWVzKSB7XG4gIHtcbiAgICB2YXIgYWZmZWN0ZWRJbnN0YW5jZXMgPSBuZXcgU2V0KCk7XG4gICAgbW91bnRlZFJvb3RzLmZvckVhY2goZnVuY3Rpb24gKHJvb3QpIHtcbiAgICAgIHZhciBoZWxwZXJzID0gaGVscGVyc0J5Um9vdC5nZXQocm9vdCk7XG5cbiAgICAgIGlmIChoZWxwZXJzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBoZWxwZXJzIGZvciBhIHJvb3QuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QgUmVmcmVzaC4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGluc3RhbmNlc0ZvclJvb3QgPSBoZWxwZXJzLmZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaChyb290LCBmYW1pbGllcyk7XG4gICAgICBpbnN0YW5jZXNGb3JSb290LmZvckVhY2goZnVuY3Rpb24gKGluc3QpIHtcbiAgICAgICAgYWZmZWN0ZWRJbnN0YW5jZXMuYWRkKGluc3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFmZmVjdGVkSW5zdGFuY2VzO1xuICB9XG59XG5mdW5jdGlvbiBpbmplY3RJbnRvR2xvYmFsSG9vayhnbG9iYWxPYmplY3QpIHtcbiAge1xuICAgIC8vIEZvciBSZWFjdCBOYXRpdmUsIHRoZSBnbG9iYWwgaG9vayB3aWxsIGJlIHNldCB1cCBieSByZXF1aXJlKCdyZWFjdC1kZXZ0b29scy1jb3JlJykuXG4gICAgLy8gVGhhdCBjb2RlIHdpbGwgcnVuIGJlZm9yZSB1cy4gU28gd2UgbmVlZCB0byBtb25rZXlwYXRjaCBmdW5jdGlvbnMgb24gZXhpc3RpbmcgaG9vay5cbiAgICAvLyBGb3IgUmVhY3QgV2ViLCB0aGUgZ2xvYmFsIGhvb2sgd2lsbCBiZSBzZXQgdXAgYnkgdGhlIGV4dGVuc2lvbi5cbiAgICAvLyBUaGlzIHdpbGwgYWxzbyBydW4gYmVmb3JlIHVzLlxuICAgIHZhciBob29rID0gZ2xvYmFsT2JqZWN0Ll9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcblxuICAgIGlmIChob29rID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEhvd2V2ZXIsIGlmIHRoZXJlIGlzIG5vIERldlRvb2xzIGV4dGVuc2lvbiwgd2UnbGwgbmVlZCB0byBzZXQgdXAgdGhlIGdsb2JhbCBob29rIG91cnNlbHZlcy5cbiAgICAgIC8vIE5vdGUgdGhhdCBpbiB0aGlzIGNhc2UgaXQncyBpbXBvcnRhbnQgdGhhdCByZW5kZXJlciBjb2RlIHJ1bnMgKmFmdGVyKiB0aGlzIG1ldGhvZCBjYWxsLlxuICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgcmVuZGVyZXIgd2lsbCB0aGluayB0aGF0IHRoZXJlIGlzIG5vIGdsb2JhbCBob29rLCBhbmQgd29uJ3QgZG8gdGhlIGluamVjdGlvbi5cbiAgICAgIHZhciBuZXh0SUQgPSAwO1xuICAgICAgZ2xvYmFsT2JqZWN0Ll9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9IGhvb2sgPSB7XG4gICAgICAgIHJlbmRlcmVyczogbmV3IE1hcCgpLFxuICAgICAgICBzdXBwb3J0c0ZpYmVyOiB0cnVlLFxuICAgICAgICBpbmplY3Q6IGZ1bmN0aW9uIChpbmplY3RlZCkge1xuICAgICAgICAgIHJldHVybiBuZXh0SUQrKztcbiAgICAgICAgfSxcbiAgICAgICAgb25TY2hlZHVsZUZpYmVyUm9vdDogZnVuY3Rpb24gKGlkLCByb290LCBjaGlsZHJlbikge30sXG4gICAgICAgIG9uQ29tbWl0RmliZXJSb290OiBmdW5jdGlvbiAoaWQsIHJvb3QsIG1heWJlUHJpb3JpdHlMZXZlbCwgZGlkRXJyb3IpIHt9LFxuICAgICAgICBvbkNvbW1pdEZpYmVyVW5tb3VudDogZnVuY3Rpb24gKCkge31cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGhvb2suaXNEaXNhYmxlZCkge1xuICAgICAgLy8gVGhpcyBpc24ndCBhIHJlYWwgcHJvcGVydHkgb24gdGhlIGhvb2ssIGJ1dCBpdCBjYW4gYmUgc2V0IHRvIG9wdCBvdXRcbiAgICAgIC8vIG9mIERldlRvb2xzIGludGVncmF0aW9uIGFuZCBhc3NvY2lhdGVkIHdhcm5pbmdzIGFuZCBsb2dzLlxuICAgICAgLy8gVXNpbmcgY29uc29sZVsnd2FybiddIHRvIGV2YWRlIEJhYmVsIGFuZCBFU0xpbnRcbiAgICAgIGNvbnNvbGVbJ3dhcm4nXSgnU29tZXRoaW5nIGhhcyBzaGltbWVkIHRoZSBSZWFjdCBEZXZUb29scyBnbG9iYWwgaG9vayAoX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKS4gJyArICdGYXN0IFJlZnJlc2ggaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGlzIHNoaW0gYW5kIHdpbGwgYmUgZGlzYWJsZWQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBIZXJlLCB3ZSBqdXN0IHdhbnQgdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHNjaGVkdWxlUmVmcmVzaC5cblxuXG4gICAgdmFyIG9sZEluamVjdCA9IGhvb2suaW5qZWN0O1xuXG4gICAgaG9vay5pbmplY3QgPSBmdW5jdGlvbiAoaW5qZWN0ZWQpIHtcbiAgICAgIHZhciBpZCA9IG9sZEluamVjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgICBpZiAodHlwZW9mIGluamVjdGVkLnNjaGVkdWxlUmVmcmVzaCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5qZWN0ZWQuc2V0UmVmcmVzaEhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gVGhpcyB2ZXJzaW9uIHN1cHBvcnRzIFJlYWN0IFJlZnJlc2guXG4gICAgICAgIGhlbHBlcnNCeVJlbmRlcmVySUQuc2V0KGlkLCBpbmplY3RlZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpZDtcbiAgICB9OyAvLyBEbyB0aGUgc2FtZSBmb3IgYW55IGFscmVhZHkgaW5qZWN0ZWQgcm9vdHMuXG4gICAgLy8gVGhpcyBpcyB1c2VmdWwgaWYgUmVhY3RET00gaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE3NjI2XG5cblxuICAgIGhvb2sucmVuZGVyZXJzLmZvckVhY2goZnVuY3Rpb24gKGluamVjdGVkLCBpZCkge1xuICAgICAgaWYgKHR5cGVvZiBpbmplY3RlZC5zY2hlZHVsZVJlZnJlc2ggPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluamVjdGVkLnNldFJlZnJlc2hIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIFRoaXMgdmVyc2lvbiBzdXBwb3J0cyBSZWFjdCBSZWZyZXNoLlxuICAgICAgICBoZWxwZXJzQnlSZW5kZXJlcklELnNldChpZCwgaW5qZWN0ZWQpO1xuICAgICAgfVxuICAgIH0pOyAvLyBXZSBhbHNvIHdhbnQgdG8gdHJhY2sgY3VycmVudGx5IG1vdW50ZWQgcm9vdHMuXG5cbiAgICB2YXIgb2xkT25Db21taXRGaWJlclJvb3QgPSBob29rLm9uQ29tbWl0RmliZXJSb290O1xuXG4gICAgdmFyIG9sZE9uU2NoZWR1bGVGaWJlclJvb3QgPSBob29rLm9uU2NoZWR1bGVGaWJlclJvb3QgfHwgZnVuY3Rpb24gKCkge307XG5cbiAgICBob29rLm9uU2NoZWR1bGVGaWJlclJvb3QgPSBmdW5jdGlvbiAoaWQsIHJvb3QsIGNoaWxkcmVuKSB7XG4gICAgICBpZiAoIWlzUGVyZm9ybWluZ1JlZnJlc2gpIHtcbiAgICAgICAgLy8gSWYgaXQgd2FzIGludGVudGlvbmFsbHkgc2NoZWR1bGVkLCBkb24ndCBhdHRlbXB0IHRvIHJlc3RvcmUuXG4gICAgICAgIC8vIFRoaXMgaW5jbHVkZXMgaW50ZW50aW9uYWxseSBzY2hlZHVsZWQgdW5tb3VudHMuXG4gICAgICAgIGZhaWxlZFJvb3RzLmRlbGV0ZShyb290KTtcblxuICAgICAgICBpZiAocm9vdEVsZW1lbnRzICE9PSBudWxsKSB7XG4gICAgICAgICAgcm9vdEVsZW1lbnRzLnNldChyb290LCBjaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9sZE9uU2NoZWR1bGVGaWJlclJvb3QuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuXG4gICAgaG9vay5vbkNvbW1pdEZpYmVyUm9vdCA9IGZ1bmN0aW9uIChpZCwgcm9vdCwgbWF5YmVQcmlvcml0eUxldmVsLCBkaWRFcnJvcikge1xuICAgICAgdmFyIGhlbHBlcnMgPSBoZWxwZXJzQnlSZW5kZXJlcklELmdldChpZCk7XG5cbiAgICAgIGlmIChoZWxwZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaGVscGVyc0J5Um9vdC5zZXQocm9vdCwgaGVscGVycyk7XG4gICAgICAgIHZhciBjdXJyZW50ID0gcm9vdC5jdXJyZW50O1xuICAgICAgICB2YXIgYWx0ZXJuYXRlID0gY3VycmVudC5hbHRlcm5hdGU7IC8vIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyByb290IGhhcyBqdXN0ICh1biltb3VudGVkLlxuICAgICAgICAvLyBUaGlzIGxvZ2ljIGlzIGNvcHktcGFzdGVkIGZyb20gc2ltaWxhciBsb2dpYyBpbiB0aGUgRGV2VG9vbHMgYmFja2VuZC5cbiAgICAgICAgLy8gSWYgdGhpcyBicmVha3Mgd2l0aCBzb21lIHJlZmFjdG9yaW5nLCB5b3UnbGwgd2FudCB0byB1cGRhdGUgRGV2VG9vbHMgdG9vLlxuXG4gICAgICAgIGlmIChhbHRlcm5hdGUgIT09IG51bGwpIHtcbiAgICAgICAgICB2YXIgd2FzTW91bnRlZCA9IGFsdGVybmF0ZS5tZW1vaXplZFN0YXRlICE9IG51bGwgJiYgYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuZWxlbWVudCAhPSBudWxsICYmIG1vdW50ZWRSb290cy5oYXMocm9vdCk7XG4gICAgICAgICAgdmFyIGlzTW91bnRlZCA9IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZSAhPSBudWxsICYmIGN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5lbGVtZW50ICE9IG51bGw7XG5cbiAgICAgICAgICBpZiAoIXdhc01vdW50ZWQgJiYgaXNNb3VudGVkKSB7XG4gICAgICAgICAgICAvLyBNb3VudCBhIG5ldyByb290LlxuICAgICAgICAgICAgbW91bnRlZFJvb3RzLmFkZChyb290KTtcbiAgICAgICAgICAgIGZhaWxlZFJvb3RzLmRlbGV0ZShyb290KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc01vdW50ZWQgJiYgaXNNb3VudGVkKSA7IGVsc2UgaWYgKHdhc01vdW50ZWQgJiYgIWlzTW91bnRlZCkge1xuICAgICAgICAgICAgLy8gVW5tb3VudCBhbiBleGlzdGluZyByb290LlxuICAgICAgICAgICAgbW91bnRlZFJvb3RzLmRlbGV0ZShyb290KTtcblxuICAgICAgICAgICAgaWYgKGRpZEVycm9yKSB7XG4gICAgICAgICAgICAgIC8vIFdlJ2xsIHJlbW91bnQgaXQgb24gZnV0dXJlIGVkaXRzLlxuICAgICAgICAgICAgICBmYWlsZWRSb290cy5hZGQocm9vdCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBoZWxwZXJzQnlSb290LmRlbGV0ZShyb290KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCF3YXNNb3VudGVkICYmICFpc01vdW50ZWQpIHtcbiAgICAgICAgICAgIGlmIChkaWRFcnJvcikge1xuICAgICAgICAgICAgICAvLyBXZSdsbCByZW1vdW50IGl0IG9uIGZ1dHVyZSBlZGl0cy5cbiAgICAgICAgICAgICAgZmFpbGVkUm9vdHMuYWRkKHJvb3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBNb3VudCBhIG5ldyByb290LlxuICAgICAgICAgIG1vdW50ZWRSb290cy5hZGQocm9vdCk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gQWx3YXlzIGNhbGwgdGhlIGRlY29yYXRlZCBEZXZUb29scyBob29rLlxuXG5cbiAgICAgIHJldHVybiBvbGRPbkNvbW1pdEZpYmVyUm9vdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cbn1cbmZ1bmN0aW9uIGhhc1VucmVjb3ZlcmFibGVFcnJvcnMoKSB7XG4gIC8vIFRPRE86IGRlbGV0ZSB0aGlzIGFmdGVyIHJlbW92aW5nIGRlcGVuZGVuY3kgaW4gUk4uXG4gIHJldHVybiBmYWxzZTtcbn0gLy8gRXhwb3NlZCBmb3IgdGVzdGluZy5cblxuZnVuY3Rpb24gX2dldE1vdW50ZWRSb290Q291bnQoKSB7XG4gIHtcbiAgICByZXR1cm4gbW91bnRlZFJvb3RzLnNpemU7XG4gIH1cbn0gLy8gVGhpcyBpcyBhIHdyYXBwZXIgb3ZlciBtb3JlIHByaW1pdGl2ZSBmdW5jdGlvbnMgZm9yIHNldHRpbmcgc2lnbmF0dXJlLlxuLy8gU2lnbmF0dXJlcyBsZXQgdXMgZGVjaWRlIHdoZXRoZXIgdGhlIEhvb2sgb3JkZXIgaGFzIGNoYW5nZWQgb24gcmVmcmVzaC5cbi8vXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSB0cmFuc2Zvcm0gdGFyZ2V0LCBlLmcuOlxuLy8gdmFyIF9zID0gY3JlYXRlU2lnbmF0dXJlRnVuY3Rpb25Gb3JUcmFuc2Zvcm0oKVxuLy9cbi8vIGZ1bmN0aW9uIEhlbGxvKCkge1xuLy8gICBjb25zdCBbZm9vLCBzZXRGb29dID0gdXNlU3RhdGUoMCk7XG4vLyAgIGNvbnN0IHZhbHVlID0gdXNlQ3VzdG9tSG9vaygpO1xuLy8gICBfcygpOyAvKiBDYWxsIHdpdGhvdXQgYXJndW1lbnRzIHRyaWdnZXJzIGNvbGxlY3RpbmcgdGhlIGN1c3RvbSBIb29rIGxpc3QuXG4vLyAgICAgICAgICAqIFRoaXMgZG9lc24ndCBoYXBwZW4gZHVyaW5nIHRoZSBtb2R1bGUgZXZhbHVhdGlvbiBiZWNhdXNlIHdlXG4vLyAgICAgICAgICAqIGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSBtb2R1bGUgb3JkZXIgd2l0aCBpbmxpbmUgcmVxdWlyZXMuXG4vLyAgICAgICAgICAqIE5leHQgY2FsbHMgYXJlIG5vb3BzLiAqL1xuLy8gICByZXR1cm4gPGgxPkhpPC9oMT47XG4vLyB9XG4vL1xuLy8gLyogQ2FsbCB3aXRoIGFyZ3VtZW50cyBhdHRhY2hlcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSB0eXBlOiAqL1xuLy8gX3MoXG4vLyAgIEhlbGxvLFxuLy8gICAndXNlU3RhdGV7W2Zvbywgc2V0Rm9vXX0oMCknLFxuLy8gICAoKSA9PiBbdXNlQ3VzdG9tSG9va10sIC8qIExhenkgdG8gYXZvaWQgdHJpZ2dlcmluZyBpbmxpbmUgcmVxdWlyZXMgKi9cbi8vICk7XG5cbmZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZUZ1bmN0aW9uRm9yVHJhbnNmb3JtKCkge1xuICB7XG4gICAgdmFyIHNhdmVkVHlwZTtcbiAgICB2YXIgaGFzQ3VzdG9tSG9va3M7XG4gICAgdmFyIGRpZENvbGxlY3RIb29rcyA9IGZhbHNlO1xuICAgIHJldHVybiBmdW5jdGlvbiAodHlwZSwga2V5LCBmb3JjZVJlc2V0LCBnZXRDdXN0b21Ib29rcykge1xuICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIFdlJ3JlIGluIHRoZSBpbml0aWFsIHBoYXNlIHRoYXQgYXNzb2NpYXRlcyBzaWduYXR1cmVzXG4gICAgICAgIC8vIHdpdGggdGhlIGZ1bmN0aW9ucy4gTm90ZSB0aGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXNcbiAgICAgICAgLy8gaW4gSE9DIGNoYWlucyBsaWtlIF9zKGhvYzEoX3MoaG9jMihfcyhhY3R1YWxGdW5jdGlvbikpKSkpLlxuICAgICAgICBpZiAoIXNhdmVkVHlwZSkge1xuICAgICAgICAgIC8vIFdlJ3JlIGluIHRoZSBpbm5lcm1vc3QgY2FsbCwgc28gdGhpcyBpcyB0aGUgYWN0dWFsIHR5cGUuXG4gICAgICAgICAgc2F2ZWRUeXBlID0gdHlwZTtcbiAgICAgICAgICBoYXNDdXN0b21Ib29rcyA9IHR5cGVvZiBnZXRDdXN0b21Ib29rcyA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgfSAvLyBTZXQgdGhlIHNpZ25hdHVyZSBmb3IgYWxsIHR5cGVzIChldmVuIHdyYXBwZXJzISkgaW4gY2FzZVxuICAgICAgICAvLyB0aGV5IGhhdmUgbm8gc2lnbmF0dXJlcyBvZiB0aGVpciBvd24uIFRoaXMgaXMgdG8gcHJldmVudFxuICAgICAgICAvLyBwcm9ibGVtcyBsaWtlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjA0MTcuXG5cblxuICAgICAgICBpZiAodHlwZSAhPSBudWxsICYmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgc2V0U2lnbmF0dXJlKHR5cGUsIGtleSwgZm9yY2VSZXNldCwgZ2V0Q3VzdG9tSG9va3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSdyZSBpbiB0aGUgX3MoKSBjYWxsIHdpdGhvdXQgYXJndW1lbnRzLCB3aGljaCBtZWFuc1xuICAgICAgICAvLyB0aGlzIGlzIHRoZSB0aW1lIHRvIGNvbGxlY3QgY3VzdG9tIEhvb2sgc2lnbmF0dXJlcy5cbiAgICAgICAgLy8gT25seSBkbyB0aGlzIG9uY2UuIFRoaXMgcGF0aCBpcyBob3QgYW5kIHJ1bnMgKmluc2lkZSogZXZlcnkgcmVuZGVyIVxuICAgICAgICBpZiAoIWRpZENvbGxlY3RIb29rcyAmJiBoYXNDdXN0b21Ib29rcykge1xuICAgICAgICAgIGRpZENvbGxlY3RIb29rcyA9IHRydWU7XG4gICAgICAgICAgY29sbGVjdEN1c3RvbUhvb2tzRm9yU2lnbmF0dXJlKHNhdmVkVHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5mdW5jdGlvbiBpc0xpa2VseUNvbXBvbmVudFR5cGUodHlwZSkge1xuICB7XG4gICAgc3dpdGNoICh0eXBlb2YgdHlwZSkge1xuICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gRmlyc3QsIGRlYWwgd2l0aCBjbGFzc2VzLlxuICAgICAgICAgIGlmICh0eXBlLnByb3RvdHlwZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAvLyBSZWFjdCBjbGFzcy5cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvd25OYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHR5cGUucHJvdG90eXBlKTtcblxuICAgICAgICAgICAgaWYgKG93bk5hbWVzLmxlbmd0aCA+IDEgfHwgb3duTmFtZXNbMF0gIT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBsb29rcyBsaWtlIGEgY2xhc3MuXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvXG5cblxuICAgICAgICAgICAgaWYgKHR5cGUucHJvdG90eXBlLl9fcHJvdG9fXyAhPT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgICAgICAgICAgICAvLyBJdCBoYXMgYSBzdXBlcmNsYXNzLlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9IC8vIFBhc3MgdGhyb3VnaC5cbiAgICAgICAgICAgIC8vIFRoaXMgbG9va3MgbGlrZSBhIHJlZ3VsYXIgZnVuY3Rpb24gd2l0aCBlbXB0eSBwcm90b3R5cGUuXG5cbiAgICAgICAgICB9IC8vIEZvciBwbGFpbiBmdW5jdGlvbnMgYW5kIGFycm93cywgdXNlIG5hbWUgYXMgYSBoZXVyaXN0aWMuXG5cblxuICAgICAgICAgIHZhciBuYW1lID0gdHlwZS5uYW1lIHx8IHR5cGUuZGlzcGxheU5hbWU7XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyAmJiAvXltBLVpdLy50ZXN0KG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAodHlwZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGdldFByb3BlcnR5KHR5cGUsICckJHR5cGVvZicpKSB7XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgICAgLy8gRGVmaW5pdGVseSBSZWFjdCBjb21wb25lbnRzLlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydHMuX2dldE1vdW50ZWRSb290Q291bnQgPSBfZ2V0TW91bnRlZFJvb3RDb3VudDtcbmV4cG9ydHMuY29sbGVjdEN1c3RvbUhvb2tzRm9yU2lnbmF0dXJlID0gY29sbGVjdEN1c3RvbUhvb2tzRm9yU2lnbmF0dXJlO1xuZXhwb3J0cy5jcmVhdGVTaWduYXR1cmVGdW5jdGlvbkZvclRyYW5zZm9ybSA9IGNyZWF0ZVNpZ25hdHVyZUZ1bmN0aW9uRm9yVHJhbnNmb3JtO1xuZXhwb3J0cy5maW5kQWZmZWN0ZWRIb3N0SW5zdGFuY2VzID0gZmluZEFmZmVjdGVkSG9zdEluc3RhbmNlcztcbmV4cG9ydHMuZ2V0RmFtaWx5QnlJRCA9IGdldEZhbWlseUJ5SUQ7XG5leHBvcnRzLmdldEZhbWlseUJ5VHlwZSA9IGdldEZhbWlseUJ5VHlwZTtcbmV4cG9ydHMuaGFzVW5yZWNvdmVyYWJsZUVycm9ycyA9IGhhc1VucmVjb3ZlcmFibGVFcnJvcnM7XG5leHBvcnRzLmluamVjdEludG9HbG9iYWxIb29rID0gaW5qZWN0SW50b0dsb2JhbEhvb2s7XG5leHBvcnRzLmlzTGlrZWx5Q29tcG9uZW50VHlwZSA9IGlzTGlrZWx5Q29tcG9uZW50VHlwZTtcbmV4cG9ydHMucGVyZm9ybVJlYWN0UmVmcmVzaCA9IHBlcmZvcm1SZWFjdFJlZnJlc2g7XG5leHBvcnRzLnJlZ2lzdGVyID0gcmVnaXN0ZXI7XG5leHBvcnRzLnNldFNpZ25hdHVyZSA9IHNldFNpZ25hdHVyZTtcbiAgfSkoKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1yZWZyZXNoLXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtcmVmcmVzaC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicmVxdWly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