@jsenv/cli 0.1.25 → 0.1.26

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