angular-three 2.0.0-beta.21 → 2.0.0-beta.223

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 (109) hide show
  1. package/esm2022/index.mjs +4 -11
  2. package/esm2022/lib/canvas.mjs +81 -156
  3. package/esm2022/lib/directives/args.mjs +6 -6
  4. package/esm2022/lib/directives/common.mjs +15 -14
  5. package/esm2022/lib/directives/parent.mjs +6 -6
  6. package/esm2022/lib/dom/events.mjs +2 -2
  7. package/esm2022/lib/events.mjs +28 -25
  8. package/esm2022/lib/instance.mjs +39 -34
  9. package/esm2022/lib/loader.mjs +12 -14
  10. package/esm2022/lib/loop.mjs +9 -10
  11. package/esm2022/lib/portal.mjs +122 -135
  12. package/esm2022/lib/ref.mjs +18 -20
  13. package/esm2022/lib/renderer/catalogue.mjs +2 -2
  14. package/esm2022/lib/renderer/constants.mjs +2 -2
  15. package/esm2022/lib/renderer/index.mjs +58 -62
  16. package/esm2022/lib/renderer/store.mjs +129 -120
  17. package/esm2022/lib/renderer/utils.mjs +35 -42
  18. package/esm2022/lib/roots.mjs +41 -38
  19. package/esm2022/lib/routed-scene.mjs +6 -7
  20. package/esm2022/lib/store.mjs +163 -189
  21. package/esm2022/lib/utils/apply-props.mjs +12 -17
  22. package/esm2022/lib/utils/attach.mjs +6 -6
  23. package/esm2022/lib/utils/before-render.mjs +12 -0
  24. package/esm2022/lib/utils/cd-aware-signal.mjs +24 -0
  25. package/esm2022/lib/utils/create-api-token.mjs +13 -0
  26. package/esm2022/lib/utils/is.mjs +6 -5
  27. package/esm2022/lib/utils/make.mjs +15 -12
  28. package/esm2022/lib/utils/signal-store.mjs +67 -57
  29. package/esm2022/lib/utils/update.mjs +3 -2
  30. package/fesm2022/angular-three.mjs +1621 -1795
  31. package/fesm2022/angular-three.mjs.map +1 -1
  32. package/index.d.ts +6 -10
  33. package/lib/canvas.d.ts +24 -37
  34. package/lib/directives/common.d.ts +12 -1
  35. package/lib/events.d.ts +2 -2
  36. package/lib/instance.d.ts +19 -10
  37. package/lib/loader.d.ts +13 -4
  38. package/lib/loop.d.ts +6 -29
  39. package/lib/portal.d.ts +18 -26
  40. package/lib/ref.d.ts +0 -1
  41. package/lib/renderer/catalogue.d.ts +5 -1
  42. package/lib/renderer/constants.d.ts +1 -1
  43. package/lib/renderer/index.d.ts +55 -4
  44. package/lib/renderer/store.d.ts +18 -21
  45. package/lib/renderer/utils.d.ts +2 -3
  46. package/lib/roots.d.ts +4 -3
  47. package/lib/store.d.ts +9 -11
  48. package/lib/utils/apply-props.d.ts +0 -1
  49. package/lib/{before-render.d.ts → utils/before-render.d.ts} +1 -1
  50. package/lib/utils/cd-aware-signal.d.ts +4 -0
  51. package/lib/utils/create-api-token.d.ts +23 -0
  52. package/lib/utils/is.d.ts +11 -12
  53. package/lib/utils/make.d.ts +3 -2
  54. package/lib/utils/signal-store.d.ts +16 -3
  55. package/metadata.json +1 -1
  56. package/package.json +30 -11
  57. package/plugin/generators.json +0 -32
  58. package/plugin/src/generators/init/compat.d.ts +1 -3
  59. package/plugin/src/generators/init/files/experience/{experience.component.ts.__tmpl__ → experience.component.ts__tmpl__} +1 -0
  60. package/plugin/src/generators/init/generator.d.ts +2 -5
  61. package/plugin/src/generators/init/generator.js +94 -95
  62. package/plugin/src/generators/init/generator.js.map +1 -1
  63. package/plugin/src/generators/init/schema.json +1 -12
  64. package/plugin/src/generators/utils.js.map +1 -1
  65. package/plugin/src/generators/{versions.d.ts → version.d.ts} +5 -3
  66. package/plugin/src/generators/version.js +18 -0
  67. package/plugin/src/generators/version.js.map +1 -0
  68. package/plugin/src/index.d.ts +0 -3
  69. package/plugin/src/index.js +0 -9
  70. package/plugin/src/index.js.map +1 -1
  71. package/web-types.json +1 -1
  72. package/esm2022/lib/before-render.mjs +0 -13
  73. package/esm2022/lib/directives/key.mjs +0 -29
  74. package/esm2022/lib/directives/repeat.mjs +0 -17
  75. package/esm2022/lib/three-types.mjs +0 -2
  76. package/esm2022/lib/utils/assert-injection-context.mjs +0 -14
  77. package/esm2022/lib/utils/create-injection-token.mjs +0 -47
  78. package/esm2022/lib/utils/safe-detect-changes.mjs +0 -17
  79. package/lib/directives/key.d.ts +0 -10
  80. package/lib/directives/repeat.d.ts +0 -7
  81. package/lib/three-types.d.ts +0 -306
  82. package/lib/utils/assert-injection-context.d.ts +0 -2
  83. package/lib/utils/create-injection-token.d.ts +0 -27
  84. package/lib/utils/safe-detect-changes.d.ts +0 -2
  85. package/plugin/package.json +0 -6
  86. package/plugin/src/generators/init-cannon/compat.d.ts +0 -2
  87. package/plugin/src/generators/init-cannon/compat.js +0 -6
  88. package/plugin/src/generators/init-cannon/compat.js.map +0 -1
  89. package/plugin/src/generators/init-cannon/generator.d.ts +0 -2
  90. package/plugin/src/generators/init-cannon/generator.js +0 -22
  91. package/plugin/src/generators/init-cannon/generator.js.map +0 -1
  92. package/plugin/src/generators/init-cannon/schema.json +0 -6
  93. package/plugin/src/generators/init-postprocessing/compat.d.ts +0 -2
  94. package/plugin/src/generators/init-postprocessing/compat.js +0 -6
  95. package/plugin/src/generators/init-postprocessing/compat.js.map +0 -1
  96. package/plugin/src/generators/init-postprocessing/generator.d.ts +0 -2
  97. package/plugin/src/generators/init-postprocessing/generator.js +0 -20
  98. package/plugin/src/generators/init-postprocessing/generator.js.map +0 -1
  99. package/plugin/src/generators/init-postprocessing/schema.json +0 -6
  100. package/plugin/src/generators/init-soba/compat.d.ts +0 -2
  101. package/plugin/src/generators/init-soba/compat.js +0 -6
  102. package/plugin/src/generators/init-soba/compat.js.map +0 -1
  103. package/plugin/src/generators/init-soba/generator.d.ts +0 -2
  104. package/plugin/src/generators/init-soba/generator.js +0 -26
  105. package/plugin/src/generators/init-soba/generator.js.map +0 -1
  106. package/plugin/src/generators/init-soba/schema.json +0 -6
  107. package/plugin/src/generators/versions.js +0 -16
  108. package/plugin/src/generators/versions.js.map +0 -1
  109. /package/plugin/src/generators/init/files/experience/{experience.component.html.__tmpl__ → experience.component.html__tmpl__} +0 -0
@@ -1,10 +1,9 @@
1
- import { untracked } from '@angular/core';
2
1
  import * as THREE from 'three';
3
2
  import { getLocalState, invalidateInstance } from '../instance';
4
3
  import { is } from './is';
5
4
  import { checkUpdate } from './update';
6
5
  // This function prepares a set of changes to be applied to the instance
7
- export function diffProps(instance, props) {
6
+ function diffProps(instance, props) {
8
7
  const propsEntries = Object.entries(props);
9
8
  const changes = [];
10
9
  for (const [propKey, propValue] of propsEntries) {
@@ -28,10 +27,9 @@ export function applyProps(instance, props) {
28
27
  // if props is empty
29
28
  if (!Object.keys(props).length)
30
29
  return instance;
31
- // Filter equals, events and reserved props
32
- // filter equals, events , and reserved props
30
+ // filter equals, and reserved props
33
31
  const localState = getLocalState(instance);
34
- const rootState = localState.store?.get();
32
+ const rootState = localState?.store?.snapshot ?? {};
35
33
  const changes = diffProps(instance, props);
36
34
  for (let i = 0; i < changes.length; i++) {
37
35
  let [key, value] = changes[i];
@@ -61,8 +59,7 @@ export function applyProps(instance, props) {
61
59
  targetProp['fromArray'](value);
62
60
  else
63
61
  targetProp['set'](...value);
64
- }
65
- // test again target.copy
62
+ } // test again target.copy
66
63
  else if (targetProp['copy'] &&
67
64
  value &&
68
65
  value.constructor &&
@@ -70,8 +67,7 @@ export function applyProps(instance, props) {
70
67
  targetProp['copy'](value);
71
68
  if (!THREE.ColorManagement && !rootState.linear && isColor)
72
69
  targetProp['convertSRGBToLinear']();
73
- }
74
- // if nothing else fits, just set the single value, ignore undefined
70
+ } // if nothing else fits, just set the single value, ignore undefined
75
71
  else if (value !== undefined) {
76
72
  const isColor = targetProp instanceof THREE.Color;
77
73
  // allow setting array scalars
@@ -87,8 +83,7 @@ export function applyProps(instance, props) {
87
83
  if (!THREE.ColorManagement && !rootState?.linear && isColor)
88
84
  targetProp.convertSRGBToLinear();
89
85
  }
90
- }
91
- // else just overwrite the value
86
+ } // else just overwrite the value
92
87
  else {
93
88
  currentInstance[key] = value;
94
89
  // auto-convert srgb textures
@@ -108,20 +103,20 @@ export function applyProps(instance, props) {
108
103
  checkUpdate(targetProp);
109
104
  invalidateInstance(instance);
110
105
  }
111
- const instanceHandlers = localState.eventCount;
112
- const parent = localState.parent ? untracked(localState.parent) : null;
113
- if (parent && rootState.internal && instance['raycast'] && instanceHandlers !== localState.eventCount) {
106
+ const instanceHandlersCount = localState?.eventCount;
107
+ const parent = localState?.instanceStore?.get('parent');
108
+ if (parent && rootState.internal && instance['raycast'] && instanceHandlersCount !== localState?.eventCount) {
114
109
  // Pre-emptively remove the instance from the interaction manager
115
110
  const index = rootState.internal.interaction.indexOf(instance);
116
111
  if (index > -1)
117
112
  rootState.internal.interaction.splice(index, 1);
118
113
  // Add the instance to the interaction manager only when it has handlers
119
- if (localState.eventCount)
114
+ if (localState?.eventCount)
120
115
  rootState.internal.interaction.push(instance);
121
116
  }
122
- if (parent && localState.afterUpdate && localState.afterUpdate.observed && changes.length) {
117
+ if (parent && localState?.afterUpdate && localState.afterUpdate.observed && changes.length) {
123
118
  localState.afterUpdate.emit(instance);
124
119
  }
125
120
  return instance;
126
121
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9hcHBseS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQXdCLE1BQU0sYUFBYSxDQUFDO0FBRXRGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2Qyx3RUFBd0U7QUFDeEUsTUFBTSxVQUFVLFNBQVMsQ0FBQyxRQUFzQixFQUFFLEtBQW1CO0lBQ3BFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsTUFBTSxPQUFPLEdBQW9DLEVBQUUsQ0FBQztJQUVwRCxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksWUFBWSxFQUFFO1FBQ2hELElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUNsQixJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDakMsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFO2dCQUMzQixHQUFHLEdBQUcsWUFBWSxDQUFDO2FBQ25CO2lCQUFNLElBQUksT0FBTyxLQUFLLGdCQUFnQixFQUFFO2dCQUN4QyxHQUFHLEdBQUcsa0JBQWtCLENBQUM7YUFDekI7U0FDRDtRQUNELElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxD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QUN0QztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIGludmFsaWRhdGVJbnN0YW5jZSwgdHlwZSBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuLi9pbnN0YW5jZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi9pcyc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSB9IGZyb20gJy4vdXBkYXRlJztcblxuLy8gVGhpcyBmdW5jdGlvbiBwcmVwYXJlcyBhIHNldCBvZiBjaGFuZ2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGluc3RhbmNlXG5leHBvcnQgZnVuY3Rpb24gZGlmZlByb3BzKGluc3RhbmNlOiBOZ3RBbnlSZWNvcmQsIHByb3BzOiBOZ3RBbnlSZWNvcmQpIHtcblx0Y29uc3QgcHJvcHNFbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvcHMpO1xuXHRjb25zdCBjaGFuZ2VzOiBba2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duXVtdID0gW107XG5cblx0Zm9yIChjb25zdCBbcHJvcEtleSwgcHJvcFZhbHVlXSBvZiBwcm9wc0VudHJpZXMpIHtcblx0XHRsZXQga2V5ID0gcHJvcEtleTtcblx0XHRpZiAoaXMuY29sb3JTcGFjZUV4aXN0KGluc3RhbmNlKSkge1xuXHRcdFx0aWYgKHByb3BLZXkgPT09ICdlbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ2NvbG9yU3BhY2UnO1xuXHRcdFx0fSBlbHNlIGlmIChwcm9wS2V5ID09PSAnb3V0cHV0RW5jb2RpbmcnKSB7XG5cdFx0XHRcdGtleSA9ICdvdXRwdXRDb2xvclNwYWNlJztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGlzLmVxdShwcm9wVmFsdWUsIGluc3RhbmNlW2tleV0pKSBjb250aW51ZTtcblx0XHRjaGFuZ2VzLnB1c2goW3Byb3BLZXksIHByb3BWYWx1ZV0pO1xuXHR9XG5cblx0cmV0dXJuIGNoYW5nZXM7XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gYXBwbGllcyBhIHNldCBvZiBjaGFuZ2VzIHRvIHRoZSBpbnN0YW5jZVxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UHJvcHMoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSwgcHJvcHM6IE5ndEFueVJlY29yZCkge1xuXHQvLyBpZiBwcm9wcyBpcyBlbXB0eVxuXHRpZiAoIU9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGgpIHJldHVybiBpbnN0YW5jZTtcblxuXHQvLyBGaWx0ZXIgZXF1YWxzLCBldmVudHMgYW5kIHJlc2VydmVkIHByb3BzXG5cdC8vIGZpbHRlciBlcXVhbHMsIGV2ZW50cyAsIGFuZCByZXNlcnZlZCBwcm9wc1xuXHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG5cdGNvbnN0IHJvb3RTdGF0ZSA9IGxvY2FsU3RhdGUuc3RvcmU/LmdldCgpO1xuXHRjb25zdCBjaGFuZ2VzID0gZGlmZlByb3BzKGluc3RhbmNlLCBwcm9wcyk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0bGV0IFtrZXksIHZhbHVlXSA9IGNoYW5nZXNbaV07XG5cblx0XHQvLyBBbGlhcyAob3V0cHV0KWVuY29kaW5nID0+IChvdXRwdXQpY29sb3JTcGFjZSAoc2luY2UgcjE1Milcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vcG1uZHJzL3JlYWN0LXRocmVlLWZpYmVyL3B1bGwvMjgyOVxuXHRcdGlmIChpcy5jb2xvclNwYWNlRXhpc3QoaW5zdGFuY2UpKSB7XG5cdFx0XHRjb25zdCBzUkdCRW5jb2RpbmcgPSAzMDAxO1xuXHRcdFx0Y29uc3QgU1JHQkNvbG9yU3BhY2UgPSAnc3JnYic7XG5cdFx0XHRjb25zdCBMaW5lYXJTUkdCQ29sb3JTcGFjZSA9ICdzcmdiLWxpbmVhcic7XG5cblx0XHRcdGlmIChrZXkgPT09ICdlbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ2NvbG9yU3BhY2UnO1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlID09PSBzUkdCRW5jb2RpbmcgPyBTUkdCQ29sb3JTcGFjZSA6IExpbmVhclNSR0JDb2xvclNwYWNlO1xuXHRcdFx0fSBlbHNlIGlmIChrZXkgPT09ICdvdXRwdXRFbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ291dHB1dENvbG9yU3BhY2UnO1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlID09PSBzUkdCRW5jb2RpbmcgPyBTUkdCQ29sb3JTcGFjZSA6IExpbmVhclNSR0JDb2xvclNwYWNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IGluc3RhbmNlO1xuXHRcdGNvbnN0IHRhcmdldFByb3AgPSBjdXJyZW50SW5zdGFuY2Vba2V5XSBhcyBOZ3RBbnlSZWNvcmQ7XG5cblx0XHQvLyBzcGVjaWFsIHRyZWF0bWVuIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3Igc2V0L2NvcHksIGFuZCBsYXllcnNcblx0XHRpZiAodGFyZ2V0UHJvcCAmJiB0YXJnZXRQcm9wWydzZXQnXSAmJiAodGFyZ2V0UHJvcFsnY29weSddIHx8IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMpKSB7XG5cdFx0XHRjb25zdCBpc0NvbG9yID0gdGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkNvbG9yO1xuXHRcdFx0Ly8gaWYgdmFsdWUgaXMgYW4gYXJyYXlcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHRpZiAoKHRhcmdldFByb3AgYXMgTmd0QW55UmVjb3JkKVsnZnJvbUFycmF5J10pICh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ2Zyb21BcnJheSddKHZhbHVlKTtcblx0XHRcdFx0ZWxzZSB0YXJnZXRQcm9wWydzZXQnXSguLi52YWx1ZSk7XG5cdFx0XHR9XG5cdFx0XHQvLyB0ZXN0IGFnYWluIHRhcmdldC5jb3B5XG5cdFx0XHRlbHNlIGlmIChcblx0XHRcdFx0KHRhcmdldFByb3AgYXMgTmd0QW55UmVjb3JkKVsnY29weSddICYmXG5cdFx0XHRcdHZhbHVlICYmXG5cdFx0XHRcdHZhbHVlLmNvbnN0cnVjdG9yICYmXG5cdFx0XHRcdHRhcmdldFByb3AuY29uc3RydWN0b3IubmFtZSA9PT0gdmFsdWUuY29uc3RydWN0b3IubmFtZVxuXHRcdFx0KSB7XG5cdFx0XHRcdCh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ2NvcHknXSh2YWx1ZSk7XG5cdFx0XHRcdGlmICghVEhSRUUuQ29sb3JNYW5hZ2VtZW50ICYmICFyb290U3RhdGUubGluZWFyICYmIGlzQ29sb3IpIHRhcmdldFByb3BbJ2NvbnZlcnRTUkdCVG9MaW5lYXInXSgpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gaWYgbm90aGluZyBlbHNlIGZpdHMsIGp1c3Qgc2V0IHRoZSBzaW5nbGUgdmFsdWUsIGlnbm9yZSB1bmRlZmluZWRcblx0XHRcdGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3QgaXNDb2xvciA9IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5Db2xvcjtcblx0XHRcdFx0Ly8gYWxsb3cgc2V0dGluZyBhcnJheSBzY2FsYXJzXG5cdFx0XHRcdGlmICghaXNDb2xvciAmJiAodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydzZXRTY2FsYXInXSlcblx0XHRcdFx0XHQodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydzZXRTY2FsYXInXSh2YWx1ZSk7XG5cdFx0XHRcdC8vIGxheWVycyBoYXZlIG5vIGNvcHkgZnVuY3Rpb24sIGNvcHkgdGhlIG1hc2tcblx0XHRcdFx0ZWxzZSBpZiAodGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkxheWVycyAmJiB2YWx1ZSBpbnN0YW5jZW9mIFRIUkVFLkxheWVycylcblx0XHRcdFx0XHR0YXJnZXRQcm9wLm1hc2sgPSB2YWx1ZS5tYXNrO1xuXHRcdFx0XHQvLyBvdGhlcndpc2UganVzdCBzZXQgLi4uXG5cdFx0XHRcdGVsc2UgdGFyZ2V0UHJvcFsnc2V0J10odmFsdWUpO1xuXG5cdFx0XHRcdC8vIGF1dG8tY29udmVydCBzcmdiXG5cdFx0XHRcdGlmICghVEhSRUUuQ29sb3JNYW5hZ2VtZW50ICYmICFyb290U3RhdGU/LmxpbmVhciAmJiBpc0NvbG9yKSB0YXJnZXRQcm9wLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gZWxzZSBqdXN0IG92ZXJ3cml0ZSB0aGUgdmFsdWVcblx0XHRlbHNlIHtcblx0XHRcdGN1cnJlbnRJbnN0YW5jZVtrZXldID0gdmFsdWU7XG5cdFx0XHQvLyBhdXRvLWNvbnZlcnQgc3JnYiB0ZXh0dXJlc1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRjdXJyZW50SW5zdGFuY2Vba2V5XSBpbnN0YW5jZW9mIFRIUkVFLlRleHR1cmUgJiZcblx0XHRcdFx0Y3VycmVudEluc3RhbmNlW2tleV0uZm9ybWF0ID09PSBUSFJFRS5SR0JBRm9ybWF0ICYmXG5cdFx0XHRcdGN1cnJlbnRJbnN0YW5jZVtrZXldLnR5cGUgPT09IFRIUkVFLlVuc2lnbmVkQnl0ZVR5cGVcblx0XHRcdCkge1xuXHRcdFx0XHRjb25zdCB0ZXh0dXJlID0gY3VycmVudEluc3RhbmNlW2tleV0gYXMgVEhSRUUuVGV4dHVyZTtcblxuXHRcdFx0XHRpZiAocm9vdFN0YXRlPy5nbCkge1xuXHRcdFx0XHRcdGlmIChpcy5jb2xvclNwYWNlRXhpc3QodGV4dHVyZSkgJiYgaXMuY29sb3JTcGFjZUV4aXN0KHJvb3RTdGF0ZS5nbCkpXG5cdFx0XHRcdFx0XHR0ZXh0dXJlLmNvbG9yU3BhY2UgPSByb290U3RhdGUuZ2wub3V0cHV0Q29sb3JTcGFjZTtcblx0XHRcdFx0XHRlbHNlIHRleHR1cmUuZW5jb2RpbmcgPSByb290U3RhdGUuZ2wub3V0cHV0RW5jb2Rpbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjaGVja1VwZGF0ZShjdXJyZW50SW5zdGFuY2Vba2V5XSk7XG5cdFx0Y2hlY2tVcGRhdGUodGFyZ2V0UHJvcCk7XG5cdFx0aW52YWxpZGF0ZUluc3RhbmNlKGluc3RhbmNlKTtcblx0fVxuXG5cdGNvbnN0IGluc3RhbmNlSGFuZGxlcnMgPSBsb2NhbFN0YXRlLmV2ZW50Q291bnQ7XG5cdGNvbnN0IHBhcmVudCA9IGxvY2FsU3RhdGUucGFyZW50ID8gdW50cmFja2VkKGxvY2FsU3RhdGUucGFyZW50KSA6IG51bGw7XG5cblx0aWYgKHBhcmVudCAmJiByb290U3RhdGUuaW50ZXJuYWwgJiYgaW5zdGFuY2VbJ3JheWNhc3QnXSAmJiBpbnN0YW5jZUhhbmRsZXJzICE9PSBsb2NhbFN0YXRlLmV2ZW50Q291bnQpIHtcblx0XHQvLyBQcmUtZW1wdGl2ZWx5IHJlbW92ZSB0aGUgaW5zdGFuY2UgZnJvbSB0aGUgaW50ZXJhY3Rpb24gbWFuYWdlclxuXHRcdGNvbnN0IGluZGV4ID0gcm9vdFN0YXRlLmludGVybmFsLmludGVyYWN0aW9uLmluZGV4T2YoaW5zdGFuY2UpO1xuXHRcdGlmIChpbmRleCA+IC0xKSByb290U3RhdGUuaW50ZXJuYWwuaW50ZXJhY3Rpb24uc3BsaWNlKGluZGV4LCAxKTtcblx0XHQvLyBBZGQgdGhlIGluc3RhbmNlIHRvIHRoZSBpbnRlcmFjdGlvbiBtYW5hZ2VyIG9ubHkgd2hlbiBpdCBoYXMgaGFuZGxlcnNcblx0XHRpZiAobG9jYWxTdGF0ZS5ldmVudENvdW50KSByb290U3RhdGUuaW50ZXJuYWwuaW50ZXJhY3Rpb24ucHVzaChpbnN0YW5jZSk7XG5cdH1cblxuXHRpZiAocGFyZW50ICYmIGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUgJiYgbG9jYWxTdGF0ZS5hZnRlclVwZGF0ZS5vYnNlcnZlZCAmJiBjaGFuZ2VzLmxlbmd0aCkge1xuXHRcdGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUuZW1pdChpbnN0YW5jZSk7XG5cdH1cblxuXHRyZXR1cm4gaW5zdGFuY2U7XG59XG4iXX0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9hcHBseS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUF3QixNQUFNLGFBQWEsQ0FBQztBQUd0RixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsd0VBQXdFO0FBQ3hFLFNBQVMsU0FBUyxDQUFDLFFBQXNCLEVBQUUsS0FBbUI7SUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBb0MsRUFBRSxDQUFDO0lBRXBELEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUM7UUFDbEIsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzVCLEdBQUcsR0FBRyxZQUFZLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxJQUFJLE9BQU8sS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN6QyxHQUFHLEdBQUcsa0JBQWtCLENBQUM7WUFDMUIsQ0FBQztRQUNGLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFFLFNBQVM7UUFDL0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lB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RUFBRSxDQUFDO1FBQzVGLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgaW52YWxpZGF0ZUluc3RhbmNlLCB0eXBlIE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL2luc3RhbmNlJztcbmltcG9ydCB0eXBlIHsgTmd0U3RhdGUgfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi9pcyc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSB9IGZyb20gJy4vdXBkYXRlJztcblxuLy8gVGhpcyBmdW5jdGlvbiBwcmVwYXJlcyBhIHNldCBvZiBjaGFuZ2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGluc3RhbmNlXG5mdW5jdGlvbiBkaWZmUHJvcHMoaW5zdGFuY2U6IE5ndEFueVJlY29yZCwgcHJvcHM6IE5ndEFueVJlY29yZCkge1xuXHRjb25zdCBwcm9wc0VudHJpZXMgPSBPYmplY3QuZW50cmllcyhwcm9wcyk7XG5cdGNvbnN0IGNoYW5nZXM6IFtrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd25dW10gPSBbXTtcblxuXHRmb3IgKGNvbnN0IFtwcm9wS2V5LCBwcm9wVmFsdWVdIG9mIHByb3BzRW50cmllcykge1xuXHRcdGxldCBrZXkgPSBwcm9wS2V5O1xuXHRcdGlmIChpcy5jb2xvclNwYWNlRXhpc3QoaW5zdGFuY2UpKSB7XG5cdFx0XHRpZiAocHJvcEtleSA9PT0gJ2VuY29kaW5nJykge1xuXHRcdFx0XHRrZXkgPSAnY29sb3JTcGFjZSc7XG5cdFx0XHR9IGVsc2UgaWYgKHByb3BLZXkgPT09ICdvdXRwdXRFbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ291dHB1dENvbG9yU3BhY2UnO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoaXMuZXF1KHByb3BWYWx1ZSwgaW5zdGFuY2Vba2V5XSkpIGNvbnRpbnVlO1xuXHRcdGNoYW5nZXMucHVzaChbcHJvcEtleSwgcHJvcFZhbHVlXSk7XG5cdH1cblxuXHRyZXR1cm4gY2hhbmdlcztcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBhcHBsaWVzIGEgc2V0IG9mIGNoYW5nZXMgdG8gdGhlIGluc3RhbmNlXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlQcm9wcyhpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCBwcm9wczogTmd0QW55UmVjb3JkKSB7XG5cdC8vIGlmIHByb3BzIGlzIGVtcHR5XG5cdGlmICghT2JqZWN0LmtleXMocHJvcHMpLmxlbmd0aCkgcmV0dXJuIGluc3RhbmNlO1xuXG5cdC8vIGZpbHRlciBlcXVhbHMsIGFuZCByZXNlcnZlZCBwcm9wc1xuXHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG5cdGNvbnN0IHJvb3RTdGF0ZSA9IGxvY2FsU3RhdGU/LnN0b3JlPy5zbmFwc2hvdCA/PyAoe30gYXMgTmd0U3RhdGUpO1xuXHRjb25zdCBjaGFuZ2VzID0gZGlmZlByb3BzKGluc3RhbmNlLCBwcm9wcyk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0bGV0IFtrZXksIHZhbHVlXSA9IGNoYW5nZXNbaV07XG5cblx0XHQvLyBBbGlhcyAob3V0cHV0KWVuY29kaW5nID0+IChvdXRwdXQpY29sb3JTcGFjZSAoc2luY2UgcjE1Milcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vcG1uZHJzL3JlYWN0LXRocmVlLWZpYmVyL3B1bGwvMjgyOVxuXHRcdGlmIChpcy5jb2xvclNwYWNlRXhpc3QoaW5zdGFuY2UpKSB7XG5cdFx0XHRjb25zdCBzUkdCRW5jb2RpbmcgPSAzMDAxO1xuXHRcdFx0Y29uc3QgU1JHQkNvbG9yU3BhY2UgPSAnc3JnYic7XG5cdFx0XHRjb25zdCBMaW5lYXJTUkdCQ29sb3JTcGFjZSA9ICdzcmdiLWxpbmVhcic7XG5cblx0XHRcdGlmIChrZXkgPT09ICdlbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ2NvbG9yU3BhY2UnO1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlID09PSBzUkdCRW5jb2RpbmcgPyBTUkdCQ29sb3JTcGFjZSA6IExpbmVhclNSR0JDb2xvclNwYWNlO1xuXHRcdFx0fSBlbHNlIGlmIChrZXkgPT09ICdvdXRwdXRFbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ291dHB1dENvbG9yU3BhY2UnO1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlID09PSBzUkdCRW5jb2RpbmcgPyBTUkdCQ29sb3JTcGFjZSA6IExpbmVhclNSR0JDb2xvclNwYWNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IGluc3RhbmNlO1xuXHRcdGNvbnN0IHRhcmdldFByb3AgPSBjdXJyZW50SW5zdGFuY2Vba2V5XTtcblxuXHRcdC8vIHNwZWNpYWwgdHJlYXRtZW4gZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvciBzZXQvY29weSwgYW5kIGxheWVyc1xuXHRcdGlmICh0YXJnZXRQcm9wICYmIHRhcmdldFByb3BbJ3NldCddICYmICh0YXJnZXRQcm9wWydjb3B5J10gfHwgdGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkxheWVycykpIHtcblx0XHRcdGNvbnN0IGlzQ29sb3IgPSB0YXJnZXRQcm9wIGluc3RhbmNlb2YgVEhSRUUuQ29sb3I7XG5cdFx0XHQvLyBpZiB2YWx1ZSBpcyBhbiBhcnJheVxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdGlmICh0YXJnZXRQcm9wWydmcm9tQXJyYXknXSkgdGFyZ2V0UHJvcFsnZnJvbUFycmF5J10odmFsdWUpO1xuXHRcdFx0XHRlbHNlIHRhcmdldFByb3BbJ3NldCddKC4uLnZhbHVlKTtcblx0XHRcdH0gLy8gdGVzdCBhZ2FpbiB0YXJnZXQuY29weVxuXHRcdFx0ZWxzZSBpZiAoXG5cdFx0XHRcdHRhcmdldFByb3BbJ2NvcHknXSAmJlxuXHRcdFx0XHR2YWx1ZSAmJlxuXHRcdFx0XHR2YWx1ZS5jb25zdHJ1Y3RvciAmJlxuXHRcdFx0XHR0YXJnZXRQcm9wLmNvbnN0cnVjdG9yLm5hbWUgPT09IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWVcblx0XHRcdCkge1xuXHRcdFx0XHR0YXJnZXRQcm9wWydjb3B5J10odmFsdWUpO1xuXHRcdFx0XHRpZiAoIVRIUkVFLkNvbG9yTWFuYWdlbWVudCAmJiAhcm9vdFN0YXRlLmxpbmVhciAmJiBpc0NvbG9yKSB0YXJnZXRQcm9wWydjb252ZXJ0U1JHQlRvTGluZWFyJ10oKTtcblx0XHRcdH0gLy8gaWYgbm90aGluZyBlbHNlIGZpdHMsIGp1c3Qgc2V0IHRoZSBzaW5nbGUgdmFsdWUsIGlnbm9yZSB1bmRlZmluZWRcblx0XHRcdGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3QgaXNDb2xvciA9IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5Db2xvcjtcblx0XHRcdFx0Ly8gYWxsb3cgc2V0dGluZyBhcnJheSBzY2FsYXJzXG5cdFx0XHRcdGlmICghaXNDb2xvciAmJiB0YXJnZXRQcm9wWydzZXRTY2FsYXInXSkgdGFyZ2V0UHJvcFsnc2V0U2NhbGFyJ10odmFsdWUpO1xuXHRcdFx0XHQvLyBsYXllcnMgaGF2ZSBubyBjb3B5IGZ1bmN0aW9uLCBjb3B5IHRoZSBtYXNrXG5cdFx0XHRcdGVsc2UgaWYgKHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMgJiYgdmFsdWUgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMpIHRhcmdldFByb3AubWFzayA9IHZhbHVlLm1hc2s7XG5cdFx0XHRcdC8vIG90aGVyd2lzZSBqdXN0IHNldCAuLi5cblx0XHRcdFx0ZWxzZSB0YXJnZXRQcm9wWydzZXQnXSh2YWx1ZSk7XG5cblx0XHRcdFx0Ly8gYXV0by1jb252ZXJ0IHNyZ2Jcblx0XHRcdFx0aWYgKCFUSFJFRS5Db2xvck1hbmFnZW1lbnQgJiYgIXJvb3RTdGF0ZT8ubGluZWFyICYmIGlzQ29sb3IpIHRhcmdldFByb3AuY29udmVydFNSR0JUb0xpbmVhcigpO1xuXHRcdFx0fVxuXHRcdH0gLy8gZWxzZSBqdXN0IG92ZXJ3cml0ZSB0aGUgdmFsdWVcblx0XHRlbHNlIHtcblx0XHRcdGN1cnJlbnRJbnN0YW5jZVtrZXldID0gdmFsdWU7XG5cdFx0XHQvLyBhdXRvLWNvbnZlcnQgc3JnYiB0ZXh0dXJlc1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRjdXJyZW50SW5zdGFuY2Vba2V5XSBpbnN0YW5jZW9mIFRIUkVFLlRleHR1cmUgJiZcblx0XHRcdFx0Y3VycmVudEluc3RhbmNlW2tleV0uZm9ybWF0ID09PSBUSFJFRS5SR0JBRm9ybWF0ICYmXG5cdFx0XHRcdGN1cnJlbnRJbnN0YW5jZVtrZXldLnR5cGUgPT09IFRIUkVFLlVuc2lnbmVkQnl0ZVR5cGVcblx0XHRcdCkge1xuXHRcdFx0XHRjb25zdCB0ZXh0dXJlID0gY3VycmVudEluc3RhbmNlW2tleV0gYXMgVEhSRUUuVGV4dHVyZTtcblx0XHRcdFx0aWYgKHJvb3RTdGF0ZT8uZ2wpIHtcblx0XHRcdFx0XHRpZiAoaXMuY29sb3JTcGFjZUV4aXN0KHRleHR1cmUpICYmIGlzLmNvbG9yU3BhY2VFeGlzdChyb290U3RhdGUuZ2wpKVxuXHRcdFx0XHRcdFx0dGV4dHVyZS5jb2xvclNwYWNlID0gcm9vdFN0YXRlLmdsLm91dHB1dENvbG9yU3BhY2U7XG5cdFx0XHRcdFx0ZWxzZSB0ZXh0dXJlLmVuY29kaW5nID0gcm9vdFN0YXRlLmdsLm91dHB1dEVuY29kaW5nO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y2hlY2tVcGRhdGUoY3VycmVudEluc3RhbmNlW2tleV0pO1xuXHRcdGNoZWNrVXBkYXRlKHRhcmdldFByb3ApO1xuXHRcdGludmFsaWRhdGVJbnN0YW5jZShpbnN0YW5jZSk7XG5cdH1cblxuXHRjb25zdCBpbnN0YW5jZUhhbmRsZXJzQ291bnQgPSBsb2NhbFN0YXRlPy5ldmVudENvdW50O1xuXHRjb25zdCBwYXJlbnQgPSBsb2NhbFN0YXRlPy5pbnN0YW5jZVN0b3JlPy5nZXQoJ3BhcmVudCcpO1xuXG5cdGlmIChwYXJlbnQgJiYgcm9vdFN0YXRlLmludGVybmFsICYmIGluc3RhbmNlWydyYXljYXN0J10gJiYgaW5zdGFuY2VIYW5kbGVyc0NvdW50ICE9PSBsb2NhbFN0YXRlPy5ldmVudENvdW50KSB7XG5cdFx0Ly8gUHJlLWVtcHRpdmVseSByZW1vdmUgdGhlIGluc3RhbmNlIGZyb20gdGhlIGludGVyYWN0aW9uIG1hbmFnZXJcblx0XHRjb25zdCBpbmRleCA9IHJvb3RTdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbi5pbmRleE9mKGluc3RhbmNlKTtcblx0XHRpZiAoaW5kZXggPiAtMSkgcm9vdFN0YXRlLmludGVybmFsLmludGVyYWN0aW9uLnNwbGljZShpbmRleCwgMSk7XG5cdFx0Ly8gQWRkIHRoZSBpbnN0YW5jZSB0byB0aGUgaW50ZXJhY3Rpb24gbWFuYWdlciBvbmx5IHdoZW4gaXQgaGFzIGhhbmRsZXJzXG5cdFx0aWYgKGxvY2FsU3RhdGU/LmV2ZW50Q291bnQpIHJvb3RTdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbi5wdXNoKGluc3RhbmNlKTtcblx0fVxuXG5cdGlmIChwYXJlbnQgJiYgbG9jYWxTdGF0ZT8uYWZ0ZXJVcGRhdGUgJiYgbG9jYWxTdGF0ZS5hZnRlclVwZGF0ZS5vYnNlcnZlZCAmJiBjaGFuZ2VzLmxlbmd0aCkge1xuXHRcdGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUuZW1pdChpbnN0YW5jZSk7XG5cdH1cblxuXHRyZXR1cm4gaW5zdGFuY2U7XG59XG4iXX0=
@@ -14,11 +14,11 @@ export function attach(object, value, paths = []) {
14
14
  }
15
15
  export function detach(parent, child, attachProp) {
16
16
  const childLocalState = getLocalState(child);
17
- if (Array.isArray(attachProp)) {
18
- attach(parent, childLocalState.previousAttach, attachProp);
19
- }
20
- else {
21
- childLocalState.previousAttach();
17
+ if (childLocalState) {
18
+ if (Array.isArray(attachProp))
19
+ attach(parent, childLocalState.previousAttach, attachProp);
20
+ else
21
+ childLocalState.previousAttach();
22
22
  }
23
23
  }
24
24
  function assignEmpty(obj, base) {
@@ -29,4 +29,4 @@ function assignEmpty(obj, base) {
29
29
  export function createAttachFunction(cb) {
30
30
  return (parent, child, store) => cb({ parent, child, store });
31
31
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBR3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFvQixFQUFFLEtBQWMsRUFBRSxRQUFrQixFQUFFO0lBQ2hGLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBRWxCLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDM0IsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUN0QztTQUFNO1FBQ04sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztLQUN2QztBQUNGLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLE1BQW9CLEVBQUUsS0FBbUIsRUFBRSxVQUF3QztJQUN6RyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUMzRDtTQUFNO1FBQ0wsZUFBZSxDQUFDLGNBQTJCLEVBQUUsQ0FBQztLQUMvQztBQUNGLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxHQUFpQixFQUFFLElBQVk7SUFDbkQsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1FBQ2xILEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDZjtBQUNGLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ25DLEVBQXdHO0lBRXhHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCB0eXBlIE5ndEF0dGFjaEZ1bmN0aW9uIH0gZnJvbSAnLi4vaW5zdGFuY2UnO1xuaW1wb3J0IHR5cGUgeyBOZ3RTdGF0ZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcyB9IGZyb20gJy4vYXBwbHktcHJvcHMnO1xuaW1wb3J0IHR5cGUgeyBOZ3RTaWduYWxTdG9yZSB9IGZyb20gJy4vc2lnbmFsLXN0b3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaChvYmplY3Q6IE5ndEFueVJlY29yZCwgdmFsdWU6IHVua25vd24sIHBhdGhzOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG5cdGNvbnN0IFtiYXNlLCAuLi5yZW1haW5pbmddID0gcGF0aHM7XG5cdGlmICghYmFzZSkgcmV0dXJuO1xuXG5cdGlmIChyZW1haW5pbmcubGVuZ3RoID09PSAwKSB7XG5cdFx0YXBwbHlQcm9wcyhvYmplY3QsIHsgW2Jhc2VdOiB2YWx1ZSB9KTtcblx0fSBlbHNlIHtcblx0XHRhc3NpZ25FbXB0eShvYmplY3QsIGJhc2UpO1xuXHRcdGF0dGFjaChvYmplY3RbYmFzZV0sIHZhbHVlLCByZW1haW5pbmcpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2gocGFyZW50OiBOZ3RBbnlSZWNvcmQsIGNoaWxkOiBOZ3RBbnlSZWNvcmQsIGF0dGFjaFByb3A6IHN0cmluZ1tdIHwgTmd0QXR0YWNoRnVuY3Rpb24pIHtcblx0Y29uc3QgY2hpbGRMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShjaGlsZCk7XG5cdGlmIChBcnJheS5pc0FycmF5KGF0dGFjaFByb3ApKSB7XG5cdFx0YXR0YWNoKHBhcmVudCwgY2hpbGRMb2NhbFN0YXRlLnByZXZpb3VzQXR0YWNoLCBhdHRhY2hQcm9wKTtcblx0fSBlbHNlIHtcblx0XHQoY2hpbGRMb2NhbFN0YXRlLnByZXZpb3VzQXR0YWNoIGFzIEZ1bmN0aW9uKSgpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkVtcHR5KG9iajogTmd0QW55UmVjb3JkLCBiYXNlOiBzdHJpbmcpIHtcblx0aWYgKCghT2JqZWN0Lmhhc093bihvYmosIGJhc2UpICYmIFJlZmxlY3QgJiYgISFSZWZsZWN0LmhhcyAmJiAhUmVmbGVjdC5oYXMob2JqLCBiYXNlKSkgfHwgb2JqW2Jhc2VdID09PSB1bmRlZmluZWQpIHtcblx0XHRvYmpbYmFzZV0gPSB7fTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXR0YWNoRnVuY3Rpb248VENoaWxkID0gYW55LCBUUGFyZW50ID0gYW55Pihcblx0Y2I6IChwYXJhbXM6IHsgcGFyZW50OiBUUGFyZW50OyBjaGlsZDogVENoaWxkOyBzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+IH0pID0+ICgoKSA9PiB2b2lkKSB8IHZvaWQsXG4pOiBOZ3RBdHRhY2hGdW5jdGlvbjxUQ2hpbGQsIFRQYXJlbnQ+IHtcblx0cmV0dXJuIChwYXJlbnQsIGNoaWxkLCBzdG9yZSkgPT4gY2IoeyBwYXJlbnQsIGNoaWxkLCBzdG9yZSB9KTtcbn1cbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBR3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFvQixFQUFFLEtBQWMsRUFBRSxRQUFrQixFQUFFO0lBQ2hGLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBRWxCLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxDQUFDO1FBQ1AsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0FBQ0YsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBb0IsRUFBRSxLQUFtQixFQUFFLFVBQXdDO0lBQ3pHLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7O1lBQ3BGLGVBQWUsQ0FBQyxjQUE2QixFQUFFLENBQUM7SUFDdkQsQ0FBQztBQUNGLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxHQUFpQixFQUFFLElBQVk7SUFDbkQsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbkgsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNoQixDQUFDO0FBQ0YsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbkMsRUFBd0c7SUFFeEcsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsU3RhdGUsIHR5cGUgTmd0QXR0YWNoRnVuY3Rpb24gfSBmcm9tICcuLi9pbnN0YW5jZSc7XG5pbXBvcnQgdHlwZSB7IE5ndFN0YXRlIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhcHBseVByb3BzIH0gZnJvbSAnLi9hcHBseS1wcm9wcyc7XG5pbXBvcnQgdHlwZSB7IE5ndFNpZ25hbFN0b3JlIH0gZnJvbSAnLi9zaWduYWwtc3RvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoKG9iamVjdDogTmd0QW55UmVjb3JkLCB2YWx1ZTogdW5rbm93biwgcGF0aHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0Y29uc3QgW2Jhc2UsIC4uLnJlbWFpbmluZ10gPSBwYXRocztcblx0aWYgKCFiYXNlKSByZXR1cm47XG5cblx0aWYgKHJlbWFpbmluZy5sZW5ndGggPT09IDApIHtcblx0XHRhcHBseVByb3BzKG9iamVjdCwgeyBbYmFzZV06IHZhbHVlIH0pO1xuXHR9IGVsc2Uge1xuXHRcdGFzc2lnbkVtcHR5KG9iamVjdCwgYmFzZSk7XG5cdFx0YXR0YWNoKG9iamVjdFtiYXNlXSwgdmFsdWUsIHJlbWFpbmluZyk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaChwYXJlbnQ6IE5ndEFueVJlY29yZCwgY2hpbGQ6IE5ndEFueVJlY29yZCwgYXR0YWNoUHJvcDogc3RyaW5nW10gfCBOZ3RBdHRhY2hGdW5jdGlvbikge1xuXHRjb25zdCBjaGlsZExvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNoaWxkKTtcblx0aWYgKGNoaWxkTG9jYWxTdGF0ZSkge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGF0dGFjaFByb3ApKSBhdHRhY2gocGFyZW50LCBjaGlsZExvY2FsU3RhdGUucHJldmlvdXNBdHRhY2gsIGF0dGFjaFByb3ApO1xuXHRcdGVsc2UgKGNoaWxkTG9jYWxTdGF0ZS5wcmV2aW91c0F0dGFjaCBhcyAoKSA9PiB2b2lkKSgpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkVtcHR5KG9iajogTmd0QW55UmVjb3JkLCBiYXNlOiBzdHJpbmcpIHtcblx0aWYgKCghT2JqZWN0Lmhhc093bihvYmosIGJhc2UpICYmIFJlZmxlY3QgJiYgISFSZWZsZWN0LmhhcyAmJiAhUmVmbGVjdC5oYXMob2JqLCBiYXNlKSkgfHwgb2JqW2Jhc2VdID09PSB1bmRlZmluZWQpIHtcblx0XHRvYmpbYmFzZV0gPSB7fTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXR0YWNoRnVuY3Rpb248VENoaWxkID0gYW55LCBUUGFyZW50ID0gYW55Pihcblx0Y2I6IChwYXJhbXM6IHsgcGFyZW50OiBUUGFyZW50OyBjaGlsZDogVENoaWxkOyBzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+IH0pID0+ICgoKSA9PiB2b2lkKSB8IHZvaWQsXG4pOiBOZ3RBdHRhY2hGdW5jdGlvbjxUQ2hpbGQsIFRQYXJlbnQ+IHtcblx0cmV0dXJuIChwYXJlbnQsIGNoaWxkLCBzdG9yZSkgPT4gY2IoeyBwYXJlbnQsIGNoaWxkLCBzdG9yZSB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { DestroyRef, Injector, inject } from '@angular/core';
2
+ import { assertInjector } from 'ngxtension/assert-injector';
3
+ import { injectNgtStore } from '../store';
4
+ export function injectBeforeRender(cb, { priority = 0, injector } = {}) {
5
+ return assertInjector(injectBeforeRender, injector, () => {
6
+ const store = injectNgtStore();
7
+ const sub = store.get('internal').subscribe(cb, priority, store);
8
+ inject(DestroyRef).onDestroy(() => void sub());
9
+ return sub;
10
+ });
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmb3JlLXJlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL2JlZm9yZS1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUE4QixNQUFNLFVBQVUsQ0FBQztBQUV0RSxNQUFNLFVBQVUsa0JBQWtCLENBQ2pDLEVBQXFDLEVBQ3JDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxRQUFRLEtBQWlELEVBQUU7SUFFM0UsT0FBTyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUN4RCxNQUFNLEtBQUssR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0b3IsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBpbmplY3ROZ3RTdG9yZSwgdHlwZSBOZ3RCZWZvcmVSZW5kZXJSZWNvcmQgfSBmcm9tICcuLi9zdG9yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCZWZvcmVSZW5kZXIoXG5cdGNiOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sXG5cdHsgcHJpb3JpdHkgPSAwLCBpbmplY3RvciB9OiB7IHByaW9yaXR5PzogbnVtYmVyOyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0XHRjb25zdCBzdWIgPSBzdG9yZS5nZXQoJ2ludGVybmFsJykuc3Vic2NyaWJlKGNiLCBwcmlvcml0eSwgc3RvcmUpO1xuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4gdm9pZCBzdWIoKSk7XG5cdFx0cmV0dXJuIHN1Yjtcblx0fSk7XG59XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { ChangeDetectorRef, inject, signal } from '@angular/core';
2
+ import { assertInjector } from 'ngxtension/assert-injector';
3
+ // TODO: use scheduler instead of force CD
4
+ export function cdAwareSignal(initialValue, { injector, ...options } = {}) {
5
+ return assertInjector(cdAwareSignal, injector, () => {
6
+ if (!options.equal) {
7
+ options.equal = Object.is;
8
+ }
9
+ const cdr = inject(ChangeDetectorRef);
10
+ const source = signal(initialValue, options);
11
+ const originalSet = source.set.bind(source);
12
+ const originalUpdate = source.update.bind(source);
13
+ source.set = (...args) => {
14
+ originalSet(...args);
15
+ cdr.detectChanges();
16
+ };
17
+ source.update = (...args) => {
18
+ originalUpdate(...args);
19
+ cdr.detectChanges();
20
+ };
21
+ return source;
22
+ });
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2QtYXdhcmUtc2lnbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvY2QtYXdhcmUtc2lnbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxhQUFhLENBQzVCLFlBQWUsRUFDZixFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sS0FBdUQsRUFBRTtJQUUvRSxPQUFPLGNBQWMsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUF3QyxFQUFFLEVBQUU7WUFDNUQsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDckIsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQTJDLEVBQUUsRUFBRTtZQUNsRSxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN4QixHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgaW5qZWN0LCBzaWduYWwsIHR5cGUgQ3JlYXRlU2lnbmFsT3B0aW9ucywgdHlwZSBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5cbi8vIFRPRE86IHVzZSBzY2hlZHVsZXIgaW5zdGVhZCBvZiBmb3JjZSBDRFxuZXhwb3J0IGZ1bmN0aW9uIGNkQXdhcmVTaWduYWw8VD4oXG5cdGluaXRpYWxWYWx1ZTogVCxcblx0eyBpbmplY3RvciwgLi4ub3B0aW9ucyB9OiBDcmVhdGVTaWduYWxPcHRpb25zPFQ+ICYgeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoY2RBd2FyZVNpZ25hbCwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRpZiAoIW9wdGlvbnMuZXF1YWwpIHtcblx0XHRcdG9wdGlvbnMuZXF1YWwgPSBPYmplY3QuaXM7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXHRcdGNvbnN0IHNvdXJjZSA9IHNpZ25hbChpbml0aWFsVmFsdWUsIG9wdGlvbnMpO1xuXHRcdGNvbnN0IG9yaWdpbmFsU2V0ID0gc291cmNlLnNldC5iaW5kKHNvdXJjZSk7XG5cdFx0Y29uc3Qgb3JpZ2luYWxVcGRhdGUgPSBzb3VyY2UudXBkYXRlLmJpbmQoc291cmNlKTtcblxuXHRcdHNvdXJjZS5zZXQgPSAoLi4uYXJnczogUGFyYW1ldGVyczwodHlwZW9mIHNvdXJjZSlbJ3NldCddPikgPT4ge1xuXHRcdFx0b3JpZ2luYWxTZXQoLi4uYXJncyk7XG5cdFx0XHRjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH07XG5cblx0XHRzb3VyY2UudXBkYXRlID0gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8KHR5cGVvZiBzb3VyY2UpWyd1cGRhdGUnXT4pID0+IHtcblx0XHRcdG9yaWdpbmFsVXBkYXRlKC4uLmFyZ3MpO1xuXHRcdFx0Y2RyLmRldGVjdENoYW5nZXMoKTtcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHNvdXJjZTtcblx0fSk7XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { forwardRef } from '@angular/core';
2
+ import { createInjectionToken } from 'ngxtension/create-injection-token';
3
+ function apiFactory(obj) {
4
+ return obj.api;
5
+ }
6
+ export function createApiToken(forwardedObject) {
7
+ const [injectFn, provideFn] = createInjectionToken((apiFactory), {
8
+ isRoot: false,
9
+ deps: [forwardRef(forwardedObject)],
10
+ });
11
+ return [injectFn, () => provideFn()];
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFwaS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL2NyZWF0ZS1hcGktdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQW9DLE1BQU0sbUNBQW1DLENBQUM7QUFFM0csU0FBUyxVQUFVLENBQ2xCLEdBQVk7SUFFWixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQzdCLGVBQW9DO0lBRXBDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsQ0FBQSxVQUF5QixDQUFBLEVBQUU7UUFDN0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDcUMsQ0FBQyxDQUFDO0lBRTNFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQVUsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yd2FyZFJlZiwgdHlwZSBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVJbmplY3Rpb25Ub2tlbiwgdHlwZSBDcmVhdGVJbmplY3Rpb25Ub2tlbk9wdGlvbnMgfSBmcm9tICduZ3h0ZW5zaW9uL2NyZWF0ZS1pbmplY3Rpb24tdG9rZW4nO1xuXG5mdW5jdGlvbiBhcGlGYWN0b3J5PFRPYmplY3QgZXh0ZW5kcyB7IGFwaTogYW55IH0sIFRBcGkgPSBUT2JqZWN0IGV4dGVuZHMgeyBhcGk6IGluZmVyIEFwaSB9ID8gQXBpIDogbmV2ZXI+KFxuXHRvYmo6IFRPYmplY3QsXG4pOiBUQXBpIHtcblx0cmV0dXJuIG9iai5hcGk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcGlUb2tlbjxUT2JqZWN0IGV4dGVuZHMgeyBhcGk6IGFueSB9LCBUQXBpID0gVE9iamVjdCBleHRlbmRzIHsgYXBpOiBpbmZlciBBcGkgfSA/IEFwaSA6IG5ldmVyPihcblx0Zm9yd2FyZGVkT2JqZWN0OiAoKSA9PiBUeXBlPFRPYmplY3Q+LFxuKSB7XG5cdGNvbnN0IFtpbmplY3RGbiwgcHJvdmlkZUZuXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKGFwaUZhY3Rvcnk8VE9iamVjdCwgVEFwaT4sIHtcblx0XHRpc1Jvb3Q6IGZhbHNlLFxuXHRcdGRlcHM6IFtmb3J3YXJkUmVmKGZvcndhcmRlZE9iamVjdCldLFxuXHR9IGFzIHVua25vd24gYXMgQ3JlYXRlSW5qZWN0aW9uVG9rZW5PcHRpb25zPHR5cGVvZiBhcGlGYWN0b3J5LCBbVE9iamVjdF0+KTtcblxuXHRyZXR1cm4gW2luamVjdEZuLCAoKSA9PiBwcm92aWRlRm4oKV0gYXMgY29uc3Q7XG59XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  import { ElementRef } from '@angular/core';
2
- import * as THREE from 'three';
3
2
  export const is = {
4
3
  obj: (a) => a === Object(a) && !Array.isArray(a) && typeof a !== 'function',
5
4
  material: (a) => !!a && a.isMaterial,
@@ -7,11 +6,13 @@ export const is = {
7
6
  orthographicCamera: (a) => !!a && a.isOrthographicCamera,
8
7
  perspectiveCamera: (a) => !!a && a.isPerspectiveCamera,
9
8
  camera: (a) => !!a && a.isCamera,
10
- renderer: (a) => !!a && a instanceof THREE.WebGLRenderer,
9
+ renderer: (a) => !!a && typeof a === 'object' && 'render' in a && typeof a['render'] === 'function',
11
10
  scene: (a) => !!a && a.isScene,
12
- object3D: (a) => !!a && a.isObject3D,
13
- instance: (a) => !!a && !!a['__ngt__'],
14
11
  ref: (a) => a instanceof ElementRef,
12
+ instance: (a) => !!a && !!a['__ngt__'],
13
+ object3D: (a) => !!a && a.isObject3D,
14
+ // instance: (a: unknown): a is NgtInstanceNode => !!a && !!(a as NgtAnyRecord)['__ngt__'],
15
+ // ref: (a: unknown): a is ElementRef => a instanceof ElementRef,
15
16
  colorSpaceExist: (object) => 'colorSpace' in object || 'outputColorSpace' in object,
16
17
  equ(a, b, { arrays = 'shallow', objects = 'reference', strict = true } = {}) {
17
18
  // Wrong type or one of the two undefined, doesn't match
@@ -48,4 +49,4 @@ export const is = {
48
49
  return true;
49
50
  },
50
51
  };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9pcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBSy9CLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFVLEVBQWUsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFVBQVU7SUFDakcsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFvQixDQUFDLFVBQVU7SUFDdEYsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUE2QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUEwQixDQUFDLGdCQUFnQjtJQUN4RyxrQkFBa0IsRUFBRSxDQUFDLENBQVUsRUFBaUMsRUFBRSxDQUNqRSxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQThCLENBQUMsb0JBQW9CO0lBQzVELGlCQUFpQixFQUFFLENBQUMsQ0FBVSxFQUFnQyxFQUFFLENBQy9ELENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBNkIsQ0FBQyxtQkFBbUI7SUFDMUQsTUFBTSxFQUFFLENBQUMsQ0FBVSxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFrQixDQUFDLFFBQVE7SUFDOUUsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUE0QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLGFBQWE7SUFDM0YsS0FBSyxFQUFFLENBQUMsQ0FBVSxFQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFpQixDQUFDLE9BQU87SUFDMUUsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFvQixDQUFDLFVBQVU7SUFDdEYsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBa0IsQ0FBQyxTQUFTLENBQUM7SUFDdkYsR0FBRyxFQUFFLENBQUMsQ0FBVSxFQUFtQixFQUFFLENBQUMsQ0FBQyxZQUFZLFVBQVU7SUFDN0QsZUFBZSxFQUFFLENBSWhCLE1BQVMsRUFDUyxFQUFFLENBQUMsWUFBWSxJQUFJLE1BQU0sSUFBSSxrQkFBa0IsSUFBSSxNQUFNO0lBQzVFLEdBQUcsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxPQUFPLEdBQUcsV0FBVyxFQUFFLE1BQU0sR0FBRyxJQUFJLEtBQW1CLEVBQUU7UUFDbEcsd0RBQXdEO1FBQ3hELElBQUksT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3ZELG1DQUFtQztRQUNuQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLFdBQVc7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEtBQUssSUFBSSxNQUFNLEtBQUssV0FBVztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxnRUFBZ0U7UUFDaEUsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzdDLCtCQUErQjtRQUMvQixJQUFJLENBQUMsQ0FBQztRQUNOLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDM0QsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDckYsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztTQUMxQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL2luc3RhbmNlJztcbmltcG9ydCB0eXBlIHsgTmd0UmVuZGVyZXIgfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0RXF1Q29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXMgPSB7XG5cdG9iajogKGE6IHVua25vd24pOiBhIGlzIG9iamVjdCA9PiBhID09PSBPYmplY3QoYSkgJiYgIUFycmF5LmlzQXJyYXkoYSkgJiYgdHlwZW9mIGEgIT09ICdmdW5jdGlvbicsXG5cdG1hdGVyaWFsOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuTWF0ZXJpYWwgPT4gISFhICYmIChhIGFzIFRIUkVFLk1hdGVyaWFsKS5pc01hdGVyaWFsLFxuXHRnZW9tZXRyeTogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLkJ1ZmZlckdlb21ldHJ5ID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSkuaXNCdWZmZXJHZW9tZXRyeSxcblx0b3J0aG9ncmFwaGljQ2FtZXJhOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhID0+XG5cdFx0ISFhICYmIChhIGFzIFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSkuaXNPcnRob2dyYXBoaWNDYW1lcmEsXG5cdHBlcnNwZWN0aXZlQ2FtZXJhOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEgPT5cblx0XHQhIWEgJiYgKGEgYXMgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEpLmlzUGVyc3BlY3RpdmVDYW1lcmEsXG5cdGNhbWVyYTogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLkNhbWVyYSA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuQ2FtZXJhKS5pc0NhbWVyYSxcblx0cmVuZGVyZXI6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5XZWJHTFJlbmRlcmVyID0+ICEhYSAmJiBhIGluc3RhbmNlb2YgVEhSRUUuV2ViR0xSZW5kZXJlcixcblx0c2NlbmU6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5TY2VuZSA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuU2NlbmUpLmlzU2NlbmUsXG5cdG9iamVjdDNEOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuT2JqZWN0M0QgPT4gISFhICYmIChhIGFzIFRIUkVFLk9iamVjdDNEKS5pc09iamVjdDNELFxuXHRpbnN0YW5jZTogKGE6IHVua25vd24pOiBhIGlzIE5ndEluc3RhbmNlTm9kZSA9PiAhIWEgJiYgISEoYSBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ10sXG5cdHJlZjogKGE6IHVua25vd24pOiBhIGlzIEVsZW1lbnRSZWYgPT4gYSBpbnN0YW5jZW9mIEVsZW1lbnRSZWYsXG5cdGNvbG9yU3BhY2VFeGlzdDogPFxuXHRcdFQgZXh0ZW5kcyBOZ3RSZW5kZXJlciB8IFRIUkVFLlRleHR1cmUgfCBvYmplY3QsXG5cdFx0UCA9IFQgZXh0ZW5kcyBOZ3RSZW5kZXJlciA/IHsgb3V0cHV0Q29sb3JTcGFjZTogc3RyaW5nIH0gOiB7IGNvbG9yU3BhY2U6IHN0cmluZyB9LFxuXHQ+KFxuXHRcdG9iamVjdDogVCxcblx0KTogb2JqZWN0IGlzIFQgJiBQID0+ICdjb2xvclNwYWNlJyBpbiBvYmplY3QgfHwgJ291dHB1dENvbG9yU3BhY2UnIGluIG9iamVjdCxcblx0ZXF1KGE6IGFueSwgYjogYW55LCB7IGFycmF5cyA9ICdzaGFsbG93Jywgb2JqZWN0cyA9ICdyZWZlcmVuY2UnLCBzdHJpY3QgPSB0cnVlIH06IE5ndEVxdUNvbmZpZyA9IHt9KSB7XG5cdFx0Ly8gV3JvbmcgdHlwZSBvciBvbmUgb2YgdGhlIHR3byB1bmRlZmluZWQsIGRvZXNuJ3QgbWF0Y2hcblx0XHRpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiIHx8ICEhYSAhPT0gISFiKSByZXR1cm4gZmFsc2U7XG5cdFx0Ly8gQXRvbWljLCBqdXN0IGNvbXBhcmUgYSBhZ2FpbnN0IGJcblx0XHRpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBhID09PSAnbnVtYmVyJykgcmV0dXJuIGEgPT09IGI7XG5cdFx0Y29uc3QgaXNPYmogPSBpcy5vYmooYSk7XG5cdFx0aWYgKGlzT2JqICYmIG9iamVjdHMgPT09ICdyZWZlcmVuY2UnKSByZXR1cm4gYSA9PT0gYjtcblx0XHRjb25zdCBpc0FyciA9IEFycmF5LmlzQXJyYXkoYSk7XG5cdFx0aWYgKGlzQXJyICYmIGFycmF5cyA9PT0gJ3JlZmVyZW5jZScpIHJldHVybiBhID09PSBiO1xuXHRcdC8vIEFycmF5IG9yIE9iamVjdCwgc2hhbGxvdyBjb21wYXJlIGZpcnN0IHRvIHNlZSBpZiBpdCdzIGEgbWF0Y2hcblx0XHRpZiAoKGlzQXJyIHx8IGlzT2JqKSAmJiBhID09PSBiKSByZXR1cm4gdHJ1ZTtcblx0XHQvLyBMYXN0IHJlc29ydCwgZ28gdGhyb3VnaCBrZXlzXG5cdFx0bGV0IGk7XG5cdFx0Zm9yIChpIGluIGEpIGlmICghKGkgaW4gYikpIHJldHVybiBmYWxzZTtcblx0XHRmb3IgKGkgaW4gc3RyaWN0ID8gYiA6IGEpIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG5cdFx0aWYgKGkgPT09IHZvaWQgMCkge1xuXHRcdFx0aWYgKGlzQXJyICYmIGEubGVuZ3RoID09PSAwICYmIGIubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcblx0XHRcdGlmIChpc09iaiAmJiBPYmplY3Qua2V5cyhhKS5sZW5ndGggPT09IDAgJiYgT2JqZWN0LmtleXMoYikubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcblx0XHRcdGlmIChhICE9PSBiKSByZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxufTtcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9pcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzNDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFVLEVBQWUsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFVBQVU7SUFDakcsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFvQixDQUFDLFVBQVU7SUFDdEYsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUE2QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUEwQixDQUFDLGdCQUFnQjtJQUN4RyxrQkFBa0IsRUFBRSxDQUFDLENBQVUsRUFBaUMsRUFBRSxDQUNqRSxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQThCLENBQUMsb0JBQW9CO0lBQzVELGlCQUFpQixFQUFFLENBQUMsQ0FBVSxFQUFnQyxFQUFFLENBQy9ELENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBNkIsQ0FBQyxtQkFBbUI7SUFDMUQsTUFBTSxFQUFFLENBQUMsQ0FBVSxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFrQixDQUFDLFFBQVE7SUFDOUUsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVU7SUFDNUcsS0FBSyxFQUFFLENBQUMsQ0FBVSxFQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFpQixDQUFDLE9BQU87SUFDMUUsR0FBRyxFQUFFLENBQUMsQ0FBVSxFQUFtQixFQUFFLENBQUMsQ0FBQyxZQUFZLFVBQVU7SUFDN0QsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBa0IsQ0FBQyxTQUFTLENBQUM7SUFDdkYsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFvQixDQUFDLFVBQVU7SUFDdEYsMkZBQTJGO0lBQzNGLGlFQUFpRTtJQUNqRSxlQUFlLEVBQUUsQ0FJaEIsTUFBUyxFQUNTLEVBQUUsQ0FBQyxZQUFZLElBQUksTUFBTSxJQUFJLGtCQUFrQixJQUFJLE1BQU07SUFDNUUsR0FBRyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUFFLE9BQU8sR0FBRyxXQUFXLEVBQUUsTUFBTSxHQUFHLElBQUksS0FBbUIsRUFBRTtRQUNsRyx3REFBd0Q7UUFDeEQsSUFBSSxPQUFPLENBQUMsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkQsbUNBQW1DO1FBQ25DLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssV0FBVztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksS0FBSyxJQUFJLE1BQU0sS0FBSyxXQUFXO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDN0MsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxDQUFDO1FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7UUFDekMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzFELElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzNELElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3JGLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7UUFDM0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL2luc3RhbmNlJztcbmltcG9ydCB0eXBlIHsgTmd0UmVuZGVyZXJMaWtlIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndEVxdUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzID0ge1xuXHRvYmo6IChhOiB1bmtub3duKTogYSBpcyBvYmplY3QgPT4gYSA9PT0gT2JqZWN0KGEpICYmICFBcnJheS5pc0FycmF5KGEpICYmIHR5cGVvZiBhICE9PSAnZnVuY3Rpb24nLFxuXHRtYXRlcmlhbDogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLk1hdGVyaWFsID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5NYXRlcmlhbCkuaXNNYXRlcmlhbCxcblx0Z2VvbWV0cnk6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuQnVmZmVyR2VvbWV0cnkpLmlzQnVmZmVyR2VvbWV0cnksXG5cdG9ydGhvZ3JhcGhpY0NhbWVyYTogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSA9PlxuXHRcdCEhYSAmJiAoYSBhcyBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEpLmlzT3J0aG9ncmFwaGljQ2FtZXJhLFxuXHRwZXJzcGVjdGl2ZUNhbWVyYTogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhID0+XG5cdFx0ISFhICYmIChhIGFzIFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKS5pc1BlcnNwZWN0aXZlQ2FtZXJhLFxuXHRjYW1lcmE6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5DYW1lcmEgPT4gISFhICYmIChhIGFzIFRIUkVFLkNhbWVyYSkuaXNDYW1lcmEsXG5cdHJlbmRlcmVyOiAoYTogdW5rbm93bikgPT4gISFhICYmIHR5cGVvZiBhID09PSAnb2JqZWN0JyAmJiAncmVuZGVyJyBpbiBhICYmIHR5cGVvZiBhWydyZW5kZXInXSA9PT0gJ2Z1bmN0aW9uJyxcblx0c2NlbmU6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5TY2VuZSA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuU2NlbmUpLmlzU2NlbmUsXG5cdHJlZjogKGE6IHVua25vd24pOiBhIGlzIEVsZW1lbnRSZWYgPT4gYSBpbnN0YW5jZW9mIEVsZW1lbnRSZWYsXG5cdGluc3RhbmNlOiAoYTogdW5rbm93bik6IGEgaXMgTmd0SW5zdGFuY2VOb2RlID0+ICEhYSAmJiAhIShhIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X18nXSxcblx0b2JqZWN0M0Q6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5PYmplY3QzRCA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuT2JqZWN0M0QpLmlzT2JqZWN0M0QsXG5cdC8vIGluc3RhbmNlOiAoYTogdW5rbm93bik6IGEgaXMgTmd0SW5zdGFuY2VOb2RlID0+ICEhYSAmJiAhIShhIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X18nXSxcblx0Ly8gcmVmOiAoYTogdW5rbm93bik6IGEgaXMgRWxlbWVudFJlZiA9PiBhIGluc3RhbmNlb2YgRWxlbWVudFJlZixcblx0Y29sb3JTcGFjZUV4aXN0OiA8XG5cdFx0VCBleHRlbmRzIE5ndFJlbmRlcmVyTGlrZSB8IFRIUkVFLlRleHR1cmUgfCBvYmplY3QsXG5cdFx0UCA9IFQgZXh0ZW5kcyBOZ3RSZW5kZXJlckxpa2UgPyB7IG91dHB1dENvbG9yU3BhY2U6IHN0cmluZyB9IDogeyBjb2xvclNwYWNlOiBzdHJpbmcgfSxcblx0Pihcblx0XHRvYmplY3Q6IFQsXG5cdCk6IG9iamVjdCBpcyBUICYgUCA9PiAnY29sb3JTcGFjZScgaW4gb2JqZWN0IHx8ICdvdXRwdXRDb2xvclNwYWNlJyBpbiBvYmplY3QsXG5cdGVxdShhOiBhbnksIGI6IGFueSwgeyBhcnJheXMgPSAnc2hhbGxvdycsIG9iamVjdHMgPSAncmVmZXJlbmNlJywgc3RyaWN0ID0gdHJ1ZSB9OiBOZ3RFcXVDb25maWcgPSB7fSkge1xuXHRcdC8vIFdyb25nIHR5cGUgb3Igb25lIG9mIHRoZSB0d28gdW5kZWZpbmVkLCBkb2Vzbid0IG1hdGNoXG5cdFx0aWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYiB8fCAhIWEgIT09ICEhYikgcmV0dXJuIGZhbHNlO1xuXHRcdC8vIEF0b21pYywganVzdCBjb21wYXJlIGEgYWdhaW5zdCBiXG5cdFx0aWYgKHR5cGVvZiBhID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgYSA9PT0gJ251bWJlcicpIHJldHVybiBhID09PSBiO1xuXHRcdGNvbnN0IGlzT2JqID0gaXMub2JqKGEpO1xuXHRcdGlmIChpc09iaiAmJiBvYmplY3RzID09PSAncmVmZXJlbmNlJykgcmV0dXJuIGEgPT09IGI7XG5cdFx0Y29uc3QgaXNBcnIgPSBBcnJheS5pc0FycmF5KGEpO1xuXHRcdGlmIChpc0FyciAmJiBhcnJheXMgPT09ICdyZWZlcmVuY2UnKSByZXR1cm4gYSA9PT0gYjtcblx0XHQvLyBBcnJheSBvciBPYmplY3QsIHNoYWxsb3cgY29tcGFyZSBmaXJzdCB0byBzZWUgaWYgaXQncyBhIG1hdGNoXG5cdFx0aWYgKChpc0FyciB8fCBpc09iaikgJiYgYSA9PT0gYikgcmV0dXJuIHRydWU7XG5cdFx0Ly8gTGFzdCByZXNvcnQsIGdvIHRocm91Z2gga2V5c1xuXHRcdGxldCBpO1xuXHRcdGZvciAoaSBpbiBhKSBpZiAoIShpIGluIGIpKSByZXR1cm4gZmFsc2U7XG5cdFx0Zm9yIChpIGluIHN0cmljdCA/IGIgOiBhKSBpZiAoYVtpXSAhPT0gYltpXSkgcmV0dXJuIGZhbHNlO1xuXHRcdGlmIChpID09PSB2b2lkIDApIHtcblx0XHRcdGlmIChpc0FyciAmJiBhLmxlbmd0aCA9PT0gMCAmJiBiLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG5cdFx0XHRpZiAoaXNPYmogJiYgT2JqZWN0LmtleXMoYSkubGVuZ3RoID09PSAwICYmIE9iamVjdC5rZXlzKGIpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG5cdFx0XHRpZiAoYSAhPT0gYikgcmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcbn07XG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import * as THREE from 'three';
2
+ import { is } from './is';
2
3
  const idCache = {};
3
4
  export function makeId(event) {
4
5
  if (event) {
@@ -13,26 +14,28 @@ export function makeId(event) {
13
14
  return makeId();
14
15
  }
15
16
  export function makeDpr(dpr, window) {
16
- const target = window?.devicePixelRatio || 1;
17
+ // Err on the side of progress by assuming 2x dpr if we can't detect it
18
+ // This will happen in workers where window is defined but dpr isn't.
19
+ const target = typeof window !== 'undefined' ? window.devicePixelRatio ?? 2 : 1;
17
20
  return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], target), dpr[1]) : dpr;
18
21
  }
19
- export function makeDefaultCamera(isOrthographic, size) {
20
- if (isOrthographic)
21
- return new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000);
22
- return new THREE.PerspectiveCamera(75, size.width / size.height, 0.1, 1000);
23
- }
24
- export function makeDefaultRenderer(glOptions, canvasElement) {
25
- const customRenderer = (typeof glOptions === 'function' ? glOptions(canvasElement) : glOptions);
26
- if (customRenderer?.render != null)
22
+ export function makeRendererInstance(glOptions, canvas) {
23
+ const customRenderer = (typeof glOptions === 'function' ? glOptions(canvas) : glOptions);
24
+ if (is.renderer(customRenderer))
27
25
  return customRenderer;
28
26
  return new THREE.WebGLRenderer({
29
27
  powerPreference: 'high-performance',
30
- canvas: canvasElement,
28
+ canvas: canvas,
31
29
  antialias: true,
32
30
  alpha: true,
33
- ...(glOptions || {}),
31
+ ...glOptions,
34
32
  });
35
33
  }
34
+ export function makeCameraInstance(isOrthographic, size) {
35
+ if (isOrthographic)
36
+ return new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000);
37
+ return new THREE.PerspectiveCamera(75, size.width / size.height, 0.1, 1000);
38
+ }
36
39
  export function makeObjectGraph(object) {
37
40
  const data = { nodes: {}, materials: {} };
38
41
  if (object) {
@@ -47,4 +50,4 @@ export function makeObjectGraph(object) {
47
50
  }
48
51
  return data;
49
52
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL21ha2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLL0IsTUFBTSxPQUFPLEdBQTBDLEVBQUUsQ0FBQztBQUMxRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQXVCO0lBQzdDLElBQUksS0FBSyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0tBQ3ZGO0lBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QywwQkFBMEI7SUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0tBQ2I7SUFDRCxPQUFPLE1BQU0sRUFBRSxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLEdBQVcsRUFBRSxNQUFlO0lBQ25ELE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7SUFDN0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDOUUsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxjQUF1QixFQUFFLElBQWE7SUFDdkUsSUFBSSxjQUFjO1FBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9FLE9BQU8sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUF1QixFQUFFLGFBQWdDO0lBQzVGLE1BQU0sY0FBYyxHQUFHLENBQ3RCLE9BQU8sU0FBUyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQy9DLENBQUM7SUFFekIsSUFBSSxjQUFjLEVBQUUsTUFBTSxJQUFJLElBQUk7UUFBRSxPQUFPLGNBQWMsQ0FBQztJQUUxRCxPQUFPLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUM5QixlQUFlLEVBQUUsa0JBQWtCO1FBQ25DLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFNBQVMsRUFBRSxJQUFJO1FBQ2YsS0FBSyxFQUFFLElBQUk7UUFDWCxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztLQUNwQixDQUFDLENBQUM7QUFDSixDQUFDO0FBUUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFzQjtJQUNyRCxNQUFNLElBQUksR0FBaUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUV4RCxJQUFJLE1BQU0sRUFBRTtRQUNYLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFxQixFQUFFLEVBQUU7WUFDekMsSUFBSSxLQUFLLENBQUMsSUFBSTtnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDL0MsSUFBSSxVQUFVLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBRyxLQUFvQixDQUFDLFFBQTJCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BHLElBQUksQ0FBQyxTQUFTLENBQUcsS0FBb0IsQ0FBQyxRQUEyQixDQUFDLElBQUksQ0FBQyxHQUFJLEtBQW9CO3FCQUM3RixRQUEwQixDQUFDO2FBQzdCO1FBQ0YsQ0FBQyxDQUFDLENBQUM7S0FDSDtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB0eXBlIHsgTmd0R0xPcHRpb25zIH0gZnJvbSAnLi4vY2FudmFzJztcbmltcG9ydCB0eXBlIHsgTmd0SW50ZXJzZWN0aW9uIH0gZnJvbSAnLi4vZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgTmd0RHByLCBOZ3RTaXplIH0gZnJvbSAnLi4vc3RvcmUnO1xuXG5jb25zdCBpZENhY2hlOiB7IFtpZDogc3RyaW5nXTogYm9vbGVhbiB8IHVuZGVmaW5lZCB9ID0ge307XG5leHBvcnQgZnVuY3Rpb24gbWFrZUlkKGV2ZW50PzogTmd0SW50ZXJzZWN0aW9uKTogc3RyaW5nIHtcblx0aWYgKGV2ZW50KSB7XG5cdFx0cmV0dXJuIChldmVudC5ldmVudE9iamVjdCB8fCBldmVudC5vYmplY3QpLnV1aWQgKyAnLycgKyBldmVudC5pbmRleCArIGV2ZW50Lmluc3RhbmNlSWQ7XG5cdH1cblxuXHRjb25zdCBuZXdJZCA9IFRIUkVFLk1hdGhVdGlscy5nZW5lcmF0ZVVVSUQoKTtcblx0Ly8gZW5zdXJlIG5vdCBhbHJlYWR5IHVzZWRcblx0aWYgKCFpZENhY2hlW25ld0lkXSkge1xuXHRcdGlkQ2FjaGVbbmV3SWRdID0gdHJ1ZTtcblx0XHRyZXR1cm4gbmV3SWQ7XG5cdH1cblx0cmV0dXJuIG1ha2VJZCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZURwcihkcHI6IE5ndERwciwgd2luZG93PzogV2luZG93KSB7XG5cdGNvbnN0IHRhcmdldCA9IHdpbmRvdz8uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuXHRyZXR1cm4gQXJyYXkuaXNBcnJheShkcHIpID8gTWF0aC5taW4oTWF0aC5tYXgoZHByWzBdLCB0YXJnZXQpLCBkcHJbMV0pIDogZHByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZURlZmF1bHRDYW1lcmEoaXNPcnRob2dyYXBoaWM6IGJvb2xlYW4sIHNpemU6IE5ndFNpemUpIHtcblx0aWYgKGlzT3J0aG9ncmFwaGljKSByZXR1cm4gbmV3IFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSgwLCAwLCAwLCAwLCAwLjEsIDEwMDApO1xuXHRyZXR1cm4gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDc1LCBzaXplLndpZHRoIC8gc2l6ZS5oZWlnaHQsIDAuMSwgMTAwMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRGVmYXVsdFJlbmRlcmVyKGdsT3B0aW9uczogTmd0R0xPcHRpb25zLCBjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCk6IFRIUkVFLldlYkdMUmVuZGVyZXIge1xuXHRjb25zdCBjdXN0b21SZW5kZXJlciA9IChcblx0XHR0eXBlb2YgZ2xPcHRpb25zID09PSAnZnVuY3Rpb24nID8gZ2xPcHRpb25zKGNhbnZhc0VsZW1lbnQpIDogZ2xPcHRpb25zXG5cdCkgYXMgVEhSRUUuV2ViR0xSZW5kZXJlcjtcblxuXHRpZiAoY3VzdG9tUmVuZGVyZXI/LnJlbmRlciAhPSBudWxsKSByZXR1cm4gY3VzdG9tUmVuZGVyZXI7XG5cblx0cmV0dXJuIG5ldyBUSFJFRS5XZWJHTFJlbmRlcmVyKHtcblx0XHRwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcblx0XHRjYW52YXM6IGNhbnZhc0VsZW1lbnQsXG5cdFx0YW50aWFsaWFzOiB0cnVlLFxuXHRcdGFscGhhOiB0cnVlLFxuXHRcdC4uLihnbE9wdGlvbnMgfHwge30pLFxuXHR9KTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0T2JqZWN0TWFwID0ge1xuXHRub2RlczogeyBbbmFtZTogc3RyaW5nXTogVEhSRUUuT2JqZWN0M0QgfTtcblx0bWF0ZXJpYWxzOiB7IFtuYW1lOiBzdHJpbmddOiBUSFJFRS5NYXRlcmlhbCB9O1xuXHRba2V5OiBzdHJpbmddOiBhbnk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZU9iamVjdEdyYXBoKG9iamVjdDogVEhSRUUuT2JqZWN0M0QpOiBOZ3RPYmplY3RNYXAge1xuXHRjb25zdCBkYXRhOiBOZ3RPYmplY3RNYXAgPSB7IG5vZGVzOiB7fSwgbWF0ZXJpYWxzOiB7fSB9O1xuXG5cdGlmIChvYmplY3QpIHtcblx0XHRvYmplY3QudHJhdmVyc2UoKGNoaWxkOiBUSFJFRS5PYmplY3QzRCkgPT4ge1xuXHRcdFx0aWYgKGNoaWxkLm5hbWUpIGRhdGEubm9kZXNbY2hpbGQubmFtZV0gPSBjaGlsZDtcblx0XHRcdGlmICgnbWF0ZXJpYWwnIGluIGNoaWxkICYmICFkYXRhLm1hdGVyaWFsc1soKGNoaWxkIGFzIFRIUkVFLk1lc2gpLm1hdGVyaWFsIGFzIFRIUkVFLk1hdGVyaWFsKS5uYW1lXSkge1xuXHRcdFx0XHRkYXRhLm1hdGVyaWFsc1soKGNoaWxkIGFzIFRIUkVFLk1lc2gpLm1hdGVyaWFsIGFzIFRIUkVFLk1hdGVyaWFsKS5uYW1lXSA9IChjaGlsZCBhcyBUSFJFRS5NZXNoKVxuXHRcdFx0XHRcdC5tYXRlcmlhbCBhcyBUSFJFRS5NYXRlcmlhbDtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL21ha2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLL0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQixNQUFNLE9BQU8sR0FBMEMsRUFBRSxDQUFDO0FBQzFELE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBdUI7SUFDN0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUN4RixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QywwQkFBMEI7SUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFXLEVBQUUsTUFBZTtJQUNuRCx1RUFBdUU7SUFDdkUscUVBQXFFO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzlFLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ25DLFNBQXVCLEVBQ3ZCLE1BQWU7SUFFZixNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQU8sU0FBUyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQXdCLENBQUM7SUFDaEgsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUFFLE9BQU8sY0FBYyxDQUFDO0lBQ3ZELE9BQU8sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQzlCLGVBQWUsRUFBRSxrQkFBa0I7UUFDbkMsTUFBTSxFQUFFLE1BQU07UUFDZCxTQUFTLEVBQUUsSUFBSTtRQUNmLEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxTQUFTO0tBQ1osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxjQUF1QixFQUFFLElBQWE7SUFDeEUsSUFBSSxjQUFjO1FBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9FLE9BQU8sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQVFELE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBc0I7SUFDckQsTUFBTSxJQUFJLEdBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFxQixFQUFFLEVBQUU7WUFDekMsSUFBSSxLQUFLLENBQUMsSUFBSTtnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDL0MsSUFBSSxVQUFVLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBRyxLQUFvQixDQUFDLFFBQTJCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckcsSUFBSSxDQUFDLFNBQVMsQ0FBRyxLQUFvQixDQUFDLFFBQTJCLENBQUMsSUFBSSxDQUFDLEdBQUksS0FBb0I7cUJBQzdGLFFBQTBCLENBQUM7WUFDOUIsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB0eXBlIHsgTmd0R0xPcHRpb25zIH0gZnJvbSAnLi4vY2FudmFzJztcbmltcG9ydCB0eXBlIHsgTmd0SW50ZXJzZWN0aW9uIH0gZnJvbSAnLi4vZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgTmd0Q2FudmFzRWxlbWVudCB9IGZyb20gJy4uL3Jvb3RzJztcbmltcG9ydCB0eXBlIHsgTmd0RHByLCBOZ3RTaXplIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL2lzJztcblxuY29uc3QgaWRDYWNoZTogeyBbaWQ6IHN0cmluZ106IGJvb2xlYW4gfCB1bmRlZmluZWQgfSA9IHt9O1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VJZChldmVudD86IE5ndEludGVyc2VjdGlvbik6IHN0cmluZyB7XG5cdGlmIChldmVudCkge1xuXHRcdHJldHVybiAoZXZlbnQuZXZlbnRPYmplY3QgfHwgZXZlbnQub2JqZWN0KS51dWlkICsgJy8nICsgZXZlbnQuaW5kZXggKyBldmVudC5pbnN0YW5jZUlkO1xuXHR9XG5cblx0Y29uc3QgbmV3SWQgPSBUSFJFRS5NYXRoVXRpbHMuZ2VuZXJhdGVVVUlEKCk7XG5cdC8vIGVuc3VyZSBub3QgYWxyZWFkeSB1c2VkXG5cdGlmICghaWRDYWNoZVtuZXdJZF0pIHtcblx0XHRpZENhY2hlW25ld0lkXSA9IHRydWU7XG5cdFx0cmV0dXJuIG5ld0lkO1xuXHR9XG5cdHJldHVybiBtYWtlSWQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEcHIoZHByOiBOZ3REcHIsIHdpbmRvdz86IFdpbmRvdykge1xuXHQvLyBFcnIgb24gdGhlIHNpZGUgb2YgcHJvZ3Jlc3MgYnkgYXNzdW1pbmcgMnggZHByIGlmIHdlIGNhbid0IGRldGVjdCBpdFxuXHQvLyBUaGlzIHdpbGwgaGFwcGVuIGluIHdvcmtlcnMgd2hlcmUgd2luZG93IGlzIGRlZmluZWQgYnV0IGRwciBpc24ndC5cblx0Y29uc3QgdGFyZ2V0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA/PyAyIDogMTtcblx0cmV0dXJuIEFycmF5LmlzQXJyYXkoZHByKSA/IE1hdGgubWluKE1hdGgubWF4KGRwclswXSwgdGFyZ2V0KSwgZHByWzFdKSA6IGRwcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VSZW5kZXJlckluc3RhbmNlPFRDYW52YXMgZXh0ZW5kcyBOZ3RDYW52YXNFbGVtZW50Pihcblx0Z2xPcHRpb25zOiBOZ3RHTE9wdGlvbnMsXG5cdGNhbnZhczogVENhbnZhcyxcbik6IFRIUkVFLldlYkdMUmVuZGVyZXIge1xuXHRjb25zdCBjdXN0b21SZW5kZXJlciA9ICh0eXBlb2YgZ2xPcHRpb25zID09PSAnZnVuY3Rpb24nID8gZ2xPcHRpb25zKGNhbnZhcykgOiBnbE9wdGlvbnMpIGFzIFRIUkVFLldlYkdMUmVuZGVyZXI7XG5cdGlmIChpcy5yZW5kZXJlcihjdXN0b21SZW5kZXJlcikpIHJldHVybiBjdXN0b21SZW5kZXJlcjtcblx0cmV0dXJuIG5ldyBUSFJFRS5XZWJHTFJlbmRlcmVyKHtcblx0XHRwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcblx0XHRjYW52YXM6IGNhbnZhcyxcblx0XHRhbnRpYWxpYXM6IHRydWUsXG5cdFx0YWxwaGE6IHRydWUsXG5cdFx0Li4uZ2xPcHRpb25zLFxuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDYW1lcmFJbnN0YW5jZShpc09ydGhvZ3JhcGhpYzogYm9vbGVhbiwgc2l6ZTogTmd0U2l6ZSkge1xuXHRpZiAoaXNPcnRob2dyYXBoaWMpIHJldHVybiBuZXcgVEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhKDAsIDAsIDAsIDAsIDAuMSwgMTAwMCk7XG5cdHJldHVybiBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoNzUsIHNpemUud2lkdGggLyBzaXplLmhlaWdodCwgMC4xLCAxMDAwKTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0T2JqZWN0TWFwID0ge1xuXHRub2RlczogeyBbbmFtZTogc3RyaW5nXTogVEhSRUUuT2JqZWN0M0QgfTtcblx0bWF0ZXJpYWxzOiB7IFtuYW1lOiBzdHJpbmddOiBUSFJFRS5NYXRlcmlhbCB9O1xuXHRba2V5OiBzdHJpbmddOiBhbnk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZU9iamVjdEdyYXBoKG9iamVjdDogVEhSRUUuT2JqZWN0M0QpOiBOZ3RPYmplY3RNYXAge1xuXHRjb25zdCBkYXRhOiBOZ3RPYmplY3RNYXAgPSB7IG5vZGVzOiB7fSwgbWF0ZXJpYWxzOiB7fSB9O1xuXG5cdGlmIChvYmplY3QpIHtcblx0XHRvYmplY3QudHJhdmVyc2UoKGNoaWxkOiBUSFJFRS5PYmplY3QzRCkgPT4ge1xuXHRcdFx0aWYgKGNoaWxkLm5hbWUpIGRhdGEubm9kZXNbY2hpbGQubmFtZV0gPSBjaGlsZDtcblx0XHRcdGlmICgnbWF0ZXJpYWwnIGluIGNoaWxkICYmICFkYXRhLm1hdGVyaWFsc1soKGNoaWxkIGFzIFRIUkVFLk1lc2gpLm1hdGVyaWFsIGFzIFRIUkVFLk1hdGVyaWFsKS5uYW1lXSkge1xuXHRcdFx0XHRkYXRhLm1hdGVyaWFsc1soKGNoaWxkIGFzIFRIUkVFLk1lc2gpLm1hdGVyaWFsIGFzIFRIUkVFLk1hdGVyaWFsKS5uYW1lXSA9IChjaGlsZCBhcyBUSFJFRS5NZXNoKVxuXHRcdFx0XHRcdC5tYXRlcmlhbCBhcyBUSFJFRS5NYXRlcmlhbDtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { computed, signal, untracked, } from '@angular/core';
2
2
  const STORE_COMPUTED_KEY = '__ngt_signal_store_computed__';
3
- const setter = (_source) => (state) => {
4
- const updater = (previous) => {
3
+ function reducer(state) {
4
+ return (previous) => {
5
5
  const partial = typeof state === 'function' ? state(previous) : state;
6
6
  Object.keys(partial).forEach((key) => {
7
7
  const typedKey = key;
@@ -11,81 +11,91 @@ const setter = (_source) => (state) => {
11
11
  });
12
12
  return partial;
13
13
  };
14
- untracked(() => {
15
- _source.update((previous) => ({ ...previous, ...updater(previous) }));
16
- });
17
- };
18
- const patcher = (_source) => (state) => {
19
- const updater = (previous) => {
20
- Object.keys(state).forEach((key) => {
21
- const typedKey = key;
22
- if (state[typedKey] === undefined && previous[typedKey] != null) {
23
- state[typedKey] = previous[typedKey];
24
- }
14
+ }
15
+ function updater(_source) {
16
+ return (state) => {
17
+ const updater = reducer(state);
18
+ untracked(() => {
19
+ _source.update((previous) => ({ ...previous, ...updater(previous) }));
25
20
  });
26
- return state;
27
21
  };
28
- untracked(() => {
29
- _source.update((previous) => ({ ...updater(previous), ...previous }));
30
- });
31
- };
32
- const getter = (_source) => (...keys) => {
33
- const root = untracked(_source);
34
- if (keys.length === 0)
35
- return root;
36
- return keys.reduce((value, key) => value[key], root);
37
- };
38
- const selector = (_state, computedCache) => (...keysAndOptions) => {
39
- if (keysAndOptions.length === 0)
40
- return _state;
41
- if (keysAndOptions.length === 1 && typeof keysAndOptions[0] === 'object') {
42
- const cachedKey = STORE_COMPUTED_KEY.concat(JSON.stringify(keysAndOptions[0]));
43
- if (!computedCache.has(cachedKey)) {
44
- computedCache.set(cachedKey, computed(_state, keysAndOptions));
22
+ }
23
+ function patcher(_source) {
24
+ return (state) => {
25
+ const updater = reducer(state);
26
+ untracked(() => {
27
+ _source.update((previous) => ({ ...updater(previous), ...previous }));
28
+ });
29
+ };
30
+ }
31
+ function getter(_source) {
32
+ return (...keys) => {
33
+ const root = untracked(_source);
34
+ if (keys.length === 0)
35
+ return root;
36
+ return keys.reduce((value, key) => value[key], root);
37
+ };
38
+ }
39
+ function selector(_state, computedCache) {
40
+ return (...keysAndOptions) => {
41
+ if (keysAndOptions.length === 0)
42
+ return _state;
43
+ if (keysAndOptions.length === 1 && typeof keysAndOptions[0] === 'object') {
44
+ const cachedKey = STORE_COMPUTED_KEY.concat(JSON.stringify(keysAndOptions[0]));
45
+ if (!computedCache.has(cachedKey)) {
46
+ computedCache.set(cachedKey, computed(_state, keysAndOptions));
47
+ }
48
+ return computedCache.get(cachedKey);
45
49
  }
46
- return computedCache.get(cachedKey);
47
- }
48
- const [keys, options] = parseStoreOptions(keysAndOptions);
49
- const joinedKeys = keys.join('-');
50
- const cachedKeys = joinedKeys.concat(options ? JSON.stringify(options) : '');
51
- if (!computedCache.has(cachedKeys)) {
52
- computedCache.set(cachedKeys, computed(() => keys.reduce((value, key) => value[key], _state()), options));
50
+ const [keys, options] = parseStoreOptions(keysAndOptions);
51
+ const joinedKeys = keys.join('-');
52
+ const cachedKeys = joinedKeys.concat(JSON.stringify(options));
53
+ if (!computedCache.has(cachedKeys)) {
54
+ computedCache.set(cachedKeys, computed(() => keys.reduce((value, key) => value[key], _state()), options));
55
+ }
56
+ return computedCache.get(cachedKeys);
57
+ };
58
+ }
59
+ function parseStoreOptions(keysAndOptions) {
60
+ if (typeof keysAndOptions.at(-1) === 'object') {
61
+ return [keysAndOptions.slice(0, -1), keysAndOptions.at(-1)];
53
62
  }
54
- return computedCache.get(cachedKeys);
55
- };
63
+ return [keysAndOptions, { equal: Object.is }];
64
+ }
56
65
  export function signalStore(initialState = {}, options) {
57
66
  let source;
58
- let set;
67
+ let update;
59
68
  let get;
60
69
  let patch;
70
+ let select;
71
+ let state;
72
+ const computedCache = new Map();
73
+ if (!options) {
74
+ options = { equal: Object.is };
75
+ }
61
76
  if (typeof initialState === 'function') {
62
77
  source = signal({}, options);
78
+ state = source.asReadonly();
63
79
  get = getter(source);
64
- set = setter(source);
80
+ update = updater(source);
65
81
  patch = patcher(source);
66
- source.set(initialState({ set, get, patch }));
82
+ select = selector(state, computedCache);
83
+ source.set(initialState({ update, get, patch, select }));
67
84
  }
68
85
  else {
69
86
  source = signal(initialState, options);
87
+ state = source.asReadonly();
70
88
  get = getter(source);
71
- set = setter(source);
89
+ update = updater(source);
72
90
  patch = patcher(source);
91
+ select = selector(state, computedCache);
73
92
  }
74
- const state = source.asReadonly();
75
- const computedCache = new Map();
76
- const store = { select: selector(state, computedCache), get, set, patch, state };
77
- // NOTE: internal _snapshot to debug current state
78
- Object.defineProperty(store, '_snapshot', {
79
- get: state,
93
+ const store = { select, get, update, patch, state };
94
+ Object.defineProperty(store, 'snapshot', {
95
+ get: untracked.bind({}, state),
80
96
  configurable: false,
81
97
  enumerable: false,
82
98
  });
83
99
  return store;
84
100
  }
85
- function parseStoreOptions(keysAndOptions) {
86
- if (typeof keysAndOptions.at(-1) === 'object') {
87
- return [keysAndOptions.slice(0, -1), keysAndOptions.at(-1)];
88
- }
89
- return [keysAndOptions];
90
- }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2lnbmFsLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FLVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixNQUFNLGtCQUFrQixHQUFHLCtCQUErQixDQUFDO0FBdUQzRCxNQUFNLE1BQU0sR0FDWCxDQUF1QixPQUE4QixFQUFFLEVBQUUsQ0FDekQsQ0FBQyxLQUEyQyxFQUFFLEVBQUU7SUFDL0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFlLEVBQUUsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsR0FBa0IsQ0FBQztZQUNwQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0lBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVILE1BQU0sT0FBTyxHQUNaLENBQXVCLE9BQThCLEVBQUUsRUFBRSxDQUN6RCxDQUFDLEtBQVksRUFBRSxFQUFFO0lBQ2hCLE1BQU0sT0FBTyxHQUFHLENBQUMsUUFBZSxFQUFFLEVBQUU7UUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxHQUFrQixDQUFDO1lBQ3BDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNoRSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUMsQ0FBQztJQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFSCxNQUFNLE1BQU0sR0FDWCxDQUF1QixPQUE4QixFQUFFLEVBQUUsQ0FDekQsQ0FBQyxHQUFHLElBQWMsRUFBRSxFQUFFO0lBQ3JCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFFLEtBQXNCLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEUsQ0FBQyxDQUFDO0FBRUgsTUFBTSxRQUFRLEdBQ2IsQ0FBdUIsTUFBcUIsRUFBRSxhQUF1QyxFQUFFLEVBQUUsQ0FDekYsQ0FBQyxHQUFHLGNBQXFCLEVBQUUsRUFBRTtJQUM1QixJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQy9DLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDbEMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxjQUErQyxDQUFDLENBQUMsQ0FBQztTQUNoRztRQUNELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUUsQ0FBQztLQUNyQztJQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFN0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDbkMsYUFBYSxDQUFDLEdBQUcsQ0FDaEIsVUFBVSxFQUNWLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUUsS0FBc0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUM1RixDQUFDO0tBQ0Y7SUFDRCxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLFdBQVcsQ0FDMUIsZUFFMEYsRUFBRSxFQUM1RixPQUFvQztJQUVwQyxJQUFJLE1BQTZCLENBQUM7SUFDbEMsSUFBSSxHQUFpQyxDQUFDO0lBQ3RDLElBQUksR0FBaUMsQ0FBQztJQUN0QyxJQUFJLEtBQXFDLENBQUM7SUFFMUMsSUFBSSxPQUFPLFlBQVksS0FBSyxVQUFVLEVBQUU7UUFDdkMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxFQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFVLENBQUMsQ0FBQztLQUN2RDtTQUFNO1FBQ04sTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3hCO0lBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFFaEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUVqRixrREFBa0Q7SUFDbEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO1FBQ3pDLEdBQUcsRUFBRSxLQUFLO1FBQ1YsWUFBWSxFQUFFLEtBQUs7UUFDbkIsVUFBVSxFQUFFLEtBQUs7S0FDakIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxjQUFxQjtJQUMvQyxJQUFJLE9BQU8sY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtRQUM5QyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1RDtJQUVELE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Y29tcHV0ZWQsXG5cdHNpZ25hbCxcblx0dW50cmFja2VkLFxuXHR0eXBlIENyZWF0ZUNvbXB1dGVkT3B0aW9ucyxcblx0dHlwZSBDcmVhdGVTaWduYWxPcHRpb25zLFxuXHR0eXBlIFNpZ25hbCxcblx0dHlwZSBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgU1RPUkVfQ09NUFVURURfS0VZID0gJ19fbmd0X3NpZ25hbF9zdG9yZV9jb21wdXRlZF9fJztcblxuZXhwb3J0IHR5cGUgTmd0U2lnbmFsU3RvcmU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuXHRzZWxlY3Q8XG5cdFx0S2V5MSBleHRlbmRzIGtleW9mIFN0YXRlLFxuXHRcdEtleTIgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXSxcblx0XHRLZXkzIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml0sXG5cdFx0S2V5NCBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdW0tleTNdLFxuXHQ+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRrZXkzOiBLZXkzLFxuXHRcdGtleTQ6IEtleTQsXG5cdFx0b3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XT4sXG5cdCk6IFNpZ25hbDxTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XT47XG5cdHNlbGVjdDxLZXkxIGV4dGVuZHMga2V5b2YgU3RhdGUsIEtleTIgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXSwgS2V5MyBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdPihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0a2V5MzogS2V5Myxcblx0XHRvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFN0YXRlW0tleTFdW0tleTJdW0tleTNdPixcblx0KTogU2lnbmFsPFN0YXRlW0tleTFdW0tleTJdW0tleTNdPjtcblx0c2VsZWN0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdPihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0b3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxTdGF0ZVtLZXkxXVtLZXkyXT4sXG5cdCk6IFNpZ25hbDxTdGF0ZVtLZXkxXVtLZXkyXT47XG5cdHNlbGVjdDxLZXkgZXh0ZW5kcyBrZXlvZiBTdGF0ZT4oa2V5OiBLZXksIG9wdGlvbnM/OiBDcmVhdGVDb21wdXRlZE9wdGlvbnM8U3RhdGVbS2V5XT4pOiBTaWduYWw8U3RhdGVbS2V5XT47XG5cdHNlbGVjdChvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFN0YXRlPik6IFNpZ25hbDxTdGF0ZT47XG5cblx0Z2V0PFxuXHRcdEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSxcblx0XHRLZXkyIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV0sXG5cdFx0S2V5MyBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdLFxuXHRcdEtleTQgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXSxcblx0Pihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0a2V5MzogS2V5Myxcblx0XHRrZXk0OiBLZXk0LFxuXHQpOiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XTtcblx0Z2V0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdLCBLZXkzIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml0+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRrZXkzOiBLZXkzLFxuXHQpOiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXTtcblx0Z2V0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdPihrZXkxOiBLZXkxLCBrZXkyOiBLZXkyKTogU3RhdGVbS2V5MV1bS2V5Ml07XG5cdGdldDxLZXkgZXh0ZW5kcyBrZXlvZiBTdGF0ZT4oa2V5OiBLZXkpOiBTdGF0ZVtLZXldO1xuXHRnZXQoKTogU3RhdGU7XG5cblx0c2V0KHN0YXRlOiBQYXJ0aWFsPFN0YXRlPiB8ICgocHJldmlvdXM6IFN0YXRlKSA9PiBQYXJ0aWFsPFN0YXRlPikpOiB2b2lkO1xuXHRwYXRjaChzdGF0ZTogUGFydGlhbDxTdGF0ZT4pOiB2b2lkO1xuXG5cdHN0YXRlOiBTaWduYWw8U3RhdGU+O1xufTtcblxuY29uc3Qgc2V0dGVyID1cblx0PFN0YXRlIGV4dGVuZHMgb2JqZWN0Pihfc291cmNlOiBXcml0YWJsZVNpZ25hbDxTdGF0ZT4pID0+XG5cdChzdGF0ZTogU3RhdGUgfCAoKHByZXZpb3VzOiBTdGF0ZSkgPT4gU3RhdGUpKSA9PiB7XG5cdFx0Y29uc3QgdXBkYXRlciA9IChwcmV2aW91czogU3RhdGUpID0+IHtcblx0XHRcdGNvbnN0IHBhcnRpYWwgPSB0eXBlb2Ygc3RhdGUgPT09ICdmdW5jdGlvbicgPyBzdGF0ZShwcmV2aW91cykgOiBzdGF0ZTtcblx0XHRcdE9iamVjdC5rZXlzKHBhcnRpYWwpLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0XHRjb25zdCB0eXBlZEtleSA9IGtleSBhcyBrZXlvZiBTdGF0ZTtcblx0XHRcdFx0aWYgKHBhcnRpYWxbdHlwZWRLZXldID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNbdHlwZWRLZXldICE9IG51bGwpIHtcblx0XHRcdFx0XHRwYXJ0aWFsW3R5cGVkS2V5XSA9IHByZXZpb3VzW3R5cGVkS2V5XTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gcGFydGlhbDtcblx0XHR9O1xuXHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRfc291cmNlLnVwZGF0ZSgocHJldmlvdXMpID0+ICh7IC4uLnByZXZpb3VzLCAuLi51cGRhdGVyKHByZXZpb3VzKSB9KSk7XG5cdFx0fSk7XG5cdH07XG5cbmNvbnN0IHBhdGNoZXIgPVxuXHQ8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KF9zb3VyY2U6IFdyaXRhYmxlU2lnbmFsPFN0YXRlPikgPT5cblx0KHN0YXRlOiBTdGF0ZSkgPT4ge1xuXHRcdGNvbnN0IHVwZGF0ZXIgPSAocHJldmlvdXM6IFN0YXRlKSA9PiB7XG5cdFx0XHRPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHR5cGVkS2V5ID0ga2V5IGFzIGtleW9mIFN0YXRlO1xuXHRcdFx0XHRpZiAoc3RhdGVbdHlwZWRLZXldID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNbdHlwZWRLZXldICE9IG51bGwpIHtcblx0XHRcdFx0XHRzdGF0ZVt0eXBlZEtleV0gPSBwcmV2aW91c1t0eXBlZEtleV07XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHN0YXRlO1xuXHRcdH07XG5cdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdF9zb3VyY2UudXBkYXRlKChwcmV2aW91cykgPT4gKHsgLi4udXBkYXRlcihwcmV2aW91cyksIC4uLnByZXZpb3VzIH0pKTtcblx0XHR9KTtcblx0fTtcblxuY29uc3QgZ2V0dGVyID1cblx0PFN0YXRlIGV4dGVuZHMgb2JqZWN0Pihfc291cmNlOiBXcml0YWJsZVNpZ25hbDxTdGF0ZT4pID0+XG5cdCguLi5rZXlzOiBzdHJpbmdbXSkgPT4ge1xuXHRcdGNvbnN0IHJvb3QgPSB1bnRyYWNrZWQoX3NvdXJjZSk7XG5cdFx0aWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gcm9vdDtcblx0XHRyZXR1cm4ga2V5cy5yZWR1Y2UoKHZhbHVlLCBrZXkpID0+ICh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpW2tleV0sIHJvb3QpO1xuXHR9O1xuXG5jb25zdCBzZWxlY3RvciA9XG5cdDxTdGF0ZSBleHRlbmRzIG9iamVjdD4oX3N0YXRlOiBTaWduYWw8U3RhdGU+LCBjb21wdXRlZENhY2hlOiBNYXA8c3RyaW5nLCBTaWduYWw8YW55Pj4pID0+XG5cdCguLi5rZXlzQW5kT3B0aW9uczogYW55W10pID0+IHtcblx0XHRpZiAoa2V5c0FuZE9wdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gX3N0YXRlO1xuXHRcdGlmIChrZXlzQW5kT3B0aW9ucy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGtleXNBbmRPcHRpb25zWzBdID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Y29uc3QgY2FjaGVkS2V5ID0gU1RPUkVfQ09NUFVURURfS0VZLmNvbmNhdChKU09OLnN0cmluZ2lmeShrZXlzQW5kT3B0aW9uc1swXSkpO1xuXHRcdFx0aWYgKCFjb21wdXRlZENhY2hlLmhhcyhjYWNoZWRLZXkpKSB7XG5cdFx0XHRcdGNvbXB1dGVkQ2FjaGUuc2V0KGNhY2hlZEtleSwgY29tcHV0ZWQoX3N0YXRlLCBrZXlzQW5kT3B0aW9ucyBhcyBDcmVhdGVDb21wdXRlZE9wdGlvbnM8b2JqZWN0PikpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNvbXB1dGVkQ2FjaGUuZ2V0KGNhY2hlZEtleSkhO1xuXHRcdH1cblx0XHRjb25zdCBba2V5cywgb3B0aW9uc10gPSBwYXJzZVN0b3JlT3B0aW9ucyhrZXlzQW5kT3B0aW9ucyk7XG5cdFx0Y29uc3Qgam9pbmVkS2V5cyA9IGtleXMuam9pbignLScpO1xuXHRcdGNvbnN0IGNhY2hlZEtleXMgPSBqb2luZWRLZXlzLmNvbmNhdChvcHRpb25zID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucykgOiAnJyk7XG5cblx0XHRpZiAoIWNvbXB1dGVkQ2FjaGUuaGFzKGNhY2hlZEtleXMpKSB7XG5cdFx0XHRjb21wdXRlZENhY2hlLnNldChcblx0XHRcdFx0Y2FjaGVkS2V5cyxcblx0XHRcdFx0Y29tcHV0ZWQoKCkgPT4ga2V5cy5yZWR1Y2UoKHZhbHVlLCBrZXkpID0+ICh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpW2tleV0sIF9zdGF0ZSgpKSwgb3B0aW9ucyksXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tcHV0ZWRDYWNoZS5nZXQoY2FjaGVkS2V5cykhO1xuXHR9O1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuXHRpbml0aWFsU3RhdGU6XG5cdFx0fCBQYXJ0aWFsPFN0YXRlPlxuXHRcdHwgKChzdG9yZUFwaTogUGljazxOZ3RTaWduYWxTdG9yZTxTdGF0ZT4sICdnZXQnIHwgJ3NldCcgfCAncGF0Y2gnPikgPT4gUGFydGlhbDxTdGF0ZT4pID0ge30sXG5cdG9wdGlvbnM/OiBDcmVhdGVTaWduYWxPcHRpb25zPFN0YXRlPixcbik6IE5ndFNpZ25hbFN0b3JlPFN0YXRlPiB7XG5cdGxldCBzb3VyY2U6IFdyaXRhYmxlU2lnbmFsPFN0YXRlPjtcblx0bGV0IHNldDogTmd0U2lnbmFsU3RvcmU8U3RhdGU+WydzZXQnXTtcblx0bGV0IGdldDogTmd0U2lnbmFsU3RvcmU8U3RhdGU+WydnZXQnXTtcblx0bGV0IHBhdGNoOiBOZ3RTaWduYWxTdG9yZTxTdGF0ZT5bJ3BhdGNoJ107XG5cblx0aWYgKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRzb3VyY2UgPSBzaWduYWwoe30gYXMgU3RhdGUsIG9wdGlvbnMpO1xuXHRcdGdldCA9IGdldHRlcihzb3VyY2UpO1xuXHRcdHNldCA9IHNldHRlcihzb3VyY2UpO1xuXHRcdHBhdGNoID0gcGF0Y2hlcihzb3VyY2UpO1xuXHRcdHNvdXJjZS5zZXQoaW5pdGlhbFN0YXRlKHsgc2V0LCBnZXQsIHBhdGNoIH0pIGFzIFN0YXRlKTtcblx0fSBlbHNlIHtcblx0XHRzb3VyY2UgPSBzaWduYWwoaW5pdGlhbFN0YXRlIGFzIFN0YXRlLCBvcHRpb25zKTtcblx0XHRnZXQgPSBnZXR0ZXIoc291cmNlKTtcblx0XHRzZXQgPSBzZXR0ZXIoc291cmNlKTtcblx0XHRwYXRjaCA9IHBhdGNoZXIoc291cmNlKTtcblx0fVxuXG5cdGNvbnN0IHN0YXRlID0gc291cmNlLmFzUmVhZG9ubHkoKTtcblx0Y29uc3QgY29tcHV0ZWRDYWNoZSA9IG5ldyBNYXAoKTtcblxuXHRjb25zdCBzdG9yZSA9IHsgc2VsZWN0OiBzZWxlY3RvcihzdGF0ZSwgY29tcHV0ZWRDYWNoZSksIGdldCwgc2V0LCBwYXRjaCwgc3RhdGUgfTtcblxuXHQvLyBOT1RFOiBpbnRlcm5hbCBfc25hcHNob3QgdG8gZGVidWcgY3VycmVudCBzdGF0ZVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RvcmUsICdfc25hcHNob3QnLCB7XG5cdFx0Z2V0OiBzdGF0ZSxcblx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuXHRcdGVudW1lcmFibGU6IGZhbHNlLFxuXHR9KTtcblxuXHRyZXR1cm4gc3RvcmU7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RvcmVPcHRpb25zKGtleXNBbmRPcHRpb25zOiBhbnlbXSk6IFtzdHJpbmdbXSwgQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPGFueT4/XSB7XG5cdGlmICh0eXBlb2Yga2V5c0FuZE9wdGlvbnMuYXQoLTEpID09PSAnb2JqZWN0Jykge1xuXHRcdHJldHVybiBba2V5c0FuZE9wdGlvbnMuc2xpY2UoMCwgLTEpLCBrZXlzQW5kT3B0aW9ucy5hdCgtMSldO1xuXHR9XG5cblx0cmV0dXJuIFtrZXlzQW5kT3B0aW9uc107XG59XG4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2lnbmFsLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FLVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixNQUFNLGtCQUFrQixHQUFHLCtCQUErQixDQUFDO0FBb0UzRCxTQUFTLE9BQU8sQ0FBdUIsS0FBMkM7SUFDakYsT0FBTyxDQUFDLFFBQWUsRUFBRSxFQUFFO1FBQzFCLE1BQU0sT0FBTyxHQUFHLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFFBQVEsR0FBRyxHQUFrQixDQUFDO1lBQ3BDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUF1QixPQUE4QjtJQUNwRSxPQUFPLENBQUMsS0FBMkMsRUFBRSxFQUFFO1FBQ3RELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxF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QUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBVSxDQUFDLENBQUM7SUFDbkUsQ0FBQztTQUFNLENBQUM7UUFDUCxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QixHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFFcEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1FBQ3hDLEdBQUcsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUM7UUFDOUIsWUFBWSxFQUFFLEtBQUs7UUFDbkIsVUFBVSxFQUFFLEtBQUs7S0FDakIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUE4QixDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRjb21wdXRlZCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG5cdHR5cGUgQ3JlYXRlQ29tcHV0ZWRPcHRpb25zLFxuXHR0eXBlIENyZWF0ZVNpZ25hbE9wdGlvbnMsXG5cdHR5cGUgU2lnbmFsLFxuXHR0eXBlIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBTVE9SRV9DT01QVVRFRF9LRVkgPSAnX19uZ3Rfc2lnbmFsX3N0b3JlX2NvbXB1dGVkX18nO1xuXG5leHBvcnQgdHlwZSBOZ3RTaWduYWxTdG9yZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4gPSB7XG5cdHNlbGVjdDxcblx0XHRLZXkxIGV4dGVuZHMga2V5b2YgU3RhdGUsXG5cdFx0S2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdLFxuXHRcdEtleTMgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXVtLZXkyXSxcblx0XHRLZXk0IGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml1bS2V5M10sXG5cdD4oXG5cdFx0a2V5MTogS2V5MSxcblx0XHRrZXkyOiBLZXkyLFxuXHRcdGtleTM6IEtleTMsXG5cdFx0a2V5NDogS2V5NCxcblx0XHRvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFN0YXRlW0tleTFdW0tleTJdW0tleTNdW0tleTRdPixcblx0KTogU2lnbmFsPFN0YXRlW0tleTFdW0tleTJdW0tleTNdW0tleTRdPjtcblx0c2VsZWN0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdLCBLZXkzIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml0+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRrZXkzOiBLZXkzLFxuXHRcdG9wdGlvbnM/OiBDcmVhdGVDb21wdXRlZE9wdGlvbnM8U3RhdGVbS2V5MV1bS2V5Ml1bS2V5M10+LFxuXHQpOiBTaWduYWw8U3RhdGVbS2V5MV1bS2V5Ml1bS2V5M10+O1xuXHRzZWxlY3Q8S2V5MSBleHRlbmRzIGtleW9mIFN0YXRlLCBLZXkyIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV0+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFN0YXRlW0tleTFdW0tleTJdPixcblx0KTogU2lnbmFsPFN0YXRlW0tleTFdW0tleTJdPjtcblx0c2VsZWN0PEtleSBleHRlbmRzIGtleW9mIFN0YXRlPihrZXk6IEtleSwgb3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxTdGF0ZVtLZXldPik6IFNpZ25hbDxTdGF0ZVtLZXldPjtcblx0c2VsZWN0KG9wdGlvbnM/OiBDcmVhdGVDb21wdXRlZE9wdGlvbnM8U3RhdGU+KTogU2lnbmFsPFN0YXRlPjtcblxuXHRnZXQ8XG5cdFx0S2V5MSBleHRlbmRzIGtleW9mIFN0YXRlLFxuXHRcdEtleTIgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXSxcblx0XHRLZXkzIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml0sXG5cdFx0S2V5NCBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdW0tleTNdLFxuXHQ+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRrZXkzOiBLZXkzLFxuXHRcdGtleTQ6IEtleTQsXG5cdCk6IFN0YXRlW0tleTFdW0tleTJdW0tleTNdW0tleTRdO1xuXHRnZXQ8S2V5MSBleHRlbmRzIGtleW9mIFN0YXRlLCBLZXkyIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV0sIEtleTMgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXVtLZXkyXT4oXG5cdFx0a2V5MTogS2V5MSxcblx0XHRrZXkyOiBLZXkyLFxuXHRcdGtleTM6IEtleTMsXG5cdCk6IFN0YXRlW0tleTFdW0tleTJdW0tleTNdO1xuXHRnZXQ8S2V5MSBleHRlbmRzIGtleW9mIFN0YXRlLCBLZXkyIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV0+KGtleTE6IEtleTEsIGtleTI6IEtleTIpOiBTdGF0ZVtLZXkxXVtLZXkyXTtcblx0Z2V0PEtleSBleHRlbmRzIGtleW9mIFN0YXRlPihrZXk6IEtleSk6IFN0YXRlW0tleV07XG5cdGdldCgpOiBTdGF0ZTtcblxuXHQvKipcblx0ICogTmV3IHN0YXRlIHRha2VzIHByZWNlZGVuY2Vcblx0ICovXG5cdHVwZGF0ZShzdGF0ZTogUGFydGlhbDxTdGF0ZT4gfCAoKHByZXZpb3VzOiBTdGF0ZSkgPT4gUGFydGlhbDxTdGF0ZT4pKTogdm9pZDtcblx0LyoqXG5cdCAqIE5vbi11bmRlZmluZWQgb2xkIHN0YXRlIHRha2VzIHByZWNlZGVuY2Vcblx0ICovXG5cdHBhdGNoKHN0YXRlOiBQYXJ0aWFsPFN0YXRlPiB8ICgocHJldmlvdXM6IFN0YXRlKSA9PiBQYXJ0aWFsPFN0YXRlPikpOiB2b2lkO1xuXG5cdC8qKlxuXHQgKiBFcXVpdmFsZW5jZSB0byBzZWxlY3QoKVxuXHQgKi9cblx0c3RhdGU6IFNpZ25hbDxTdGF0ZT47XG5cdC8qKlxuXHQgKiBFcXVpdmFsZW5jZSB0byBnZXQoKVxuXHQgKi9cblx0Z2V0IHNuYXBzaG90KCk6IFN0YXRlO1xufTtcblxuZnVuY3Rpb24gcmVkdWNlcjxTdGF0ZSBleHRlbmRzIG9iamVjdD4oc3RhdGU6IFN0YXRlIHwgKChwcmV2aW91czogU3RhdGUpID0+IFN0YXRlKSkge1xuXHRyZXR1cm4gKHByZXZpb3VzOiBTdGF0ZSkgPT4ge1xuXHRcdGNvbnN0IHBhcnRpYWwgPSB0eXBlb2Ygc3RhdGUgPT09ICdmdW5jdGlvbicgPyBzdGF0ZShwcmV2aW91cykgOiBzdGF0ZTtcblx0XHRPYmplY3Qua2V5cyhwYXJ0aWFsKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdGNvbnN0IHR5cGVkS2V5ID0ga2V5IGFzIGtleW9mIFN0YXRlO1xuXHRcdFx0aWYgKHBhcnRpYWxbdHlwZWRLZXldID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNbdHlwZWRLZXldICE9IG51bGwpIHtcblx0XHRcdFx0cGFydGlhbFt0eXBlZEtleV0gPSBwcmV2aW91c1t0eXBlZEtleV07XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHBhcnRpYWw7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZXI8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KF9zb3VyY2U6IFdyaXRhYmxlU2lnbmFsPFN0YXRlPikge1xuXHRyZXR1cm4gKHN0YXRlOiBTdGF0ZSB8ICgocHJldmlvdXM6IFN0YXRlKSA9PiBTdGF0ZSkpID0+IHtcblx0XHRjb25zdCB1cGRhdGVyID0gcmVkdWNlcihzdGF0ZSk7XG5cdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdF9zb3VyY2UudXBkYXRlKChwcmV2aW91cykgPT4gKHsgLi4ucHJldmlvdXMsIC4uLnVwZGF0ZXIocHJldmlvdXMpIH0pKTtcblx0XHR9KTtcblx0fTtcbn1cblxuZnVuY3Rpb24gcGF0Y2hlcjxTdGF0ZSBleHRlbmRzIG9iamVjdD4oX3NvdXJjZTogV3JpdGFibGVTaWduYWw8U3RhdGU+KSB7XG5cdHJldHVybiAoc3RhdGU6IFN0YXRlIHwgKChwcmV2aW91czogU3RhdGUpID0+IFN0YXRlKSkgPT4ge1xuXHRcdGNvbnN0IHVwZGF0ZXIgPSByZWR1Y2VyKHN0YXRlKTtcblx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0X3NvdXJjZS51cGRhdGUoKHByZXZpb3VzKSA9PiAoeyAuLi51cGRhdGVyKHByZXZpb3VzKSwgLi4ucHJldmlvdXMgfSkpO1xuXHRcdH0pO1xuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXR0ZXI8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KF9zb3VyY2U6IFdyaXRhYmxlU2lnbmFsPFN0YXRlPikge1xuXHRyZXR1cm4gKC4uLmtleXM6IHN0cmluZ1tdKSA9PiB7XG5cdFx0Y29uc3Qgcm9vdCA9IHVudHJhY2tlZChfc291cmNlKTtcblx0XHRpZiAoa2V5cy5sZW5ndGggPT09IDApIHJldHVybiByb290O1xuXHRcdHJldHVybiBrZXlzLnJlZHVjZSgodmFsdWUsIGtleSkgPT4gKHZhbHVlIGFzIE5ndEFueVJlY29yZClba2V5XSwgcm9vdCk7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHNlbGVjdG9yPFN0YXRlIGV4dGVuZHMgb2JqZWN0Pihfc3RhdGU6IFNpZ25hbDxTdGF0ZT4sIGNvbXB1dGVkQ2FjaGU6IE1hcDxzdHJpbmcsIFNpZ25hbDxhbnk+Pikge1xuXHRyZXR1cm4gKC4uLmtleXNBbmRPcHRpb25zOiBhbnlbXSkgPT4ge1xuXHRcdGlmIChrZXlzQW5kT3B0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiBfc3RhdGU7XG5cdFx0aWYgKGtleXNBbmRPcHRpb25zLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2Yga2V5c0FuZE9wdGlvbnNbMF0gPT09ICdvYmplY3QnKSB7XG5cdFx0XHRjb25zdCBjYWNoZWRLZXkgPSBTVE9SRV9DT01QVVRFRF9LRVkuY29uY2F0KEpTT04uc3RyaW5naWZ5KGtleXNBbmRPcHRpb25zWzBdKSk7XG5cdFx0XHRpZiAoIWNvbXB1dGVkQ2FjaGUuaGFzKGNhY2hlZEtleSkpIHtcblx0XHRcdFx0Y29tcHV0ZWRDYWNoZS5zZXQoY2FjaGVkS2V5LCBjb21wdXRlZChfc3RhdGUsIGtleXNBbmRPcHRpb25zIGFzIENyZWF0ZUNvbXB1dGVkT3B0aW9uczxvYmplY3Q+KSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY29tcHV0ZWRDYWNoZS5nZXQoY2FjaGVkS2V5KSE7XG5cdFx0fVxuXHRcdGNvbnN0IFtrZXlzLCBvcHRpb25zXSA9IHBhcnNlU3RvcmVPcHRpb25zKGtleXNBbmRPcHRpb25zKTtcblx0XHRjb25zdCBqb2luZWRLZXlzID0ga2V5cy5qb2luKCctJyk7XG5cdFx0Y29uc3QgY2FjaGVkS2V5cyA9IGpvaW5lZEtleXMuY29uY2F0KEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcblxuXHRcdGlmICghY29tcHV0ZWRDYWNoZS5oYXMoY2FjaGVkS2V5cykpIHtcblx0XHRcdGNvbXB1dGVkQ2FjaGUuc2V0KFxuXHRcdFx0XHRjYWNoZWRLZXlzLFxuXHRcdFx0XHRjb21wdXRlZCgoKSA9PiBrZXlzLnJlZHVjZSgodmFsdWUsIGtleSkgPT4gKHZhbHVlIGFzIE5ndEFueVJlY29yZClba2V5XSwgX3N0YXRlKCkpLCBvcHRpb25zKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBjb21wdXRlZENhY2hlLmdldChjYWNoZWRLZXlzKSE7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RvcmVPcHRpb25zKGtleXNBbmRPcHRpb25zOiBhbnlbXSk6IFtzdHJpbmdbXSwgQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPGFueT4/XSB7XG5cdGlmICh0eXBlb2Yga2V5c0FuZE9wdGlvbnMuYXQoLTEpID09PSAnb2JqZWN0Jykge1xuXHRcdHJldHVybiBba2V5c0FuZE9wdGlvbnMuc2xpY2UoMCwgLTEpLCBrZXlzQW5kT3B0aW9ucy5hdCgtMSldO1xuXHR9XG5cblx0cmV0dXJuIFtrZXlzQW5kT3B0aW9ucywgeyBlcXVhbDogT2JqZWN0LmlzIH1dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuXHRpbml0aWFsU3RhdGU6XG5cdFx0fCBQYXJ0aWFsPFN0YXRlPlxuXHRcdHwgKChzdG9yZUFwaTogUGljazxOZ3RTaWduYWxTdG9yZTxTdGF0ZT4sICdnZXQnIHwgJ3VwZGF0ZScgfCAncGF0Y2gnIHwgJ3NlbGVjdCc+KSA9PiBQYXJ0aWFsPFN0YXRlPikgPSB7fSxcblx0b3B0aW9ucz86IENyZWF0ZVNpZ25hbE9wdGlvbnM8U3RhdGU+LFxuKTogTmd0U2lnbmFsU3RvcmU8U3RhdGU+IHtcblx0bGV0IHNvdXJjZTogV3JpdGFibGVTaWduYWw8U3RhdGU+O1xuXHRsZXQgdXBkYXRlOiBOZ3RTaWduYWxTdG9yZTxTdGF0ZT5bJ3VwZGF0ZSddO1xuXHRsZXQgZ2V0OiBOZ3RTaWduYWxTdG9yZTxTdGF0ZT5bJ2dldCddO1xuXHRsZXQgcGF0Y2g6IE5ndFNpZ25hbFN0b3JlPFN0YXRlPlsncGF0Y2gnXTtcblx0bGV0IHNlbGVjdDogTmd0U2lnbmFsU3RvcmU8U3RhdGU+WydzZWxlY3QnXTtcblx0bGV0IHN0YXRlOiBTaWduYWw8U3RhdGU+O1xuXG5cdGNvbnN0IGNvbXB1dGVkQ2FjaGUgPSBuZXcgTWFwKCk7XG5cblx0aWYgKCFvcHRpb25zKSB7XG5cdFx0b3B0aW9ucyA9IHsgZXF1YWw6IE9iamVjdC5pcyB9O1xuXHR9XG5cblx0aWYgKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRzb3VyY2UgPSBzaWduYWwoe30gYXMgU3RhdGUsIG9wdGlvbnMpO1xuXHRcdHN0YXRlID0gc291cmNlLmFzUmVhZG9ubHkoKTtcblx0XHRnZXQgPSBnZXR0ZXIoc291cmNlKTtcblx0XHR1cGRhdGUgPSB1cGRhdGVyKHNvdXJjZSk7XG5cdFx0cGF0Y2ggPSBwYXRjaGVyKHNvdXJjZSk7XG5cdFx0c2VsZWN0ID0gc2VsZWN0b3Ioc3RhdGUsIGNvbXB1dGVkQ2FjaGUpO1xuXHRcdHNvdXJjZS5zZXQoaW5pdGlhbFN0YXRlKHsgdXBkYXRlLCBnZXQsIHBhdGNoLCBzZWxlY3QgfSkgYXMgU3RhdGUpO1xuXHR9IGVsc2Uge1xuXHRcdHNvdXJjZSA9IHNpZ25hbChpbml0aWFsU3RhdGUgYXMgU3RhdGUsIG9wdGlvbnMpO1xuXHRcdHN0YXRlID0gc291cmNlLmFzUmVhZG9ubHkoKTtcblx0XHRnZXQgPSBnZXR0ZXIoc291cmNlKTtcblx0XHR1cGRhdGUgPSB1cGRhdGVyKHNvdXJjZSk7XG5cdFx0cGF0Y2ggPSBwYXRjaGVyKHNvdXJjZSk7XG5cdFx0c2VsZWN0ID0gc2VsZWN0b3Ioc3RhdGUsIGNvbXB1dGVkQ2FjaGUpO1xuXHR9XG5cblx0Y29uc3Qgc3RvcmUgPSB7IHNlbGVjdCwgZ2V0LCB1cGRhdGUsIHBhdGNoLCBzdGF0ZSB9O1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdG9yZSwgJ3NuYXBzaG90Jywge1xuXHRcdGdldDogdW50cmFja2VkLmJpbmQoe30sIHN0YXRlKSxcblx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuXHRcdGVudW1lcmFibGU6IGZhbHNlLFxuXHR9KTtcblxuXHRyZXR1cm4gc3RvcmUgYXMgTmd0U2lnbmFsU3RvcmU8U3RhdGU+O1xufVxuIl19