@galacean/effects-threejs 1.1.8 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.min.js","sources":["../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/global.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/fails.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/descriptors.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/function-bind-native.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/function-call.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-v8-version.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/function-uncurry-this.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/classof-raw.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/indexed-object.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-null-or-undefined.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/document-all.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-callable.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-object.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/get-built-in.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-is-prototype-of.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-user-agent.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/symbol-constructor-detection.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-symbol.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/try-to-string.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/a-callable.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/get-method.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/ordinary-to-primitive.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/define-global-property.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/shared-store.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/shared.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-object.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/has-own-property.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/uid.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-primitive.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-property-key.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/document-create-element.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/v8-prototype-define-bug.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/an-object.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-define-property.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/function-name.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/inspect-source.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/internal-state.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/weak-map-basic-detection.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/shared-key.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/hidden-keys.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/make-built-in.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/define-built-in.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/math-trunc.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-integer-or-infinity.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-length.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/length-of-array-like.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-includes.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/own-keys.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-forced.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/export.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-keys.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-define-properties.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/html.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-create.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/add-to-unscopables.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.array.includes.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/entry-unbind.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/es/array/includes.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/correct-prototype-getter.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-get-prototype-of.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-to-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.object.values.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/path.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/es/object/values.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.object.entries.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/es/object/entries.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/check-correctness-of-iteration.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-buffer-basic-detection.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-string-tag-support.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-buffer-view-core.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/classof.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/define-built-in-accessor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/function-uncurry-this-accessor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/a-possible-prototype.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-set-prototype-of.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/define-built-ins.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/an-instance.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-index.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/ieee754.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/math-sign.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-fill.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/create-property.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-slice-simple.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/set-to-string-tag.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-buffer.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-integral-number.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-positive-integer.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-offset.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-uint8-clamped.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/function-uncurry-this-clause.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/function-bind-context.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/a-constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/iterators.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/get-iterator-method.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/get-iterator.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-array-iterator-method.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-big-int-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-big-int.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/typed-array-from.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/is-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-species-constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-species-create.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-iteration.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/set-species.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/inherit-if-required.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/typed-array-constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.int8-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.uint8-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.int16-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.uint16-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.int32-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.uint32-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.float32-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.float64-array.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-to-string.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.object.to-string.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/to-string.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/iterators-core.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/string-multibyte.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/iterator-create-constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/iterator-define.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/create-iter-result-object.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.string.iterator.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.from.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.of.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.at.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/delete-property-or-throw.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-copy-within.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.copy-within.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.every.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.fill.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-from-constructor-and-list.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/species-constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/typed-array-species-constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/typed-array-from-species-and-list.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.filter.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.find.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.find-index.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-iteration-from-last.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.find-last.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.find-last-index.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.for-each.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.includes.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.index-of.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.join.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/function-apply.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-method-is-strict.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-last-index-of.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.last-index-of.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.map.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-reduce.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.reduce.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.reduce-right.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.reverse.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.set.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-slice.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.slice.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.some.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-sort.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-ff-version.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-is-ie-or-edge.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-webkit-version.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.sort.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.subarray.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.to-locale-string.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.to-string.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-to-reversed.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.to-reversed.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.to-sorted.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-with.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.with.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.array.iterator.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.typed-array.iterator.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/esnext.typed-array.to-spliced.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-get-own-property-names-external.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-buffer-non-extensible.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/object-is-extensible.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/freezing.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/internal-metadata.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/iterator-close.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/iterate.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/collection.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/collection-strong.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.map.constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-is-node.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/task.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/validate-arguments-length.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-is-ios.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/queue.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/microtask.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-is-ios-pebble.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-is-webos-webkit.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/perform.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/promise-native-constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-is-deno.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/engine-is-browser.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/promise-constructor-detection.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/new-promise-capability.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.promise.constructor.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/host-report-errors.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/promise-statics-incorrect-iteration.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.promise.all.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.promise.catch.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.promise.race.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.promise.reject.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/promise-resolve.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/es.promise.resolve.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/async-iterator-prototype.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/async-from-sync-iterator.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/get-iterator-direct.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/get-async-iterator.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/entry-virtual.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/does-not-exceed-safe-integer.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/async-iterator-close.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/async-iterator-iteration.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-from-async.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/esnext.typed-array.from-async.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/esnext.typed-array.filter-out.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/esnext.typed-array.filter-reject.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-group.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/esnext.typed-array.group-by.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/map-helpers.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/iterate-simple.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/map-iterate.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/internals/array-unique-by.js","../../../node_modules/.pnpm/core-js@3.32.1/node_modules/core-js/modules/esnext.typed-array.unique-by.js","../../../node_modules/.pnpm/@galacean+effects-specification@1.0.0/node_modules/@galacean/effects-specification/dist/index.mjs","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/utils.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector2.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/euler.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/quaternion.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/matrix4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/matrix3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/ray.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/color.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/box3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/sphere.js","../../effects-core/src/libs/earcut.js","../../../node_modules/.pnpm/@galacean+effects-specification@1.0.0/node_modules/@galacean/effects-specification/dist/fallback.mjs"],"sourcesContent":["'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.32.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.32.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (CONSTRUCTOR, METHOD) {\n return uncurryThis(global[CONSTRUCTOR].prototype[METHOD]);\n};\n","'use strict';\nrequire('../../modules/es.array.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'includes');\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys\n// of `null` prototype objects\nvar IE_BUG = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-create -- safe\n var O = Object.create(null);\n O[2] = 2;\n return !propertyIsEnumerable(O, 2);\n});\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = global;\n","'use strict';\nrequire('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","'use strict';\nvar $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","'use strict';\nrequire('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\n/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar sign = require('../internals/math-sign');\nvar trunc = require('../internals/math-trunc');\n\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar roundToEven = function (number) {\n var truncated = trunc(number);\n var delta = abs(number - truncated);\n if (delta > 0.5 || delta === 0.5 && truncated % 2 !== 0) {\n return truncated + sign(number);\n } return truncated;\n};\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = $Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var s = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number !== number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number !== number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n c = pow(2, -exponent);\n if (number * c < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = roundToEven((number * c - 1) * pow(2, mantissaLength));\n exponent = exponent + eBias;\n } else {\n mantissa = roundToEven(number * pow(2, eBias - 1) * pow(2, mantissaLength));\n exponent = 0;\n }\n }\n while (mantissaLength >= 8) {\n buffer[index++] = mantissa & 255;\n mantissa /= 256;\n mantissaLength -= 8;\n }\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n while (exponentLength > 0) {\n buffer[index++] = exponent & 255;\n exponent /= 256;\n exponentLength -= 8;\n }\n buffer[--index] |= s * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var s = buffer[index--];\n var exponent = s & 127;\n var mantissa;\n s >>= 7;\n while (nBits > 0) {\n exponent = exponent * 256 + buffer[index--];\n nBits -= 8;\n }\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n while (nBits > 0) {\n mantissa = mantissa * 256 + buffer[index--];\n nBits -= 8;\n }\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : s ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (s ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\n// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n var n = +x;\n // eslint-disable-next-line no-self-compare -- NaN check\n return n === 0 || n !== n ? n : n < 0 ? -1 : 1;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n var n = 0;\n for (; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\nvar setInternalState = InternalStateModule.set;\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key, getInternalState) {\n defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return boolIsLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var pack = conversion(+value);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n type: ARRAY_BUFFER,\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) {\n this.byteLength = byteLength;\n this.detached = false;\n }\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferState = getInternalArrayBufferState(buffer);\n var bufferLength = bufferState.byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n type: DATA_VIEW,\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset,\n bytes: bufferState.bytes\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\n addGetter($DataView, 'buffer', getInternalDataViewState);\n addGetter($DataView, 'byteLength', getInternalDataViewState);\n addGetter($DataView, 'byteOffset', getInternalDataViewState);\n }\n\n defineBuiltIns(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return new NativeArrayBuffer(toIndex(length));\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n","'use strict';\nvar round = Math.round;\n\nmodule.exports = function (it) {\n var value = round(it);\n return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar toBigInt = require('../internals/to-big-int');\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n thisIsBigIntArray = isBigIntArray(result);\n for (i = 0; length > i; i++) {\n value = mapping ? mapfn(O[i], i) : O[i];\n // FF30- typed arrays doesn't properly convert objects to typed array values\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n }\n return result;\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineBuiltInAccessor(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toUint8Clamped = require('../internals/to-uint8-clamped');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n aTypedArrayConstructor(C);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n defineBuiltInAccessor(it, key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor;\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.of` method\n// https://tc39.es/ecma262/#sec-%typedarray%.of\nexportTypedArrayStaticMethod('of', function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = new (aTypedArrayConstructor(this))(length);\n while (length > index) result[index] = arguments[index++];\n return result;\n}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\nexportTypedArrayMethod('at', function at(index) {\n var O = aTypedArray(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n});\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n var index = 0;\n var length = lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray)));\n};\n","'use strict';\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_FIND_LAST_INDEX = TYPE === 1;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var index = lengthOfArrayLike(self);\n var value, result;\n while (index-- > 0) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (result) switch (TYPE) {\n case 0: return value; // findLast\n case 1: return index; // findLastIndex\n }\n }\n return IS_FIND_LAST_INDEX ? -1 : undefined;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.findLast` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLast: createMethod(0),\n // `Array.prototype.findLastIndex` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLastIndex: createMethod(1)\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n var length = arguments.length;\n return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (typedArraySpeciesConstructor(O))(length);\n });\n});\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw $TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = arraySlice(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","'use strict';\nvar UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return join(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n var len = lengthOfArrayLike(O);\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = O[len - k - 1];\n return A;\n};\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return createIterResultObject(undefined, true);\n }\n switch (kind) {\n case 'keys': return createIterResultObject(index, false);\n case 'values': return createIterResultObject(target[index], false);\n } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n && TypedArrayPrototype.values\n && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toBigInt = require('../internals/to-big-int');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar max = Math.max;\nvar min = Math.min;\n\n// some early implementations, like WebKit, does not follow the final semantic\nvar PROPER_ORDER = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Int8Array([1]);\n\n var spliced = array.toSpliced(1, 0, {\n valueOf: function () {\n array[0] = 2;\n return 3;\n }\n });\n\n return spliced[0] !== 2 || spliced[1] !== 3;\n});\n\n// `%TypedArray%.prototype.toSpliced` method\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSpliced\nexportTypedArrayMethod('toSpliced', function toSpliced(start, deleteCount /* , ...items */) {\n var O = aTypedArray(this);\n var C = getTypedArrayConstructor(O);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var k = 0;\n var insertCount, actualDeleteCount, thisIsBigIntArray, convertedItems, value, newLen, A;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n insertCount = argumentsLength - 2;\n if (insertCount) {\n convertedItems = new C(insertCount);\n thisIsBigIntArray = isBigIntArray(convertedItems);\n for (var i = 2; i < argumentsLength; i++) {\n value = arguments[i];\n // FF30- typed arrays doesn't properly convert objects to typed array values\n convertedItems[i - 2] = thisIsBigIntArray ? toBigInt(value) : +value;\n }\n }\n }\n newLen = len + insertCount - actualDeleteCount;\n A = new C(newLen);\n\n for (; k < actualStart; k++) A[k] = O[k];\n for (; k < actualStart + insertCount; k++) A[k] = convertedItems[k - actualStart];\n for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount];\n\n return A;\n}, !PROPER_ORDER);\n","'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) === 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY === 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY === 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY === 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY === 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar create = require('../internals/object-create');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key === key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first === entry) state.first = next;\n if (state.last === entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', {\n configurable: true,\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return createIterResultObject(undefined, true);\n }\n // return step by kind\n if (kind === 'keys') return createIterResultObject(entry.key, false);\n if (kind === 'values') return createIterResultObject(entry.value, false);\n return createIterResultObject([entry.key, entry.value], false);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n var tail = this.tail;\n if (tail) tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n var next = this.head = entry.next;\n if (next === null) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n var queue = new Queue();\n\n var flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (fn = queue.get()) try {\n fn();\n } catch (error) {\n if (queue.head) notify();\n throw error;\n }\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // `webpack` dev server bug on IE global methods - use bind(fn, global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n\n microtask = function (fn) {\n if (!queue.head) notify();\n queue.add(fn);\n };\n}\n\nmodule.exports = microtask;\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","'use strict';\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","'use strict';\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n && typeof window == 'object'\n && typeof document == 'object';\n","'use strict';\nvar global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state === FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state === PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nmodule.exports = function (a, b) {\n try {\n // eslint-disable-next-line no-console -- safe\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared-store');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR';\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\nvar AsyncIterator = global.AsyncIterator;\nvar PassedAsyncIteratorPrototype = shared.AsyncIteratorPrototype;\nvar AsyncIteratorPrototype, prototype;\n\nif (PassedAsyncIteratorPrototype) {\n AsyncIteratorPrototype = PassedAsyncIteratorPrototype;\n} else if (isCallable(AsyncIterator)) {\n AsyncIteratorPrototype = AsyncIterator.prototype;\n} else if (shared[USE_FUNCTION_CONSTRUCTOR] || global[USE_FUNCTION_CONSTRUCTOR]) {\n try {\n // eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax\n prototype = getPrototypeOf(getPrototypeOf(getPrototypeOf(Function('return async function*(){}()')())));\n if (getPrototypeOf(prototype) === Object.prototype) AsyncIteratorPrototype = prototype;\n } catch (error) { /* empty */ }\n}\n\nif (!AsyncIteratorPrototype) AsyncIteratorPrototype = {};\nelse if (IS_PURE) AsyncIteratorPrototype = create(AsyncIteratorPrototype);\n\nif (!isCallable(AsyncIteratorPrototype[ASYNC_ITERATOR])) {\n defineBuiltIn(AsyncIteratorPrototype, ASYNC_ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = AsyncIteratorPrototype;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar create = require('../internals/object-create');\nvar getMethod = require('../internals/get-method');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalStateModule = require('../internals/internal-state');\nvar getBuiltIn = require('../internals/get-built-in');\nvar AsyncIteratorPrototype = require('../internals/async-iterator-prototype');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar Promise = getBuiltIn('Promise');\n\nvar ASYNC_FROM_SYNC_ITERATOR = 'AsyncFromSyncIterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ASYNC_FROM_SYNC_ITERATOR);\n\nvar asyncFromSyncIteratorContinuation = function (result, resolve, reject) {\n var done = result.done;\n Promise.resolve(result.value).then(function (value) {\n resolve(createIterResultObject(value, done));\n }, reject);\n};\n\nvar AsyncFromSyncIterator = function AsyncIterator(iteratorRecord) {\n iteratorRecord.type = ASYNC_FROM_SYNC_ITERATOR;\n setInternalState(this, iteratorRecord);\n};\n\nAsyncFromSyncIterator.prototype = defineBuiltIns(create(AsyncIteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n return new Promise(function (resolve, reject) {\n var result = anObject(call(state.next, state.iterator));\n asyncFromSyncIteratorContinuation(result, resolve, reject);\n });\n },\n 'return': function () {\n var iterator = getInternalState(this).iterator;\n return new Promise(function (resolve, reject) {\n var $return = getMethod(iterator, 'return');\n if ($return === undefined) return resolve(createIterResultObject(undefined, true));\n var result = anObject(call($return, iterator));\n asyncFromSyncIteratorContinuation(result, resolve, reject);\n });\n }\n});\n\nmodule.exports = AsyncFromSyncIterator;\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');\nvar anObject = require('../internals/an-object');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getMethod = require('../internals/get-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\n\nmodule.exports = function (it, usingIterator) {\n var method = arguments.length < 2 ? getMethod(it, ASYNC_ITERATOR) : usingIterator;\n return method ? anObject(call(method, it)) : new AsyncFromSyncIterator(getIteratorDirect(getIterator(it)));\n};\n","'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = function (CONSTRUCTOR) {\n return global[CONSTRUCTOR].prototype;\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, method, argument, reject) {\n try {\n var returnMethod = getMethod(iterator, 'return');\n if (returnMethod) {\n return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function () {\n method(argument);\n }, function (error) {\n reject(error);\n });\n }\n } catch (error2) {\n return reject(error2);\n } method(argument);\n};\n","'use strict';\n// https://github.com/tc39/proposal-iterator-helpers\n// https://github.com/tc39/proposal-array-from-async\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar closeAsyncIteration = require('../internals/async-iterator-close');\n\nvar createMethod = function (TYPE) {\n var IS_TO_ARRAY = TYPE === 0;\n var IS_FOR_EACH = TYPE === 1;\n var IS_EVERY = TYPE === 2;\n var IS_SOME = TYPE === 3;\n return function (object, fn, target) {\n anObject(object);\n var MAPPING = fn !== undefined;\n if (MAPPING || !IS_TO_ARRAY) aCallable(fn);\n var record = getIteratorDirect(object);\n var Promise = getBuiltIn('Promise');\n var iterator = record.iterator;\n var next = record.next;\n var counter = 0;\n\n return new Promise(function (resolve, reject) {\n var ifAbruptCloseAsyncIterator = function (error) {\n closeAsyncIteration(iterator, reject, error, reject);\n };\n\n var loop = function () {\n try {\n if (MAPPING) try {\n doesNotExceedSafeInteger(counter);\n } catch (error5) { ifAbruptCloseAsyncIterator(error5); }\n Promise.resolve(anObject(call(next, iterator))).then(function (step) {\n try {\n if (anObject(step).done) {\n if (IS_TO_ARRAY) {\n target.length = counter;\n resolve(target);\n } else resolve(IS_SOME ? false : IS_EVERY || undefined);\n } else {\n var value = step.value;\n try {\n if (MAPPING) {\n var result = fn(value, counter);\n\n var handler = function ($result) {\n if (IS_FOR_EACH) {\n loop();\n } else if (IS_EVERY) {\n $result ? loop() : closeAsyncIteration(iterator, resolve, false, reject);\n } else if (IS_TO_ARRAY) {\n try {\n target[counter++] = $result;\n loop();\n } catch (error4) { ifAbruptCloseAsyncIterator(error4); }\n } else {\n $result ? closeAsyncIteration(iterator, resolve, IS_SOME || value, reject) : loop();\n }\n };\n\n if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);\n else handler(result);\n } else {\n target[counter++] = value;\n loop();\n }\n } catch (error3) { ifAbruptCloseAsyncIterator(error3); }\n }\n } catch (error2) { reject(error2); }\n }, reject);\n } catch (error) { reject(error); }\n };\n\n loop();\n });\n };\n};\n\nmodule.exports = {\n toArray: createMethod(0),\n forEach: createMethod(1),\n every: createMethod(2),\n some: createMethod(3),\n find: createMethod(4)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\nvar isConstructor = require('../internals/is-constructor');\nvar getAsyncIterator = require('../internals/get-async-iterator');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar getMethod = require('../internals/get-method');\nvar getVirtual = require('../internals/entry-virtual');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');\nvar toArray = require('../internals/async-iterator-iteration').toArray;\n\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\nvar arrayIterator = uncurryThis(getVirtual('Array').values);\nvar arrayIteratorNext = uncurryThis(arrayIterator([]).next);\n\nvar safeArrayIterator = function () {\n return new SafeArrayIterator(this);\n};\n\nvar SafeArrayIterator = function (O) {\n this.iterator = arrayIterator(O);\n};\n\nSafeArrayIterator.prototype.next = function () {\n return arrayIteratorNext(this.iterator);\n};\n\n// `Array.fromAsync` method implementation\n// https://github.com/tc39/proposal-array-from-async\nmodule.exports = function fromAsync(asyncItems /* , mapfn = undefined, thisArg = undefined */) {\n var C = this;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var thisArg = argumentsLength > 2 ? arguments[2] : undefined;\n return new (getBuiltIn('Promise'))(function (resolve) {\n var O = toObject(asyncItems);\n if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);\n var usingAsyncIterator = getMethod(O, ASYNC_ITERATOR);\n var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(O) || safeArrayIterator;\n var A = isConstructor(C) ? new C() : [];\n var iterator = usingAsyncIterator\n ? getAsyncIterator(O, usingAsyncIterator)\n : new AsyncFromSyncIterator(getIteratorDirect(getIterator(O, usingSyncIterator)));\n resolve(toArray(iterator, mapfn, A));\n });\n};\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar getBuiltIn = require('../internals/get-built-in');\nvar aConstructor = require('../internals/a-constructor');\nvar arrayFromAsync = require('../internals/array-from-async');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.fromAsync` method\n// https://github.com/tc39/proposal-array-from-async\nexportTypedArrayStaticMethod('fromAsync', function fromAsync(asyncItems /* , mapfn = undefined, thisArg = undefined */) {\n var C = this;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var thisArg = argumentsLength > 2 ? arguments[2] : undefined;\n return new (getBuiltIn('Promise'))(function (resolve) {\n aConstructor(C);\n resolve(arrayFromAsync(asyncItems, mapfn, thisArg));\n }).then(function (list) {\n return arrayFromConstructorAndList(aTypedArrayConstructor(C), list);\n });\n}, true);\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filterReject = require('../internals/array-iteration').filterReject;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filterOut` method\n// https://github.com/tc39/proposal-array-filtering\nexportTypedArrayMethod('filterOut', function filterOut(callbackfn /* , thisArg */) {\n var list = $filterReject(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n}, true);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filterReject = require('../internals/array-iteration').filterReject;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filterReject` method\n// https://github.com/tc39/proposal-array-filtering\nexportTypedArrayMethod('filterReject', function filterReject(callbackfn /* , thisArg */) {\n var list = $filterReject(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n}, true);\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar objectCreate = require('../internals/object-create');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar $Array = Array;\nvar push = uncurryThis([].push);\n\nmodule.exports = function ($this, callbackfn, that, specificConstructor) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var target = objectCreate(null);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var Constructor, key, value;\n for (;length > index; index++) {\n value = self[index];\n key = toPropertyKey(boundFunction(value, index, O));\n // in some IE versions, `hasOwnProperty` returns incorrect result on integer keys\n // but since it's a `null` prototype object, we can safely use `in`\n if (key in target) push(target[key], value);\n else target[key] = [value];\n }\n // TODO: Remove this block from `core-js@4`\n if (specificConstructor) {\n Constructor = specificConstructor(O);\n if (Constructor !== $Array) {\n for (key in target) target[key] = arrayFromConstructorAndList(Constructor, target[key]);\n }\n } return target;\n};\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $group = require('../internals/array-group');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.groupBy` method\n// https://github.com/tc39/proposal-array-grouping\nexportTypedArrayMethod('groupBy', function groupBy(callbackfn /* , thisArg */) {\n var thisArg = arguments.length > 1 ? arguments[1] : undefined;\n return $group(aTypedArray(this), callbackfn, thisArg, typedArraySpeciesConstructor);\n}, true);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-map -- safe\nvar MapPrototype = Map.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-map -- safe\n Map: Map,\n set: uncurryThis(MapPrototype.set),\n get: uncurryThis(MapPrototype.get),\n has: uncurryThis(MapPrototype.has),\n remove: uncurryThis(MapPrototype['delete']),\n proto: MapPrototype\n};\n","'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar MapHelpers = require('../internals/map-helpers');\n\nvar Map = MapHelpers.Map;\nvar MapPrototype = MapHelpers.proto;\nvar forEach = uncurryThis(MapPrototype.forEach);\nvar entries = uncurryThis(MapPrototype.entries);\nvar next = entries(new Map()).next;\n\nmodule.exports = function (map, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: entries(map), next: next }, function (entry) {\n return fn(entry[1], entry[0]);\n }) : forEach(map, fn);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar MapHelpers = require('../internals/map-helpers');\nvar iterate = require('../internals/map-iterate');\n\nvar Map = MapHelpers.Map;\nvar mapHas = MapHelpers.has;\nvar mapSet = MapHelpers.set;\nvar push = uncurryThis([].push);\n\n// `Array.prototype.uniqueBy` method\n// https://github.com/tc39/proposal-array-unique\nmodule.exports = function uniqueBy(resolver) {\n var that = toObject(this);\n var length = lengthOfArrayLike(that);\n var result = [];\n var map = new Map();\n var resolverFunction = !isNullOrUndefined(resolver) ? aCallable(resolver) : function (value) {\n return value;\n };\n var index, item, key;\n for (index = 0; index < length; index++) {\n item = that[index];\n key = resolverFunction(item);\n if (!mapHas(map, key)) mapSet(map, key, item);\n }\n iterate(map, function (value) {\n push(result, value);\n });\n return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar $arrayUniqueBy = require('../internals/array-unique-by');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar arrayUniqueBy = uncurryThis($arrayUniqueBy);\n\n// `%TypedArray%.prototype.uniqueBy` method\n// https://github.com/tc39/proposal-array-unique\nexportTypedArrayMethod('uniqueBy', function uniqueBy(resolver) {\n aTypedArray(this);\n return arrayFromConstructorAndList(getTypedArrayConstructor(this), arrayUniqueBy(this, resolver));\n}, true);\n","/*!\n * Name: @galacean/effects-specification\n * Description: Galacean Effects JSON Specification\n * Author: Ant Group CO., Ltd.\n * Version: v1.0.0\n */\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nvar RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nvar BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nvar SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 蒙版模式\n */\nvar MaskMode;\n(function (MaskMode) {\n /**\n * 无蒙版\n */\n MaskMode[MaskMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * 蒙版\n */\n MaskMode[MaskMode[\"MASK\"] = 1] = \"MASK\";\n /**\n * 被遮挡\n */\n MaskMode[MaskMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n MaskMode[MaskMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(MaskMode || (MaskMode = {}));\n/**\n * 发射器形状\n */\nvar ShapeType;\n(function (ShapeType) {\n /**\n * 没有类型\n */\n ShapeType[ShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ShapeType[ShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ShapeType[ShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ShapeType[ShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ShapeType[ShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ShapeType[ShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ShapeType[ShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ShapeType[ShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ShapeType[ShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ShapeType[ShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ShapeType || (ShapeType = {}));\n/**\n * 插件类型\n */\nvar PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nvar InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nvar InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nvar ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * 滤镜图层\n */\n ItemType[\"filter\"] = \"8\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nvar RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nvar ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\n\nvar END_BEHAVIOR_DESTROY = 0;\nvar END_BEHAVIOR_PAUSE = 1;\nvar END_BEHAVIOR_FORWARD = 2;\nvar END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nvar END_BEHAVIOR_FREEZE = 4;\nvar END_BEHAVIOR_RESTART = 5;\nvar END_BEHAVIOR_DESTROY_CHILDREN = 6;\nvar CAMERA_CLIP_MODE_VERTICAL = 1;\nvar CAMERA_CLIP_MODE_NORMAL = 0;\nvar MESSAGE_ITEM_PHRASE_BEGIN = 2;\nvar MESSAGE_ITEM_PHRASE_END = 1;\n\nvar CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = CAMERA_CLIP_MODE_VERTICAL] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = CAMERA_CLIP_MODE_NORMAL] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n/**\n * 结束行为\n */\nvar CompositionEndBehavior;\n(function (CompositionEndBehavior) {\n /**\n * 销毁\n */\n CompositionEndBehavior[CompositionEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n /**\n * 暂停\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause\"] = END_BEHAVIOR_PAUSE] = \"pause\";\n /**\n * 重播\n */\n CompositionEndBehavior[CompositionEndBehavior[\"restart\"] = END_BEHAVIOR_RESTART] = \"restart\";\n /**\n * 无限播放\n */\n CompositionEndBehavior[CompositionEndBehavior[\"forward\"] = END_BEHAVIOR_FORWARD] = \"forward\";\n /**\n * 销毁并保留最后一帧\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause_destroy\"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = \"pause_destroy\";\n})(CompositionEndBehavior || (CompositionEndBehavior = {}));\n\n/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nvar ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n *直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nvar BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n\nvar ItemEndBehavior;\n(function (ItemEndBehavior) {\n ItemEndBehavior[ItemEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n ItemEndBehavior[ItemEndBehavior[\"loop\"] = END_BEHAVIOR_RESTART] = \"loop\";\n ItemEndBehavior[ItemEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(ItemEndBehavior || (ItemEndBehavior = {}));\nvar ParentItemEndBehavior;\n(function (ParentItemEndBehavior) {\n ParentItemEndBehavior[ParentItemEndBehavior[\"destroyChildren\"] = END_BEHAVIOR_DESTROY_CHILDREN] = \"destroyChildren\";\n})(ParentItemEndBehavior || (ParentItemEndBehavior = {}));\n\n/**\n * 粒子交互行为\n */\nvar ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n\nvar ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n\nvar BloomFilterThresholdAvgColor = 0;\n\nvar ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n\n// 材质类型\nvar MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nvar MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n\n/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nvar RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n})(RenderMode3D || (RenderMode3D = {}));\n\nvar TextOverflow;\n(function (TextOverflow) {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n TextOverflow[TextOverflow[\"display\"] = 0] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 1] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 2] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nvar TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nvar TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\n/**\n * 文本字重\n */\nvar TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nvar FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n\nexport { BezierKeyframeType, BlendingMode, BloomFilterThresholdAvgColor, CAMERA_CLIP_MODE_NORMAL, CAMERA_CLIP_MODE_VERTICAL, CameraClipMode, CompositionEndBehavior, END_BEHAVIOR_DESTROY, END_BEHAVIOR_DESTROY_CHILDREN, END_BEHAVIOR_FORWARD, END_BEHAVIOR_FREEZE, END_BEHAVIOR_PAUSE, END_BEHAVIOR_PAUSE_AND_DESTROY, END_BEHAVIOR_RESTART, FontStyle, InteractBehavior, InteractType, ItemEndBehavior, ItemType, MESSAGE_ITEM_PHRASE_BEGIN, MESSAGE_ITEM_PHRASE_END, MaskMode, MaterialBlending, MaterialType, ModelBoundingType, ParentItemEndBehavior, ParticleInteractionBehavior, ParticleOrigin, PluginType, RenderLevel, RenderMode, RenderMode3D, ShapeArcMode, ShapeType, SideMode, TextAlignment, TextBaseline, TextOverflow, TextWeight, ValueType };\n//# sourceMappingURL=index.mjs.map\n","export var PI2 = Math.PI * 2;\nexport var DEG2RAD = Math.PI / 180;\nexport var RAD2DEG = 180 / Math.PI;\nexport var NumberEpsilon = 1e-6;\nexport function isZero(v) {\n return isNaN(v) || Math.abs(v) < NumberEpsilon;\n}\nexport function isEqual(a, b) {\n return Math.abs(a - b) < NumberEpsilon || (a === Infinity && b === Infinity) || (a === -Infinity && b === -Infinity);\n}\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nexport var damp = function (x, y, lambda, dt) { return lerp(x, y, 1 - Math.exp(-lambda * dt)); };\n// https://en.wikipedia.org/wiki/Linear_interpolation\nexport var lerp = function (x, y, t) { return (1 - t) * x + t * y; };\nexport var degToRad = function (degrees) { return degrees * DEG2RAD; };\nexport var radToDeg = function (radians) { return radians * RAD2DEG; };\nexport function clamp(value, min, max) {\n var fixedMin = isNaN(min) ? -Infinity : min;\n var fixedMax = isNaN(max) ? Infinity : max;\n var lower = Math.min(fixedMin, fixedMax);\n var upper = Math.max(fixedMin, fixedMax);\n return Math.min(Math.max(value, lower), upper);\n}\n","import { NumberEpsilon } from './utils';\n/**\n * 二维向量\n */\nexport var Vector2 = /** @class */ (function () {\n /**\n * 构造函数,默认为零向量\n * @param [x=0] - x 分量\n * @param [y=0] - y 分量\n */\n function Vector2(x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n this.x = x;\n this.y = y;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @returns\n */\n Vector2.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector2.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n return this;\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector2.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n return this;\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector2.prototype.setFromArray = function (array, offset) {\n var _a, _b;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param src - 要拷贝的对象\n * @returns 向量\n */\n Vector2.prototype.copyFrom = function (src) {\n this.x = src.x;\n this.y = src.y;\n return this;\n };\n /**\n * 克隆向量\n * @returns 克隆结果\n */\n Vector2.prototype.clone = function () {\n return new Vector2(this.x, this.y);\n };\n /**\n * 根据下标设置元素值\n * @param index - 下标值\n * @param value - 数字\n * @returns 向量\n */\n Vector2.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取值\n * @param index - 下标\n * @returns 值\n */\n Vector2.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 向量 | 数字\n * @returns 向量\n */\n Vector2.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 相加结果\n */\n Vector2.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n return this;\n };\n /**\n * 向量相减\n * @param right - 向量 | 数字\n * @returns 相减结果\n */\n Vector2.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 相减结果\n */\n Vector2.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 向量 | 数字\n * @returns 相乘结果\n */\n Vector2.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 相乘结果\n */\n Vector2.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n return this;\n };\n /**\n * 向量相除\n * @param right - 向量 | 数字\n * @returns 相除结果\n */\n Vector2.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector2.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector2.prototype.sum = function () {\n return this.x + this.y;\n };\n /**\n * 向量求最小值\n * @param v - 向量\n * @returns 最小值\n */\n Vector2.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量\n * @returns 最大值\n */\n Vector2.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 极小值\n * @param max - 极大值\n * @returns 向量\n */\n Vector2.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector2.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector2.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n return this;\n };\n /**\n * 向量取四舍五入\n * @returns 四舍五入结果\n */\n Vector2.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector2.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n return this;\n };\n /**\n * 向量取反\n * @returns 取反结果\n */\n Vector2.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n };\n /**\n * 向量长度\n * @returns 求值结果\n */\n Vector2.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n };\n /**\n * 向量长度平方\n * @returns 求值结果\n */\n Vector2.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y;\n };\n /**\n * 向量归一化\n * @returns 归一化结果\n */\n Vector2.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector2.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量线性插值\n * @param other - 向量\n * @param alpha - 插值比\n * @returns 计算结果\n */\n Vector2.prototype.lerp = function (other, alpha) {\n this.x += (other.x - this.x) * alpha;\n this.y += (other.y - this.y) * alpha;\n return this;\n };\n /**\n * 向量线性插值\n * @param v1 - 向量\n * @param v2 - 向量\n * @param alpha - 插值比\n * @returns 计算结果\n */\n Vector2.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n return this;\n };\n /**\n * 向量点乘\n * @param v - 向量\n * @returns 点乘结果\n */\n Vector2.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y;\n };\n /**\n * 向量叉乘\n * @param v - 向量\n * @returns 叉乘结果\n */\n Vector2.prototype.cross = function (v) {\n return this.x * v.y - this.y * v.x;\n };\n /**\n * 点距离\n * @param v - 点\n * @returns 距离\n */\n Vector2.prototype.distance = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n /**\n * 点距离平方\n * @param v - 点\n * @returns 距离平方\n */\n Vector2.prototype.distanceSquared = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n return dx * dx + dy * dy;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector2.prototype.equals = function (v) {\n return this.x === v.x && this.y === v.y;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector2.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y;\n return Math.abs(x) <= eps && Math.abs(y) <= eps;\n };\n /**\n * 向量转数组\n * @returns 数组\n */\n Vector2.prototype.toArray = function () {\n return [this.x, this.y];\n };\n Vector2.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n };\n /**\n * 随机生成向量\n * @returns 向量\n */\n Vector2.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n return this;\n };\n /**\n * 通过标量创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector2.fromNumber = function (num) {\n return new Vector2().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector2.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector2().setFromArray(array, offset);\n };\n /**\n * 二维向量的常量\n */\n Vector2.ONE = new Vector2(1.0, 1.0);\n Vector2.ZERO = new Vector2(0.0, 0.0);\n return Vector2;\n}());\n","import { Quaternion } from './quaternion';\nimport { Matrix4 } from './matrix4';\nimport { RAD2DEG, clamp } from './utils';\nimport { DEG2RAD } from './utils';\n/**\n * 欧拉角顺序\n */\nexport var EulerOrder;\n(function (EulerOrder) {\n EulerOrder[EulerOrder[\"XYZ\"] = 0] = \"XYZ\";\n EulerOrder[EulerOrder[\"XZY\"] = 1] = \"XZY\";\n EulerOrder[EulerOrder[\"YXZ\"] = 2] = \"YXZ\";\n EulerOrder[EulerOrder[\"YZX\"] = 3] = \"YZX\";\n EulerOrder[EulerOrder[\"ZXY\"] = 4] = \"ZXY\";\n EulerOrder[EulerOrder[\"ZYX\"] = 5] = \"ZYX\";\n})(EulerOrder || (EulerOrder = {}));\n/**\n * 欧拉角\n */\nexport var Euler = /** @class */ (function () {\n /**\n * 构造函数,传入值为 x, y, z 方向分量以及欧拉角顺序\n * @param [x=0] - x 方向分量\n * @param [y=0] - y 方向分量\n * @param [z=0] - z 方向分量\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n */\n function Euler(x, y, z, order) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.order = order;\n }\n /**\n * 设置欧拉角\n * @param x - x 方向分量\n * @param y - y 方向分量\n * @param z - z 方向分量\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.set = function (x, y, z, order) {\n if (order === void 0) { order = this.order; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.order = order;\n return this;\n };\n Euler.prototype.setZero = function (order) {\n if (order === void 0) { order = this.order; }\n return this.set(0, 0, 0, order);\n };\n /**\n * 通过矩阵设置欧拉角\n * @param m - 矩阵\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromRotationMatrix4 = function (m, order) {\n if (order === void 0) { order = this.order; }\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n switch (order) {\n case EulerOrder.XYZ:\n this.y = Math.asin(clamp(m13, -1, 1));\n if (Math.abs(m13) < 0.9999999) {\n this.x = Math.atan2(-m23, m33);\n this.z = Math.atan2(-m12, m11);\n }\n else {\n this.x = Math.atan2(m32, m22);\n this.z = 0;\n }\n break;\n case EulerOrder.YXZ:\n this.x = Math.asin(-clamp(m23, -1, 1));\n if (Math.abs(m23) < 0.9999999) {\n this.y = Math.atan2(m13, m33);\n this.z = Math.atan2(m21, m22);\n }\n else {\n this.y = Math.atan2(-m31, m11);\n this.z = 0;\n }\n break;\n case EulerOrder.ZXY:\n this.x = Math.asin(clamp(m32, -1, 1));\n if (Math.abs(m32) < 0.9999999) {\n this.y = Math.atan2(-m31, m33);\n this.z = Math.atan2(-m12, m22);\n }\n else {\n this.y = 0;\n this.z = Math.atan2(m21, m11);\n }\n break;\n case EulerOrder.ZYX:\n this.y = Math.asin(-clamp(m31, -1, 1));\n if (Math.abs(m31) < 0.9999999) {\n this.x = Math.atan2(m32, m33);\n this.z = Math.atan2(m21, m11);\n }\n else {\n this.x = 0;\n this.z = Math.atan2(-m12, m22);\n }\n break;\n case EulerOrder.YZX:\n this.z = Math.asin(clamp(m21, -1, 1));\n if (Math.abs(m21) < 0.9999999) {\n this.x = Math.atan2(-m23, m22);\n this.y = Math.atan2(-m31, m11);\n }\n else {\n this.x = 0;\n this.y = Math.atan2(m13, m33);\n }\n break;\n case EulerOrder.XZY:\n this.z = Math.asin(-clamp(m12, -1, 1));\n if (Math.abs(m12) < 0.9999999) {\n this.x = Math.atan2(m32, m22);\n this.y = Math.atan2(m13, m11);\n }\n else {\n this.x = Math.atan2(-m23, m33);\n this.y = 0;\n }\n break;\n default:\n console.error('setFromRotationMatrix: unknown order: ' + order);\n }\n this.x *= RAD2DEG;\n this.y *= RAD2DEG;\n this.z *= RAD2DEG;\n this.order = order;\n return this;\n };\n /**\n * 通过四元数设置欧拉角\n * @param quat - 四元数\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromQuaternion = function (quat, order) {\n if (order === void 0) { order = this.order; }\n var matrix = Euler.tempMat0;\n matrix.setFromQuaternion(quat);\n return this.setFromRotationMatrix4(matrix, order);\n };\n /**\n * 通过三维向量设置欧拉角\n * @param v - 三维向量\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromVector3 = function (v, order) {\n if (order === void 0) { order = this.order; }\n return this.set(v.x, v.y, v.z, order);\n };\n /**\n * 通过数组设置欧拉角\n * @param array - 数组\n * @param [offset=0] - 偏移\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromArray = function (array, offset, order) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n if (order === void 0) { order = this.order; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.order = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : order;\n return this;\n };\n /**\n * 克隆欧拉角\n * @returns 克隆结果\n */\n Euler.prototype.clone = function () {\n return new Euler(this.x, this.y, this.z, this.order);\n };\n /**\n * 复制欧拉角\n * @param euler - 复制对象\n * @returns 复制结果\n */\n Euler.prototype.copyFrom = function (euler) {\n this.x = euler.x;\n this.y = euler.y;\n this.z = euler.z;\n this.order = euler.order;\n return this;\n };\n Euler.prototype.add = function (euler) {\n if (this.order != euler.order) {\n console.error('add euler with different order');\n return this;\n }\n this.x += euler.x;\n this.y += euler.y;\n this.z += euler.z;\n return this;\n };\n Euler.prototype.addEulers = function (left, right) {\n if (left.order != right.order) {\n console.error('add euler with different order');\n return this;\n }\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n this.order = left.order;\n return this;\n };\n Euler.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 修改欧拉角顺序\n * @param newOrder - 欧拉角顺序\n * @returns 修改结果\n */\n Euler.prototype.reorder = function (newOrder) {\n var quaternion = new Quaternion();\n quaternion.setFromEuler(this);\n return this.setFromQuaternion(quaternion, newOrder);\n };\n /**\n * 通过四元数旋转向量\n * @param v - 待旋转向量\n * @param out - 旋转结果,如果没有传入直接覆盖输入值\n * @returns\n */\n Euler.prototype.rotateVector3 = function (v, out) {\n var q = Euler.tempQuat0;\n return q.setFromEuler(this).rotateVector3(v, out);\n };\n /**\n * 欧拉角相等判断\n * @param euler - 欧拉角\n * @returns 判断结果\n */\n Euler.prototype.equals = function (euler) {\n return euler.x === this.x\n && euler.y === this.y\n && euler.z === this.z\n && euler.order === this.order;\n };\n /**\n * 欧拉角保存于三维向量\n * @param vec - 目标保存对象\n * @returns 保存结果\n */\n Euler.prototype.toVector3 = function (vec) {\n return vec.set(this.x, this.y, this.z);\n };\n /**\n * 欧拉角转数组\n * @returns 保存结果\n */\n Euler.prototype.toArray = function () {\n return [this.x, this.y, this.z];\n };\n /**\n * 欧拉角转四元数\n * @param quat - 目标四元数\n * @returns 目标四元数\n */\n Euler.prototype.toQuaternion = function (quat) {\n var _a;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, order = _a.order;\n var c1 = Math.cos(x * DEG2RAD * 0.5);\n var c2 = Math.cos(y * DEG2RAD * 0.5);\n var c3 = Math.cos(z * DEG2RAD * 0.5);\n var s1 = Math.sin(x * DEG2RAD * 0.5);\n var s2 = Math.sin(y * DEG2RAD * 0.5);\n var s3 = Math.sin(z * DEG2RAD * 0.5);\n switch (order) {\n case EulerOrder.XYZ:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.YXZ:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n case EulerOrder.ZXY:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.ZYX:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n case EulerOrder.YZX:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.XZY:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n default:\n console.error('unknown euler order: ' + order);\n }\n return quat;\n };\n /**\n * 欧拉角转矩阵\n * @param mat - 目标矩阵\n * @returns 返回目标矩阵\n */\n Euler.prototype.toMatrix4 = function (mat) {\n var _a;\n var me = mat.elements;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, order = _a.order;\n var cosX = Math.cos(x * DEG2RAD), sinX = Math.sin(x * DEG2RAD);\n var cosY = Math.cos(y * DEG2RAD), sinY = Math.sin(y * DEG2RAD);\n var cosZ = Math.cos(z * DEG2RAD), sinZ = Math.sin(z * DEG2RAD);\n if (order === EulerOrder.XYZ) {\n var cosXcosZ = cosX * cosZ;\n var cosXsinZ = cosX * sinZ;\n var sinXcosZ = sinX * cosZ;\n var sinXsinZ = sinX * sinZ;\n me[0] = cosY * cosZ;\n me[4] = -cosY * sinZ;\n me[8] = sinY;\n me[1] = cosXsinZ + sinXcosZ * sinY;\n me[5] = cosXcosZ - sinXsinZ * sinY;\n me[9] = -sinX * cosY;\n me[2] = sinXsinZ - cosXcosZ * sinY;\n me[6] = sinXcosZ + cosXsinZ * sinY;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.YXZ) {\n var cosYcosZ = cosY * cosZ;\n var cosYsinZ = cosY * sinZ;\n var sinYcosZ = sinY * cosZ;\n var sinYsinZ = sinY * sinZ;\n me[0] = cosYcosZ + sinYsinZ * sinX;\n me[4] = sinYcosZ * sinX - cosYsinZ;\n me[8] = cosX * sinY;\n me[1] = cosX * sinZ;\n me[5] = cosX * cosZ;\n me[9] = -sinX;\n me[2] = cosYsinZ * sinX - sinYcosZ;\n me[6] = sinYsinZ + cosYcosZ * sinX;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.ZXY) {\n var cosYcosZ = cosY * cosZ;\n var cosYsinZ = cosY * sinZ;\n var sinYcosZ = sinY * cosZ;\n var sinYsinZ = sinY * sinZ;\n me[0] = cosYcosZ - sinYsinZ * sinX;\n me[4] = -cosX * sinZ;\n me[8] = sinYcosZ + cosYsinZ * sinX;\n me[1] = cosYsinZ + sinYcosZ * sinX;\n me[5] = cosX * cosZ;\n me[9] = sinYsinZ - cosYcosZ * sinX;\n me[2] = -cosX * sinY;\n me[6] = sinX;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.ZYX) {\n var cosXcosZ = cosX * cosZ;\n var cosXsinZ = cosX * sinZ;\n var sinXcosZ = sinX * cosZ;\n var sinXsinZ = sinX * sinZ;\n me[0] = cosY * cosZ;\n me[4] = sinXcosZ * sinY - cosXsinZ;\n me[8] = cosXcosZ * sinY + sinXsinZ;\n me[1] = cosY * sinZ;\n me[5] = sinXsinZ * sinY + cosXcosZ;\n me[9] = cosXsinZ * sinY - sinXcosZ;\n me[2] = -sinY;\n me[6] = sinX * cosY;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.YZX) {\n var cosXcosY = cosX * cosY;\n var cosXsinY = cosX * sinY;\n var sinXcosY = sinX * cosY;\n var sinXsinY = sinX * sinY;\n me[0] = cosY * cosZ;\n me[4] = sinXsinY - cosXcosY * sinZ;\n me[8] = sinXcosY * sinZ + cosXsinY;\n me[1] = sinZ;\n me[5] = cosX * cosZ;\n me[9] = -sinX * cosZ;\n me[2] = -sinY * cosZ;\n me[6] = cosXsinY * sinZ + sinXcosY;\n me[10] = cosXcosY - sinXsinY * sinZ;\n }\n else if (order === EulerOrder.XZY) {\n var cosXcosY = cosX * cosY;\n var cosXsinY = cosX * sinY;\n var sinXcosY = sinX * cosY;\n var sinXsinY = sinX * sinY;\n me[0] = cosY * cosZ;\n me[4] = -sinZ;\n me[8] = sinY * cosZ;\n me[1] = cosXcosY * sinZ + sinXsinY;\n me[5] = cosX * cosZ;\n me[9] = cosXsinY * sinZ - sinXcosY;\n me[2] = sinXcosY * sinZ - cosXsinY;\n me[6] = sinX * cosZ;\n me[10] = sinXsinY * sinZ + cosXcosY;\n }\n else {\n console.error('toMatrix4: Invalid order ' + order);\n }\n // bottom row\n me[3] = 0;\n me[7] = 0;\n me[11] = 0;\n // last column\n me[12] = 0;\n me[13] = 0;\n me[14] = 0;\n me[15] = 1;\n return mat;\n };\n /**\n * 通过矩阵创建欧拉角\n * @param m - 矩阵\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromRotationMatrix4 = function (m, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromRotationMatrix4(m, order);\n };\n /**\n * 通过四元数创建欧拉角\n * @param quat - 四元数\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromQuaternion = function (quat, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromQuaternion(quat, order);\n };\n /**\n * 通过三维向量创建欧拉角\n * @param v - 三维向量\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromVector3 = function (v, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromVector3(v, order);\n };\n /**\n * 通过数组创建欧拉角\n * @param array - 数组\n * @param [offset=0] - 偏移\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromArray = function (array, offset, order) {\n if (offset === void 0) { offset = 0; }\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromArray(array, offset, order);\n };\n Euler.DEFAULT_ORDER = EulerOrder.ZYX;\n Euler.tempQuat0 = new Quaternion();\n Euler.tempMat0 = new Matrix4();\n return Euler;\n}());\n","import { NumberEpsilon } from './utils';\nimport { Vector2 } from './vector2';\n/**\n * 三维向量\n */\nexport var Vector3 = /** @class */ (function () {\n /**\n * 构造函数,默认值为零向量\n * @param [x=0]\n * @param [y=0]\n * @param [z=0]\n */\n function Vector3(x, y, z) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n this.x = x;\n this.y = y;\n this.z = z;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @param z - z 轴分量\n * @returns 向量\n */\n Vector3.prototype.set = function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector3.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n return this;\n };\n /**\n * 通过标量数值设置向量\n * @param num - 数值\n * @returns 向量\n */\n Vector3.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n this.z = num;\n return this;\n };\n /**\n * 通过数组设置向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector3.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param v - 要拷贝的对象\n * @returns 向量\n */\n Vector3.prototype.copyFrom = function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n };\n /**\n * 克隆向量\n * @returns 向量\n */\n Vector3.prototype.clone = function () {\n return new Vector3(this.x, this.y, this.z);\n };\n /**\n * 根据下标设置向量分量\n * @param index - 下标值\n * @param value - 数字\n * @returns 向量\n */\n Vector3.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取向量分量\n * @param index - 下标\n * @returns\n */\n Vector3.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 向量 | 数字\n * @returns 相加结果\n */\n Vector3.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n this.z += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n this.z += right[2];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n this.z += right.z;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 相加结果\n */\n Vector3.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n return this;\n };\n /**\n * 向量乘比例后相加\n * @param right - 向量\n * @param s - 比例\n * @returns 相加结果\n */\n Vector3.prototype.addScaledVector = function (right, s) {\n this.x += right.x * s;\n this.y += right.y * s;\n this.z += right.z * s;\n return this;\n };\n /**\n * 向量相减\n * @param right - 向量 | 数字\n * @returns 相减\n */\n Vector3.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n this.z -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n this.z -= right[2];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n this.z -= right.z;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 相减结果\n */\n Vector3.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n this.z = left.z - right.z;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 向量 | 数字\n * @returns 相乘结果\n */\n Vector3.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n this.z *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n this.z *= right[2];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n this.z *= right.z;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 相乘结果\n */\n Vector3.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n this.z = left.z * right.z;\n return this;\n };\n /**\n * 向量相除\n * @param right - 向量 | 数字\n * @returns 相除结果\n */\n Vector3.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n this.z /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n this.z /= right[2];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n this.z /= right.z;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector3.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector3.prototype.sum = function () {\n return this.x + this.y + this.z;\n };\n /**\n * 向量求最小值\n * @param v - 向量或数值\n * @returns 求值结果\n */\n Vector3.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n this.z = Math.min(this.z, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量或数值\n * @returns 求值结果\n */\n Vector3.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n this.z = Math.max(this.z, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 向量\n * @param max - 向量\n * @returns 求值结果\n */\n Vector3.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector3.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector3.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n };\n /**\n * 向量四舍五入\n * @returns 计算结果\n */\n Vector3.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector3.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n this.z = Math.abs(this.z);\n return this;\n };\n /**\n * 向量取反\n * @returns 向量\n */\n Vector3.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 向量长度\n * @returns 长度\n */\n Vector3.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n };\n /**\n * 向量长度平方\n * @returns 长度平方\n */\n Vector3.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n };\n /**\n * 向量归一化\n * @returns 向量\n */\n Vector3.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector3.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量间求线性插值\n * @param other - 向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector3.prototype.lerp = function (other, alpha) {\n this.x += (other.x - this.x) * alpha;\n this.y += (other.y - this.y) * alpha;\n this.z += (other.z - this.z) * alpha;\n return this;\n };\n /**\n * 向量间求线性插值\n * @param v1 - 第一个向量\n * @param v2 - 第二个向量\n * @param alpha - 插值比例\n * @returns 求值结果\n */\n Vector3.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n };\n /**\n * 向量求点积,点积为零表示两向量垂直\n * @param v - 向量\n * @returns 点积结果\n */\n Vector3.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n };\n /**\n * 向量求叉积\n * @param right - 向量\n * @returns 叉积结果\n */\n Vector3.prototype.cross = function (right) {\n return this.crossVectors(this, right);\n };\n /**\n * 向量(a 与 b)求叉积\n * @param left - 向量\n * @param right - 向量\n * @returns 叉积结果\n */\n Vector3.prototype.crossVectors = function (left, right) {\n var ax = left.x, ay = left.y, az = left.z;\n var bx = right.x, by = right.y, bz = right.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n };\n /**\n * 向量反射\n * @param normal - 法线\n * @returns 反射结果\n */\n Vector3.prototype.reflect = function (normal) {\n // reflect incident vector off plane orthogonal to normal\n // normal is assumed to have unit length\n return this.subtract(normal.clone().multiply(2 * this.dot(normal)));\n };\n /**\n * 计算向量距离\n * @param v - 向量\n * @returns 距离\n */\n Vector3.prototype.distance = function (v) {\n return Math.sqrt(this.distanceSquared(v));\n };\n /**\n * 计算向量距离平方\n * @param v - 向量\n * @returns 距离平方\n */\n Vector3.prototype.distanceSquared = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n var dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector3.prototype.equals = function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector3.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z;\n return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps;\n };\n /**\n * 向量转数组\n * @param array - 目标保存对象\n * @returns 数组\n */\n Vector3.prototype.toArray = function () {\n return [this.x, this.y, this.z];\n };\n Vector3.prototype.toVector2 = function () {\n return new Vector2(this.x, this.y);\n };\n Vector3.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n };\n /**\n * 获取随机向量\n * @returns\n */\n Vector3.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n };\n /**\n * 用欧拉角旋转向量\n * @param euler - 欧拉角\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 旋转结果\n */\n Vector3.prototype.applyEuler = function (euler, out) {\n return euler.rotateVector3(this, out);\n };\n /**\n * 用四元数旋转向量\n * @param q - 四元数\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 旋转结果\n */\n Vector3.prototype.applyQuaternion = function (q, out) {\n return q.rotateVector3(this, out);\n };\n /**\n * 用矩阵变换点\n * @param m - 变换矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 结果点\n */\n Vector3.prototype.applyMatrix = function (m, out) {\n return m.transformPoint(this, out);\n };\n /**\n * 用法向量矩阵变换法向量\n * @param m - 法向量矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 向量\n */\n Vector3.prototype.applyNormalMatrix = function (m, out) {\n return m.transformNormal(this, out);\n };\n /**\n * 用投影矩阵变换点\n * @param m - 投影矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 结果点\n */\n Vector3.prototype.applyProjectionMatrix = function (m, out) {\n return m.projectPoint(this, out);\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector3.fromNumber = function (num) {\n return new Vector3().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector3.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector3().setFromArray(array, offset);\n };\n /**\n * 三维向量的常量\n */\n Vector3.X = new Vector3(1.0, 0.0, 0.0);\n Vector3.Y = new Vector3(0.0, 1.0, 0.0);\n Vector3.Z = new Vector3(0.0, 0.0, 1.0);\n Vector3.ONE = new Vector3(1.0, 1.0, 1.0);\n Vector3.ZERO = new Vector3(0.0, 0.0, 0.0);\n return Vector3;\n}());\n","import { clamp } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四元数\n */\nexport var Quaternion = /** @class */ (function () {\n /**\n * 构造函数\n * @param [x=0] - x 分量\n * @param [y=0] - y 分量\n * @param [z=0] - z 分量\n * @param [w=1] - w 分量\n */\n function Quaternion(x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 1; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * 四元数设置\n * @param x - x 分量\n * @param y - y 分量\n * @param z - z 分量\n * @param w - w 分量\n * @returns 四元数\n */\n Quaternion.prototype.set = function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n };\n /**\n * 通过欧拉角设置四元数\n * @param euler - 欧拉角\n * @returns\n */\n Quaternion.prototype.setFromEuler = function (euler) {\n euler.toQuaternion(this);\n return this;\n };\n /**\n * 通过旋转轴和旋转角度设置四元数\n * @param axis - 旋转轴\n * @param angle - 旋转角度(弧度)\n * @returns\n */\n Quaternion.prototype.setFromAxisAngle = function (axis, angle) {\n var halfAngle = angle / 2;\n var s = Math.sin(halfAngle);\n var v = Quaternion.tempVec0;\n v.copyFrom(axis).normalize();\n this.x = v.x * s;\n this.y = v.y * s;\n this.z = v.z * s;\n this.w = Math.cos(halfAngle);\n return this;\n };\n /**\n * 通过数组设置四元数\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Quaternion.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n this.w = array[offset + 3];\n return this;\n };\n /**\n * 通过矩阵设置四元数\n * @param m - 矩阵\n * @returns\n */\n Quaternion.prototype.setFromRotationMatrix = function (m) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n var trace = m11 + m22 + m33;\n if (trace > 0) {\n var s = 0.5 / Math.sqrt(trace + 1.0);\n this.w = 0.25 / s;\n this.x = (m32 - m23) * s;\n this.y = (m13 - m31) * s;\n this.z = (m21 - m12) * s;\n }\n else if (m11 > m22 && m11 > m33) {\n var s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n this.w = (m32 - m23) / s;\n this.x = 0.25 * s;\n this.y = (m12 + m21) / s;\n this.z = (m13 + m31) / s;\n this.negate();\n }\n else if (m22 > m33) {\n var s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n this.w = (m13 - m31) / s;\n this.x = (m12 + m21) / s;\n this.y = 0.25 * s;\n this.z = (m23 + m32) / s;\n this.negate();\n }\n else {\n var s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n this.w = (m21 - m12) / s;\n this.x = (m13 + m31) / s;\n this.y = (m23 + m32) / s;\n this.z = 0.25 * s;\n this.negate();\n }\n // 兼容原先数学库\n return this;\n };\n /**\n * 通过开始和结束向量设置四元数\n * @param from - 开始向量\n * @param to - 结束向量\n * @returns\n */\n Quaternion.prototype.setFromUnitVectors = function (from, to) {\n // assumes direction vectors vFrom and vTo are normalized\n var r = from.dot(to) + 1;\n if (r < Number.EPSILON) {\n r = 0;\n if (Math.abs(from.x) > Math.abs(from.z)) {\n this.x = -from.y;\n this.y = from.x;\n this.z = 0;\n this.w = r;\n }\n else {\n this.x = 0;\n this.y = -from.z;\n this.z = from.y;\n this.w = r;\n }\n }\n else {\n this.x = from.y * to.z - from.z * to.y;\n this.y = from.z * to.x - from.x * to.z;\n this.z = from.x * to.y - from.y * to.x;\n this.w = r;\n }\n return this.normalize();\n };\n /**\n * 四元数拷贝\n * @param quat - 拷贝目标四元数\n * @returns 拷贝四元数\n */\n Quaternion.prototype.copyFrom = function (quat) {\n this.x = quat.x;\n this.y = quat.y;\n this.z = quat.z;\n this.w = quat.w;\n return this;\n };\n /**\n * 四元数克隆\n * @returns 克隆结果\n */\n Quaternion.prototype.clone = function () {\n return new Quaternion(this.x, this.y, this.z, this.w);\n };\n /**\n * 四元数间的夹角计算\n * @param other - 其他四元数\n * @returns 夹角\n */\n Quaternion.prototype.angleTo = function (other) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(other), -1, 1)));\n };\n /**\n * 四元数向目标旋转\n * @param q - 四元数\n * @param step - 旋转弧度\n * @returns 目标四元数\n */\n Quaternion.prototype.rotateTowards = function (q, step) {\n var angle = this.angleTo(q);\n if (angle === 0) {\n return this;\n }\n var t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n };\n /**\n * 四元数单位化\n * @returns 单位四元数\n */\n Quaternion.prototype.identity = function () {\n return this.set(0, 0, 0, 1);\n };\n /**\n * 四元数求逆\n * @returns 四元数的逆\n */\n Quaternion.prototype.invert = function () {\n return this.conjugate();\n };\n /**\n * 四元数取负\n * @returns 负四元数\n */\n Quaternion.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n };\n /**\n * 四元数求共轭值\n * @returns 四元数的共轭值\n */\n Quaternion.prototype.conjugate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 四元数点乘结果\n * @param v\n * @return\n */\n Quaternion.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n };\n /**\n * 四元数的模平方\n * @return\n */\n Quaternion.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n };\n /**\n * 四元数的欧式长度\n * @returns 长度\n */\n Quaternion.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n };\n /**\n * 四元数归一化\n * @returns 归一化值\n */\n Quaternion.prototype.normalize = function () {\n var l = this.length();\n if (l === 0) {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 1;\n }\n else {\n l = 1 / l;\n this.x = this.x * l;\n this.y = this.y * l;\n this.z = this.z * l;\n this.w = this.w * l;\n }\n return this;\n };\n /**\n * 四元数右乘\n * @param right - 右乘的四元数\n * @returns\n */\n Quaternion.prototype.multiply = function (right) {\n return this.multiplyQuaternions(this, right);\n };\n /**\n * 四元数左乘\n * @param left - 左乘的四元数\n * @returns\n */\n Quaternion.prototype.premultiply = function (left) {\n return this.multiplyQuaternions(left, this);\n };\n /**\n * 四元数乘法\n * @param left - 四元数\n * @param right - 四元数\n * @returns 四元数\n */\n Quaternion.prototype.multiplyQuaternions = function (left, right) {\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n var qax = left.x;\n var qay = left.y;\n var qaz = left.z;\n var qaw = left.w;\n var qbx = right.x;\n var qby = right.y;\n var qbz = right.z;\n var qbw = right.w;\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n return this;\n };\n /**\n * 四元数线性插值\n * @see http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n * @param other - 四元数\n * @param t - 插值比\n * @returns 插值结果\n */\n Quaternion.prototype.slerp = function (other, t) {\n var _a;\n if (t === 0) {\n return this;\n }\n if (t === 1) {\n return this.copyFrom(other);\n }\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, w = _a.w;\n var cosHalfTheta = w * other.w + x * other.x + y * other.y + z * other.z;\n if (cosHalfTheta < 0) {\n this.w = -other.w;\n this.x = -other.x;\n this.y = -other.y;\n this.z = -other.z;\n cosHalfTheta = -cosHalfTheta;\n }\n else {\n this.copyFrom(other);\n }\n if (cosHalfTheta >= 1.0) {\n this.w = w;\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n var s = 1 - t;\n this.w = s * w + t * this.w;\n this.x = s * x + t * this.x;\n this.y = s * y + t * this.y;\n this.z = s * z + t * this.z;\n this.normalize();\n return this;\n }\n var sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n var halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n var ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n var ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this.w = (w * ratioA + this.w * ratioB);\n this.x = (x * ratioA + this.x * ratioB);\n this.y = (y * ratioA + this.y * ratioB);\n this.z = (z * ratioA + this.z * ratioB);\n return this;\n };\n /**\n * 两个四元数的线性插值\n * @param qa - 四元数\n * @param qb - 四元数\n * @param t - 插值比\n */\n Quaternion.prototype.slerpQuaternions = function (qa, qb, t) {\n this.copyFrom(qa).slerp(qb, t);\n };\n /**\n * 通过四元数旋转向量\n * @param v - 待旋转向量\n * @param [out] - 旋转结果,如果没有传入直接覆盖输入值\n * @returns\n */\n Quaternion.prototype.rotateVector3 = function (v, out) {\n var _a;\n var qx = (_a = this, _a.x), qy = _a.y, qz = _a.z, qw = _a.w;\n var vx = v.x, vy = v.y, vz = v.z;\n var ix = qw * vx + qy * vz - qz * vy;\n var iy = qw * vy + qz * vx - qx * vz;\n var iz = qw * vz + qx * vy - qy * vx;\n var iw = -qx * vx - qy * vy - qz * vz;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n res.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n res.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return res;\n };\n /**\n * 四元数判等\n * @param quaternion - 四元数\n * @returns 判等结果\n */\n Quaternion.prototype.equals = function (quaternion) {\n return quaternion.x === this.x\n && quaternion.y === this.y\n && quaternion.z === this.z\n && quaternion.w === this.w;\n };\n /**\n * 四元数保存为数组\n * @returns\n */\n Quaternion.prototype.toArray = function () {\n return [this.x, this.y, this.z, this.w];\n };\n /**\n * 四元数转四维向量数组\n * @param vec - 目标保存对象\n * @returns 保存结果\n */\n Quaternion.prototype.toVector4 = function (vec) {\n return vec.set(this.x, this.y, this.z, this.w);\n };\n /**\n * 四元数转欧拉角\n * @param euler - 目标欧拉角\n * @returns 欧拉角\n */\n Quaternion.prototype.toEuler = function (euler) {\n return euler.setFromQuaternion(this);\n };\n /**\n * 四元数转矩阵\n * @param mat - 目标矩阵\n * @returns\n */\n Quaternion.prototype.toMatrix4 = function (mat) {\n return mat.compose(Vector3.ZERO, this, Vector3.ONE);\n };\n /**\n * 通过欧拉角创建四元数\n * @param euler - 欧拉角\n * @returns 四元数\n */\n Quaternion.fromEuler = function (euler) {\n return new Quaternion().setFromEuler(euler);\n };\n /**\n * 通过旋转轴和旋转角度创建四元数\n * @param axis - 旋转轴\n * @param angle - 旋转角(弧度值)\n * @returns 四元数\n */\n Quaternion.fromAxisAngle = function (axis, angle) {\n return new Quaternion().setFromAxisAngle(axis, angle);\n };\n /**\n * 通过数组获取四元数\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 四元数\n */\n Quaternion.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Quaternion().setFromArray(array, offset);\n };\n /**\n * 通过旋转矩阵创建四元数\n * @param m - 旋转矩阵\n * @returns 四元数\n */\n Quaternion.fromRotationMatrix = function (m) {\n return new Quaternion().setFromRotationMatrix(m);\n };\n /**\n * 通过开始和结束向量创建四元数\n * @param from - 开始向量\n * @param to - 结束向量\n * @returns\n */\n Quaternion.fromUnitVectors = function (from, to) {\n return new Quaternion().setFromUnitVectors(from, to);\n };\n Quaternion.tempVec0 = new Vector3();\n return Quaternion;\n}());\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { Vector3 } from './vector3';\nimport { isEqual } from './utils';\nimport { Quaternion } from './quaternion';\n/**\n * 四阶矩阵(列优先矩阵)\n */\nexport var Matrix4 = /** @class */ (function () {\n /**\n * 构造函数,初始值为单位矩阵\n * @param [m11=1] - 第 1 行,第 1 列\n * @param [m21=0] - 第 2 行,第 1 列\n * @param [m31=0] - 第 3 行,第 1 列\n * @param [m41=0] - 第 4 行,第 1 列\n * @param [m12=0] - 第 1 行,第 2 列\n * @param [m22=1] - 第 2 行,第 2 列\n * @param [m32=0] - 第 3 行,第 2 列\n * @param [m42=0] - 第 4 行,第 2 列\n * @param [m13=0] - 第 1 行,第 3 列\n * @param [m23=0] - 第 2 行,第 3 列\n * @param [m33=1] - 第 3 行,第 3 列\n * @param [m43=0] - 第 4 行,第 3 列\n * @param [m14=0] - 第 1 行,第 4 列\n * @param [m24=0] - 第 2 行,第 4 列\n * @param [m34=0] - 第 3 行,第 4 列\n * @param [m44=1] - 第 4 行,第 4 列\n */\n function Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n if (m11 === void 0) { m11 = 1; }\n if (m21 === void 0) { m21 = 0; }\n if (m31 === void 0) { m31 = 0; }\n if (m41 === void 0) { m41 = 0; }\n if (m12 === void 0) { m12 = 0; }\n if (m22 === void 0) { m22 = 1; }\n if (m32 === void 0) { m32 = 0; }\n if (m42 === void 0) { m42 = 0; }\n if (m13 === void 0) { m13 = 0; }\n if (m23 === void 0) { m23 = 0; }\n if (m33 === void 0) { m33 = 1; }\n if (m43 === void 0) { m43 = 0; }\n if (m14 === void 0) { m14 = 0; }\n if (m24 === void 0) { m24 = 0; }\n if (m34 === void 0) { m34 = 0; }\n if (m44 === void 0) { m44 = 1; }\n this.elements = [\n m11, m21, m31, m41,\n m12, m22, m32, m42,\n m13, m23, m33, m43,\n m14, m24, m34, m44,\n ];\n }\n /**\n * 设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m21 - 第 2 行,第 1 列\n * @param m31 - 第 3 行,第 1 列\n * @param m41 - 第 4 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m22 - 第 2 行,第 2 列\n * @param m32 - 第 3 行,第 2 列\n * @param m42 - 第 4 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m23 - 第 2 行,第 3 列\n * @param m33 - 第 3 行,第 3 列\n * @param m43 - 第 4 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m24 - 第 2 行,第 4 列\n * @param m34 - 第 3 行,第 4 列\n * @param m44 - 第 4 行,第 4 列\n * @returns 矩阵\n */\n Matrix4.prototype.set = function (m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n var e = this.elements;\n e[0] = m11;\n e[1] = m21;\n e[2] = m31;\n e[3] = m41;\n e[4] = m12;\n e[5] = m22;\n e[6] = m32;\n e[7] = m42;\n e[8] = m13;\n e[9] = m23;\n e[10] = m33;\n e[11] = m43;\n e[12] = m14;\n e[13] = m24;\n e[14] = m34;\n e[15] = m44;\n return this;\n };\n /**\n * 通过行优先数据设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m24 - 第 2 行,第 4 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @param m34 - 第 3 行,第 4 列\n * @param m41 - 第 4 行,第 1 列\n * @param m42 - 第 4 行,第 2 列\n * @param m43 - 第 4 行,第 3 列\n * @param m44 - 第 4 行,第 4 列\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRowMajorData = function (m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n var e = this.elements;\n e[0] = m11;\n e[4] = m12;\n e[8] = m13;\n e[12] = m14;\n e[1] = m21;\n e[5] = m22;\n e[9] = m23;\n e[13] = m24;\n e[2] = m31;\n e[6] = m32;\n e[10] = m33;\n e[14] = m34;\n e[3] = m41;\n e[7] = m42;\n e[11] = m43;\n e[15] = m44;\n return this;\n };\n /**\n * 通过四个列向量设置矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @param c4 - 第四列\n * @returns 矩阵\n */\n Matrix4.prototype.setFromColumnVectors = function (c1, c2, c3, c4) {\n return this.set(c1.x, c1.y, c1.z, c1.w, c2.x, c2.y, c2.z, c2.w, c3.x, c3.y, c3.z, c3.w, c4.x, c4.y, c4.z, c4.w);\n };\n /**\n * 通过三维矩阵设置矩阵\n * @param m - 三维矩阵\n * @returns 设置结果\n */\n Matrix4.prototype.setFromMatrix3 = function (m) {\n var me = m.elements;\n this.set(me[0], me[1], me[2], 0, me[3], me[4], me[5], 0, me[6], me[7], me[8], 0, 0, 0, 0, 1);\n return this;\n };\n /**\n * 通过数组设置矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix4.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < 16; i++) {\n this.elements[i] = array[offset + i];\n }\n return this;\n };\n /**\n * 通过缩放设置矩阵\n * @param x - x 方向缩放\n * @param y - y 方向缩放\n * @param z - z 方向缩放\n * @returns 缩放矩阵\n */\n Matrix4.prototype.setFromScale = function (x, y, z) {\n return this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n };\n /**\n * 通过平移设置矩阵\n * @param x - x 方向平移\n * @param y - y 方向平移\n * @param z - z 方向平移\n * @returns 平移矩阵\n */\n Matrix4.prototype.setFromTranslation = function (x, y, z) {\n return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1);\n };\n /**\n * 通过 x 轴旋转角度设置矩阵\n * @param theta - x 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationX = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过 y 轴旋转角度设置矩阵\n * @param theta - y 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationY = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过 z 轴旋转角度设置矩阵\n * @param theta - z 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationZ = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 根据三维旋转轴与弧度设置矩阵\n * @param axis - 三维旋转轴\n * @param angle - 旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationAxis = function (axis, angle) {\n // Based on http://www.gamedev.net/reference/articles/article1199.asp\n var v = Matrix4.tempVec0;\n v.copyFrom(axis).normalize();\n var c = Math.cos(angle);\n var s = Math.sin(angle);\n var t = 1 - c;\n var x = v.x, y = v.y, z = v.z;\n var tx = t * x;\n var ty = t * y;\n return this.set(tx * x + c, tx * y + s * z, tx * z - s * y, 0, tx * y - s * z, ty * y + c, ty * z + s * x, 0, tx * z + s * y, ty * z - s * x, t * z * z + c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过欧拉角设置矩阵\n * @param euler - 欧拉角\n * @returns 矩阵\n */\n Matrix4.prototype.setFromEuler = function (euler) {\n euler.toMatrix4(this);\n return this;\n };\n /**\n * 通过四元数设置矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix4.prototype.setFromQuaternion = function (quat) {\n return this.compose(Vector3.ZERO, quat, Vector3.ONE);\n };\n /**\n * 通过倾斜参数设置矩阵\n * @param x - x 方向倾斜分量\n * @param y - y 方向倾斜分量\n * @param z - z 方向倾斜分量\n * @returns 倾斜矩阵\n */\n Matrix4.prototype.setFromShear = function (x, y, z) {\n return this.set(1, x, x, 0, y, 1, y, 0, z, z, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 通过基轴设置矩阵\n * @param xAxis - x 轴\n * @param yAxis - y 轴\n * @param zAxis - z 轴\n * @returns 倾斜矩阵\n */\n Matrix4.prototype.setFromBasis = function (xAxis, yAxis, zAxis) {\n return this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, zAxis.x, zAxis.y, zAxis.z, 0, 0, 0, 0, 1);\n };\n /**\n * 矩阵清零\n * @returns 零矩阵\n */\n Matrix4.prototype.setZero = function () {\n for (var i = 0; i < 16; i++) {\n this.elements[i] = 0;\n }\n return this;\n };\n /**\n * 矩阵单位化\n * @returns 单位矩阵\n */\n Matrix4.prototype.identity = function () {\n return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 单位阵判断\n * @returns 判断结果\n */\n Matrix4.prototype.isIdentity = function () {\n var e = this.elements;\n return e[0] === 1 && e[4] === 0 && e[8] === 0 && e[12] === 0\n && e[1] === 0 && e[5] === 1 && e[9] === 0 && e[13] === 0\n && e[2] === 0 && e[6] === 0 && e[10] === 1 && e[14] === 0\n && e[3] === 0 && e[7] === 0 && e[11] === 0 && e[15] === 1;\n };\n /**\n * 矩阵克隆\n * @returns 克隆结果\n */\n Matrix4.prototype.clone = function () {\n var e = this.elements;\n return new Matrix4(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15]);\n };\n /**\n * 矩阵复制\n * @param m - 复制对象\n * @returns 复制结果\n */\n Matrix4.prototype.copyFrom = function (m) {\n this.elements = __spreadArray([], __read(m.elements), false);\n return this;\n };\n /**\n * 得到列向量\n * @param i - 列向量索引,从 0 开始\n * @param v\n * @returns 矩阵\n */\n Matrix4.prototype.getColumnVector = function (i, v) {\n return v.set(this.elements[i * 4], this.elements[i * 4 + 1], this.elements[i * 4 + 2], this.elements[i * 4 + 3]);\n };\n /**\n * 设置相机矩阵\n * @param eye - 相机位置\n * @param target - 目标位置\n * @param up - 相机方向\n * @returns 矩阵\n */\n Matrix4.prototype.lookAt = function (eye, target, up) {\n var vX = Matrix4.tempVec0;\n var vY = Matrix4.tempVec1;\n var vZ = Matrix4.tempVec2;\n vZ.subtractVectors(eye, target);\n vZ.normalize();\n vX.crossVectors(up, vZ);\n vX.normalize();\n vY.crossVectors(vZ, vX);\n var te = this.elements;\n te[0] = vX.x;\n te[1] = vY.x;\n te[2] = vZ.x;\n te[3] = 0;\n te[4] = vX.y;\n te[5] = vY.y;\n te[6] = vZ.y;\n te[7] = 0;\n te[8] = vX.z;\n te[9] = vY.z;\n te[10] = vZ.z;\n te[11] = 0;\n te[12] = -vX.dot(eye);\n te[13] = -vY.dot(eye);\n te[14] = -vZ.dot(eye);\n te[15] = 1;\n return this;\n };\n /**\n * 矩阵乘比例后相加\n * @param right - 矩阵\n * @param s - 比例\n * @returns 相加结果\n */\n Matrix4.prototype.addScaledMatrix = function (right, s) {\n var te = this.elements;\n var re = right.elements;\n for (var i = 0; i < 16; i++) {\n te[i] += re[i] * s;\n }\n return this;\n };\n /**\n * 矩阵右乘\n * @param right - 右侧矩阵或数值\n * @returns 右乘结果\n */\n Matrix4.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n for (var i = 0; i < 16; i++) {\n this.elements[i] *= right;\n }\n return this;\n }\n else {\n return this.multiplyMatrices(this, right);\n }\n };\n /**\n * 矩阵左乘\n * @param left - 左侧矩阵\n * @returns 左乘结果\n */\n Matrix4.prototype.premultiply = function (left) {\n return this.multiplyMatrices(left, this);\n };\n /**\n * 矩阵相乘\n * @param left - 矩阵\n * @param right - 矩阵\n * @returns 相乘结果\n */\n Matrix4.prototype.multiplyMatrices = function (left, right) {\n var ae = left.elements;\n var be = right.elements;\n var te = this.elements;\n var a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n var a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n var a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n var a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n var b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n var b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n var b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n var b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n return this;\n };\n /**\n * 矩阵缩放\n * @param s - 缩放比例\n * @returns 缩放结果\n */\n Matrix4.prototype.multiplyScalar = function (s) {\n var e = this.elements;\n e[0] *= s;\n e[4] *= s;\n e[8] *= s;\n e[12] *= s;\n e[1] *= s;\n e[5] *= s;\n e[9] *= s;\n e[13] *= s;\n e[2] *= s;\n e[6] *= s;\n e[10] *= s;\n e[14] *= s;\n e[3] *= s;\n e[7] *= s;\n e[11] *= s;\n e[15] *= s;\n return this;\n };\n /**\n * 矩阵求行列式值\n * @returns 行列式值\n */\n Matrix4.prototype.determinant = function () {\n var e = this.elements;\n var m11 = e[0], m12 = e[4], m13 = e[8], m14 = e[12];\n var m21 = e[1], m22 = e[5], m23 = e[9], m24 = e[13];\n var m31 = e[2], m32 = e[6], m33 = e[10], m34 = e[14];\n var m41 = e[3], m42 = e[7], m43 = e[11], m44 = e[15];\n return (m41 * (+m14 * m23 * m32\n - m13 * m24 * m32\n - m14 * m22 * m33\n + m12 * m24 * m33\n + m13 * m22 * m34\n - m12 * m23 * m34) +\n m42 * (+m11 * m23 * m34\n - m11 * m24 * m33\n + m14 * m21 * m33\n - m13 * m21 * m34\n + m13 * m24 * m31\n - m14 * m23 * m31) +\n m43 * (+m11 * m24 * m32\n - m11 * m22 * m34\n - m14 * m21 * m32\n + m12 * m21 * m34\n + m14 * m22 * m31\n - m12 * m24 * m31) +\n m44 * (-m13 * m22 * m31\n - m11 * m23 * m32\n + m11 * m22 * m33\n + m13 * m21 * m32\n - m12 * m21 * m33\n + m12 * m23 * m31));\n };\n /**\n * 矩阵转置\n * @returns 转置结果\n */\n Matrix4.prototype.transpose = function () {\n var e = this.elements;\n var t;\n t = e[1];\n e[1] = e[4];\n e[4] = t;\n t = e[2];\n e[2] = e[8];\n e[8] = t;\n t = e[3];\n e[3] = e[12];\n e[12] = t;\n //\n t = e[6];\n e[6] = e[9];\n e[9] = t;\n t = e[7];\n e[7] = e[13];\n e[13] = t;\n t = e[11];\n e[11] = e[14];\n e[14] = t;\n return this;\n };\n /**\n * 矩阵求逆\n * @returns 逆矩阵\n */\n Matrix4.prototype.invert = function () {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n var e = this.elements;\n var m11 = e[0], m21 = e[1], m31 = e[2], m41 = e[3];\n var m12 = e[4], m22 = e[5], m32 = e[6], m42 = e[7];\n var m13 = e[8], m23 = e[9], m33 = e[10], m43 = e[11];\n var m14 = e[12], m24 = e[13], m34 = e[14], m44 = e[15];\n var t11 = m23 * m34 * m42 - m24 * m33 * m42 + m24 * m32 * m43 - m22 * m34 * m43 - m23 * m32 * m44 + m22 * m33 * m44;\n var t12 = m14 * m33 * m42 - m13 * m34 * m42 - m14 * m32 * m43 + m12 * m34 * m43 + m13 * m32 * m44 - m12 * m33 * m44;\n var t13 = m13 * m24 * m42 - m14 * m23 * m42 + m14 * m22 * m43 - m12 * m24 * m43 - m13 * m22 * m44 + m12 * m23 * m44;\n var t14 = m14 * m23 * m32 - m13 * m24 * m32 - m14 * m22 * m33 + m12 * m24 * m33 + m13 * m22 * m34 - m12 * m23 * m34;\n var det = m11 * t11 + m21 * t12 + m31 * t13 + m41 * t14;\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n var detInv = 1 / det;\n e[0] = t11 * detInv;\n e[1] = (m24 * m33 * m41 - m23 * m34 * m41 - m24 * m31 * m43 + m21 * m34 * m43 + m23 * m31 * m44 - m21 * m33 * m44) * detInv;\n e[2] = (m22 * m34 * m41 - m24 * m32 * m41 + m24 * m31 * m42 - m21 * m34 * m42 - m22 * m31 * m44 + m21 * m32 * m44) * detInv;\n e[3] = (m23 * m32 * m41 - m22 * m33 * m41 - m23 * m31 * m42 + m21 * m33 * m42 + m22 * m31 * m43 - m21 * m32 * m43) * detInv;\n e[4] = t12 * detInv;\n e[5] = (m13 * m34 * m41 - m14 * m33 * m41 + m14 * m31 * m43 - m11 * m34 * m43 - m13 * m31 * m44 + m11 * m33 * m44) * detInv;\n e[6] = (m14 * m32 * m41 - m12 * m34 * m41 - m14 * m31 * m42 + m11 * m34 * m42 + m12 * m31 * m44 - m11 * m32 * m44) * detInv;\n e[7] = (m12 * m33 * m41 - m13 * m32 * m41 + m13 * m31 * m42 - m11 * m33 * m42 - m12 * m31 * m43 + m11 * m32 * m43) * detInv;\n e[8] = t13 * detInv;\n e[9] = (m14 * m23 * m41 - m13 * m24 * m41 - m14 * m21 * m43 + m11 * m24 * m43 + m13 * m21 * m44 - m11 * m23 * m44) * detInv;\n e[10] = (m12 * m24 * m41 - m14 * m22 * m41 + m14 * m21 * m42 - m11 * m24 * m42 - m12 * m21 * m44 + m11 * m22 * m44) * detInv;\n e[11] = (m13 * m22 * m41 - m12 * m23 * m41 - m13 * m21 * m42 + m11 * m23 * m42 + m12 * m21 * m43 - m11 * m22 * m43) * detInv;\n e[12] = t14 * detInv;\n e[13] = (m13 * m24 * m31 - m14 * m23 * m31 + m14 * m21 * m33 - m11 * m24 * m33 - m13 * m21 * m34 + m11 * m23 * m34) * detInv;\n e[14] = (m14 * m22 * m31 - m12 * m24 * m31 - m14 * m21 * m32 + m11 * m24 * m32 + m12 * m21 * m34 - m11 * m22 * m34) * detInv;\n e[15] = (m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) * detInv;\n return this;\n };\n /**\n * 提取基轴\n * @param xAxis - 提取的 x 轴\n * @param yAxis - 提取的 y 轴\n * @param zAxis - 提取的 z 轴\n * @returns\n */\n Matrix4.prototype.extractBasis = function (xAxis, yAxis, zAxis) {\n var te = this.elements;\n xAxis.set(te[0], te[1], te[2]);\n yAxis.set(te[4], te[5], te[6]);\n zAxis.set(te[8], te[9], te[10]);\n return this;\n };\n /**\n * 根据基础信息组装矩阵\n * @param translation - 位置信息\n * @param rotation - 旋转信息\n * @param scale - 缩放信息\n * @param [anchor] - 锚点信息\n * @returns 矩阵\n */\n Matrix4.prototype.compose = function (translation, rotation, scale, anchor) {\n if (anchor === void 0) { anchor = Vector3.ZERO; }\n var te = this.elements;\n var x = rotation.x, y = rotation.y, z = rotation.z, w = rotation.w;\n var l = -anchor.x;\n var m = -anchor.y;\n var n = -anchor.z;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = scale.x, sy = scale.y, sz = scale.z;\n te[0] = (1 - (yy + zz)) * sx;\n te[1] = (xy + wz) * sx;\n te[2] = (xz - wy) * sx;\n te[3] = 0;\n te[4] = (xy - wz) * sy;\n te[5] = (1 - (xx + zz)) * sy;\n te[6] = (yz + wx) * sy;\n te[7] = 0;\n te[8] = (xz + wy) * sz;\n te[9] = (yz - wx) * sz;\n te[10] = (1 - (xx + yy)) * sz;\n te[11] = 0;\n te[12] = l * te[0] + m * te[4] + n * te[8] - l + translation.x;\n te[13] = l * te[1] + m * te[5] + n * te[9] - m + translation.y;\n te[14] = l * te[2] + m * te[6] + n * te[10] - n + translation.z;\n return this;\n };\n /**\n * 矩阵拆分为基础信息\n * @param translation - 位置信息\n * @param rotation - 旋转信息\n * @param scale - 缩放信息\n * @returns 矩阵\n */\n Matrix4.prototype.decompose = function (translation, rotation, scale) {\n var v = Matrix4.tempVec0;\n var te = this.elements;\n var sx = v.set(te[0], te[1], te[2]).length();\n var sy = v.set(te[4], te[5], te[6]).length();\n var sz = v.set(te[8], te[9], te[10]).length();\n // if determine is negative, we need to invert one scale\n var det = this.determinant();\n if (det < 0) {\n sx = -sx;\n }\n translation.x = te[12];\n translation.y = te[13];\n translation.z = te[14];\n // scale the rotation part\n var m = Matrix4.tempMat0;\n m.copyFrom(this);\n var invSX = 1 / sx;\n var invSY = 1 / sy;\n var invSZ = 1 / sz;\n m.elements[0] *= invSX;\n m.elements[1] *= invSX;\n m.elements[2] *= invSX;\n m.elements[4] *= invSY;\n m.elements[5] *= invSY;\n m.elements[6] *= invSY;\n m.elements[8] *= invSZ;\n m.elements[9] *= invSZ;\n m.elements[10] *= invSZ;\n rotation.setFromRotationMatrix(m);\n scale.x = sx;\n scale.y = sy;\n scale.z = sz;\n return this;\n };\n Matrix4.prototype.getTranslation = function (translation) {\n var te = this.elements;\n return translation.set(te[12], te[13], te[14]);\n };\n Matrix4.prototype.getScale = function (scale) {\n var te = this.elements;\n return scale.set(Math.hypot(te[0], te[1], te[2]), Math.hypot(te[4], te[5], te[6]), Math.hypot(te[8], te[9], te[10]));\n };\n /**\n * 获得矩阵分解的结果\n * @returns 分解的结果\n */\n Matrix4.prototype.getTransform = function () {\n var translation = new Vector3();\n var rotation = new Quaternion();\n var scale = new Vector3();\n this.decompose(translation, rotation, scale);\n return { translation: translation, rotation: rotation, scale: scale };\n };\n /**\n * 根据视窗信息设置正交相机投影矩阵\n * @param left - 视窗左平面位置\n * @param right - 视窗右平面位置\n * @param top - 视窗上平面位置\n * @param bottom - 视窗下平面位置\n * @param near - 视窗近平面位置\n * @param far - 视窗远平面位置\n * @returns 矩阵\n */\n Matrix4.prototype.orthographic = function (left, right, top, bottom, near, far) {\n var a = 1.0 / (right - left);\n var b = 1.0 / (top - bottom);\n var c = 1.0 / (far - near);\n var tx = -(right + left) * a;\n var ty = -(top + bottom) * b;\n var tz = -(far + near) * c;\n a *= 2.0;\n b *= 2.0;\n c *= -2.0;\n var te = this.elements;\n te[0] = a;\n te[1] = 0.0;\n te[2] = 0.0;\n te[3] = 0.0;\n //\n te[4] = 0.0;\n te[5] = b;\n te[6] = 0.0;\n te[7] = 0.0;\n //\n te[8] = 0.0;\n te[9] = 0.0;\n te[10] = c;\n te[11] = 0.0;\n //\n te[12] = tx;\n te[13] = ty;\n te[14] = tz;\n te[15] = 1.0;\n return this;\n };\n /**\n * 通过透视相机基础参数设置投影矩阵\n * @param fov - 视角(弧度)\n * @param aspect - 视窗比例\n * @param near - 近平面\n * @param far - 远平面\n * @param [reverse] - 视锥体长宽反转(3D这里反了?)\n * @returns 投影矩阵\n */\n Matrix4.prototype.perspective = function (fov, aspect, near, far, reverse) {\n var f = 1.0 / Math.tan(fov * 0.5);\n var nf = 1 / (near - far);\n var te = this.elements;\n te[0] = reverse ? f : f / aspect;\n te[1] = 0;\n te[2] = 0;\n te[3] = 0;\n //\n te[4] = 0;\n te[5] = reverse ? f * aspect : f;\n te[6] = 0;\n te[7] = 0;\n //\n te[8] = 0;\n te[9] = 0;\n te[10] = (far + near) * nf;\n te[11] = -1;\n //\n te[12] = 0;\n te[13] = 0;\n te[14] = 2 * far * near * nf;\n te[15] = 0;\n if (far === null || far === Infinity) {\n te[10] = -1;\n te[14] = -2 * near;\n }\n return this;\n };\n /**\n * 对点进行投影变换\n * @param v - 输入点\n * @param [out] - 输出点,如果没有就覆盖输入的数据\n * @returns 投影后的点\n */\n Matrix4.prototype.projectPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n var w = e[3] * x + e[7] * y + e[11] * z + e[15];\n return res.multiply(1 / w);\n };\n /**\n * 对点进行矩阵变换\n * @param v - 输入点\n * @param [out] - 输出点,如果没有就覆盖输入的数据\n * @returns 变换后的点\n */\n Matrix4.prototype.transformPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n return res;\n };\n /**\n * 对法向量进行矩阵变换\n * @param v - 输入法向量\n * @param [out] - 输出法向量,如果没有就覆盖输入的数据\n * @returns 变换后的法向量\n */\n Matrix4.prototype.transformNormal = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z;\n res.y = e[1] * x + e[5] * y + e[9] * z;\n res.z = e[2] * x + e[6] * y + e[10] * z;\n return res.normalize();\n };\n /**\n * 对四维向量进行矩阵变换\n * @param v - 输入向量\n * @param [out] - 输出向量,如果没有就覆盖输入的数据\n * @returns 变换后向量\n */\n Matrix4.prototype.transformVector4 = function (v, out) {\n var x = v.x, y = v.y, z = v.z, w = v.w;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n res.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n return res;\n };\n /**\n * 矩阵判等\n * @param matrix - 矩阵\n * @returns 判等结果\n */\n Matrix4.prototype.equals = function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 16; i++) {\n if (!isEqual(te[i], me[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * 矩阵转数组\n * @returns\n */\n Matrix4.prototype.toArray = function () {\n return __spreadArray([], __read(this.elements), false);\n };\n Matrix4.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n var te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n array[offset + 9] = te[9];\n array[offset + 10] = te[10];\n array[offset + 11] = te[11];\n array[offset + 12] = te[12];\n array[offset + 13] = te[13];\n array[offset + 14] = te[14];\n array[offset + 15] = te[15];\n };\n /**\n * 创建单位阵\n * @returns 单位矩阵\n */\n Matrix4.fromIdentity = function () {\n return new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 创建相机矩阵\n * @param eye - 相机位置\n * @param target - 目标位置\n * @param up - 相机方向\n * @returns 矩阵\n */\n Matrix4.fromLookAt = function (eye, target, up) {\n return new Matrix4().lookAt(eye, target, up);\n };\n /**\n * 创建投影矩阵\n * @param fov - 视角\n * @param aspect - 视窗比例\n * @param near - 近平面\n * @param far - 远平面\n * @param [reverse] - 视锥体长宽反转\n * @returns 投影矩阵\n */\n Matrix4.fromPerspective = function (fov, aspect, near, far, reverse) {\n return new Matrix4().perspective(fov, aspect, near, far, reverse);\n };\n /**\n * 通过四个列向量创建矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @param c4 - 第四列\n * @returns\n */\n Matrix4.fromColumnVectors = function (c1, c2, c3, c4) {\n return new Matrix4().setFromColumnVectors(c1, c2, c3, c4);\n };\n /**\n * 通过三阶矩阵创建矩阵\n * @param m - 三阶矩阵\n * @returns 创建的矩阵\n */\n Matrix4.fromMatrix3 = function (m) {\n return new Matrix4().setFromMatrix3(m);\n };\n /**\n * 通过数组创建矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix4.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Matrix4().setFromArray(array, offset);\n };\n /**\n * 通过缩放创建矩阵\n * @param x - x 缩放\n * @param y - y 缩放\n * @param z - z 缩放\n * @returns 缩放结果\n */\n Matrix4.fromScale = function (x, y, z) {\n return new Matrix4().setFromScale(x, y, z);\n };\n /**\n * 通过平移创建矩阵\n * @param x - x 平移\n * @param y - y 平移\n * @param z - z 平移\n * @returns 平移结果\n */\n Matrix4.fromTranslation = function (x, y, z) {\n return new Matrix4().setFromTranslation(x, y, z);\n };\n /**\n * 通过 x 轴旋转创建矩阵\n * @param theta - x 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.fromRotationX = function (theta) {\n return new Matrix4().setFromRotationX(theta);\n };\n /**\n * 通过 y 轴旋转创建矩阵\n * @param theta - y 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.fromRotationY = function (theta) {\n return new Matrix4().setFromRotationY(theta);\n };\n /**\n * 通过 z 轴旋转创建矩阵\n * @param theta - z 轴旋转弧度\n * @returns\n */\n Matrix4.fromRotationZ = function (theta) {\n return new Matrix4().setFromRotationZ(theta);\n };\n /**\n * 通过旋转轴与旋转弧度创建矩阵\n * @param axis - 旋转轴\n * @param angle - 旋转弧度\n * @returns\n */\n Matrix4.fromRotationAxis = function (axis, angle) {\n return new Matrix4().setFromRotationAxis(axis, angle);\n };\n /**\n * 通过欧拉角创建矩阵\n * @param euler - 欧拉角\n * @returns\n */\n Matrix4.fromEuler = function (euler) {\n return new Matrix4().setFromEuler(euler);\n };\n /**\n * 通过四元数创建矩阵\n * @param quat - 四元数\n * @returns\n */\n Matrix4.fromQuaternion = function (quat) {\n return new Matrix4().setFromQuaternion(quat);\n };\n /**\n * 通过倾斜创建矩阵\n * @param x - x 方向倾斜分量\n * @param y - y 方向倾斜分量\n * @param z - z 方向倾斜分量\n * @returns 倾斜矩阵\n */\n Matrix4.fromShear = function (x, y, z) {\n return new Matrix4().setFromShear(x, y, z);\n };\n /**\n * 通过基轴创建矩阵\n * @param xAxis - x 轴\n * @param yAxis - y 轴\n * @param zAxis - z 轴\n * @returns\n */\n Matrix4.fromBasis = function (xAxis, yAxis, zAxis) {\n return new Matrix4().setFromBasis(xAxis, yAxis, zAxis);\n };\n /**\n * 通过行优先数据设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m24 - 第 2 行,第 4 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @param m34 - 第 3 行,第 4 列\n * @param m41 - 第 4 行,第 1 列\n * @param m42 - 第 4 行,第 2 列\n * @param m43 - 第 4 行,第 3 列\n * @param m44 - 第 4 行,第 4 列\n * @returns\n */\n Matrix4.fromRowMajorData = function (m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n return new Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44);\n };\n Matrix4.IDENTITY = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n Matrix4.ZERO = new Matrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n Matrix4.tempVec0 = new Vector3();\n Matrix4.tempVec1 = new Vector3();\n Matrix4.tempVec2 = new Vector3();\n Matrix4.tempMat0 = new Matrix4();\n return Matrix4;\n}());\n","import { NumberEpsilon } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四维向量\n */\nexport var Vector4 = /** @class */ (function () {\n /**\n * 构造函数\n * @param [x=0] - x 轴分量\n * @param [y=0] - y 轴分量\n * @param [z=0] - z 轴分量\n * @param [w=1] - w 轴分量\n */\n function Vector4(x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 0; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @param z - z 轴分量\n * @param w - w 轴分量\n * @returns\n */\n Vector4.prototype.set = function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector4.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 0;\n return this;\n };\n /**\n * 通过标量数值设置向量\n * @param num - 数值\n * @returns 向量\n */\n Vector4.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n this.z = num;\n this.w = num;\n return this;\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector4.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.w = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param v - 复制对象\n * @returns 拷贝结果\n */\n Vector4.prototype.copyFrom = function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n this.w = v.w;\n return this;\n };\n /**\n * 克隆向量\n * @returns 克隆结果\n */\n Vector4.prototype.clone = function () {\n return new Vector4(this.x, this.y, this.z, this.w);\n };\n /**\n * 根据下标设置向量分量\n * @param index - 下标值\n * @param value - 分量值\n * @returns 向量\n */\n Vector4.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n case 3:\n this.w = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取向量分量\n * @param index - 下标\n * @returns 分量值\n */\n Vector4.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n case 3: return this.w;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 相加对象,向量 | 数字\n * @returns 相加结果\n */\n Vector4.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n this.z += right;\n this.w += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n this.z += right[2];\n this.w += right[3];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n this.z += right.z;\n this.w += right.w;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 求和结果\n */\n Vector4.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n this.w = left.w + right.w;\n return this;\n };\n /**\n * 向量比例缩放后相加\n * @param right - 向量\n * @param s - 比例\n * @returns 求和结果\n */\n Vector4.prototype.addScaledVector = function (right, s) {\n this.x += right.x * s;\n this.y += right.y * s;\n this.z += right.z * s;\n this.w += right.w * s;\n return this;\n };\n /**\n * 向量相减\n * @param right - 相减对象,向量 | 数字\n * @returns 相减结果\n */\n Vector4.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n this.z -= right;\n this.w -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n this.z -= right[2];\n this.w -= right[3];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n this.z -= right.z;\n this.w -= right.w;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 向量\n */\n Vector4.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n this.z = left.z - right.z;\n this.w = left.w - right.w;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 相乘对象,对象 | 数字\n * @returns 向量\n */\n Vector4.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n this.z *= right;\n this.w *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n this.z *= right[2];\n this.w *= right[3];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n this.z *= right.z;\n this.w *= right.w;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 向量\n */\n Vector4.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n this.z = left.z * right.z;\n this.w = left.w * right.w;\n return this;\n };\n /**\n * 向量相除\n * @param right - 相除对象,对象 | 数字\n * @returns 向量\n */\n Vector4.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n this.z /= right;\n this.w /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n this.z /= right[2];\n this.w /= right[3];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n this.z /= right.z;\n this.w /= right.w;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector4.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n this.w *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector4.prototype.sum = function () {\n return this.x + this.y + this.z + this.w;\n };\n /**\n * 向量求最小值\n * @param v - 向量或数值\n * @returns 最小值\n */\n Vector4.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n this.z = Math.min(this.z, v);\n this.w = Math.min(this.w, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n this.w = Math.min(this.w, v.w);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量或数值\n * @returns 最大值\n */\n Vector4.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n this.z = Math.max(this.z, v);\n this.w = Math.max(this.w, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n this.w = Math.max(this.w, v.w);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 最小值\n * @param max - 最大值\n * @returns 向量\n */\n Vector4.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector4.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n this.w = Math.floor(this.w);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector4.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n this.w = Math.ceil(this.w);\n return this;\n };\n /**\n * 向量四舍五入\n * @returns 求值结果\n */\n Vector4.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n this.w = Math.round(this.w);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector4.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n this.z = Math.abs(this.z);\n this.w = Math.abs(this.w);\n return this;\n };\n /**\n * 向量取反\n * @returns 取反结果\n */\n Vector4.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n };\n /**\n * 向量长度平方\n * @returns 长度平方\n */\n Vector4.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n };\n /**\n * 向量长度\n * @returns 长度\n */\n Vector4.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n };\n /**\n * 向量归一化\n * @returns 归一化结果\n */\n Vector4.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector4.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量求线性插值\n * @param v - 向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector4.prototype.lerp = function (v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n this.w += (v.w - this.w) * alpha;\n return this;\n };\n /**\n * 两向量求线性插值\n * @param v1 - 第一个向量\n * @param v2 - 第二个向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector4.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n this.w = v1.w + (v2.w - v1.w) * alpha;\n return this;\n };\n /**\n * 向量求点积\n * @param v - 向量\n * @returns 点积结果\n */\n Vector4.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector4.prototype.equals = function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector4.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, w = _a.w;\n return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps && Math.abs(w) <= eps;\n };\n /**\n * 向量转数组\n * @returns 数组\n */\n Vector4.prototype.toArray = function () {\n return [this.x, this.y, this.z, this.w];\n };\n Vector4.prototype.toVector3 = function () {\n return new Vector3(this.x, this.y, this.z);\n };\n Vector4.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n array[offset + 3] = this.w;\n };\n /**\n * 生成随机向量\n * @returns 向量\n */\n Vector4.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n this.w = Math.random();\n return this;\n };\n /**\n * 变换矩阵作用于向量\n * @param m - 变换矩阵\n * @param [out] - 输出结果,如果没有设置就直接覆盖当前值\n * @returns 向量\n */\n Vector4.prototype.applyMatrix = function (m, out) {\n return m.transformVector4(this, out);\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector4.fromNumber = function (num) {\n return new Vector4().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector4.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector4().setFromArray(array, offset);\n };\n /**\n * 四维向量的常量\n */\n Vector4.ONE = new Vector4(1.0, 1.0, 1.0, 1.0);\n Vector4.ZERO = new Vector4(0.0, 0.0, 0.0, 0.0);\n return Vector4;\n}());\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { isEqual } from './utils';\n/**\n * 三维矩阵(列优先矩阵)\n */\nvar Matrix3 = /** @class */ (function () {\n /**\n * 构造函数,初始值为零矩阵\n * @param [m11=1] - 第 1 行,第 1 列\n * @param [m21=0] - 第 2 行,第 1 列\n * @param [m31=0] - 第 3 行,第 1 列\n * @param [m12=0] - 第 1 行,第 2 列\n * @param [m22=1] - 第 2 行,第 2 列\n * @param [m32=0] - 第 3 行,第 2 列\n * @param [m13=0] - 第 1 行,第 3 列\n * @param [m23=0] - 第 2 行,第 3 列\n * @param [m33=1] - 第 3 行,第 3 列\n */\n function Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n if (m11 === void 0) { m11 = 1; }\n if (m21 === void 0) { m21 = 0; }\n if (m31 === void 0) { m31 = 0; }\n if (m12 === void 0) { m12 = 0; }\n if (m22 === void 0) { m22 = 1; }\n if (m32 === void 0) { m32 = 0; }\n if (m13 === void 0) { m13 = 0; }\n if (m23 === void 0) { m23 = 0; }\n if (m33 === void 0) { m33 = 1; }\n this.elements = [\n m11, m21, m31,\n m12, m22, m32,\n m13, m23, m33,\n ];\n }\n /**\n * 设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m21 - 第 2 行,第 1 列\n * @param m31 - 第 3 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m22 - 第 2 行,第 2 列\n * @param m32 - 第 3 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m23 - 第 2 行,第 3 列\n * @param m33 - 第 3 行,第 3 列\n * @returns\n */\n Matrix3.prototype.set = function (m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n var e = this.elements;\n e[0] = m11;\n e[3] = m12;\n e[6] = m13;\n e[1] = m21;\n e[4] = m22;\n e[7] = m23;\n e[2] = m31;\n e[5] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * 设置矩阵通过行优先数据\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @returns 矩阵\n */\n Matrix3.prototype.setFromRowMajorData = function (m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n var e = this.elements;\n e[0] = m11;\n e[3] = m12;\n e[6] = m13;\n e[1] = m21;\n e[4] = m22;\n e[7] = m23;\n e[2] = m31;\n e[5] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * 通过列向量设置矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @returns 矩阵\n */\n Matrix3.prototype.setFromColumnVectors = function (c1, c2, c3) {\n return this.set(c1.x, c1.y, c1.z, c2.x, c2.y, c2.z, c3.x, c3.y, c3.z);\n };\n /**\n * 通过四阶矩阵设置三阶矩阵\n * @param m - 四阶矩阵\n * @returns 矩阵\n */\n Matrix3.prototype.setFromMatrix4 = function (m) {\n var me = m.elements;\n return this.set(me[0], me[1], me[2], me[4], me[5], me[6], me[8], me[9], me[10]);\n };\n /**\n * 通过数组设置矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix3.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < 9; i++) {\n this.elements[i] = array[offset + i];\n }\n return this;\n };\n /**\n * 通过四元数设置矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix3.prototype.setFromQuaternion = function (quat) {\n var x = quat.x, y = quat.y, z = quat.z, w = quat.w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var te = this.elements;\n te[0] = 1 - (yy + zz);\n te[1] = xy + wz;\n te[2] = xz - wy;\n te[3] = xy - wz;\n te[4] = 1 - (xx + zz);\n te[5] = yz + wx;\n te[6] = xz + wy;\n te[7] = yz - wx;\n te[8] = 1 - (xx + yy);\n return this;\n };\n /**\n * 矩阵清零\n * @returns 零矩阵\n */\n Matrix3.prototype.setZero = function () {\n for (var i = 0; i < 9; i++) {\n this.elements[i] = 0;\n }\n return this;\n };\n /**\n * 矩阵单位化\n * @returns 单位矩阵\n */\n Matrix3.prototype.identity = function () {\n return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n };\n /**\n * 矩阵克隆\n * @returns 克隆结果\n */\n Matrix3.prototype.clone = function () {\n var e = this.elements;\n return new Matrix3(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8]);\n };\n /**\n * 矩阵复制\n * @param m - 复制对象\n * @returns 复制结果\n */\n Matrix3.prototype.copyFrom = function (m) {\n this.elements = __spreadArray([], __read(m.elements), false);\n return this;\n };\n /**\n * 得到列向量\n * @param i - 列向量索引,从 0 开始\n * @returns 列向量\n */\n Matrix3.prototype.getColumnVector = function (i, v) {\n return v.set(this.elements[i * 3], this.elements[i * 3 + 1], this.elements[i * 3 + 2]);\n };\n /**\n * 矩阵缩放\n * @param sx - x 轴缩放分量\n * @param sy - y 轴缩放分量\n * @returns 缩放结果\n */\n Matrix3.prototype.scale = function (sx, sy) {\n var e = this.elements;\n e[0] *= sx;\n e[3] *= sx;\n e[6] *= sx;\n e[1] *= sy;\n e[4] *= sy;\n e[7] *= sy;\n return this;\n };\n /**\n * 矩阵旋转\n * @param theta - 旋转角度(弧度)\n * @returns 旋转结果\n */\n Matrix3.prototype.rotate = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var e = this.elements;\n var m11 = e[0], m12 = e[3], m13 = e[6];\n var m21 = e[1], m22 = e[4], m23 = e[7];\n e[0] = c * m11 + s * m21;\n e[3] = c * m12 + s * m22;\n e[6] = c * m13 + s * m23;\n e[1] = -s * m11 + c * m21;\n e[4] = -s * m12 + c * m22;\n e[7] = -s * m13 + c * m23;\n return this;\n };\n /**\n * 矩阵平移\n * @param x - x 轴平移分量\n * @param y - y 轴平移分量\n * @returns 平移结果\n */\n Matrix3.prototype.translate = function (x, y) {\n var e = this.elements;\n e[0] += x * e[2];\n e[3] += x * e[5];\n e[6] += x * e[8];\n e[1] += y * e[2];\n e[4] += y * e[5];\n e[7] += y * e[8];\n return this;\n };\n /**\n * 矩阵右乘\n * @param right - 相乘矩阵\n * @returns 右乘结果\n */\n Matrix3.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n for (var i = 0; i < 9; i++) {\n this.elements[i] *= right;\n }\n return this;\n }\n else {\n return this.multiplyMatrices(this, right);\n }\n };\n /**\n * 矩阵左乘\n * @param left - 相乘矩阵\n * @returns 左乘结果\n */\n Matrix3.prototype.premultiply = function (left) {\n return this.multiplyMatrices(left, this);\n };\n /**\n * 矩阵乘法\n * @param left - 矩阵\n * @param right - 矩阵\n * @returns 相乘结果\n */\n Matrix3.prototype.multiplyMatrices = function (left, right) {\n var ae = left.elements;\n var be = right.elements;\n var te = this.elements;\n var a11 = ae[0], a12 = ae[3], a13 = ae[6];\n var a21 = ae[1], a22 = ae[4], a23 = ae[7];\n var a31 = ae[2], a32 = ae[5], a33 = ae[8];\n var b11 = be[0], b12 = be[3], b13 = be[6];\n var b21 = be[1], b22 = be[4], b23 = be[7];\n var b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n };\n /**\n * 矩阵求行列式值\n * @returns 行列式结果\n */\n Matrix3.prototype.determinant = function () {\n var e = this.elements;\n var m11 = e[0], m21 = e[3], m31 = e[6];\n var m12 = e[1], m22 = e[4], m32 = e[7];\n var m13 = e[2], m23 = e[5], m33 = e[8];\n return (m11 * (m22 * m33 - m23 * m32) +\n m12 * (m23 * m31 - m21 * m33) +\n m13 * (m21 * m32 - m22 * m31));\n };\n /**\n * 矩阵求逆\n * @returns 逆矩阵\n */\n Matrix3.prototype.invert = function () {\n var e = this.elements;\n var m11 = e[0], m12 = e[3], m13 = e[6];\n var m21 = e[1], m22 = e[4], m23 = e[7];\n var m31 = e[2], m32 = e[5], m33 = e[8];\n var t11 = m33 * m22 - m32 * m23;\n var t12 = m32 * m13 - m33 * m12;\n var t13 = m23 * m12 - m22 * m13;\n var det = m11 * t11 + m21 * t12 + m31 * t13;\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n var detInv = 1 / det;\n e[0] = t11 * detInv;\n e[1] = (m31 * m23 - m33 * m21) * detInv;\n e[2] = (m32 * m21 - m31 * m22) * detInv;\n e[3] = t12 * detInv;\n e[4] = (m33 * m11 - m31 * m13) * detInv;\n e[5] = (m31 * m12 - m32 * m11) * detInv;\n e[6] = t13 * detInv;\n e[7] = (m21 * m13 - m23 * m11) * detInv;\n e[8] = (m22 * m11 - m21 * m12) * detInv;\n return this;\n };\n /**\n * 矩阵转置\n * @returns 转置结果\n */\n Matrix3.prototype.transpose = function () {\n var t;\n var m = this.elements;\n t = m[1];\n m[1] = m[3];\n m[3] = t;\n t = m[2];\n m[2] = m[6];\n m[6] = t;\n t = m[5];\n m[5] = m[7];\n m[7] = t;\n return this;\n };\n /**\n * 对点进行矩阵变换\n * @param v - 输入点\n * @param out - 输出点,如果没有会覆盖输入的数据\n * @returns 变换后的结果\n */\n Matrix3.prototype.transformPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[3] * y + e[6] * z;\n res.y = e[1] * x + e[4] * y + e[7] * z;\n res.z = e[2] * x + e[5] * y + e[8] * z;\n return res;\n };\n /**\n * 对法向量进行矩阵变换\n * @param v - 输入向量\n * @param out - 输出向量,如果没有会覆盖输入的数据\n * @returns 变换后的结果\n */\n Matrix3.prototype.transformNormal = function (v, out) {\n return this.transformPoint(v, out).normalize();\n };\n /**\n * 矩阵判等\n * @param matrix - 矩阵\n * @returns 判等结果\n */\n Matrix3.prototype.equals = function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 9; i++) {\n if (!isEqual(te[i], me[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * 矩阵转为数组\n * @returns\n */\n Matrix3.prototype.toArray = function () {\n return __spreadArray([], __read(this.elements), false);\n };\n Matrix3.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n var e = this.elements;\n array[offset] = e[0];\n array[offset + 1] = e[1];\n array[offset + 2] = e[2];\n array[offset + 3] = e[3];\n array[offset + 4] = e[4];\n array[offset + 5] = e[5];\n array[offset + 6] = e[6];\n array[offset + 7] = e[7];\n array[offset + 8] = e[8];\n };\n /**\n * 创建单位阵\n * @returns 单位矩阵\n */\n Matrix3.fromIdentity = function () {\n return new Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1);\n };\n /**\n * 通过列向量创建矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @returns 矩阵\n */\n Matrix3.fromColumnVectors = function (c1, c2, c3) {\n return new Matrix3().setFromColumnVectors(c1, c2, c3);\n };\n /**\n * 通过四阶矩阵创建矩阵(获取空间变换矩阵旋转缩放部分)\n * @param m - 四阶矩阵\n * @returns 矩阵\n */\n Matrix3.fromMatrix4 = function (m) {\n return new Matrix3().setFromMatrix4(m);\n };\n /**\n * 通过数组创建矩阵\n * @param array - 数组(列优先)\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix3.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Matrix3().setFromArray(array, offset);\n };\n /**\n * 通过四元数创建矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix3.fromQuaternion = function (quat) {\n return new Matrix3().setFromQuaternion(quat);\n };\n /**\n * 设置矩阵通过行优先数据\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @returns 矩阵\n */\n Matrix3.fromRowMajorData = function (m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n return new Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33);\n };\n return Matrix3;\n}());\nexport { Matrix3 };\n","import { Vector3 } from './vector3';\n/**\n * 光线类\n */\nexport var Ray = /** @class */ (function () {\n /**\n * 构造函数\n * @param [origin] - 原点,默认是 (0, 0, 0)\n * @param [direction] - 方向,默认是 (1, 0, 0)\n */\n function Ray(origin, direction) {\n if (origin === void 0) { origin = Vector3.ZERO; }\n if (direction === void 0) { direction = Vector3.X; }\n /**\n * 光线的原点\n */\n this.origin = new Vector3();\n /**\n * 光线的方向\n */\n this.direction = new Vector3();\n // 注意这里必须拷贝\n this.origin.copyFrom(origin);\n this.direction.copyFrom(direction).normalize();\n }\n /**\n * 光线设置\n * @param origin - 原点\n * @param direction - 方向\n * @returns\n */\n Ray.prototype.set = function (origin, direction) {\n this.origin.copyFrom(origin);\n this.direction.copyFrom(direction).normalize();\n return this;\n };\n /**\n * 光线克隆\n * @returns 克隆结果\n */\n Ray.prototype.clone = function () {\n return new Ray(this.origin, this.direction);\n };\n /**\n * 光线拷贝\n * @param ray - 要拷贝对象\n * @returns 拷贝结果\n */\n Ray.prototype.copyFrom = function (ray) {\n return this.set(ray.origin, ray.direction);\n };\n /**\n * 根据t计算新的光线原点\n * @param t - 光线的系数 t\n * @returns\n */\n Ray.prototype.recast = function (t) {\n this.origin.copyFrom(this.at(t, Ray.tempVec0));\n return this;\n };\n /**\n * 根据t值计算光线上的点\n * @param t - 光线的系数 t\n * @param [out] - 计算的点\n * @returns\n */\n Ray.prototype.at = function (t, out) {\n var ret = out ? out : new Vector3();\n ret.copyFrom(this.origin);\n return ret.addScaledVector(this.direction, t);\n };\n /**\n * 光线相等判断\n * @param other - 其他对象\n * @returns\n */\n Ray.prototype.equals = function (other) {\n return this.origin.equals(other.origin) && this.direction.equals(other.direction);\n };\n /**\n * 根据矩阵对光线进行变换\n * @param m - 变换矩阵\n * @returns\n */\n Ray.prototype.applyMatrix = function (m) {\n this.origin.applyProjectionMatrix(m);\n this.direction.applyNormalMatrix(m);\n return this;\n };\n /**\n * 光线和包围盒求交\n * @param box - 类包围盒对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectBox = function (box, out) {\n var _a, _b, _c, _d;\n var ox = (_a = this.origin, _a.x), oy = _a.y, oz = _a.z;\n var dx = (_b = this.direction, _b.x), dy = _b.y, dz = _b.z;\n var bxmin = (_c = box.min, _c.x), bymin = _c.y, bzmin = _c.z;\n var bxmax = (_d = box.max, _d.x), bymax = _d.y, bzmax = _d.z;\n var tmin, tmax, tymin, tymax, tzmin, tzmax;\n var invdirx = 1 / dx;\n var invdiry = 1 / dy;\n var invdirz = 1 / dz;\n if (invdirx >= 0) {\n tmin = (bxmin - ox) * invdirx;\n tmax = (bxmax - ox) * invdirx;\n }\n else {\n tmin = (bxmax - ox) * invdirx;\n tmax = (bxmin - ox) * invdirx;\n }\n if (invdiry >= 0) {\n tymin = (bymin - oy) * invdiry;\n tymax = (bymax - oy) * invdiry;\n }\n else {\n tymin = (bymax - oy) * invdiry;\n tymax = (bymin - oy) * invdiry;\n }\n if ((tmin > tymax) || (tymin > tmax)) {\n return;\n }\n if (tymin > tmin || tmin !== tmin) {\n tmin = tymin;\n }\n if (tymax < tmax || tmax !== tmax) {\n tmax = tymax;\n }\n if (tymin > tmin || tmin !== tmin) {\n tmin = tymin;\n }\n if (tymax < tmax || tmax !== tmax) {\n tmax = tymax;\n }\n if (invdirz >= 0) {\n tzmin = (bzmin - oz) * invdirz;\n tzmax = (bzmax - oz) * invdirz;\n }\n else {\n tzmin = (bzmax - oz) * invdirz;\n tzmax = (bzmin - oz) * invdirz;\n }\n if ((tmin > tzmax) || (tzmin > tmax)) {\n return;\n }\n if (tzmin > tmin || tmin !== tmin) {\n tmin = tzmin;\n }\n if (tzmax < tmax || tmax !== tmax) {\n tmax = tzmax;\n }\n if (tmax < 0) {\n return;\n }\n return tmin >= 0 ? this.at(tmin, out) : this.at(tmax, out);\n };\n /**\n * 光线和平面求交\n * @param plane - 类平面对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectPlane = function (plane, out) {\n var normal = plane.normal;\n var distance = plane.distance;\n var denominator = normal.dot(this.direction);\n if (denominator === 0) {\n // line is coplanar, return origin\n var t_1 = normal.dot(this.origin) + distance;\n if (t_1 === 0) {\n var ret = out ? out : new Vector3();\n return ret.copyFrom(this.origin);\n }\n // Null is preferable to undefined since undefined means.... it is undefined\n return;\n }\n var t = -(this.origin.dot(normal) + distance) / denominator;\n // Return if the ray never intersects the plane\n return t >= 0 ? this.at(t, out) : undefined;\n };\n /**\n * 光线和圆求交\n * @param sphere - 类球对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectSphere = function (sphere, out) {\n var center = sphere.center;\n var vector = Ray.tempVec0.subtractVectors(center, this.origin);\n var tca = vector.dot(this.direction);\n var d2 = vector.dot(vector) - tca * tca;\n var radius2 = sphere.radius * sphere.radius;\n if (d2 > radius2) {\n return;\n }\n var thc = Math.sqrt(radius2 - d2);\n // t0 = first intersect point - entrance on front of sphere\n var t0 = tca - thc;\n // t1 = second intersect point - exit point on back of sphere\n var t1 = tca + thc;\n // test to see if t1 is behind the ray - if so, return null\n if (t1 < 0) {\n return;\n }\n // test to see if t0 is behind the ray:\n // if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n // in order to always return an intersect point that is in front of the ray.\n // else t0 is in front of the ray, so return the first collision point scaled by t0\n return t0 >= 0 ? this.at(t0, out) : this.at(t1, out);\n };\n /**\n * 光线和三角形求交\n * @param triangle - 类三角形对象\n * @param [out] - 交点\n * @param [backfaceCulling] - 是否背面剔除\n * @returns\n */\n Ray.prototype.intersectTriangle = function (triangle, out, backfaceCulling) {\n // FIXME: 交换out和backfaceCulling\n // Compute the offset origin, edges, and normal.\n // from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n var a = triangle.p0;\n var b = triangle.p1;\n var c = triangle.p2;\n var edge1 = Ray.tempVec0.subtractVectors(b, a);\n var edge2 = Ray.tempVec1.subtractVectors(c, a);\n var diff = Ray.tempVec2.subtractVectors(this.origin, a);\n var normal = Ray.tempVec3.crossVectors(edge1, edge2);\n // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n var DdN = this.direction.dot(normal);\n var sign;\n if (DdN > 0) {\n if (backfaceCulling) {\n return;\n }\n sign = 1;\n }\n else if (DdN < 0) {\n sign = -1;\n DdN = -DdN;\n }\n else {\n return;\n }\n edge2.crossVectors(diff, edge2);\n var DdQxE2 = sign * this.direction.dot(edge2);\n // b1 < 0, no intersection\n if (DdQxE2 < 0) {\n return;\n }\n edge1.cross(diff);\n var DdE1xQ = sign * this.direction.dot(edge1);\n // b2 < 0, no intersection\n if (DdE1xQ < 0) {\n return;\n }\n // b1+b2 > 1, no intersection\n if (DdQxE2 + DdE1xQ > DdN) {\n return;\n }\n // Line intersects triangle, check if ray does.\n var QdN = -sign * diff.dot(normal);\n // t < 0, no intersection\n if (QdN < 0) {\n return;\n }\n // Ray intersects triangle.\n return this.at(QdN / DdN, out);\n };\n Ray.tempVec0 = new Vector3();\n Ray.tempVec1 = new Vector3();\n Ray.tempVec2 = new Vector3();\n Ray.tempVec3 = new Vector3();\n return Ray;\n}());\n","import { Vector4 } from './vector4';\nexport var Color = /** @class */ (function () {\n /**\n * 构造函数,默认值为黑色\n * @param [r=0]\n * @param [g=0]\n * @param [b=0]\n * @param [a=0]\n */\n function Color(r, g, b, a) {\n if (r === void 0) { r = 0; }\n if (g === void 0) { g = 0; }\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 0; }\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n /**\n * 设置颜色\n * @param r - r 分量\n * @param g - g 分量\n * @param b - b 分量\n * @param a - a 分量\n * @returns\n */\n Color.prototype.set = function (r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n return this;\n };\n /**\n * 设置零颜色\n * @returns\n */\n Color.prototype.setZero = function () {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n return this;\n };\n /**\n * 通过标量数值设置颜色\n * @param num - 数值\n * @returns\n */\n Color.prototype.setFromNumber = function (num) {\n this.r = num;\n this.g = num;\n this.b = num;\n this.a = num;\n return this;\n };\n /**\n * 通过Vector4创建颜色\n * @param v - Vector4\n * @returns\n */\n Color.prototype.setFromVector4 = function (v) {\n this.r = v.x;\n this.g = v.y;\n this.b = v.z;\n this.a = v.w;\n return this;\n };\n /**\n * 通过数组创建颜色\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Color.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n this.r = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.g = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.b = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.a = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : 0;\n return this;\n };\n Color.prototype.setFromHSV = function (hue, saturation, value, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var chroma = value * saturation;\n var h = hue / 60;\n var x = chroma * (1 - Math.abs((h % 2) - 1));\n var r = 0;\n var g = 0;\n var b = 0;\n if (h >= 0 && h <= 1) {\n r = chroma;\n g = x;\n }\n else if (h >= 1 && h <= 2) {\n r = x;\n g = chroma;\n }\n else if (h >= 2 && h <= 3) {\n g = chroma;\n b = x;\n }\n else if (h >= 3 && h <= 4) {\n g = x;\n b = chroma;\n }\n else if (h >= 4 && h <= 5) {\n r = x;\n b = chroma;\n }\n else if (h >= 5 && h <= 6) {\n r = chroma;\n b = x;\n }\n var m = value - chroma;\n return this.set(r + m, g + m, b + m, alpha);\n };\n Color.prototype.setFromHexString = function (hex) {\n if (hex.substring(0, 1) !== '#' || (hex.length !== 9 && hex.length !== 7)) {\n return this;\n }\n var r = parseInt(hex.substring(1, 3), 16) / 255.0;\n var g = parseInt(hex.substring(3, 5), 16) / 255.0;\n var b = parseInt(hex.substring(5, 7), 16) / 255.0;\n var a = hex.length === 9 ? parseInt(hex.substring(7, 9), 16) / 255.0 : 1.0;\n return this.set(r, g, b, a);\n };\n /**\n * 拷贝颜色\n * @param v - 复制对象\n * @returns 拷贝结果\n */\n Color.prototype.copyFrom = function (v) {\n this.r = v.r;\n this.g = v.g;\n this.b = v.b;\n this.a = v.a;\n return this;\n };\n /**\n * 克隆颜色\n * @returns 克隆结果\n */\n Color.prototype.clone = function () {\n return new Color(this.r, this.g, this.b, this.a);\n };\n /**\n * 根据下标设置颜色分量\n * @param index - 下标值\n * @param value - 分量值\n * @returns\n */\n Color.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.r = value;\n break;\n case 1:\n this.g = value;\n break;\n case 2:\n this.b = value;\n break;\n case 3:\n this.a = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取颜色分量\n * @param index - 下标\n * @returns 分量值\n */\n Color.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.r;\n case 1: return this.g;\n case 2: return this.b;\n case 3: return this.a;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 颜色相加\n * @param right - 相加对象,颜色 | 数字\n * @returns 相加结果\n */\n Color.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.r += right;\n this.g += right;\n this.b += right;\n this.a += right;\n }\n else if (right instanceof Array) {\n this.r += right[0];\n this.g += right[1];\n this.b += right[2];\n this.a += right[3];\n }\n else {\n this.r += right.r;\n this.g += right.g;\n this.b += right.b;\n this.a += right.a;\n }\n return this;\n };\n /**\n * 颜色相减\n * @param right - 相减对象,颜色 | 数字\n * @returns 相减结果\n */\n Color.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.r -= right;\n this.g -= right;\n this.b -= right;\n this.a -= right;\n }\n else if (right instanceof Array) {\n this.r -= right[0];\n this.g -= right[1];\n this.b -= right[2];\n this.a -= right[3];\n }\n else {\n this.r -= right.r;\n this.g -= right.g;\n this.b -= right.b;\n this.a -= right.a;\n }\n return this;\n };\n /**\n * 颜色相乘\n * @param right - 相乘对象,对象 | 数字\n * @returns 颜色\n */\n Color.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.r *= right;\n this.g *= right;\n this.b *= right;\n this.a *= right;\n }\n else if (right instanceof Array) {\n this.r *= right[0];\n this.g *= right[1];\n this.b *= right[2];\n this.a *= right[3];\n }\n else {\n this.r *= right.r;\n this.g *= right.g;\n this.b *= right.b;\n this.a *= right.a;\n }\n return this;\n };\n /**\n * 颜色相除\n * @param right - 相除对象,对象 | 数字\n * @returns 颜色\n */\n Color.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.r /= right;\n this.g /= right;\n this.b /= right;\n this.a /= right;\n }\n else if (right instanceof Array) {\n this.r /= right[0];\n this.g /= right[1];\n this.b /= right[2];\n this.a /= right[3];\n }\n else {\n this.r /= right.r;\n this.g /= right.g;\n this.b /= right.b;\n this.a /= right.a;\n }\n return this;\n };\n /**\n * 颜色缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Color.prototype.scale = function (v) {\n this.r *= v;\n this.g *= v;\n this.b *= v;\n this.a *= v;\n return this;\n };\n /**\n * 颜色求最小值\n * @param v - 颜色或数值\n * @returns 最小值\n */\n Color.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.r = Math.min(this.r, v);\n this.g = Math.min(this.g, v);\n this.b = Math.min(this.b, v);\n this.a = Math.min(this.a, v);\n }\n else {\n this.r = Math.min(this.r, v.r);\n this.g = Math.min(this.g, v.g);\n this.b = Math.min(this.b, v.b);\n this.a = Math.min(this.a, v.a);\n }\n return this;\n };\n /**\n * 颜色求最大值\n * @param v - 颜色或数值\n * @returns 最大值\n */\n Color.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.r = Math.max(this.r, v);\n this.g = Math.max(this.g, v);\n this.b = Math.max(this.b, v);\n this.a = Math.max(this.a, v);\n }\n else {\n this.r = Math.max(this.r, v.r);\n this.g = Math.max(this.g, v.g);\n this.b = Math.max(this.b, v.b);\n this.a = Math.max(this.a, v.a);\n }\n return this;\n };\n /**\n * 颜色阈值约束\n * @param min - 最小值\n * @param max - 最大值\n * @returns 颜色\n */\n Color.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 颜色求线性插值\n * @param v - 颜色\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Color.prototype.lerp = function (v, alpha) {\n this.r += (v.r - this.r) * alpha;\n this.g += (v.g - this.g) * alpha;\n this.b += (v.b - this.b) * alpha;\n this.a += (v.a - this.a) * alpha;\n return this;\n };\n /**\n * 计算颜色亮度值\n * @returns 亮度值\n */\n Color.prototype.luminance = function () {\n return this.r * 0.3 + this.g * 0.59 + this.b * 0.11;\n };\n /**\n * 颜色判等\n * @param v - 颜色\n * @returns 判等结果\n */\n Color.prototype.equals = function (v) {\n return v.r === this.r && v.g === this.g && v.b === this.b && v.a === this.a;\n };\n Color.prototype.toLinear = function () {\n this.r = Color.gammaToLinear(this.r);\n this.g = Color.gammaToLinear(this.g);\n this.b = Color.gammaToLinear(this.b);\n return this;\n };\n Color.prototype.toGamma = function () {\n this.r = Color.linearToGamma(this.r);\n this.g = Color.linearToGamma(this.g);\n this.b = Color.linearToGamma(this.b);\n return this;\n };\n /**\n * 颜色转数组\n * @returns 数组\n */\n Color.prototype.toArray = function () {\n return [this.r, this.g, this.b, this.a];\n };\n Color.prototype.toVector4 = function () {\n return new Vector4(this.r, this.g, this.b, this.a);\n };\n /**\n * RGB 颜色空间转 HSV\n * @param result HSV 值\n */\n Color.prototype.toHSV = function () {\n var _a;\n var r = (_a = this, _a.r), g = _a.g, b = _a.b, a = _a.a;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var v = max;\n var dm = max - min;\n var h = 0;\n var s = 0;\n if (max !== 0) {\n s = dm / max;\n }\n if (max != min) {\n if (max == r) {\n h = (g - b) / dm;\n if (g < b) {\n h += 6;\n }\n }\n else if (max == g) {\n h = (b - r) / dm + 2;\n }\n else if (max == b) {\n h = (r - g) / dm + 4;\n }\n h *= 60;\n }\n return new Color(h, s, v, a);\n };\n Color.prototype.toHexString = function (includeAlpha) {\n if (includeAlpha === void 0) { includeAlpha = true; }\n var R = Color.ToHex(Math.round(this.r * 255));\n var G = Color.ToHex(Math.round(this.g * 255));\n var B = Color.ToHex(Math.round(this.b * 255));\n var A = Color.ToHex(Math.round(this.a * 255));\n if (includeAlpha) {\n return '#' + R + G + B + A;\n }\n else {\n return '#' + R + G + B;\n }\n };\n Color.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n array[offset + 3] = this.a;\n };\n /**\n * 通过标量数值创建颜色\n * @param num - 数值\n * @returns\n */\n Color.fromNumber = function (num) {\n return new Color().setFromNumber(num);\n };\n /**\n * 通过数组创建颜色\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Color.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Color().setFromArray(array, offset);\n };\n /**\n * 通过 hex 字符串创建颜色\n * @param hex - hex 字符串\n * @returns\n */\n Color.fromHexString = function (hex) {\n return new Color().setFromHexString(hex);\n };\n Color.fromHSV = function (hue, saturation, value, alpha) {\n if (alpha === void 0) { alpha = 1; }\n return new Color().setFromHSV(hue, saturation, value, alpha);\n };\n /**\n * 颜色值从 Gamma 空间转到线性空间\n * @param v - Gamma 空间颜色值\n * @returns 线性空间颜色值\n */\n Color.gammaToLinear = function (v) {\n if (v <= 0.0) {\n return 0.0;\n }\n else if (v <= 0.04045) {\n return v / 12.92;\n }\n else if (v < 1.0) {\n return Math.pow((v + 0.055) / 1.055, 2.4);\n }\n else {\n return Math.pow(v, 2.4);\n }\n };\n /**\n * 颜色值从线性空间转到 Gamma 空间\n * @param value - 线性空间颜色值\n * @returns Gamma 空间颜色值\n */\n Color.linearToGamma = function (value) {\n if (value <= 0.0) {\n return 0.0;\n }\n else if (value < 0.0031308) {\n return 12.92 * value;\n }\n else if (value < 1.0) {\n return 1.055 * Math.pow(value, 0.41666) - 0.055;\n }\n else {\n return Math.pow(value, 0.41666);\n }\n };\n Color.ToHex = function (i) {\n var str = i.toString(16);\n if (i <= 15) {\n return ('0' + str).toUpperCase();\n }\n return str.toUpperCase();\n };\n /**\n * 颜色的常量\n */\n Color.BLACK = new Color(0, 0, 0, 1); // 纯黑色\n Color.BLUE = new Color(0, 0, 1, 1); // 纯蓝色\n Color.CLEAR = new Color(0, 0, 0, 0); // 完全透明\n Color.CYAN = new Color(0, 1, 1, 1); // 青色\n Color.GRAY = new Color(0.5, 0.5, 0.5, 1); // 灰色\n Color.GREEN = new Color(0, 1, 0, 1); // 纯绿色\n Color.MAGENTA = new Color(1, 0, 1, 1); // 洋红色\n Color.RED = new Color(1, 0, 0, 1); // 纯红色\n Color.WHITE = new Color(1, 1, 1, 1); // 纯白色\n Color.YELLOW = new Color(1, 0.92, 0.016, 1); // 黄色\n return Color;\n}());\n","import { Vector3 } from './vector3';\n/**\n * 三维包围盒\n */\nvar Box3 = /** @class */ (function () {\n /**\n * 构造函数,传入值为空时表示空包围盒\n * @param [min=new Vector3(Infinity)] - 最小角点\n * @param [max=new Vector3(-Infinity)] - 最大角点\n */\n function Box3(min, max) {\n if (min === void 0) { min = new Vector3(Infinity, Infinity, Infinity); }\n if (max === void 0) { max = new Vector3(-Infinity, -Infinity, -Infinity); }\n this.min = min.clone();\n this.max = max.clone();\n }\n /**\n * 设置三维包围盒的值\n * @param min - 三维包围盒最小点\n * @param max - 三维包围盒最大点\n * @returns\n */\n Box3.prototype.set = function (min, max) {\n this.min.copyFrom(min);\n this.max.copyFrom(max);\n return this;\n };\n /**\n * 通过数组构建三维包围盒\n * @param array - 数组集合(每三个数视为一个三维空间点)\n * @returns 三维包围盒\n */\n Box3.prototype.setFromArray = function (array) {\n var minX = Number(Infinity);\n var minY = Number(Infinity);\n var minZ = Number(Infinity);\n var maxX = -Infinity;\n var maxY = -Infinity;\n var maxZ = -Infinity;\n for (var i = 0, l = array.length; i < l; i += 3) {\n var x = array[i];\n var y = array[i + 1];\n var z = array[i + 2];\n if (x < minX) {\n minX = x;\n }\n if (y < minY) {\n minY = y;\n }\n if (z < minZ) {\n minZ = z;\n }\n if (x > maxX) {\n maxX = x;\n }\n if (y > maxY) {\n maxY = y;\n }\n if (z > maxZ) {\n maxZ = z;\n }\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n };\n /**\n * 通过三维空间点构建三维包围盒\n * @param points - 三维空间点集合\n * @returns 三维包围盒\n */\n Box3.prototype.setFromPoints = function (points) {\n this.makeEmpty();\n for (var i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n };\n /**\n * 通过三维空间点(包围盒中心)和大小确定包围盒\n * @param center - 三维包围盒中心点\n * @param size - 三维包围盒大小值\n * @returns 三维包围盒\n */\n Box3.prototype.setFromCenterAndSize = function (center, size) {\n var halfSize = size.clone().multiply(0.5);\n this.min.copyFrom(center).subtract(halfSize);\n this.max.copyFrom(center).add(halfSize);\n return this;\n };\n // TODO\n /**\n * 通过实体构建包围盒\n * @param object - 构件实体\n * @returns 三维包围盒\n */\n Box3.prototype.setFromObject = function (object) {\n this.makeEmpty();\n return this.expandByObject(object);\n };\n /**\n * 克隆三维包围盒\n * @returns 克隆结果\n */\n Box3.prototype.clone = function () {\n return new Box3().copyFrom(this);\n };\n /**\n * 复制三维包围盒\n * @param box - 复制对象\n * @returns 复制结果\n */\n Box3.prototype.copyFrom = function (box) {\n this.min.copyFrom(box.min);\n this.max.copyFrom(box.max);\n return this;\n };\n /**\n * 三维包围盒置空\n * @returns 置空结果\n */\n Box3.prototype.makeEmpty = function () {\n this.min.x = this.min.y = this.min.z = Number(Infinity);\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n };\n /**\n * 三维包围盒判空\n * @returns 判空结果\n */\n Box3.prototype.isEmpty = function () {\n // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n return this.max.x < this.min.x\n || this.max.y < this.min.y\n || this.max.z < this.min.z;\n };\n /**\n * 获取三维包围盒中心\n * @param [target=new Vector3()]\n * @returns\n */\n Box3.prototype.getCenter = function (target) {\n if (target === void 0) { target = new Vector3(); }\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiply(0.5);\n };\n /**\n * 获取三维包围盒大小\n * @param [target=new Vector3()] - 结果保存对象\n * @returns 三维包围盒大小\n */\n Box3.prototype.getSize = function (target) {\n if (target === void 0) { target = new Vector3(); }\n return this.isEmpty() ? target.set(0, 0, 0) : target.subtractVectors(this.max, this.min);\n };\n /**\n * 通过三维空间点扩展三维包围盒\n * @param point - 三维空间点\n * @returns 扩展结果\n */\n Box3.prototype.expandByPoint = function (point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n };\n /**\n * 通过三维向量扩展三维包围盒\n * @param vector - 三维向量\n * @returns 扩展结果\n */\n Box3.prototype.expandByVector = function (vector) {\n this.min.subtract(vector);\n this.max.add(vector);\n return this;\n };\n /**\n * 通过实数扩展三维包围盒\n * @param scalar - 扩展大小\n * @returns 扩展结果\n */\n Box3.prototype.expandByScalar = function (scalar) {\n this.min.add(-scalar);\n this.max.add(scalar);\n return this;\n };\n /**\n * 通过包围盒扩展三维包围盒\n * @param box\n * @returns\n */\n Box3.prototype.expandByBox = function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n };\n // TODO\n /**\n * 通过实体扩展三维包围盒\n * @param object - 构件实体\n * @returns 扩展结果\n */\n Box3.prototype.expandByObject = function (object) {\n // Computes the world-axis-aligned bounding box of an object (including its children),\n // accounting for both the object's, and children's, world transforms\n object.updateWorldMatrix(false, false);\n var geometry = object.geometry;\n if (geometry !== undefined) {\n if (geometry.boundingBox === null) {\n geometry.computeBoundingBox();\n }\n var box3 = new Box3();\n box3.copyFrom(geometry.boundingBox);\n box3.applyMatrix4(object.matrixWorld);\n this.union(box3);\n }\n var children = object.children;\n for (var i = 0, l = children.length; i < l; i++) {\n this.expandByObject(children[i]);\n }\n return this;\n };\n /**\n * 判断三维包围盒相交关系(if this intersect other)\n * @param point - 三维空间点\n * @returns 点包含判断结果\n */\n Box3.prototype.containsPoint = function (point) {\n return !(point.x < this.min.x\n || point.x > this.max.x\n || point.y < this.min.y\n || point.y > this.max.y\n || point.z < this.min.z\n || point.z > this.max.z);\n };\n /**\n * 判断三维包围盒与三维包围盒的包含关系\n * @param other - 三维包围盒\n * @returns 包围盒包含结果(true 表示包含 other, false 表示不包含 other)\n */\n Box3.prototype.containsBox = function (other) {\n return this.min.x <= other.min.x\n && this.max.x >= other.max.x\n && this.min.y <= other.min.y\n && this.max.y >= other.max.y\n && this.min.z <= other.min.z\n && this.max.z >= other.max.z;\n };\n // TODO\n /**\n * 获取点在三维包围盒的比例位置\n * @param point - 三维空间点\n * @param [target=new Vector3()] - 结果保存对象\n * @returns 点在包围盒比例位置\n */\n Box3.prototype.getParameter = function (point, target) {\n if (target === void 0) { target = new Vector3(); }\n // This can potentially have a divide by zero if the box\n // has a size dimension of 0.\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n };\n /**\n * 判断三维包围盒相交关系(if this intersect other)\n * @param other - 三维包围盒\n * @returns 相交判断结果\n */\n Box3.prototype.intersectsBox = function (other) {\n // using 6 splitting planes to rule out intersections.\n return !(other.max.x < this.min.x || other.min.x > this.max.x\n || other.max.y < this.min.y || other.min.y > this.max.y\n || other.max.z < this.min.z || other.min.z > this.max.z);\n };\n /**\n * 判断三维包围盒和球是否相交\n * @param sphere\n * @returns\n */\n Box3.prototype.intersectsSphere = function (sphere) {\n // Find the point on the AABB closest to the sphere center.\n var vector = new Vector3();\n this.clampPoint(sphere.center, vector);\n // If that point is inside the sphere, the AABB and sphere intersect.\n return vector.distanceSquared(sphere.center) <= (sphere.radius * sphere.radius);\n };\n /**\n * 求点与三维包围盒的最近点\n * @param point - 三维空间点\n * @param [target=new Vector3()] - 结果存放对象\n * @returns 计算结果\n */\n Box3.prototype.clampPoint = function (point, target) {\n if (target === void 0) { target = new Vector3(); }\n return target.copyFrom(point).clamp(this.min, this.max);\n };\n /**\n * 三维空间点到三维包围盒的距离\n * @param point - 三维包围盒\n * @returns 距离结果\n */\n Box3.prototype.distanceToPoint = function (point) {\n var clampedPoint = point.clone().clamp(this.min, this.max);\n return clampedPoint.subtract(point).length();\n };\n /**\n * 三维包围盒求交集\n * @param box - 三维包围盒\n * @returns 求交结果\n */\n Box3.prototype.intersect = function (box) {\n this.min.max(box.min);\n this.max.min(box.max);\n // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n if (this.isEmpty()) {\n this.makeEmpty();\n }\n return this;\n };\n /**\n * 三维包围盒求并集\n * @param box - 三维包围盒\n * @returns 求并结果\n */\n Box3.prototype.union = function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n };\n /**\n * 通过三维变换矩阵变化三维包围盒\n * @param matrix - 三维变换矩阵\n * @returns 变换结果\n */\n Box3.prototype.applyMatrix4 = function (matrix, center) {\n if (center === void 0) { center = new Vector3(); }\n // transform of empty box is an empty box.\n if (this.isEmpty()) {\n return this;\n }\n var points = this.getOBBPoints(matrix, center);\n this.setFromPoints(points);\n return this;\n };\n Box3.prototype.getOBBPoints = function (matrix, center) {\n if (center === void 0) { center = new Vector3(); }\n // transform of empty box is an empty box.\n if (this.isEmpty()) {\n return [];\n }\n var points = [];\n // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n points[0] = new Vector3(this.min.x, this.min.y, this.min.z); // 000\n points[1] = new Vector3(this.min.x, this.min.y, this.max.z); // 001\n points[2] = new Vector3(this.min.x, this.max.y, this.min.z); // 010\n points[3] = new Vector3(this.min.x, this.max.y, this.max.z); // 011\n points[4] = new Vector3(this.max.x, this.min.y, this.min.z); // 100\n points[5] = new Vector3(this.max.x, this.min.y, this.max.z); // 101\n points[6] = new Vector3(this.max.x, this.max.y, this.min.z); // 110\n points[7] = new Vector3(this.max.x, this.max.y, this.max.z); // 111\n points.forEach(function (p) {\n p.subtract(center);\n p.applyMatrix(matrix);\n p.add(center);\n });\n return points;\n };\n /**\n * 通过包围盒获取包围球\n * @param target\n * @returns\n */\n Box3.prototype.getBoundingSphere = function (target) {\n this.getCenter(target.center);\n var vector = new Vector3();\n target.radius = this.getSize(vector).length() * 0.5;\n return target;\n };\n /**\n * 三维包围盒位移\n * @param offset - 三维位移向量\n * @returns 位移结果\n */\n Box3.prototype.translate = function (offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n };\n /**\n * 三维包围盒判等\n * @param other - 三维包围盒\n * @returns 判等结果\n */\n Box3.prototype.equals = function (other) {\n return other.min.equals(this.min) && other.max.equals(this.max);\n };\n return Box3;\n}());\nexport { Box3 };\n","import { Box3 } from './box3';\nimport { Vector3 } from './vector3';\n/**\n * 球\n */\nvar Sphere = /** @class */ (function () {\n /**\n * 构造函数\n * @param [center=Vector3.ZERO] - 球心,默认值为(0, 0, 0)\n * @param [radius=-1] - 半径\n */\n function Sphere(center, radius) {\n if (center === void 0) { center = Vector3.ZERO; }\n if (radius === void 0) { radius = -1; }\n this.center = center.clone();\n this.radius = radius;\n }\n /**\n * 通过参数设置球\n * @param center - 球心\n * @param radius - 半径\n * @returns\n */\n Sphere.prototype.set = function (center, radius) {\n this.center.copyFrom(center);\n this.radius = radius;\n return this;\n };\n /**\n * 通过空间点与球心设置球\n * @param points - 三维空间点\n * @param [optionalCenter] - 指定球心\n * @returns\n */\n Sphere.prototype.setFromPoints = function (points, optionalCenter) {\n var center = this.center;\n if (optionalCenter !== undefined) {\n center.copyFrom(optionalCenter);\n var maxRadiusSq = 0;\n for (var i = 0; i < points.length; i++) {\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceSquared(points[i]));\n }\n this.radius = Math.sqrt(maxRadiusSq);\n }\n else {\n var box = new Box3().setFromPoints(points);\n box.getCenter(center);\n this.radius = box.getSize().length() / 2;\n }\n return this;\n };\n /**\n * 复制球\n * @param sphere - 球信息\n * @returns 复制结果\n */\n Sphere.prototype.copyFrom = function (sphere) {\n this.center.copyFrom(sphere.center);\n this.radius = sphere.radius;\n return this;\n };\n /**\n * 球判空\n * @returns 判空结果\n */\n Sphere.prototype.isEmpty = function () {\n return this.radius < 0;\n };\n /**\n * 球置空\n * @returns 置空结果\n */\n Sphere.prototype.makeEmpty = function () {\n this.center.set(0, 0, 0);\n this.radius = -1;\n return this;\n };\n /**\n * 三维空间点包围判断\n * @param point - 三维空间点\n * @returns 空间点包含判断\n */\n Sphere.prototype.containsPoint = function (point) {\n return point.distanceSquared(this.center) <= (this.radius * this.radius);\n };\n /**\n * 空间点与球表面的最短距离\n * @param point - 三维空间点\n * @returns 距离结果\n */\n Sphere.prototype.distanceToPoint = function (point) {\n return (point.distance(this.center) - this.radius);\n };\n /**\n * 与球相交判断\n * @param sphere - 球\n * @returns 相交判断结果\n */\n Sphere.prototype.intersectsSphere = function (sphere) {\n var radiusSum = this.radius + sphere.radius;\n return sphere.center.distanceSquared(this.center) <= (radiusSum * radiusSum);\n };\n /**\n * 与包围盒相交判断\n * @param box - 三维包围盒\n * @returns 相交判断结果\n */\n Sphere.prototype.intersectsBox = function (box) {\n return box.intersectsSphere(this);\n };\n /**\n * 收敛空间点在球范围内\n * 注:乘法的效率要比开方高很多\n * @param point - 三维空间点\n * @param [target] - 结果保存对象\n * @returns 收敛结果\n */\n Sphere.prototype.clampPoint = function (point, target) {\n var deltaLengthSq = this.center.distanceSquared(point);\n if (target === undefined) {\n target = new Vector3();\n }\n target.copyFrom(point);\n if (deltaLengthSq > (this.radius * this.radius)) {\n target.subtract(this.center).normalize();\n target.multiply(this.radius).add(this.center);\n }\n return target;\n };\n /**\n * 根据包围盒获取球\n * @param target - 包围盒\n * @returns 球\n */\n Sphere.prototype.getBoundingBox = function (target) {\n if (target === undefined) {\n target = new Box3();\n }\n if (this.isEmpty()) {\n // Empty sphere produces empty bounding box\n target.makeEmpty();\n return target;\n }\n target.set(this.center, this.center);\n target.expandByScalar(this.radius);\n return target;\n };\n /**\n * 球空间变换\n * @param matrix - 空间变化矩阵\n * @returns 变换结果\n */\n Sphere.prototype.applyMatrix4 = function (matrix) {\n var mt = matrix.elements;\n var scaleXSq = mt[0] * mt[0] + mt[1] * mt[1] + mt[2] * mt[2];\n var scaleYSq = mt[4] * mt[4] + mt[5] * mt[5] + mt[6] * mt[6];\n var scaleZSq = mt[8] * mt[8] + mt[9] * mt[9] + mt[10] * mt[10];\n var maxScale = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n this.center.applyMatrix(matrix);\n this.radius = this.radius * maxScale;\n return this;\n };\n /**\n * 球位移\n * @param offset - 位移信息\n * @returns 位移结果\n */\n Sphere.prototype.translate = function (offset) {\n this.center.add(offset);\n return this;\n };\n /**\n * 通过三维空间点对球进行扩展\n * @param point - 扩展点\n * @returns 扩展结果\n */\n Sphere.prototype.expandByPoint = function (point) {\n var vector = new Vector3().subtractVectors(point, this.center);\n var lengthSquared = vector.lengthSquared();\n if (lengthSquared > (this.radius * this.radius)) {\n var length_1 = Math.sqrt(lengthSquared);\n var missingRadiusHalf = (length_1 - this.radius) * 0.5;\n // Nudge this sphere towards the target point. Add half the missing distance to radius,\n // and the other half to position. This gives a tighter enclosure, instead of if\n // the whole missing distance were just added to radius.\n this.center.add(vector.multiply(missingRadiusHalf / length_1));\n this.radius += missingRadiusHalf;\n }\n return this;\n };\n /**\n * 包围球求并集\n * @param sphere - 包围球\n * @returns 求并结果\n */\n Sphere.prototype.union = function (sphere) {\n // To enclose another sphere into this sphere, we only need to enclose two points:\n // 1) Enclose the farthest point on the other sphere into this sphere.\n // 2) Enclose the opposite point of the farthest point into this sphere.\n var v1 = new Vector3();\n var toFarthestPoint = new Vector3();\n toFarthestPoint.subtractVectors(sphere.center, this.center).normalize().multiply(sphere.radius);\n this.expandByPoint(v1.copyFrom(sphere.center).add(toFarthestPoint));\n this.expandByPoint(v1.copyFrom(sphere.center).subtract(toFarthestPoint));\n return this;\n };\n /**\n * 包围球求交集\n * @param other - 其它包围球\n * @returns 求交结果\n */\n Sphere.prototype.intersect = function (other) {\n var vector = new Vector3().subtractVectors(this.center, other.center);\n var distance = vector.length();\n var radiusSum = this.radius + other.radius;\n if (distance > radiusSum) {\n return this.makeEmpty();\n }\n this.center = this.center.add(vector.normalize().multiply(distance / 2));\n this.radius = this.radius + other.radius - distance;\n return this;\n };\n /**\n * 包围球判等\n * @param sphere - 包围球\n * @returns 判等结果\n */\n Sphere.prototype.equals = function (sphere) {\n return sphere.center.equals(this.center) && (sphere.radius === this.radius);\n };\n /**\n * 包围球克隆\n * @returns 克隆结果\n */\n Sphere.prototype.clone = function () {\n return new Sphere().copyFrom(this);\n };\n return Sphere;\n}());\nexport { Sphere };\n","/**\n * Earcut.js from: https://github.com/mapbox/earcut/tree/v2.2.2\n */\n\nexport function earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nexport function linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nexport function filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nexport function isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nexport function isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nexport function eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nexport function indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nexport function isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nexport function equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nexport function intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nexport function locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nexport function splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nexport function removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nexport function Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","/*!\n * Name: @galacean/effects-specification\n * Description: Galacean Effects JSON Specification\n * Author: Ant Group CO., Ltd.\n * Version: v1.0.0\n */\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nvar RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nvar BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nvar SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 蒙版模式\n */\nvar MaskMode;\n(function (MaskMode) {\n /**\n * 无蒙版\n */\n MaskMode[MaskMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * 蒙版\n */\n MaskMode[MaskMode[\"MASK\"] = 1] = \"MASK\";\n /**\n * 被遮挡\n */\n MaskMode[MaskMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n MaskMode[MaskMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(MaskMode || (MaskMode = {}));\n/**\n * 发射器形状\n */\nvar ShapeType;\n(function (ShapeType) {\n /**\n * 没有类型\n */\n ShapeType[ShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ShapeType[ShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ShapeType[ShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ShapeType[ShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ShapeType[ShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ShapeType[ShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ShapeType[ShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ShapeType[ShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ShapeType[ShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ShapeType[ShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ShapeType || (ShapeType = {}));\n/**\n * 插件类型\n */\nvar PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nvar InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nvar InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nvar ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * 滤镜图层\n */\n ItemType[\"filter\"] = \"8\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nvar RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nvar ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\n\nvar END_BEHAVIOR_DESTROY = 0;\nvar END_BEHAVIOR_PAUSE = 1;\nvar END_BEHAVIOR_FORWARD = 2;\nvar END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nvar END_BEHAVIOR_FREEZE = 4;\nvar END_BEHAVIOR_RESTART = 5;\nvar END_BEHAVIOR_DESTROY_CHILDREN = 6;\nvar CAMERA_CLIP_MODE_VERTICAL = 1;\nvar CAMERA_CLIP_MODE_NORMAL = 0;\n\nvar CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = CAMERA_CLIP_MODE_VERTICAL] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = CAMERA_CLIP_MODE_NORMAL] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n/**\n * 结束行为\n */\nvar CompositionEndBehavior;\n(function (CompositionEndBehavior) {\n /**\n * 销毁\n */\n CompositionEndBehavior[CompositionEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n /**\n * 暂停\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause\"] = END_BEHAVIOR_PAUSE] = \"pause\";\n /**\n * 重播\n */\n CompositionEndBehavior[CompositionEndBehavior[\"restart\"] = END_BEHAVIOR_RESTART] = \"restart\";\n /**\n * 无限播放\n */\n CompositionEndBehavior[CompositionEndBehavior[\"forward\"] = END_BEHAVIOR_FORWARD] = \"forward\";\n /**\n * 销毁并保留最后一帧\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause_destroy\"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = \"pause_destroy\";\n})(CompositionEndBehavior || (CompositionEndBehavior = {}));\n\n/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nvar ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n *直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nvar BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n\nvar ItemEndBehavior;\n(function (ItemEndBehavior) {\n ItemEndBehavior[ItemEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n ItemEndBehavior[ItemEndBehavior[\"loop\"] = END_BEHAVIOR_RESTART] = \"loop\";\n ItemEndBehavior[ItemEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(ItemEndBehavior || (ItemEndBehavior = {}));\nvar ParentItemEndBehavior;\n(function (ParentItemEndBehavior) {\n ParentItemEndBehavior[ParentItemEndBehavior[\"destroyChildren\"] = END_BEHAVIOR_DESTROY_CHILDREN] = \"destroyChildren\";\n})(ParentItemEndBehavior || (ParentItemEndBehavior = {}));\n\n/**\n * 粒子交互行为\n */\nvar ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n\nvar ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n\nvar ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n\n// 材质类型\nvar MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nvar MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n\n/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nvar RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n})(RenderMode3D || (RenderMode3D = {}));\n\nvar TextOverflow;\n(function (TextOverflow) {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n TextOverflow[TextOverflow[\"display\"] = 0] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 1] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 2] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nvar TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nvar TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\n/**\n * 文本字重\n */\nvar TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nvar FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction arrAdd(arr, item) {\n if (!arr.includes(item)) {\n arr.push(item);\n return true;\n }\n}\n/**\n * @deprecated 请直接使用 Array.prototype.forEach 或 for...of\n * @param object\n * @param callback\n * @returns the mutated input object\n */\nfunction forEach(object, callback, thisObj) {\n if (object) {\n for (var name_1 in object) {\n if (Object.hasOwnProperty.call(object, name_1)) {\n callback.call(thisObj, object[name_1], name_1);\n }\n }\n }\n return object;\n}\nfunction ensureFixedNumber(a) {\n if (Number.isFinite(a)) {\n return [ValueType.CONSTANT, a];\n }\n if (a) {\n if (a[0] === 'lines') {\n return [ValueType.LINE, a[1]];\n }\n if (a[0] === 'curve') {\n return [ValueType.CURVE, a[1]];\n }\n if (a[0] === 'static') {\n return [ValueType.CONSTANT, a[1]];\n }\n }\n}\nfunction ensureFixedNumberWithRandom(a, p) {\n if (Array.isArray(a) && a[0] === 'random') {\n return [ValueType.CONSTANT, a[1][p]];\n }\n return ensureFixedNumber(a);\n}\nfunction ensureRGBAValue(a) {\n if (a && a[0] === 'color') {\n return colorToArr(a[1], true);\n }\n return [1, 1, 1, 1];\n}\nfunction ensureColorExpression(a, normalized) {\n if (a) {\n if (a[0] === 'colors') {\n return [ValueType.COLORS, a[1].map(function (color) { return colorToArr(color, normalized); })];\n }\n else if (a[0] === 'gradient') {\n return ensureGradient(a[1], normalized);\n }\n else if (a[0] === 'color') {\n return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];\n }\n }\n}\nfunction ensureNumberExpression(a) {\n if (a && a[0] === 'random') {\n return [ValueType.RANDOM, a[1]];\n }\n return ensureFixedNumber(a);\n}\nfunction ensureValueGetter(a) {\n if (Array.isArray(a) && typeof a[0] === 'string') {\n return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;\n }\n return a;\n}\nfunction ensureGradient(a, normalized) {\n if (a) {\n var stops_1 = [];\n Object.getOwnPropertyNames(a).forEach(function (p) {\n var stop = parsePercent(p);\n var color = colorToArr(a[p], normalized);\n stops_1.push([stop, color[0], color[1], color[2], color[3]]);\n });\n stops_1 = stops_1.sort(function (a, b) { return a[0] - b[0]; });\n return [ValueType.GRADIENT_COLOR, stops_1];\n }\n}\nfunction colorToArr(hex, normalized) {\n var ret;\n if (typeof hex === 'string') {\n hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n var m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n if (m) {\n var a = +m[4];\n ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];\n }\n else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n // eslint-disable-next-line no-cond-assign\n }\n else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255] || [0, 0, 0, 255];\n }\n }\n else if (hex instanceof Array) {\n ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];\n }\n if (normalized) {\n // @ts-expect-error\n ret = normalizeColor(ret);\n }\n // @ts-expect-error\n return ret;\n}\nfunction normalizeColor(a) {\n if (Array.isArray(a)) {\n return a.map(function (i) { return Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0; });\n }\n}\nfunction parsePercent(c) {\n var match = /^(-)?([\\d+.]+)%$/.exec(c);\n if (match) {\n return +match[2] / 100 * (match[1] ? -1 : 1);\n }\n return +c;\n}\nfunction getGradientColor(color, normalized) {\n if (Array.isArray(color)) {\n // @ts-expect-error\n return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);\n }\n else {\n return ensureGradient(color, normalized);\n }\n}\nfunction ensureFixedVec3(a) {\n if (a) {\n if (a.length === 3) {\n return [ValueType.CONSTANT_VEC3, a];\n }\n if (a[0] === 'path') {\n return [ValueType.LINEAR_PATH, a[1]];\n }\n if (a[0] === 'bezier') {\n return [ValueType.BEZIER_PATH, a[1]];\n }\n }\n}\nfunction objectValueToNumber(o) {\n var e_1, _a;\n try {\n for (var _b = __values(Object.entries(o)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n o[key] = Number(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return o;\n}\nfunction deleteEmptyValue(o) {\n var e_2, _a;\n try {\n for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (o[key] === undefined) {\n delete o[key];\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return o;\n}\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar d2r = Math.PI / 180;\nvar r2d = 180 / Math.PI;\nfunction quatFromXYZRotation(out, x, y, z) {\n var c1 = cos((x * d2r) / 2);\n var c2 = cos((y * d2r) / 2);\n var c3 = cos((z * d2r) / 2);\n var s1 = sin((x * d2r) / 2);\n var s2 = sin((y * d2r) / 2);\n var s3 = sin((z * d2r) / 2);\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n return out;\n}\nfunction clamp(v, min, max) {\n return v > max ? max : (v < min ? min : v);\n}\nfunction rotationZYXFromQuat(out, quat) {\n var x = quat[0];\n var y = quat[1];\n var z = quat[2];\n var w = quat[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var m11 = 1 - yy - zz, m12 = yx - wz;\n var m21 = yx + wz, m22 = 1 - xx - zz;\n var m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;\n out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;\n if (Math.abs(m31) < 0.9999999) {\n out[0] = Math.atan2(m32, m33) * r2d;\n out[2] = Math.atan2(m21, m11) * r2d;\n }\n else {\n out[0] = 0;\n out[2] = Math.atan2(-m12, m22) * r2d;\n }\n return out;\n}\n\nfunction getStandardParticleContent(particle) {\n var _a;\n var options = particle.options;\n var transform = particle.transform;\n var shape = {\n type: ShapeType.NONE,\n };\n if (particle.shape) {\n var shapeType = (_a = particle.shape.shape) === null || _a === void 0 ? void 0 : _a.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');\n shape = __assign(__assign({}, particle.shape), { type: ShapeType[shapeType] });\n if (particle.shape.upDirection) {\n var _b = __read(particle.shape.upDirection, 3), x = _b[0], y = _b[1], z = _b[2];\n if (x === 0 && y === 0 && z === 0) {\n delete shape.upDirection;\n }\n }\n }\n if (options.startTurbulence) {\n shape.turbulenceX = ensureNumberExpression(options.turbulenceX);\n shape.turbulenceY = ensureNumberExpression(options.turbulenceY);\n shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);\n }\n var emission = particle.emission;\n if (emission.bursts && emission.bursts.length > 0) {\n emission.bursts = emission.bursts.map(function (b) { return objectValueToNumber(b); });\n }\n if (emission.burstOffsets && emission.burstOffsets.length > 0) {\n emission.burstOffsets = emission.burstOffsets.map(function (b) { return objectValueToNumber(b); });\n }\n if (emission.rateOverTime) {\n emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);\n }\n var ret = {\n renderer: particle.renderer,\n shape: shape,\n splits: particle.splits,\n emission: emission,\n options: {\n startLifetime: ensureNumberExpression(options.startLifetime),\n start3DSize: !!options.start3DSize,\n startSize: ensureNumberExpression(options.startSize),\n startSizeX: ensureNumberExpression(options.startSizeX),\n startSizeY: ensureNumberExpression(options.startSizeY),\n sizeAspect: ensureNumberExpression(options.sizeAspect),\n maxCount: options.maxCount,\n startDelay: ensureNumberExpression(options.startDelay),\n startColor: ensureColorExpression(options.startColor, true),\n startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),\n particleFollowParent: options.particleFollowParent,\n },\n };\n if (options.start3DRotation) {\n ret.options.startRotationX = ensureNumberExpression(options.startRotationX);\n ret.options.startRotationY = ensureNumberExpression(options.startRotationY);\n }\n if (particle.filter) {\n var filter_1 = {};\n forEach(particle.filter, function (val, key) {\n // @ts-expect-error\n filter_1[key] = ensureValueGetter(val);\n });\n ret.filter = filter_1;\n }\n if (transform && transform.path) {\n ret.emitterTransform = {\n path: ensureFixedVec3(transform.path),\n };\n }\n var sizeOverLifetime = particle.sizeOverLifetime;\n if (sizeOverLifetime) {\n if (sizeOverLifetime.separateAxes) {\n ret.sizeOverLifetime = {\n separateAxes: true,\n x: ensureNumberExpression(sizeOverLifetime.x),\n y: ensureNumberExpression(sizeOverLifetime.y),\n };\n }\n else {\n ret.sizeOverLifetime = {\n size: ensureNumberExpression(sizeOverLifetime.size),\n };\n }\n }\n var velocityOverLifetime = particle.velocityOverLifetime || {};\n var sol = velocityOverLifetime.speedOverLifetime;\n if (sol) {\n sol = ensureFixedNumber(sol);\n }\n else {\n sol = undefined;\n }\n ret.positionOverLifetime = {\n gravity: options.gravity,\n gravityOverLifetime: ensureFixedNumber(options.gravityModifier),\n startSpeed: ensureNumberExpression(options.startSpeed),\n speedOverLifetime: sol,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureNumberExpression(velocityOverLifetime.linearX),\n linearY: ensureNumberExpression(velocityOverLifetime.linearY),\n linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),\n orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),\n orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),\n forceTarget: velocityOverLifetime.forceTarget,\n target: velocityOverLifetime.target,\n forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve),\n };\n deleteEmptyValue(ret.positionOverLifetime);\n var rotationOverLifetime = particle.rotationOverLifetime;\n if (rotationOverLifetime) {\n ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),\n };\n if (rotationOverLifetime.separateAxes) {\n ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);\n ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);\n }\n }\n var colorOverLifetime = particle.colorOverLifetime;\n if (colorOverLifetime) {\n var col = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n var textureSheetAnimation = particle.textureSheetAnimation;\n if (textureSheetAnimation) {\n ret.textureSheetAnimation = {\n row: textureSheetAnimation.row,\n col: textureSheetAnimation.col,\n total: textureSheetAnimation.total,\n animate: textureSheetAnimation.animate,\n cycles: ensureFixedNumber(textureSheetAnimation.cycles),\n animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),\n animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0),\n };\n }\n var trials = particle.trails;\n if (trials) {\n ret.trails = {\n lifetime: ensureNumberExpression(trials.lifetime),\n dieWithParticles: trials.dieWithParticles,\n maxPointPerTrail: trials.maxPointPerTrail,\n minimumVertexDistance: trials.minimumVertexDistance,\n widthOverTrail: ensureFixedNumber(trials.widthOverTrail),\n colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),\n blending: trials.blending,\n colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),\n inheritParticleColor: trials.inheritParticleColor,\n occlusion: trials.occlusion,\n transparentOcclusion: trials.transparentOcclusion,\n orderOffset: trials.orderOffset,\n sizeAffectsLifetime: trials.sizeAffectsLifetime,\n sizeAffectsWidth: trials.sizeAffectsWidth,\n texture: trials.texture,\n parentAffectsPosition: trials.parentAffectsPosition,\n opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),\n };\n }\n ret.trails && deleteEmptyValue(ret.trails);\n var interaction = particle.interaction;\n if (interaction) {\n ret.interaction = {\n behavior: interaction.behavior,\n radius: interaction.radius,\n multiple: interaction.multiple,\n };\n }\n return ret;\n}\n\nfunction getStandardNullContent(sprite, transform) {\n var _a;\n var opt = sprite.options;\n var velocityOverLifetime = sprite.velocityOverLifetime || {};\n var positionOverLifetime = {\n path: ensureFixedVec3((_a = sprite.transform) === null || _a === void 0 ? void 0 : _a.path),\n gravity: opt.gravity,\n gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),\n direction: opt.direction,\n startSpeed: opt.startSpeed,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureFixedNumber(velocityOverLifetime.linearX),\n linearY: ensureFixedNumber(velocityOverLifetime.linearY),\n linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),\n orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),\n orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),\n speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),\n };\n deleteEmptyValue(positionOverLifetime);\n var ret = {\n options: {\n startColor: ensureRGBAValue(opt.startColor),\n },\n positionOverLifetime: positionOverLifetime,\n };\n if (opt.startSize) {\n transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];\n }\n if (opt.startRotation) {\n if (!transform.rotation) {\n transform.rotation = [0, 0, opt.startRotation];\n }\n else {\n transform.rotation[2] += opt.startRotation;\n }\n }\n var rotationOverLifetime = sprite.rotationOverLifetime;\n if (rotationOverLifetime) {\n var rot = ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n };\n if (rot.separateAxes) {\n rot.x = ensureFixedNumber(rotationOverLifetime.x);\n rot.y = ensureFixedNumber(rotationOverLifetime.y);\n rot.z = ensureFixedNumber(rotationOverLifetime.z);\n }\n else {\n rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);\n }\n }\n var colorOverLifetime = sprite.colorOverLifetime;\n if (colorOverLifetime) {\n var col = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n var sizeOverLifetime = sprite.sizeOverLifetime;\n if (sizeOverLifetime) {\n ret.sizeOverLifetime = {\n separateAxes: sizeOverLifetime.separateAxes,\n size: ensureFixedNumber(sizeOverLifetime.size),\n x: ensureFixedNumber(sizeOverLifetime.x),\n y: ensureFixedNumber(sizeOverLifetime.y),\n z: ensureFixedNumber(sizeOverLifetime.z),\n };\n }\n return ret;\n}\nfunction getStandardSpriteContent(sprite, transform) {\n var ret = getStandardNullContent(sprite, transform);\n var texAni = sprite.textureSheetAnimation;\n if (texAni) {\n ret.textureSheetAnimation = {\n row: texAni.row,\n col: texAni.col,\n total: texAni.total || undefined,\n animate: texAni.animate,\n };\n }\n ret.renderer = sprite.renderer;\n if (sprite.splits) {\n ret.splits = sprite.splits;\n }\n if (sprite.interaction) {\n ret.interaction = sprite.interaction;\n }\n return ret;\n}\n\nfunction getStandardInteractContent(ui) {\n var options = ui.options;\n var option;\n switch (options.type) {\n case 'click': {\n option = {\n type: InteractType.CLICK,\n showPreview: options.showPreview,\n previewColor: options.previewColor && ensureRGBAValue(options.previewColor),\n behavior: options.behavior || InteractBehavior.NOTIFY,\n };\n break;\n }\n case 'drag': {\n option = {\n type: InteractType.DRAG,\n enableInEditor: !!options.enableInEditor,\n dxRange: options.dxRange,\n dyRange: options.dyRange,\n target: options.target,\n };\n break;\n }\n case 'message': {\n option = {\n type: InteractType.MESSAGE,\n };\n break;\n }\n }\n var ret = {\n // @ts-expect-error\n options: option,\n };\n return ret;\n}\n\nfunction getStandardCameraContent(model) {\n var _a, _b;\n var opt = model.options;\n var ret = {\n options: {\n fov: opt.fov,\n far: opt.far,\n near: opt.near,\n clipMode: opt.clipMode,\n },\n };\n var velocityOverLifetime = model.velocityOverLifetime;\n if (velocityOverLifetime || ((_a = model.transform) === null || _a === void 0 ? void 0 : _a.path)) {\n var positionOverLifetime = {\n path: ensureFixedVec3((_b = model.transform) === null || _b === void 0 ? void 0 : _b.path),\n linearX: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateX),\n linearY: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateY),\n linearZ: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateZ),\n };\n deleteEmptyValue(positionOverLifetime);\n ret.positionOverLifetime = positionOverLifetime;\n }\n var rol = model.rotationOverLifetime;\n if (rol) {\n var rotationOverLifetime = {\n separateAxes: rol.separateAxes,\n x: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateX),\n y: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateY),\n z: rol.separateAxes ? ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateZ) : ensureFixedNumber(rol.rotation),\n };\n deleteEmptyValue(rotationOverLifetime);\n ret.rotationOverLifetime = rotationOverLifetime;\n }\n return ret;\n}\n\nvar convertParams = [\n 'strength',\n 'bloomAddon',\n 'colorAddon',\n 'period',\n 'waveMovement',\n 'colorThreshold',\n 'xOpacity',\n 'yOpacity',\n 'feather',\n];\nvar pathParams = [\n 'path', 'position',\n];\nfunction getStandardFilterContent(filter) {\n var ret = {};\n forEach(filter, function (val, key) {\n if (convertParams.includes(key)) {\n ret[key] = ensureFixedNumber(val);\n }\n else if (pathParams.includes(key)) {\n ret[key] = ensureFixedVec3(val);\n }\n else {\n ret[key] = val;\n }\n });\n return ret;\n}\n\n/**\n * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)\n */\nfunction version21Migration(json) {\n json.compositions.forEach(function (composition) {\n composition.items.forEach(function (item) {\n if (item.type === ItemType.null) {\n if (item.endBehavior === ItemEndBehavior.destroy) {\n item.endBehavior = ItemEndBehavior.freeze;\n }\n }\n });\n });\n json.version = '2.1';\n return json;\n}\n/**\n * 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)\n */\nfunction version22Migration(json) {\n var _a;\n var singleVersion = (_a = json.version) === null || _a === void 0 ? void 0 : _a.split('.');\n if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {\n return json;\n }\n json.compositions.forEach(function (composition) {\n composition.items.forEach(function (item) {\n if (item.type === ItemType.mesh || item.type === ItemType.light) {\n item.endBehavior = item.endBehavior === 1 ? ItemEndBehavior.destroy : item.endBehavior;\n }\n });\n });\n return json;\n}\n\nvar v0 = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(\\w+)\\.\\d+)?$/;\nvar standardVersion = /^(\\d+)\\.(\\d+)$/;\nvar reverseParticle = false;\nfunction getStandardJSON(json) {\n var _a, _b;\n if (!json || typeof json !== 'object') {\n throw Error('expect a json object');\n }\n // 修正老版本数据中,meshItem以及lightItem结束行为错误问题\n version22Migration(json);\n if (v0.test(json.version)) {\n reverseParticle = ((_a = (/^(\\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';\n return version21Migration(getStandardJSONFromV0(json));\n }\n var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];\n if (mainVersion) {\n if (Number(mainVersion) < 2) {\n return version21Migration(json);\n }\n return json;\n }\n throw Error('invalid json version ' + json.version);\n}\nvar currentVersion = '1.0';\nfunction getStandardJSONFromV0(json) {\n var _a, _b;\n currentVersion = '1.0';\n var plugins = json.plugins || [];\n if ((_a = json.bins) === null || _a === void 0 ? void 0 : _a.length) {\n currentVersion = '1.3';\n }\n var requires = (json.requires || []).slice();\n var images = json.images.map(function (img, index) { return getStandardImage(img, index, json.imageTags || []); });\n var textures = json.textures || images.map(function (img, i) { return ({ source: i, flipY: true }); });\n var ret = {\n plugins: plugins,\n shapes: json.shapes || [],\n type: 'ge',\n version: currentVersion,\n playerVersion: (_b = json.playerVersion) !== null && _b !== void 0 ? _b : {\n web: '',\n native: '',\n },\n compositionId: json.compositionId + '',\n compositions: json.compositions.map(function (comp) { return getStandardComposition(comp, { plugins: plugins, requires: requires }); }),\n images: images,\n imgUsage: json._imgs,\n binUsage: json.binUsage,\n spines: json.spines,\n requires: json.requires,\n textures: textures,\n bins: (json.bins || []).slice(),\n };\n if (json._textures) {\n ret._textures = json._textures;\n }\n return ret;\n}\nfunction getStandardImage(image, index, imageTags) {\n var renderLevel = imageTags[index];\n var oriY = image.oriY;\n if (typeof image === 'string') {\n return {\n renderLevel: renderLevel,\n url: image,\n oriY: oriY,\n };\n }\n else if (image.template) {\n return {\n url: image.url,\n template: image.template,\n webp: image.webp,\n renderLevel: renderLevel,\n oriY: oriY,\n };\n }\n else if (image.compressed) {\n return {\n url: image.url,\n oriY: oriY,\n compressed: {\n astc: image.compressed.android,\n pvrtc: image.compressed.iOS,\n },\n webp: image.webp,\n renderLevel: renderLevel,\n };\n }\n else if (image.url) {\n return {\n url: image.url,\n type: image.type,\n webp: image.webp,\n renderLevel: renderLevel,\n oriY: oriY,\n loop: image.loop,\n };\n }\n else if (image && image.sourceType) {\n return image;\n }\n throw Error('invalid image type');\n}\nfunction getStandardComposition(composition, opt) {\n var _a;\n if (opt === void 0) { opt = {}; }\n var ret = {\n id: composition.id + '',\n camera: Object.assign({ clipMode: CAMERA_CLIP_MODE_NORMAL }, composition.camera),\n duration: composition.duration,\n endBehavior: composition.endBehavior,\n items: composition.items.map(function (item) { return getStandardItem(item, opt); }),\n name: composition.name,\n };\n var startTime = composition.startTime || composition.st;\n if (startTime) {\n ret.startTime = startTime;\n }\n var previewSize = (_a = composition.meta) === null || _a === void 0 ? void 0 : _a.previewSize;\n if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {\n previewSize = undefined;\n }\n if (previewSize) {\n ret.previewSize = previewSize;\n }\n return ret;\n}\nvar tempQuat = [0, 0, 0, 1];\nvar stdAnchor = 0.5;\nfunction getStandardItem(item, opt) {\n var _a, _b, _c;\n if (opt === void 0) { opt = {}; }\n var type = ItemType.base;\n var transform;\n var originContent;\n var content;\n var endBehavior = item.endBehavior;\n var renderLevel;\n var pluginName;\n var duration = NaN;\n var pn;\n if (item.content) {\n type = item.type || ItemType.plugin;\n pn = item.pn;\n pluginName = item.pluginName;\n content = item.content;\n originContent = item.content;\n if (isNaN(pn) && !pluginName) {\n pluginName = content.options.type;\n }\n if (item.duration) {\n duration = item.duration;\n }\n transform = item.transform || getTransform(originContent.transform);\n if (type === ItemType.filter) {\n if (currentVersion < '1.1') {\n currentVersion = '1.1';\n }\n content = getStandardSpriteContent(originContent, transform);\n // @ts-expect-error\n content.filter = getStandardFilterContent(originContent.filter);\n }\n }\n else if (item.particle) {\n type = ItemType.particle;\n originContent = item.particle;\n transform = getTransform(originContent.transform, reverseParticle, true);\n content = getStandardParticleContent(originContent);\n }\n else if (item.sprite) {\n type = ItemType.sprite;\n originContent = item.sprite;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardSpriteContent(originContent, transform);\n }\n else if (item.cal) {\n type = ItemType.null;\n originContent = item.cal;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardNullContent(originContent, transform);\n }\n else if (item.ui) {\n type = ItemType.interact;\n originContent = item.ui;\n transform = getTransform(originContent.transform);\n content = getStandardInteractContent(originContent);\n transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];\n }\n else if (item.model) {\n originContent = item.model;\n if (item.model.options.type === 1) {\n type = ItemType.camera;\n transform = getTransform(originContent.transform);\n content = getStandardCameraContent(originContent);\n }\n }\n if ((_a = content.renderer) === null || _a === void 0 ? void 0 : _a.anchor) {\n var anchor = new Float32Array(content.renderer.anchor);\n if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {\n delete content.renderer.anchor;\n }\n else if (opt.requires) {\n arrAdd(opt.requires, 'anchor');\n }\n }\n if (originContent) {\n var looping = (_b = originContent.options) === null || _b === void 0 ? void 0 : _b.looping;\n if (looping) {\n if (Array.isArray(looping)) {\n endBehavior = looping[1] ? ItemEndBehavior.loop : ItemEndBehavior.destroy;\n }\n else {\n endBehavior = ItemEndBehavior.loop;\n }\n }\n else {\n endBehavior = endBehavior || ((_c = originContent === null || originContent === void 0 ? void 0 : originContent.options) === null || _c === void 0 ? void 0 : _c.endBehavior) || ItemEndBehavior.destroy;\n }\n if (originContent.options.renderLevel) {\n renderLevel = originContent.options.renderLevel;\n }\n if (isNaN(duration)) {\n duration = originContent.options.duration;\n }\n }\n var ret = {\n type: type,\n name: item.name,\n delay: item.delay,\n duration: duration,\n id: item.id + '',\n // @ts-expect-error\n transform: transform,\n endBehavior: endBehavior,\n // @ts-expect-error\n renderLevel: renderLevel,\n content: content,\n };\n // @ts-expect-error\n if (pluginName) {\n if (opt.plugins) {\n arrAdd(opt.plugins, pluginName);\n ret.pn = opt.plugins.indexOf(pluginName);\n }\n else {\n ret.pluginName = pluginName;\n }\n // @ts-expect-error\n }\n else if (Number.isInteger(pn)) {\n // @ts-expect-error\n ret.pn = pn;\n }\n if (item.parentId) {\n ret.parentId = item.parentId + '';\n }\n return ret;\n function getTransform(originTransform, inverseRotation, changeOrder) {\n if (originTransform) {\n var transform_1 = {};\n var rotation = originTransform.rotation;\n if (rotation) {\n if (inverseRotation) {\n transform_1.rotation = [-rotation[0], -rotation[1], -rotation[2]];\n }\n else {\n transform_1.rotation = [rotation[0], rotation[1], rotation[2]];\n }\n if (changeOrder) {\n var q = quatFromXYZRotation(tempQuat, transform_1.rotation[0], transform_1.rotation[1], transform_1.rotation[2]);\n transform_1.rotation = rotationZYXFromQuat([], q);\n }\n }\n var position = originTransform.position;\n if (position) {\n transform_1.position = originTransform.position;\n }\n if (Array.isArray(originTransform.scale)) {\n transform_1.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];\n }\n return transform_1;\n }\n return {};\n }\n}\n\nexport { arrAdd, colorToArr, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, quatFromXYZRotation, rotationZYXFromQuat };\n//# sourceMappingURL=fallback.mjs.map\n"],"names":["check","it","Math","global","globalThis","window","self","this","Function","fails","exec","error","descriptors","require$$0","Object","defineProperty","get","functionBindNative","test","bind","hasOwnProperty","NATIVE_BIND","call","prototype","functionCall","apply","arguments","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","objectPropertyIsEnumerable","f","V","descriptor","enumerable","match","version","createPropertyDescriptor","bitmap","value","configurable","writable","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","uncurryThis","toString","stringSlice","slice","classofRaw","require$$1","classof","require$$2","$Object","split","indexedObject","isNullOrUndefined","$TypeError","TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","documentAll","document","all","documentAll_1","IS_HTMLDDA","undefined","isCallable","argument","isObject","getBuiltIn","namespace","method","length","objectIsPrototypeOf","isPrototypeOf","engineUserAgent","navigator","String","userAgent","process","Deno","versions","v8","engineV8Version","V8_VERSION","$String","symbolConstructorDetection","getOwnPropertySymbols","symbol","Symbol","sham","useSymbolAsUid","iterator","isSymbol","require$$3","$Symbol","tryToString","aCallable","getMethod","P","func","defineGlobalProperty","key","SHARED","sharedStore","store","sharedModule","push","mode","copyright","license","source","toObject","hasOwnProperty_1","hasOwn","id","postfix","random","uid","shared","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wellKnownSymbol","name","ordinaryToPrimitive","input","pref","val","valueOf","TO_PRIMITIVE","toPrimitive","result","exoticToPrim","toPropertyKey","EXISTS","createElement","documentCreateElement","ie8DomDefine","a","DESCRIPTORS","propertyIsEnumerableModule","require$$6","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","O","v8PrototypeDefineBug","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","Attributes","current","definePropertyModule","createNonEnumerableProperty","object","getDescriptor","functionName","PROPER","functionToString","inspectSource","set","has","WeakMap","weakMapBasicDetection","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","state","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","type","CONFIGURABLE_FUNCTION_NAME","enforceInternalState","getInternalState","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","exports","options","getter","setter","arity","constructor","defineBuiltIn","simple","unsafe","nonConfigurable","nonWritable","ceil","floor","mathTrunc","trunc","x","n","toIntegerOrInfinity","number","max","min","toAbsoluteIndex","index","integer","toLength","lengthOfArrayLike","obj","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","includes","indexOf","objectKeysInternal","names","i","enumBugKeys","internalObjectKeys","concat","objectGetOwnPropertyNames","getOwnPropertyNames","objectGetOwnPropertySymbols","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","isForced_1","copyConstructorProperties","target","exceptions","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","objectKeys","objectDefineProperties","defineProperties","Properties","props","activeXDocument","html","definePropertiesModule","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","domain","style","display","appendChild","src","contentWindow","open","F","objectCreate","create","UNSCOPABLES","ArrayPrototype","Array","addToUnscopables","$includes","proto","addToUnscopables$1","CONSTRUCTOR","METHOD","entryUnbind","correctPrototypeGetter","getPrototypeOf","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","IE_BUG","TO_ENTRIES","IE_WORKAROUND","objectToArray","entries","values","$values","path","$entries","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","next","done","return","from","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","arrayBufferBasicDetection","ArrayBuffer","DataView","NAME","Constructor","Prototype","toStringTagSupport","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","defineBuiltInAccessor","uncurryThisAccessor","aPossiblePrototype","objectSetPrototypeOf","setPrototypeOf","CORRECT_SETTER","__proto__","NATIVE_ARRAY_BUFFER","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","isTypedArray","klass","arrayBufferViewCore","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","typedArrayConstructorsRequireWrappers","iterable","defineBuiltIns","anInstance","$RangeError","RangeError","toIndex","sign","$Array","abs","pow","log","LN2","roundToEven","truncated","delta","ieee754","pack","mantissaLength","bytes","exponent","mantissa","c","buffer","exponentLength","eMax","eBias","rt","s","Infinity","unpack","nBits","NaN","arrayFill","argumentsLength","end","endPos","createProperty","propertyKey","arraySliceSimple","start","k","fin","setToStringTag","TAG","FunctionName","IEEE754","require$$17","arraySlice","require$$18","require$$19","InternalStateModule","require$$20","PROPER_FUNCTION_NAME","ARRAY_BUFFER","DATA_VIEW","WRONG_INDEX","getInternalArrayBufferState","getInternalDataViewState","setInternalState","NativeArrayBuffer","$ArrayBuffer","ArrayBufferPrototype","$DataView","DataViewPrototype","fill","reverse","packIEEE754","unpackIEEE754","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","view","count","isLittleEndian","intIndex","boolIsLittleEndian","byteLength","byteOffset","conversion","INCORRECT_ARRAY_BUFFER_NAME","j","testView","$setInt8","setInt8","getInt8","setUint8","detached","bufferState","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","arrayBuffer","isIntegralNumber","Number","isInteger","isFinite","toPositiveInteger","toOffset","BYTES","round","functionUncurryThisClause","functionBindContext","that","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","isConstructor","aConstructor","iterators","Iterators","getIteratorMethod","getIterator","usingIterator","iteratorMethod","isArrayIteratorMethod","isBigIntArray","toBigInt","prim","BigInt","typedArrayFrom","thisIsBigIntArray","step","mapfn","mapping","isArray","SPECIES","arraySpeciesConstructor","originalArray","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","arrayIteration","forEach","map","filter","some","every","find","findIndex","filterReject","setSpecies","CONSTRUCTOR_NAME","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","$","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","toUint8Clamped","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$31","require$$30","nativeDefineProperty","nativeGetOwnPropertyDescriptor","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","typedArrayConstructorModule","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","FORCED","createTypedArrayConstructor","init","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","charAt","charCodeAt","CONVERT_TO_STRING","pos","first","second","S","position","size","stringMultibyte","codeAt","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","iteratorsCore","returnThis","createIteratorConstructor","IteratorConstructor","ENUMERABLE_NEXT","KEYS","VALUES","ENTRIES","iteratorDefine","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","createIterResultObject","defineIterator","STRING_ITERATOR","iterated","point","len","relativeIndex","deletePropertyOrThrow","arrayCopyWithin","copyWithin","to","inc","u$ArrayCopyWithin","exportTypedArrayMethod$w","$every","$fill","actualValue","arrayFromConstructorAndList","speciesConstructor","defaultConstructor","typedArraySpeciesConstructor","typedArrayFromSpeciesAndList","instance","$filter","fromSpeciesAndList","$find","predicate","$findIndex","IS_FIND_LAST_INDEX","arrayIterationFromLast","findLast","findLastIndex","$findLast","$findLastIndex","$forEach","searchElement","$indexOf","$join","separator","functionApply","Reflect","arrayMethodIsStrict","METHOD_NAME","$lastIndexOf","lastIndexOf","NEGATIVE_ZERO","STRICT_METHOD","arrayLastIndexOf","$map","IS_RIGHT","memo","arrayReduce","left","right","$reduce","$reduceRight","middle","$set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","array","TO_OBJECT_BUG","arrayLike","exportTypedArrayMethod$e","$some","mergeSort","comparefn","insertionSort","merge","element","llength","rlength","lindex","rindex","arraySort","firefox","engineFfVersion","engineIsIeOrEdge","webkit","engineWebkitVersion","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","sort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","mod","expected","b","y","getSortCompare","exportTypedArrayMethod$b","begin","beginIndex","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","IS_NOT_ARRAY_METHOD","arrayToReversed","A","compareFn","arrayWith","actualIndex","PROPER_ORDER","exportTypedArrayMethod$6","with","ARRAY_ITERATOR","es_array_iterator","kind","Arguments","ArrayIterators","arrayValues","arrayKeys","arrayEntries","GENERIC","ITERATOR_IS_VALUES","typedArrayValues","exportTypedArrayMethod$4","deleteCount","insertCount","actualDeleteCount","convertedItems","newLen","actualStart","spliced","toSpliced","$getOwnPropertyNames","windowNames","objectGetOwnPropertyNamesExternal","getWindowNames","arrayBufferNonExtensible","isExtensible","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","objectIsExtensible","freezing","preventExtensions","getOwnPropertyNamesExternalModule","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","internalMetadataModule","enable","splice","fastKey","getWeakData","onFreeze","iteratorClose","innerResult","innerError","Result","stopped","ResultPrototype","iterate","unboundFunction","iterFn","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","InternalMetadataModule","internalStateGetterFor","collectionStrong","getConstructor","ADDER","last","define","previous","entry","getEntry","removed","clear","delete","prev","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","collection","common","IS_WEAK","NativeConstructor","NativePrototype","fixMethod","uncurriedNativeMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","$location","defer","channel","port","engineIsNode","engineIsIos","validateArgumentsLength","passed","required","IS_IOS","IS_NODE","setImmediate","clearImmediate","Dispatch","MessageChannel","counter","queue","ONREADYSTATECHANGE","location","run","runner","eventListener","event","globalPostMessageDefer","postMessage","protocol","host","handler","args","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","task","Queue","head","tail","Queue$2","item","notify","toggle","node","promise","then","engineIsIosPebble","Pebble","engineIsWebosWebkit","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","Promise","queueMicrotaskDescriptor","microtask","flush","parent","exit","enter","resolve","createTextNode","observe","characterData","microtask_1","perform","promiseNativeConstructor","engineIsDeno","engineIsBrowser","NativePromiseConstructor","IS_BROWSER","IS_DENO","NativePromiseConstructor$3","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","promiseConstructorDetection","REJECTION_EVENT","PromiseCapability","reject","$$resolve","$$reject","newPromiseCapability","Internal","OwnPromiseCapability","nativeThen","hostReportErrors","console","newPromiseCapabilityModule","PROMISE","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","UNHANDLED_REJECTION","isThenable","callReaction","reaction","exited","ok","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","reason","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","PromiseWrapper","wrap","promiseStaticsIncorrectIteration","capability","$promiseResolve","remaining","alreadyCalled","real","catch","race","r","promiseResolve","promiseCapability","AsyncIteratorPrototype","USE_FUNCTION_CONSTRUCTOR","ASYNC_ITERATOR","AsyncIterator","PassedAsyncIteratorPrototype","ASYNC_FROM_SYNC_ITERATOR","asyncFromSyncIteratorContinuation","AsyncFromSyncIterator","iteratorRecord","AsyncFromSyncIterator$2","$return","asyncFromSyncIterator","getIteratorDirect","doesNotExceedSafeInteger","closeAsyncIteration","returnMethod","IS_TO_ARRAY","IS_FOR_EACH","MAPPING","record","ifAbruptCloseAsyncIterator","loop","error5","$result","error4","error3","asyncIteratorIteration","toArray","getAsyncIterator","getVirtual","arrayIteratorNext","safeArrayIterator","SafeArrayIterator","arrayFromAsync","asyncItems","thisArg","usingAsyncIterator","usingSyncIterator","$filterReject","$group","specificConstructor","MapPrototype","Map","mapHelpers","remove","iterateSimple","ITERATOR_INSTEAD_OF_RECORD","interruptible","mapHas","mapSet","$arrayUniqueBy","resolver","resolverFunction","arrayUniqueBy","RenderLevel","BlendingMode","SideMode","MaskMode","ShapeType","PluginType","InteractType","InteractBehavior","ItemType","RenderMode","ParticleOrigin","CameraClipMode","CompositionEndBehavior","ValueType","BezierKeyframeType","ItemEndBehavior","ParentItemEndBehavior","ParticleInteractionBehavior","ShapeArcMode","ModelBoundingType","MaterialType","MaterialBlending","RenderMode3D","TextOverflow","TextBaseline","TextAlignment","TextWeight","FontStyle","PI2","PI","DEG2RAD","RAD2DEG","NumberEpsilon","isEqual","lerp","t","clamp","fixedMin","isNaN","fixedMax","lower","upper","EulerOrder","Vector2","setZero","setFromNumber","num","setFromArray","_a","_b","copyFrom","clone","setElement","getElement","addVectors","subtract","subtractVectors","multiply","multiplyVectors","divide","scale","v","sum","negate","sqrt","lengthSquared","setLength","other","alpha","lerpVectors","v1","v2","dot","cross","distance","dx","dy","distanceSquared","equals","isZero","eps","fromNumber","fromArray","ONE","ZERO","Vector3","z","_c","addScaledVector","crossVectors","ax","ay","az","bx","by","bz","reflect","normal","dz","toVector2","applyEuler","euler","out","rotateVector3","applyQuaternion","q","applyMatrix","m","transformPoint","applyNormalMatrix","transformNormal","applyProjectionMatrix","projectPoint","X","Y","Z","Quaternion","w","setFromEuler","toQuaternion","setFromAxisAngle","axis","angle","halfAngle","sin","tempVec0","cos","setFromRotationMatrix","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","EPSILON","quat","angleTo","acos","rotateTowards","slerp","identity","invert","conjugate","l","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","atan2","ratioA","ratioB","slerpQuaternions","qa","qb","qx","qy","qz","qw","vx","vy","vz","ix","iy","iz","iw","res","quaternion","toVector4","vec","toEuler","setFromQuaternion","toMatrix4","mat","compose","fromEuler","fromAxisAngle","fromRotationMatrix","fromUnitVectors","__read","o","e","ar","__spreadArray","Matrix4","m41","m42","m43","m14","m24","m34","m44","setFromRowMajorData","setFromColumnVectors","c1","c2","c3","c4","setFromMatrix3","me","setFromScale","setFromTranslation","setFromRotationX","theta","setFromRotationY","setFromRotationZ","setFromRotationAxis","tx","ty","setFromShear","setFromBasis","xAxis","yAxis","zAxis","isIdentity","getColumnVector","lookAt","eye","up","vX","vY","tempVec1","vZ","tempVec2","addScaledMatrix","re","multiplyMatrices","ae","be","a11","a12","a13","a14","a21","a22","a23","a24","a31","a32","a33","a34","a41","a42","a43","a44","b11","b12","b13","b14","b21","b22","b23","b24","b31","b32","b33","b34","b41","b42","b43","b44","multiplyScalar","determinant","transpose","t11","t12","t13","t14","det","detInv","extractBasis","translation","rotation","anchor","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","sx","sy","sz","decompose","tempMat0","invSX","invSY","invSZ","getTranslation","getScale","hypot","getTransform","orthographic","top","bottom","near","far","tz","perspective","fov","aspect","tan","nf","transformVector4","matrix","fromIdentity","fromLookAt","fromPerspective","fromColumnVectors","fromMatrix3","fromScale","fromTranslation","fromRotationX","fromRotationY","fromRotationZ","fromRotationAxis","fromQuaternion","fromShear","fromBasis","fromRowMajorData","IDENTITY","Euler","order","DEFAULT_ORDER","setFromRotationMatrix4","XYZ","asin","YXZ","ZXY","ZYX","YZX","XZY","setFromVector3","_d","addEulers","reorder","newOrder","tempQuat0","toVector3","s1","s2","s3","cosX","sinX","cosY","sinY","cosZ","sinZ","cosXcosZ","cosXsinZ","sinXcosZ","sinXsinZ","cosYcosZ","cosYsinZ","sinYcosZ","sinYsinZ","cosXcosY","cosXsinY","sinXcosY","sinXsinY","fromRotationMatrix4","fromVector3","Vector4","Matrix3","setFromMatrix4","rotate","translate","fromMatrix4","Ray","origin","direction","ray","recast","at","ret","intersectBox","box","tmin","tmax","tymin","tymax","tzmin","tzmax","ox","oy","oz","bxmin","bymin","bzmin","bxmax","bymax","bzmax","invdirx","invdiry","invdirz","intersectPlane","plane","denominator","intersectSphere","sphere","center","vector","tca","d2","radius2","radius","thc","t0","t1","intersectTriangle","triangle","backfaceCulling","p0","p1","p2","edge1","edge2","diff","tempVec3","DdN","DdQxE2","DdE1xQ","QdN","Color","g","setFromVector4","setFromHSV","hue","saturation","chroma","h","setFromHexString","hex","substring","parseInt","luminance","toLinear","gammaToLinear","toGamma","linearToGamma","toHSV","dm","toHexString","includeAlpha","R","ToHex","G","B","fromHexString","fromHSV","str","toUpperCase","BLACK","BLUE","CLEAR","CYAN","GRAY","GREEN","MAGENTA","RED","WHITE","YELLOW","Box3","minX","minY","minZ","maxX","maxY","maxZ","setFromPoints","points","makeEmpty","il","expandByPoint","setFromCenterAndSize","halfSize","setFromObject","expandByObject","isEmpty","getCenter","getSize","expandByVector","expandByScalar","scalar","expandByBox","updateWorldMatrix","geometry","boundingBox","computeBoundingBox","box3","applyMatrix4","matrixWorld","union","children","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","clampPoint","distanceToPoint","intersect","getOBBPoints","p","getBoundingSphere","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","getBoundingBox","mt","scaleXSq","scaleYSq","scaleZSq","maxScale","length_1","missingRadiusHalf","toFarthestPoint","lambda","dt","exp","degrees","radians","linkedList","dim","clockwise","signedArea","insertNode","removeNode","filterPoints","again","steiner","area","isEar","ear","pointInTriangle","isEarHashed","invSize","minTX","minTY","maxTX","maxTY","zOrder","prevZ","nextZ","compareX","eliminateHole","hole","outerNode","hx","hy","mx","my","tanMin","locallyInside","sectorContainsSector","findHoleBridge","splitPolygon","getLeftmost","leftmost","cx","cy","px","py","isValidDiagonal","intersects","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","a2","Node","b2","an","bp","holeIndices","numMerges","pSize","qSize","inSize","sortLinked","CAMERA_CLIP_MODE_NORMAL","__assign","assign","__values","arrAdd","arr","callback","thisObj","name_1","ensureFixedNumber","CONSTANT","LINE","CURVE","ensureFixedNumberWithRandom","ensureRGBAValue","colorToArr","ensureColorExpression","normalized","COLORS","color","ensureGradient","RGBA_COLOR","ensureNumberExpression","RANDOM","stops_1","parsePercent","GRADIENT_COLOR","toFixed","normalizeColor","getGradientColor","ensureFixedVec3","CONSTANT_VEC3","LINEAR_PATH","BEZIER_PATH","objectValueToNumber","e_1","e_1_1","deleteEmptyValue","e_2","e_2_1","SuppressedError","d2r","r2d","getStandardParticleContent","particle","transform","shape","NONE","shapeType","upDirection","startTurbulence","turbulenceX","turbulenceY","turbulenceZ","emission","bursts","burstOffsets","rateOverTime","renderer","splits","startLifetime","start3DSize","startSize","startSizeX","startSizeY","sizeAspect","maxCount","startDelay","startColor","startRotationZ","startRotation","particleFollowParent","start3DRotation","startRotationX","startRotationY","filter_1","emitterTransform","sizeOverLifetime","separateAxes","velocityOverLifetime","sol","speedOverLifetime","positionOverLifetime","gravity","gravityOverLifetime","gravityModifier","startSpeed","asMovement","linearX","linearY","linearZ","asRotation","orbCenter","orbitalX","orbitalY","orbitalZ","forceTarget","forceCurve","rotationOverLifetime","angularVelocity","colorOverLifetime","col","opacity","textureSheetAnimation","row","total","animate","cycles","animationDelay","animationDuration","trials","trails","lifetime","dieWithParticles","maxPointPerTrail","minimumVertexDistance","widthOverTrail","colorOverTrail","blending","inheritParticleColor","occlusion","transparentOcclusion","orderOffset","sizeAffectsLifetime","sizeAffectsWidth","texture","parentAffectsPosition","opacityOverLifetime","interaction","behavior","multiple","getStandardNullContent","sprite","opt","rot","getStandardSpriteContent","texAni","convertParams","pathParams","version21Migration","json","compositions","composition","items","null","endBehavior","destroy","freeze","v0","standardVersion","reverseParticle","getStandardJSON","Error","singleVersion","mesh","light","version22Migration","currentVersion","plugins","bins","requires","images","img","getStandardImage","imageTags","textures","flipY","shapes","playerVersion","web","native","compositionId","comp","getStandardComposition","imgUsage","_imgs","binUsage","spines","_textures","getStandardJSONFromV0","mainVersion","image","renderLevel","oriY","url","template","webp","compressed","astc","android","pvrtc","iOS","sourceType","camera","clipMode","duration","getStandardItem","startTime","st","previewSize","tempQuat","stdAnchor","originContent","pluginName","pn","base","plugin","getStandardFilterContent","cal","ui","interact","option","CLICK","showPreview","previewColor","NOTIFY","DRAG","enableInEditor","dxRange","dyRange","MESSAGE","getStandardInteractContent","width","height","model","translateX","translateY","translateZ","rol","rotateX","rotateY","rotateZ","getStandardCameraContent","looping","delay","parentId","originTransform","inverseRotation","changeOrder","transform_1","yx","rotationZYXFromQuat"],"mappings":"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"}
1
+ {"version":3,"file":"index.min.js","sources":["../../../node_modules/.pnpm/@galacean+effects-specification@1.0.1/node_modules/@galacean/effects-specification/dist/index.mjs","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/utils.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector2.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/euler.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/quaternion.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/matrix4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/matrix3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/ray.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/color.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/box3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/sphere.js","../../effects-core/src/libs/earcut.js","../../../node_modules/.pnpm/@galacean+effects-specification@1.0.1/node_modules/@galacean/effects-specification/dist/fallback.mjs"],"sourcesContent":["/*!\n * Name: @galacean/effects-specification\n * Description: Galacean Effects JSON Specification\n * Author: Ant Group CO., Ltd.\n * Version: v1.0.1\n */\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nvar RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nvar BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nvar SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 蒙版模式\n */\nvar MaskMode;\n(function (MaskMode) {\n /**\n * 无蒙版\n */\n MaskMode[MaskMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * 蒙版\n */\n MaskMode[MaskMode[\"MASK\"] = 1] = \"MASK\";\n /**\n * 被遮挡\n */\n MaskMode[MaskMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n MaskMode[MaskMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(MaskMode || (MaskMode = {}));\n/**\n * 发射器形状\n */\nvar ShapeType;\n(function (ShapeType) {\n /**\n * 没有类型\n */\n ShapeType[ShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ShapeType[ShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ShapeType[ShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ShapeType[ShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ShapeType[ShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ShapeType[ShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ShapeType[ShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ShapeType[ShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ShapeType[ShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ShapeType[ShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ShapeType || (ShapeType = {}));\n/**\n * 插件类型\n */\nvar PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nvar InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nvar InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nvar ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * 滤镜图层\n */\n ItemType[\"filter\"] = \"8\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nvar RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nvar ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\n\nvar END_BEHAVIOR_DESTROY = 0;\nvar END_BEHAVIOR_PAUSE = 1;\nvar END_BEHAVIOR_FORWARD = 2;\nvar END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nvar END_BEHAVIOR_FREEZE = 4;\nvar END_BEHAVIOR_RESTART = 5;\nvar END_BEHAVIOR_DESTROY_CHILDREN = 6;\nvar CAMERA_CLIP_MODE_VERTICAL = 1;\nvar CAMERA_CLIP_MODE_NORMAL = 0;\nvar MESSAGE_ITEM_PHRASE_BEGIN = 2;\nvar MESSAGE_ITEM_PHRASE_END = 1;\n\nvar CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = CAMERA_CLIP_MODE_VERTICAL] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = CAMERA_CLIP_MODE_NORMAL] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n/**\n * 结束行为\n */\nvar CompositionEndBehavior;\n(function (CompositionEndBehavior) {\n /**\n * 销毁\n */\n CompositionEndBehavior[CompositionEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n /**\n * 暂停\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause\"] = END_BEHAVIOR_PAUSE] = \"pause\";\n /**\n * 重播\n */\n CompositionEndBehavior[CompositionEndBehavior[\"restart\"] = END_BEHAVIOR_RESTART] = \"restart\";\n /**\n * 无限播放\n */\n CompositionEndBehavior[CompositionEndBehavior[\"forward\"] = END_BEHAVIOR_FORWARD] = \"forward\";\n /**\n * 销毁并保留最后一帧\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause_destroy\"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = \"pause_destroy\";\n})(CompositionEndBehavior || (CompositionEndBehavior = {}));\n\n/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nvar ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n *直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nvar BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n\nvar ItemEndBehavior;\n(function (ItemEndBehavior) {\n ItemEndBehavior[ItemEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n ItemEndBehavior[ItemEndBehavior[\"loop\"] = END_BEHAVIOR_RESTART] = \"loop\";\n ItemEndBehavior[ItemEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(ItemEndBehavior || (ItemEndBehavior = {}));\nvar ParentItemEndBehavior;\n(function (ParentItemEndBehavior) {\n ParentItemEndBehavior[ParentItemEndBehavior[\"destroyChildren\"] = END_BEHAVIOR_DESTROY_CHILDREN] = \"destroyChildren\";\n})(ParentItemEndBehavior || (ParentItemEndBehavior = {}));\n\n/**\n * 粒子交互行为\n */\nvar ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n\nvar ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n\nvar BloomFilterThresholdAvgColor = 0;\n\nvar ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n\n// 材质类型\nvar MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nvar MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n\n/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nvar RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n})(RenderMode3D || (RenderMode3D = {}));\n\nvar TextOverflow;\n(function (TextOverflow) {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n TextOverflow[TextOverflow[\"display\"] = 0] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 1] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 2] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nvar TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nvar TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\n/**\n * 文本字重\n */\nvar TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nvar FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n\nexport { BezierKeyframeType, BlendingMode, BloomFilterThresholdAvgColor, CAMERA_CLIP_MODE_NORMAL, CAMERA_CLIP_MODE_VERTICAL, CameraClipMode, CompositionEndBehavior, END_BEHAVIOR_DESTROY, END_BEHAVIOR_DESTROY_CHILDREN, END_BEHAVIOR_FORWARD, END_BEHAVIOR_FREEZE, END_BEHAVIOR_PAUSE, END_BEHAVIOR_PAUSE_AND_DESTROY, END_BEHAVIOR_RESTART, FontStyle, InteractBehavior, InteractType, ItemEndBehavior, ItemType, MESSAGE_ITEM_PHRASE_BEGIN, MESSAGE_ITEM_PHRASE_END, MaskMode, MaterialBlending, MaterialType, ModelBoundingType, ParentItemEndBehavior, ParticleInteractionBehavior, ParticleOrigin, PluginType, RenderLevel, RenderMode, RenderMode3D, ShapeArcMode, ShapeType, SideMode, TextAlignment, TextBaseline, TextOverflow, TextWeight, ValueType };\n//# sourceMappingURL=index.mjs.map\n","export var PI2 = Math.PI * 2;\nexport var DEG2RAD = Math.PI / 180;\nexport var RAD2DEG = 180 / Math.PI;\nexport var NumberEpsilon = 1e-6;\nexport function isZero(v) {\n return isNaN(v) || Math.abs(v) < NumberEpsilon;\n}\nexport function isEqual(a, b) {\n return Math.abs(a - b) < NumberEpsilon || (a === Infinity && b === Infinity) || (a === -Infinity && b === -Infinity);\n}\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nexport var damp = function (x, y, lambda, dt) { return lerp(x, y, 1 - Math.exp(-lambda * dt)); };\n// https://en.wikipedia.org/wiki/Linear_interpolation\nexport var lerp = function (x, y, t) { return (1 - t) * x + t * y; };\nexport var degToRad = function (degrees) { return degrees * DEG2RAD; };\nexport var radToDeg = function (radians) { return radians * RAD2DEG; };\nexport function clamp(value, min, max) {\n var fixedMin = isNaN(min) ? -Infinity : min;\n var fixedMax = isNaN(max) ? Infinity : max;\n var lower = Math.min(fixedMin, fixedMax);\n var upper = Math.max(fixedMin, fixedMax);\n return Math.min(Math.max(value, lower), upper);\n}\n","import { NumberEpsilon } from './utils';\n/**\n * 二维向量\n */\nexport var Vector2 = /** @class */ (function () {\n /**\n * 构造函数,默认为零向量\n * @param [x=0] - x 分量\n * @param [y=0] - y 分量\n */\n function Vector2(x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n this.x = x;\n this.y = y;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @returns\n */\n Vector2.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector2.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n return this;\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector2.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n return this;\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector2.prototype.setFromArray = function (array, offset) {\n var _a, _b;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param src - 要拷贝的对象\n * @returns 向量\n */\n Vector2.prototype.copyFrom = function (src) {\n this.x = src.x;\n this.y = src.y;\n return this;\n };\n /**\n * 克隆向量\n * @returns 克隆结果\n */\n Vector2.prototype.clone = function () {\n return new Vector2(this.x, this.y);\n };\n /**\n * 根据下标设置元素值\n * @param index - 下标值\n * @param value - 数字\n * @returns 向量\n */\n Vector2.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取值\n * @param index - 下标\n * @returns 值\n */\n Vector2.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 向量 | 数字\n * @returns 向量\n */\n Vector2.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 相加结果\n */\n Vector2.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n return this;\n };\n /**\n * 向量相减\n * @param right - 向量 | 数字\n * @returns 相减结果\n */\n Vector2.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 相减结果\n */\n Vector2.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 向量 | 数字\n * @returns 相乘结果\n */\n Vector2.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 相乘结果\n */\n Vector2.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n return this;\n };\n /**\n * 向量相除\n * @param right - 向量 | 数字\n * @returns 相除结果\n */\n Vector2.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector2.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector2.prototype.sum = function () {\n return this.x + this.y;\n };\n /**\n * 向量求最小值\n * @param v - 向量\n * @returns 最小值\n */\n Vector2.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量\n * @returns 最大值\n */\n Vector2.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 极小值\n * @param max - 极大值\n * @returns 向量\n */\n Vector2.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector2.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector2.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n return this;\n };\n /**\n * 向量取四舍五入\n * @returns 四舍五入结果\n */\n Vector2.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector2.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n return this;\n };\n /**\n * 向量取反\n * @returns 取反结果\n */\n Vector2.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n };\n /**\n * 向量长度\n * @returns 求值结果\n */\n Vector2.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n };\n /**\n * 向量长度平方\n * @returns 求值结果\n */\n Vector2.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y;\n };\n /**\n * 向量归一化\n * @returns 归一化结果\n */\n Vector2.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector2.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量线性插值\n * @param other - 向量\n * @param alpha - 插值比\n * @returns 计算结果\n */\n Vector2.prototype.lerp = function (other, alpha) {\n this.x += (other.x - this.x) * alpha;\n this.y += (other.y - this.y) * alpha;\n return this;\n };\n /**\n * 向量线性插值\n * @param v1 - 向量\n * @param v2 - 向量\n * @param alpha - 插值比\n * @returns 计算结果\n */\n Vector2.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n return this;\n };\n /**\n * 向量点乘\n * @param v - 向量\n * @returns 点乘结果\n */\n Vector2.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y;\n };\n /**\n * 向量叉乘\n * @param v - 向量\n * @returns 叉乘结果\n */\n Vector2.prototype.cross = function (v) {\n return this.x * v.y - this.y * v.x;\n };\n /**\n * 点距离\n * @param v - 点\n * @returns 距离\n */\n Vector2.prototype.distance = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n /**\n * 点距离平方\n * @param v - 点\n * @returns 距离平方\n */\n Vector2.prototype.distanceSquared = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n return dx * dx + dy * dy;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector2.prototype.equals = function (v) {\n return this.x === v.x && this.y === v.y;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector2.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y;\n return Math.abs(x) <= eps && Math.abs(y) <= eps;\n };\n /**\n * 向量转数组\n * @returns 数组\n */\n Vector2.prototype.toArray = function () {\n return [this.x, this.y];\n };\n Vector2.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n };\n /**\n * 随机生成向量\n * @returns 向量\n */\n Vector2.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n return this;\n };\n /**\n * 通过标量创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector2.fromNumber = function (num) {\n return new Vector2().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector2.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector2().setFromArray(array, offset);\n };\n /**\n * 二维向量的常量\n */\n Vector2.ONE = new Vector2(1.0, 1.0);\n Vector2.ZERO = new Vector2(0.0, 0.0);\n return Vector2;\n}());\n","import { Quaternion } from './quaternion';\nimport { Matrix4 } from './matrix4';\nimport { RAD2DEG, clamp } from './utils';\nimport { DEG2RAD } from './utils';\n/**\n * 欧拉角顺序\n */\nexport var EulerOrder;\n(function (EulerOrder) {\n EulerOrder[EulerOrder[\"XYZ\"] = 0] = \"XYZ\";\n EulerOrder[EulerOrder[\"XZY\"] = 1] = \"XZY\";\n EulerOrder[EulerOrder[\"YXZ\"] = 2] = \"YXZ\";\n EulerOrder[EulerOrder[\"YZX\"] = 3] = \"YZX\";\n EulerOrder[EulerOrder[\"ZXY\"] = 4] = \"ZXY\";\n EulerOrder[EulerOrder[\"ZYX\"] = 5] = \"ZYX\";\n})(EulerOrder || (EulerOrder = {}));\n/**\n * 欧拉角\n */\nexport var Euler = /** @class */ (function () {\n /**\n * 构造函数,传入值为 x, y, z 方向分量以及欧拉角顺序\n * @param [x=0] - x 方向分量\n * @param [y=0] - y 方向分量\n * @param [z=0] - z 方向分量\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n */\n function Euler(x, y, z, order) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.order = order;\n }\n /**\n * 设置欧拉角\n * @param x - x 方向分量\n * @param y - y 方向分量\n * @param z - z 方向分量\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.set = function (x, y, z, order) {\n if (order === void 0) { order = this.order; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.order = order;\n return this;\n };\n Euler.prototype.setZero = function (order) {\n if (order === void 0) { order = this.order; }\n return this.set(0, 0, 0, order);\n };\n /**\n * 通过矩阵设置欧拉角\n * @param m - 矩阵\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromRotationMatrix4 = function (m, order) {\n if (order === void 0) { order = this.order; }\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n switch (order) {\n case EulerOrder.XYZ:\n this.y = Math.asin(clamp(m13, -1, 1));\n if (Math.abs(m13) < 0.9999999) {\n this.x = Math.atan2(-m23, m33);\n this.z = Math.atan2(-m12, m11);\n }\n else {\n this.x = Math.atan2(m32, m22);\n this.z = 0;\n }\n break;\n case EulerOrder.YXZ:\n this.x = Math.asin(-clamp(m23, -1, 1));\n if (Math.abs(m23) < 0.9999999) {\n this.y = Math.atan2(m13, m33);\n this.z = Math.atan2(m21, m22);\n }\n else {\n this.y = Math.atan2(-m31, m11);\n this.z = 0;\n }\n break;\n case EulerOrder.ZXY:\n this.x = Math.asin(clamp(m32, -1, 1));\n if (Math.abs(m32) < 0.9999999) {\n this.y = Math.atan2(-m31, m33);\n this.z = Math.atan2(-m12, m22);\n }\n else {\n this.y = 0;\n this.z = Math.atan2(m21, m11);\n }\n break;\n case EulerOrder.ZYX:\n this.y = Math.asin(-clamp(m31, -1, 1));\n if (Math.abs(m31) < 0.9999999) {\n this.x = Math.atan2(m32, m33);\n this.z = Math.atan2(m21, m11);\n }\n else {\n this.x = 0;\n this.z = Math.atan2(-m12, m22);\n }\n break;\n case EulerOrder.YZX:\n this.z = Math.asin(clamp(m21, -1, 1));\n if (Math.abs(m21) < 0.9999999) {\n this.x = Math.atan2(-m23, m22);\n this.y = Math.atan2(-m31, m11);\n }\n else {\n this.x = 0;\n this.y = Math.atan2(m13, m33);\n }\n break;\n case EulerOrder.XZY:\n this.z = Math.asin(-clamp(m12, -1, 1));\n if (Math.abs(m12) < 0.9999999) {\n this.x = Math.atan2(m32, m22);\n this.y = Math.atan2(m13, m11);\n }\n else {\n this.x = Math.atan2(-m23, m33);\n this.y = 0;\n }\n break;\n default:\n console.error('setFromRotationMatrix: unknown order: ' + order);\n }\n this.x *= RAD2DEG;\n this.y *= RAD2DEG;\n this.z *= RAD2DEG;\n this.order = order;\n return this;\n };\n /**\n * 通过四元数设置欧拉角\n * @param quat - 四元数\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromQuaternion = function (quat, order) {\n if (order === void 0) { order = this.order; }\n var matrix = Euler.tempMat0;\n matrix.setFromQuaternion(quat);\n return this.setFromRotationMatrix4(matrix, order);\n };\n /**\n * 通过三维向量设置欧拉角\n * @param v - 三维向量\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromVector3 = function (v, order) {\n if (order === void 0) { order = this.order; }\n return this.set(v.x, v.y, v.z, order);\n };\n /**\n * 通过数组设置欧拉角\n * @param array - 数组\n * @param [offset=0] - 偏移\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromArray = function (array, offset, order) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n if (order === void 0) { order = this.order; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.order = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : order;\n return this;\n };\n /**\n * 克隆欧拉角\n * @returns 克隆结果\n */\n Euler.prototype.clone = function () {\n return new Euler(this.x, this.y, this.z, this.order);\n };\n /**\n * 复制欧拉角\n * @param euler - 复制对象\n * @returns 复制结果\n */\n Euler.prototype.copyFrom = function (euler) {\n this.x = euler.x;\n this.y = euler.y;\n this.z = euler.z;\n this.order = euler.order;\n return this;\n };\n Euler.prototype.add = function (euler) {\n if (this.order != euler.order) {\n console.error('add euler with different order');\n return this;\n }\n this.x += euler.x;\n this.y += euler.y;\n this.z += euler.z;\n return this;\n };\n Euler.prototype.addEulers = function (left, right) {\n if (left.order != right.order) {\n console.error('add euler with different order');\n return this;\n }\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n this.order = left.order;\n return this;\n };\n Euler.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 修改欧拉角顺序\n * @param newOrder - 欧拉角顺序\n * @returns 修改结果\n */\n Euler.prototype.reorder = function (newOrder) {\n var quaternion = new Quaternion();\n quaternion.setFromEuler(this);\n return this.setFromQuaternion(quaternion, newOrder);\n };\n /**\n * 通过四元数旋转向量\n * @param v - 待旋转向量\n * @param out - 旋转结果,如果没有传入直接覆盖输入值\n * @returns\n */\n Euler.prototype.rotateVector3 = function (v, out) {\n var q = Euler.tempQuat0;\n return q.setFromEuler(this).rotateVector3(v, out);\n };\n /**\n * 欧拉角相等判断\n * @param euler - 欧拉角\n * @returns 判断结果\n */\n Euler.prototype.equals = function (euler) {\n return euler.x === this.x\n && euler.y === this.y\n && euler.z === this.z\n && euler.order === this.order;\n };\n /**\n * 欧拉角保存于三维向量\n * @param vec - 目标保存对象\n * @returns 保存结果\n */\n Euler.prototype.toVector3 = function (vec) {\n return vec.set(this.x, this.y, this.z);\n };\n /**\n * 欧拉角转数组\n * @returns 保存结果\n */\n Euler.prototype.toArray = function () {\n return [this.x, this.y, this.z];\n };\n /**\n * 欧拉角转四元数\n * @param quat - 目标四元数\n * @returns 目标四元数\n */\n Euler.prototype.toQuaternion = function (quat) {\n var _a;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, order = _a.order;\n var c1 = Math.cos(x * DEG2RAD * 0.5);\n var c2 = Math.cos(y * DEG2RAD * 0.5);\n var c3 = Math.cos(z * DEG2RAD * 0.5);\n var s1 = Math.sin(x * DEG2RAD * 0.5);\n var s2 = Math.sin(y * DEG2RAD * 0.5);\n var s3 = Math.sin(z * DEG2RAD * 0.5);\n switch (order) {\n case EulerOrder.XYZ:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.YXZ:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n case EulerOrder.ZXY:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.ZYX:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n case EulerOrder.YZX:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.XZY:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n default:\n console.error('unknown euler order: ' + order);\n }\n return quat;\n };\n /**\n * 欧拉角转矩阵\n * @param mat - 目标矩阵\n * @returns 返回目标矩阵\n */\n Euler.prototype.toMatrix4 = function (mat) {\n var _a;\n var me = mat.elements;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, order = _a.order;\n var cosX = Math.cos(x * DEG2RAD), sinX = Math.sin(x * DEG2RAD);\n var cosY = Math.cos(y * DEG2RAD), sinY = Math.sin(y * DEG2RAD);\n var cosZ = Math.cos(z * DEG2RAD), sinZ = Math.sin(z * DEG2RAD);\n if (order === EulerOrder.XYZ) {\n var cosXcosZ = cosX * cosZ;\n var cosXsinZ = cosX * sinZ;\n var sinXcosZ = sinX * cosZ;\n var sinXsinZ = sinX * sinZ;\n me[0] = cosY * cosZ;\n me[4] = -cosY * sinZ;\n me[8] = sinY;\n me[1] = cosXsinZ + sinXcosZ * sinY;\n me[5] = cosXcosZ - sinXsinZ * sinY;\n me[9] = -sinX * cosY;\n me[2] = sinXsinZ - cosXcosZ * sinY;\n me[6] = sinXcosZ + cosXsinZ * sinY;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.YXZ) {\n var cosYcosZ = cosY * cosZ;\n var cosYsinZ = cosY * sinZ;\n var sinYcosZ = sinY * cosZ;\n var sinYsinZ = sinY * sinZ;\n me[0] = cosYcosZ + sinYsinZ * sinX;\n me[4] = sinYcosZ * sinX - cosYsinZ;\n me[8] = cosX * sinY;\n me[1] = cosX * sinZ;\n me[5] = cosX * cosZ;\n me[9] = -sinX;\n me[2] = cosYsinZ * sinX - sinYcosZ;\n me[6] = sinYsinZ + cosYcosZ * sinX;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.ZXY) {\n var cosYcosZ = cosY * cosZ;\n var cosYsinZ = cosY * sinZ;\n var sinYcosZ = sinY * cosZ;\n var sinYsinZ = sinY * sinZ;\n me[0] = cosYcosZ - sinYsinZ * sinX;\n me[4] = -cosX * sinZ;\n me[8] = sinYcosZ + cosYsinZ * sinX;\n me[1] = cosYsinZ + sinYcosZ * sinX;\n me[5] = cosX * cosZ;\n me[9] = sinYsinZ - cosYcosZ * sinX;\n me[2] = -cosX * sinY;\n me[6] = sinX;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.ZYX) {\n var cosXcosZ = cosX * cosZ;\n var cosXsinZ = cosX * sinZ;\n var sinXcosZ = sinX * cosZ;\n var sinXsinZ = sinX * sinZ;\n me[0] = cosY * cosZ;\n me[4] = sinXcosZ * sinY - cosXsinZ;\n me[8] = cosXcosZ * sinY + sinXsinZ;\n me[1] = cosY * sinZ;\n me[5] = sinXsinZ * sinY + cosXcosZ;\n me[9] = cosXsinZ * sinY - sinXcosZ;\n me[2] = -sinY;\n me[6] = sinX * cosY;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.YZX) {\n var cosXcosY = cosX * cosY;\n var cosXsinY = cosX * sinY;\n var sinXcosY = sinX * cosY;\n var sinXsinY = sinX * sinY;\n me[0] = cosY * cosZ;\n me[4] = sinXsinY - cosXcosY * sinZ;\n me[8] = sinXcosY * sinZ + cosXsinY;\n me[1] = sinZ;\n me[5] = cosX * cosZ;\n me[9] = -sinX * cosZ;\n me[2] = -sinY * cosZ;\n me[6] = cosXsinY * sinZ + sinXcosY;\n me[10] = cosXcosY - sinXsinY * sinZ;\n }\n else if (order === EulerOrder.XZY) {\n var cosXcosY = cosX * cosY;\n var cosXsinY = cosX * sinY;\n var sinXcosY = sinX * cosY;\n var sinXsinY = sinX * sinY;\n me[0] = cosY * cosZ;\n me[4] = -sinZ;\n me[8] = sinY * cosZ;\n me[1] = cosXcosY * sinZ + sinXsinY;\n me[5] = cosX * cosZ;\n me[9] = cosXsinY * sinZ - sinXcosY;\n me[2] = sinXcosY * sinZ - cosXsinY;\n me[6] = sinX * cosZ;\n me[10] = sinXsinY * sinZ + cosXcosY;\n }\n else {\n console.error('toMatrix4: Invalid order ' + order);\n }\n // bottom row\n me[3] = 0;\n me[7] = 0;\n me[11] = 0;\n // last column\n me[12] = 0;\n me[13] = 0;\n me[14] = 0;\n me[15] = 1;\n return mat;\n };\n /**\n * 通过矩阵创建欧拉角\n * @param m - 矩阵\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromRotationMatrix4 = function (m, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromRotationMatrix4(m, order);\n };\n /**\n * 通过四元数创建欧拉角\n * @param quat - 四元数\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromQuaternion = function (quat, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromQuaternion(quat, order);\n };\n /**\n * 通过三维向量创建欧拉角\n * @param v - 三维向量\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromVector3 = function (v, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromVector3(v, order);\n };\n /**\n * 通过数组创建欧拉角\n * @param array - 数组\n * @param [offset=0] - 偏移\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromArray = function (array, offset, order) {\n if (offset === void 0) { offset = 0; }\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromArray(array, offset, order);\n };\n Euler.DEFAULT_ORDER = EulerOrder.ZYX;\n Euler.tempQuat0 = new Quaternion();\n Euler.tempMat0 = new Matrix4();\n return Euler;\n}());\n","import { NumberEpsilon } from './utils';\nimport { Vector2 } from './vector2';\n/**\n * 三维向量\n */\nexport var Vector3 = /** @class */ (function () {\n /**\n * 构造函数,默认值为零向量\n * @param [x=0]\n * @param [y=0]\n * @param [z=0]\n */\n function Vector3(x, y, z) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n this.x = x;\n this.y = y;\n this.z = z;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @param z - z 轴分量\n * @returns 向量\n */\n Vector3.prototype.set = function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector3.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n return this;\n };\n /**\n * 通过标量数值设置向量\n * @param num - 数值\n * @returns 向量\n */\n Vector3.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n this.z = num;\n return this;\n };\n /**\n * 通过数组设置向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector3.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param v - 要拷贝的对象\n * @returns 向量\n */\n Vector3.prototype.copyFrom = function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n };\n /**\n * 克隆向量\n * @returns 向量\n */\n Vector3.prototype.clone = function () {\n return new Vector3(this.x, this.y, this.z);\n };\n /**\n * 根据下标设置向量分量\n * @param index - 下标值\n * @param value - 数字\n * @returns 向量\n */\n Vector3.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取向量分量\n * @param index - 下标\n * @returns\n */\n Vector3.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 向量 | 数字\n * @returns 相加结果\n */\n Vector3.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n this.z += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n this.z += right[2];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n this.z += right.z;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 相加结果\n */\n Vector3.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n return this;\n };\n /**\n * 向量乘比例后相加\n * @param right - 向量\n * @param s - 比例\n * @returns 相加结果\n */\n Vector3.prototype.addScaledVector = function (right, s) {\n this.x += right.x * s;\n this.y += right.y * s;\n this.z += right.z * s;\n return this;\n };\n /**\n * 向量相减\n * @param right - 向量 | 数字\n * @returns 相减\n */\n Vector3.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n this.z -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n this.z -= right[2];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n this.z -= right.z;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 相减结果\n */\n Vector3.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n this.z = left.z - right.z;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 向量 | 数字\n * @returns 相乘结果\n */\n Vector3.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n this.z *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n this.z *= right[2];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n this.z *= right.z;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 相乘结果\n */\n Vector3.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n this.z = left.z * right.z;\n return this;\n };\n /**\n * 向量相除\n * @param right - 向量 | 数字\n * @returns 相除结果\n */\n Vector3.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n this.z /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n this.z /= right[2];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n this.z /= right.z;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector3.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector3.prototype.sum = function () {\n return this.x + this.y + this.z;\n };\n /**\n * 向量求最小值\n * @param v - 向量或数值\n * @returns 求值结果\n */\n Vector3.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n this.z = Math.min(this.z, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量或数值\n * @returns 求值结果\n */\n Vector3.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n this.z = Math.max(this.z, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 向量\n * @param max - 向量\n * @returns 求值结果\n */\n Vector3.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector3.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector3.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n };\n /**\n * 向量四舍五入\n * @returns 计算结果\n */\n Vector3.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector3.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n this.z = Math.abs(this.z);\n return this;\n };\n /**\n * 向量取反\n * @returns 向量\n */\n Vector3.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 向量长度\n * @returns 长度\n */\n Vector3.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n };\n /**\n * 向量长度平方\n * @returns 长度平方\n */\n Vector3.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n };\n /**\n * 向量归一化\n * @returns 向量\n */\n Vector3.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector3.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量间求线性插值\n * @param other - 向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector3.prototype.lerp = function (other, alpha) {\n this.x += (other.x - this.x) * alpha;\n this.y += (other.y - this.y) * alpha;\n this.z += (other.z - this.z) * alpha;\n return this;\n };\n /**\n * 向量间求线性插值\n * @param v1 - 第一个向量\n * @param v2 - 第二个向量\n * @param alpha - 插值比例\n * @returns 求值结果\n */\n Vector3.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n };\n /**\n * 向量求点积,点积为零表示两向量垂直\n * @param v - 向量\n * @returns 点积结果\n */\n Vector3.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n };\n /**\n * 向量求叉积\n * @param right - 向量\n * @returns 叉积结果\n */\n Vector3.prototype.cross = function (right) {\n return this.crossVectors(this, right);\n };\n /**\n * 向量(a 与 b)求叉积\n * @param left - 向量\n * @param right - 向量\n * @returns 叉积结果\n */\n Vector3.prototype.crossVectors = function (left, right) {\n var ax = left.x, ay = left.y, az = left.z;\n var bx = right.x, by = right.y, bz = right.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n };\n /**\n * 向量反射\n * @param normal - 法线\n * @returns 反射结果\n */\n Vector3.prototype.reflect = function (normal) {\n // reflect incident vector off plane orthogonal to normal\n // normal is assumed to have unit length\n return this.subtract(normal.clone().multiply(2 * this.dot(normal)));\n };\n /**\n * 计算向量距离\n * @param v - 向量\n * @returns 距离\n */\n Vector3.prototype.distance = function (v) {\n return Math.sqrt(this.distanceSquared(v));\n };\n /**\n * 计算向量距离平方\n * @param v - 向量\n * @returns 距离平方\n */\n Vector3.prototype.distanceSquared = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n var dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector3.prototype.equals = function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector3.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z;\n return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps;\n };\n /**\n * 向量转数组\n * @param array - 目标保存对象\n * @returns 数组\n */\n Vector3.prototype.toArray = function () {\n return [this.x, this.y, this.z];\n };\n Vector3.prototype.toVector2 = function () {\n return new Vector2(this.x, this.y);\n };\n Vector3.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n };\n /**\n * 获取随机向量\n * @returns\n */\n Vector3.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n };\n /**\n * 用欧拉角旋转向量\n * @param euler - 欧拉角\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 旋转结果\n */\n Vector3.prototype.applyEuler = function (euler, out) {\n return euler.rotateVector3(this, out);\n };\n /**\n * 用四元数旋转向量\n * @param q - 四元数\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 旋转结果\n */\n Vector3.prototype.applyQuaternion = function (q, out) {\n return q.rotateVector3(this, out);\n };\n /**\n * 用矩阵变换点\n * @param m - 变换矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 结果点\n */\n Vector3.prototype.applyMatrix = function (m, out) {\n return m.transformPoint(this, out);\n };\n /**\n * 用法向量矩阵变换法向量\n * @param m - 法向量矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 向量\n */\n Vector3.prototype.applyNormalMatrix = function (m, out) {\n return m.transformNormal(this, out);\n };\n /**\n * 用投影矩阵变换点\n * @param m - 投影矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 结果点\n */\n Vector3.prototype.applyProjectionMatrix = function (m, out) {\n return m.projectPoint(this, out);\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector3.fromNumber = function (num) {\n return new Vector3().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector3.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector3().setFromArray(array, offset);\n };\n /**\n * 三维向量的常量\n */\n Vector3.X = new Vector3(1.0, 0.0, 0.0);\n Vector3.Y = new Vector3(0.0, 1.0, 0.0);\n Vector3.Z = new Vector3(0.0, 0.0, 1.0);\n Vector3.ONE = new Vector3(1.0, 1.0, 1.0);\n Vector3.ZERO = new Vector3(0.0, 0.0, 0.0);\n return Vector3;\n}());\n","import { clamp } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四元数\n */\nexport var Quaternion = /** @class */ (function () {\n /**\n * 构造函数\n * @param [x=0] - x 分量\n * @param [y=0] - y 分量\n * @param [z=0] - z 分量\n * @param [w=1] - w 分量\n */\n function Quaternion(x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 1; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * 四元数设置\n * @param x - x 分量\n * @param y - y 分量\n * @param z - z 分量\n * @param w - w 分量\n * @returns 四元数\n */\n Quaternion.prototype.set = function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n };\n /**\n * 通过欧拉角设置四元数\n * @param euler - 欧拉角\n * @returns\n */\n Quaternion.prototype.setFromEuler = function (euler) {\n euler.toQuaternion(this);\n return this;\n };\n /**\n * 通过旋转轴和旋转角度设置四元数\n * @param axis - 旋转轴\n * @param angle - 旋转角度(弧度)\n * @returns\n */\n Quaternion.prototype.setFromAxisAngle = function (axis, angle) {\n var halfAngle = angle / 2;\n var s = Math.sin(halfAngle);\n var v = Quaternion.tempVec0;\n v.copyFrom(axis).normalize();\n this.x = v.x * s;\n this.y = v.y * s;\n this.z = v.z * s;\n this.w = Math.cos(halfAngle);\n return this;\n };\n /**\n * 通过数组设置四元数\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Quaternion.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n this.w = array[offset + 3];\n return this;\n };\n /**\n * 通过矩阵设置四元数\n * @param m - 矩阵\n * @returns\n */\n Quaternion.prototype.setFromRotationMatrix = function (m) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n var trace = m11 + m22 + m33;\n if (trace > 0) {\n var s = 0.5 / Math.sqrt(trace + 1.0);\n this.w = 0.25 / s;\n this.x = (m32 - m23) * s;\n this.y = (m13 - m31) * s;\n this.z = (m21 - m12) * s;\n }\n else if (m11 > m22 && m11 > m33) {\n var s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n this.w = (m32 - m23) / s;\n this.x = 0.25 * s;\n this.y = (m12 + m21) / s;\n this.z = (m13 + m31) / s;\n this.negate();\n }\n else if (m22 > m33) {\n var s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n this.w = (m13 - m31) / s;\n this.x = (m12 + m21) / s;\n this.y = 0.25 * s;\n this.z = (m23 + m32) / s;\n this.negate();\n }\n else {\n var s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n this.w = (m21 - m12) / s;\n this.x = (m13 + m31) / s;\n this.y = (m23 + m32) / s;\n this.z = 0.25 * s;\n this.negate();\n }\n // 兼容原先数学库\n return this;\n };\n /**\n * 通过开始和结束向量设置四元数\n * @param from - 开始向量\n * @param to - 结束向量\n * @returns\n */\n Quaternion.prototype.setFromUnitVectors = function (from, to) {\n // assumes direction vectors vFrom and vTo are normalized\n var r = from.dot(to) + 1;\n if (r < Number.EPSILON) {\n r = 0;\n if (Math.abs(from.x) > Math.abs(from.z)) {\n this.x = -from.y;\n this.y = from.x;\n this.z = 0;\n this.w = r;\n }\n else {\n this.x = 0;\n this.y = -from.z;\n this.z = from.y;\n this.w = r;\n }\n }\n else {\n this.x = from.y * to.z - from.z * to.y;\n this.y = from.z * to.x - from.x * to.z;\n this.z = from.x * to.y - from.y * to.x;\n this.w = r;\n }\n return this.normalize();\n };\n /**\n * 四元数拷贝\n * @param quat - 拷贝目标四元数\n * @returns 拷贝四元数\n */\n Quaternion.prototype.copyFrom = function (quat) {\n this.x = quat.x;\n this.y = quat.y;\n this.z = quat.z;\n this.w = quat.w;\n return this;\n };\n /**\n * 四元数克隆\n * @returns 克隆结果\n */\n Quaternion.prototype.clone = function () {\n return new Quaternion(this.x, this.y, this.z, this.w);\n };\n /**\n * 四元数间的夹角计算\n * @param other - 其他四元数\n * @returns 夹角\n */\n Quaternion.prototype.angleTo = function (other) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(other), -1, 1)));\n };\n /**\n * 四元数向目标旋转\n * @param q - 四元数\n * @param step - 旋转弧度\n * @returns 目标四元数\n */\n Quaternion.prototype.rotateTowards = function (q, step) {\n var angle = this.angleTo(q);\n if (angle === 0) {\n return this;\n }\n var t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n };\n /**\n * 四元数单位化\n * @returns 单位四元数\n */\n Quaternion.prototype.identity = function () {\n return this.set(0, 0, 0, 1);\n };\n /**\n * 四元数求逆\n * @returns 四元数的逆\n */\n Quaternion.prototype.invert = function () {\n return this.conjugate();\n };\n /**\n * 四元数取负\n * @returns 负四元数\n */\n Quaternion.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n };\n /**\n * 四元数求共轭值\n * @returns 四元数的共轭值\n */\n Quaternion.prototype.conjugate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 四元数点乘结果\n * @param v\n * @return\n */\n Quaternion.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n };\n /**\n * 四元数的模平方\n * @return\n */\n Quaternion.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n };\n /**\n * 四元数的欧式长度\n * @returns 长度\n */\n Quaternion.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n };\n /**\n * 四元数归一化\n * @returns 归一化值\n */\n Quaternion.prototype.normalize = function () {\n var l = this.length();\n if (l === 0) {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 1;\n }\n else {\n l = 1 / l;\n this.x = this.x * l;\n this.y = this.y * l;\n this.z = this.z * l;\n this.w = this.w * l;\n }\n return this;\n };\n /**\n * 四元数右乘\n * @param right - 右乘的四元数\n * @returns\n */\n Quaternion.prototype.multiply = function (right) {\n return this.multiplyQuaternions(this, right);\n };\n /**\n * 四元数左乘\n * @param left - 左乘的四元数\n * @returns\n */\n Quaternion.prototype.premultiply = function (left) {\n return this.multiplyQuaternions(left, this);\n };\n /**\n * 四元数乘法\n * @param left - 四元数\n * @param right - 四元数\n * @returns 四元数\n */\n Quaternion.prototype.multiplyQuaternions = function (left, right) {\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n var qax = left.x;\n var qay = left.y;\n var qaz = left.z;\n var qaw = left.w;\n var qbx = right.x;\n var qby = right.y;\n var qbz = right.z;\n var qbw = right.w;\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n return this;\n };\n /**\n * 四元数线性插值\n * @see http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n * @param other - 四元数\n * @param t - 插值比\n * @returns 插值结果\n */\n Quaternion.prototype.slerp = function (other, t) {\n var _a;\n if (t === 0) {\n return this;\n }\n if (t === 1) {\n return this.copyFrom(other);\n }\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, w = _a.w;\n var cosHalfTheta = w * other.w + x * other.x + y * other.y + z * other.z;\n if (cosHalfTheta < 0) {\n this.w = -other.w;\n this.x = -other.x;\n this.y = -other.y;\n this.z = -other.z;\n cosHalfTheta = -cosHalfTheta;\n }\n else {\n this.copyFrom(other);\n }\n if (cosHalfTheta >= 1.0) {\n this.w = w;\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n var s = 1 - t;\n this.w = s * w + t * this.w;\n this.x = s * x + t * this.x;\n this.y = s * y + t * this.y;\n this.z = s * z + t * this.z;\n this.normalize();\n return this;\n }\n var sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n var halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n var ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n var ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this.w = (w * ratioA + this.w * ratioB);\n this.x = (x * ratioA + this.x * ratioB);\n this.y = (y * ratioA + this.y * ratioB);\n this.z = (z * ratioA + this.z * ratioB);\n return this;\n };\n /**\n * 两个四元数的线性插值\n * @param qa - 四元数\n * @param qb - 四元数\n * @param t - 插值比\n */\n Quaternion.prototype.slerpQuaternions = function (qa, qb, t) {\n this.copyFrom(qa).slerp(qb, t);\n };\n /**\n * 通过四元数旋转向量\n * @param v - 待旋转向量\n * @param [out] - 旋转结果,如果没有传入直接覆盖输入值\n * @returns\n */\n Quaternion.prototype.rotateVector3 = function (v, out) {\n var _a;\n var qx = (_a = this, _a.x), qy = _a.y, qz = _a.z, qw = _a.w;\n var vx = v.x, vy = v.y, vz = v.z;\n var ix = qw * vx + qy * vz - qz * vy;\n var iy = qw * vy + qz * vx - qx * vz;\n var iz = qw * vz + qx * vy - qy * vx;\n var iw = -qx * vx - qy * vy - qz * vz;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n res.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n res.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return res;\n };\n /**\n * 四元数判等\n * @param quaternion - 四元数\n * @returns 判等结果\n */\n Quaternion.prototype.equals = function (quaternion) {\n return quaternion.x === this.x\n && quaternion.y === this.y\n && quaternion.z === this.z\n && quaternion.w === this.w;\n };\n /**\n * 四元数保存为数组\n * @returns\n */\n Quaternion.prototype.toArray = function () {\n return [this.x, this.y, this.z, this.w];\n };\n /**\n * 四元数转四维向量数组\n * @param vec - 目标保存对象\n * @returns 保存结果\n */\n Quaternion.prototype.toVector4 = function (vec) {\n return vec.set(this.x, this.y, this.z, this.w);\n };\n /**\n * 四元数转欧拉角\n * @param euler - 目标欧拉角\n * @returns 欧拉角\n */\n Quaternion.prototype.toEuler = function (euler) {\n return euler.setFromQuaternion(this);\n };\n /**\n * 四元数转矩阵\n * @param mat - 目标矩阵\n * @returns\n */\n Quaternion.prototype.toMatrix4 = function (mat) {\n return mat.compose(Vector3.ZERO, this, Vector3.ONE);\n };\n /**\n * 通过欧拉角创建四元数\n * @param euler - 欧拉角\n * @returns 四元数\n */\n Quaternion.fromEuler = function (euler) {\n return new Quaternion().setFromEuler(euler);\n };\n /**\n * 通过旋转轴和旋转角度创建四元数\n * @param axis - 旋转轴\n * @param angle - 旋转角(弧度值)\n * @returns 四元数\n */\n Quaternion.fromAxisAngle = function (axis, angle) {\n return new Quaternion().setFromAxisAngle(axis, angle);\n };\n /**\n * 通过数组获取四元数\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 四元数\n */\n Quaternion.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Quaternion().setFromArray(array, offset);\n };\n /**\n * 通过旋转矩阵创建四元数\n * @param m - 旋转矩阵\n * @returns 四元数\n */\n Quaternion.fromRotationMatrix = function (m) {\n return new Quaternion().setFromRotationMatrix(m);\n };\n /**\n * 通过开始和结束向量创建四元数\n * @param from - 开始向量\n * @param to - 结束向量\n * @returns\n */\n Quaternion.fromUnitVectors = function (from, to) {\n return new Quaternion().setFromUnitVectors(from, to);\n };\n Quaternion.tempVec0 = new Vector3();\n return Quaternion;\n}());\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { Vector3 } from './vector3';\nimport { isEqual } from './utils';\nimport { Quaternion } from './quaternion';\n/**\n * 四阶矩阵(列优先矩阵)\n */\nexport var Matrix4 = /** @class */ (function () {\n /**\n * 构造函数,初始值为单位矩阵\n * @param [m11=1] - 第 1 行,第 1 列\n * @param [m21=0] - 第 2 行,第 1 列\n * @param [m31=0] - 第 3 行,第 1 列\n * @param [m41=0] - 第 4 行,第 1 列\n * @param [m12=0] - 第 1 行,第 2 列\n * @param [m22=1] - 第 2 行,第 2 列\n * @param [m32=0] - 第 3 行,第 2 列\n * @param [m42=0] - 第 4 行,第 2 列\n * @param [m13=0] - 第 1 行,第 3 列\n * @param [m23=0] - 第 2 行,第 3 列\n * @param [m33=1] - 第 3 行,第 3 列\n * @param [m43=0] - 第 4 行,第 3 列\n * @param [m14=0] - 第 1 行,第 4 列\n * @param [m24=0] - 第 2 行,第 4 列\n * @param [m34=0] - 第 3 行,第 4 列\n * @param [m44=1] - 第 4 行,第 4 列\n */\n function Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n if (m11 === void 0) { m11 = 1; }\n if (m21 === void 0) { m21 = 0; }\n if (m31 === void 0) { m31 = 0; }\n if (m41 === void 0) { m41 = 0; }\n if (m12 === void 0) { m12 = 0; }\n if (m22 === void 0) { m22 = 1; }\n if (m32 === void 0) { m32 = 0; }\n if (m42 === void 0) { m42 = 0; }\n if (m13 === void 0) { m13 = 0; }\n if (m23 === void 0) { m23 = 0; }\n if (m33 === void 0) { m33 = 1; }\n if (m43 === void 0) { m43 = 0; }\n if (m14 === void 0) { m14 = 0; }\n if (m24 === void 0) { m24 = 0; }\n if (m34 === void 0) { m34 = 0; }\n if (m44 === void 0) { m44 = 1; }\n this.elements = [\n m11, m21, m31, m41,\n m12, m22, m32, m42,\n m13, m23, m33, m43,\n m14, m24, m34, m44,\n ];\n }\n /**\n * 设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m21 - 第 2 行,第 1 列\n * @param m31 - 第 3 行,第 1 列\n * @param m41 - 第 4 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m22 - 第 2 行,第 2 列\n * @param m32 - 第 3 行,第 2 列\n * @param m42 - 第 4 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m23 - 第 2 行,第 3 列\n * @param m33 - 第 3 行,第 3 列\n * @param m43 - 第 4 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m24 - 第 2 行,第 4 列\n * @param m34 - 第 3 行,第 4 列\n * @param m44 - 第 4 行,第 4 列\n * @returns 矩阵\n */\n Matrix4.prototype.set = function (m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n var e = this.elements;\n e[0] = m11;\n e[1] = m21;\n e[2] = m31;\n e[3] = m41;\n e[4] = m12;\n e[5] = m22;\n e[6] = m32;\n e[7] = m42;\n e[8] = m13;\n e[9] = m23;\n e[10] = m33;\n e[11] = m43;\n e[12] = m14;\n e[13] = m24;\n e[14] = m34;\n e[15] = m44;\n return this;\n };\n /**\n * 通过行优先数据设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m24 - 第 2 行,第 4 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @param m34 - 第 3 行,第 4 列\n * @param m41 - 第 4 行,第 1 列\n * @param m42 - 第 4 行,第 2 列\n * @param m43 - 第 4 行,第 3 列\n * @param m44 - 第 4 行,第 4 列\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRowMajorData = function (m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n var e = this.elements;\n e[0] = m11;\n e[4] = m12;\n e[8] = m13;\n e[12] = m14;\n e[1] = m21;\n e[5] = m22;\n e[9] = m23;\n e[13] = m24;\n e[2] = m31;\n e[6] = m32;\n e[10] = m33;\n e[14] = m34;\n e[3] = m41;\n e[7] = m42;\n e[11] = m43;\n e[15] = m44;\n return this;\n };\n /**\n * 通过四个列向量设置矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @param c4 - 第四列\n * @returns 矩阵\n */\n Matrix4.prototype.setFromColumnVectors = function (c1, c2, c3, c4) {\n return this.set(c1.x, c1.y, c1.z, c1.w, c2.x, c2.y, c2.z, c2.w, c3.x, c3.y, c3.z, c3.w, c4.x, c4.y, c4.z, c4.w);\n };\n /**\n * 通过三维矩阵设置矩阵\n * @param m - 三维矩阵\n * @returns 设置结果\n */\n Matrix4.prototype.setFromMatrix3 = function (m) {\n var me = m.elements;\n this.set(me[0], me[1], me[2], 0, me[3], me[4], me[5], 0, me[6], me[7], me[8], 0, 0, 0, 0, 1);\n return this;\n };\n /**\n * 通过数组设置矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix4.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < 16; i++) {\n this.elements[i] = array[offset + i];\n }\n return this;\n };\n /**\n * 通过缩放设置矩阵\n * @param x - x 方向缩放\n * @param y - y 方向缩放\n * @param z - z 方向缩放\n * @returns 缩放矩阵\n */\n Matrix4.prototype.setFromScale = function (x, y, z) {\n return this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n };\n /**\n * 通过平移设置矩阵\n * @param x - x 方向平移\n * @param y - y 方向平移\n * @param z - z 方向平移\n * @returns 平移矩阵\n */\n Matrix4.prototype.setFromTranslation = function (x, y, z) {\n return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1);\n };\n /**\n * 通过 x 轴旋转角度设置矩阵\n * @param theta - x 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationX = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过 y 轴旋转角度设置矩阵\n * @param theta - y 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationY = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过 z 轴旋转角度设置矩阵\n * @param theta - z 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationZ = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 根据三维旋转轴与弧度设置矩阵\n * @param axis - 三维旋转轴\n * @param angle - 旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationAxis = function (axis, angle) {\n // Based on http://www.gamedev.net/reference/articles/article1199.asp\n var v = Matrix4.tempVec0;\n v.copyFrom(axis).normalize();\n var c = Math.cos(angle);\n var s = Math.sin(angle);\n var t = 1 - c;\n var x = v.x, y = v.y, z = v.z;\n var tx = t * x;\n var ty = t * y;\n return this.set(tx * x + c, tx * y + s * z, tx * z - s * y, 0, tx * y - s * z, ty * y + c, ty * z + s * x, 0, tx * z + s * y, ty * z - s * x, t * z * z + c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过欧拉角设置矩阵\n * @param euler - 欧拉角\n * @returns 矩阵\n */\n Matrix4.prototype.setFromEuler = function (euler) {\n euler.toMatrix4(this);\n return this;\n };\n /**\n * 通过四元数设置矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix4.prototype.setFromQuaternion = function (quat) {\n return this.compose(Vector3.ZERO, quat, Vector3.ONE);\n };\n /**\n * 通过倾斜参数设置矩阵\n * @param x - x 方向倾斜分量\n * @param y - y 方向倾斜分量\n * @param z - z 方向倾斜分量\n * @returns 倾斜矩阵\n */\n Matrix4.prototype.setFromShear = function (x, y, z) {\n return this.set(1, x, x, 0, y, 1, y, 0, z, z, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 通过基轴设置矩阵\n * @param xAxis - x 轴\n * @param yAxis - y 轴\n * @param zAxis - z 轴\n * @returns 倾斜矩阵\n */\n Matrix4.prototype.setFromBasis = function (xAxis, yAxis, zAxis) {\n return this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, zAxis.x, zAxis.y, zAxis.z, 0, 0, 0, 0, 1);\n };\n /**\n * 矩阵清零\n * @returns 零矩阵\n */\n Matrix4.prototype.setZero = function () {\n for (var i = 0; i < 16; i++) {\n this.elements[i] = 0;\n }\n return this;\n };\n /**\n * 矩阵单位化\n * @returns 单位矩阵\n */\n Matrix4.prototype.identity = function () {\n return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 单位阵判断\n * @returns 判断结果\n */\n Matrix4.prototype.isIdentity = function () {\n var e = this.elements;\n return e[0] === 1 && e[4] === 0 && e[8] === 0 && e[12] === 0\n && e[1] === 0 && e[5] === 1 && e[9] === 0 && e[13] === 0\n && e[2] === 0 && e[6] === 0 && e[10] === 1 && e[14] === 0\n && e[3] === 0 && e[7] === 0 && e[11] === 0 && e[15] === 1;\n };\n /**\n * 矩阵克隆\n * @returns 克隆结果\n */\n Matrix4.prototype.clone = function () {\n var e = this.elements;\n return new Matrix4(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15]);\n };\n /**\n * 矩阵复制\n * @param m - 复制对象\n * @returns 复制结果\n */\n Matrix4.prototype.copyFrom = function (m) {\n this.elements = __spreadArray([], __read(m.elements), false);\n return this;\n };\n /**\n * 得到列向量\n * @param i - 列向量索引,从 0 开始\n * @param v\n * @returns 矩阵\n */\n Matrix4.prototype.getColumnVector = function (i, v) {\n return v.set(this.elements[i * 4], this.elements[i * 4 + 1], this.elements[i * 4 + 2], this.elements[i * 4 + 3]);\n };\n /**\n * 设置相机矩阵\n * @param eye - 相机位置\n * @param target - 目标位置\n * @param up - 相机方向\n * @returns 矩阵\n */\n Matrix4.prototype.lookAt = function (eye, target, up) {\n var vX = Matrix4.tempVec0;\n var vY = Matrix4.tempVec1;\n var vZ = Matrix4.tempVec2;\n vZ.subtractVectors(eye, target);\n vZ.normalize();\n vX.crossVectors(up, vZ);\n vX.normalize();\n vY.crossVectors(vZ, vX);\n var te = this.elements;\n te[0] = vX.x;\n te[1] = vY.x;\n te[2] = vZ.x;\n te[3] = 0;\n te[4] = vX.y;\n te[5] = vY.y;\n te[6] = vZ.y;\n te[7] = 0;\n te[8] = vX.z;\n te[9] = vY.z;\n te[10] = vZ.z;\n te[11] = 0;\n te[12] = -vX.dot(eye);\n te[13] = -vY.dot(eye);\n te[14] = -vZ.dot(eye);\n te[15] = 1;\n return this;\n };\n /**\n * 矩阵乘比例后相加\n * @param right - 矩阵\n * @param s - 比例\n * @returns 相加结果\n */\n Matrix4.prototype.addScaledMatrix = function (right, s) {\n var te = this.elements;\n var re = right.elements;\n for (var i = 0; i < 16; i++) {\n te[i] += re[i] * s;\n }\n return this;\n };\n /**\n * 矩阵右乘\n * @param right - 右侧矩阵或数值\n * @returns 右乘结果\n */\n Matrix4.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n for (var i = 0; i < 16; i++) {\n this.elements[i] *= right;\n }\n return this;\n }\n else {\n return this.multiplyMatrices(this, right);\n }\n };\n /**\n * 矩阵左乘\n * @param left - 左侧矩阵\n * @returns 左乘结果\n */\n Matrix4.prototype.premultiply = function (left) {\n return this.multiplyMatrices(left, this);\n };\n /**\n * 矩阵相乘\n * @param left - 矩阵\n * @param right - 矩阵\n * @returns 相乘结果\n */\n Matrix4.prototype.multiplyMatrices = function (left, right) {\n var ae = left.elements;\n var be = right.elements;\n var te = this.elements;\n var a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n var a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n var a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n var a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n var b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n var b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n var b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n var b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n return this;\n };\n /**\n * 矩阵缩放\n * @param s - 缩放比例\n * @returns 缩放结果\n */\n Matrix4.prototype.multiplyScalar = function (s) {\n var e = this.elements;\n e[0] *= s;\n e[4] *= s;\n e[8] *= s;\n e[12] *= s;\n e[1] *= s;\n e[5] *= s;\n e[9] *= s;\n e[13] *= s;\n e[2] *= s;\n e[6] *= s;\n e[10] *= s;\n e[14] *= s;\n e[3] *= s;\n e[7] *= s;\n e[11] *= s;\n e[15] *= s;\n return this;\n };\n /**\n * 矩阵求行列式值\n * @returns 行列式值\n */\n Matrix4.prototype.determinant = function () {\n var e = this.elements;\n var m11 = e[0], m12 = e[4], m13 = e[8], m14 = e[12];\n var m21 = e[1], m22 = e[5], m23 = e[9], m24 = e[13];\n var m31 = e[2], m32 = e[6], m33 = e[10], m34 = e[14];\n var m41 = e[3], m42 = e[7], m43 = e[11], m44 = e[15];\n return (m41 * (+m14 * m23 * m32\n - m13 * m24 * m32\n - m14 * m22 * m33\n + m12 * m24 * m33\n + m13 * m22 * m34\n - m12 * m23 * m34) +\n m42 * (+m11 * m23 * m34\n - m11 * m24 * m33\n + m14 * m21 * m33\n - m13 * m21 * m34\n + m13 * m24 * m31\n - m14 * m23 * m31) +\n m43 * (+m11 * m24 * m32\n - m11 * m22 * m34\n - m14 * m21 * m32\n + m12 * m21 * m34\n + m14 * m22 * m31\n - m12 * m24 * m31) +\n m44 * (-m13 * m22 * m31\n - m11 * m23 * m32\n + m11 * m22 * m33\n + m13 * m21 * m32\n - m12 * m21 * m33\n + m12 * m23 * m31));\n };\n /**\n * 矩阵转置\n * @returns 转置结果\n */\n Matrix4.prototype.transpose = function () {\n var e = this.elements;\n var t;\n t = e[1];\n e[1] = e[4];\n e[4] = t;\n t = e[2];\n e[2] = e[8];\n e[8] = t;\n t = e[3];\n e[3] = e[12];\n e[12] = t;\n //\n t = e[6];\n e[6] = e[9];\n e[9] = t;\n t = e[7];\n e[7] = e[13];\n e[13] = t;\n t = e[11];\n e[11] = e[14];\n e[14] = t;\n return this;\n };\n /**\n * 矩阵求逆\n * @returns 逆矩阵\n */\n Matrix4.prototype.invert = function () {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n var e = this.elements;\n var m11 = e[0], m21 = e[1], m31 = e[2], m41 = e[3];\n var m12 = e[4], m22 = e[5], m32 = e[6], m42 = e[7];\n var m13 = e[8], m23 = e[9], m33 = e[10], m43 = e[11];\n var m14 = e[12], m24 = e[13], m34 = e[14], m44 = e[15];\n var t11 = m23 * m34 * m42 - m24 * m33 * m42 + m24 * m32 * m43 - m22 * m34 * m43 - m23 * m32 * m44 + m22 * m33 * m44;\n var t12 = m14 * m33 * m42 - m13 * m34 * m42 - m14 * m32 * m43 + m12 * m34 * m43 + m13 * m32 * m44 - m12 * m33 * m44;\n var t13 = m13 * m24 * m42 - m14 * m23 * m42 + m14 * m22 * m43 - m12 * m24 * m43 - m13 * m22 * m44 + m12 * m23 * m44;\n var t14 = m14 * m23 * m32 - m13 * m24 * m32 - m14 * m22 * m33 + m12 * m24 * m33 + m13 * m22 * m34 - m12 * m23 * m34;\n var det = m11 * t11 + m21 * t12 + m31 * t13 + m41 * t14;\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n var detInv = 1 / det;\n e[0] = t11 * detInv;\n e[1] = (m24 * m33 * m41 - m23 * m34 * m41 - m24 * m31 * m43 + m21 * m34 * m43 + m23 * m31 * m44 - m21 * m33 * m44) * detInv;\n e[2] = (m22 * m34 * m41 - m24 * m32 * m41 + m24 * m31 * m42 - m21 * m34 * m42 - m22 * m31 * m44 + m21 * m32 * m44) * detInv;\n e[3] = (m23 * m32 * m41 - m22 * m33 * m41 - m23 * m31 * m42 + m21 * m33 * m42 + m22 * m31 * m43 - m21 * m32 * m43) * detInv;\n e[4] = t12 * detInv;\n e[5] = (m13 * m34 * m41 - m14 * m33 * m41 + m14 * m31 * m43 - m11 * m34 * m43 - m13 * m31 * m44 + m11 * m33 * m44) * detInv;\n e[6] = (m14 * m32 * m41 - m12 * m34 * m41 - m14 * m31 * m42 + m11 * m34 * m42 + m12 * m31 * m44 - m11 * m32 * m44) * detInv;\n e[7] = (m12 * m33 * m41 - m13 * m32 * m41 + m13 * m31 * m42 - m11 * m33 * m42 - m12 * m31 * m43 + m11 * m32 * m43) * detInv;\n e[8] = t13 * detInv;\n e[9] = (m14 * m23 * m41 - m13 * m24 * m41 - m14 * m21 * m43 + m11 * m24 * m43 + m13 * m21 * m44 - m11 * m23 * m44) * detInv;\n e[10] = (m12 * m24 * m41 - m14 * m22 * m41 + m14 * m21 * m42 - m11 * m24 * m42 - m12 * m21 * m44 + m11 * m22 * m44) * detInv;\n e[11] = (m13 * m22 * m41 - m12 * m23 * m41 - m13 * m21 * m42 + m11 * m23 * m42 + m12 * m21 * m43 - m11 * m22 * m43) * detInv;\n e[12] = t14 * detInv;\n e[13] = (m13 * m24 * m31 - m14 * m23 * m31 + m14 * m21 * m33 - m11 * m24 * m33 - m13 * m21 * m34 + m11 * m23 * m34) * detInv;\n e[14] = (m14 * m22 * m31 - m12 * m24 * m31 - m14 * m21 * m32 + m11 * m24 * m32 + m12 * m21 * m34 - m11 * m22 * m34) * detInv;\n e[15] = (m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) * detInv;\n return this;\n };\n /**\n * 提取基轴\n * @param xAxis - 提取的 x 轴\n * @param yAxis - 提取的 y 轴\n * @param zAxis - 提取的 z 轴\n * @returns\n */\n Matrix4.prototype.extractBasis = function (xAxis, yAxis, zAxis) {\n var te = this.elements;\n xAxis.set(te[0], te[1], te[2]);\n yAxis.set(te[4], te[5], te[6]);\n zAxis.set(te[8], te[9], te[10]);\n return this;\n };\n /**\n * 根据基础信息组装矩阵\n * @param translation - 位置信息\n * @param rotation - 旋转信息\n * @param scale - 缩放信息\n * @param [anchor] - 锚点信息\n * @returns 矩阵\n */\n Matrix4.prototype.compose = function (translation, rotation, scale, anchor) {\n if (anchor === void 0) { anchor = Vector3.ZERO; }\n var te = this.elements;\n var x = rotation.x, y = rotation.y, z = rotation.z, w = rotation.w;\n var l = -anchor.x;\n var m = -anchor.y;\n var n = -anchor.z;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = scale.x, sy = scale.y, sz = scale.z;\n te[0] = (1 - (yy + zz)) * sx;\n te[1] = (xy + wz) * sx;\n te[2] = (xz - wy) * sx;\n te[3] = 0;\n te[4] = (xy - wz) * sy;\n te[5] = (1 - (xx + zz)) * sy;\n te[6] = (yz + wx) * sy;\n te[7] = 0;\n te[8] = (xz + wy) * sz;\n te[9] = (yz - wx) * sz;\n te[10] = (1 - (xx + yy)) * sz;\n te[11] = 0;\n te[12] = l * te[0] + m * te[4] + n * te[8] - l + translation.x;\n te[13] = l * te[1] + m * te[5] + n * te[9] - m + translation.y;\n te[14] = l * te[2] + m * te[6] + n * te[10] - n + translation.z;\n return this;\n };\n /**\n * 矩阵拆分为基础信息\n * @param translation - 位置信息\n * @param rotation - 旋转信息\n * @param scale - 缩放信息\n * @returns 矩阵\n */\n Matrix4.prototype.decompose = function (translation, rotation, scale) {\n var v = Matrix4.tempVec0;\n var te = this.elements;\n var sx = v.set(te[0], te[1], te[2]).length();\n var sy = v.set(te[4], te[5], te[6]).length();\n var sz = v.set(te[8], te[9], te[10]).length();\n // if determine is negative, we need to invert one scale\n var det = this.determinant();\n if (det < 0) {\n sx = -sx;\n }\n translation.x = te[12];\n translation.y = te[13];\n translation.z = te[14];\n // scale the rotation part\n var m = Matrix4.tempMat0;\n m.copyFrom(this);\n var invSX = 1 / sx;\n var invSY = 1 / sy;\n var invSZ = 1 / sz;\n m.elements[0] *= invSX;\n m.elements[1] *= invSX;\n m.elements[2] *= invSX;\n m.elements[4] *= invSY;\n m.elements[5] *= invSY;\n m.elements[6] *= invSY;\n m.elements[8] *= invSZ;\n m.elements[9] *= invSZ;\n m.elements[10] *= invSZ;\n rotation.setFromRotationMatrix(m);\n scale.x = sx;\n scale.y = sy;\n scale.z = sz;\n return this;\n };\n Matrix4.prototype.getTranslation = function (translation) {\n var te = this.elements;\n return translation.set(te[12], te[13], te[14]);\n };\n Matrix4.prototype.getScale = function (scale) {\n var te = this.elements;\n return scale.set(Math.hypot(te[0], te[1], te[2]), Math.hypot(te[4], te[5], te[6]), Math.hypot(te[8], te[9], te[10]));\n };\n /**\n * 获得矩阵分解的结果\n * @returns 分解的结果\n */\n Matrix4.prototype.getTransform = function () {\n var translation = new Vector3();\n var rotation = new Quaternion();\n var scale = new Vector3();\n this.decompose(translation, rotation, scale);\n return { translation: translation, rotation: rotation, scale: scale };\n };\n /**\n * 根据视窗信息设置正交相机投影矩阵\n * @param left - 视窗左平面位置\n * @param right - 视窗右平面位置\n * @param top - 视窗上平面位置\n * @param bottom - 视窗下平面位置\n * @param near - 视窗近平面位置\n * @param far - 视窗远平面位置\n * @returns 矩阵\n */\n Matrix4.prototype.orthographic = function (left, right, top, bottom, near, far) {\n var a = 1.0 / (right - left);\n var b = 1.0 / (top - bottom);\n var c = 1.0 / (far - near);\n var tx = -(right + left) * a;\n var ty = -(top + bottom) * b;\n var tz = -(far + near) * c;\n a *= 2.0;\n b *= 2.0;\n c *= -2.0;\n var te = this.elements;\n te[0] = a;\n te[1] = 0.0;\n te[2] = 0.0;\n te[3] = 0.0;\n //\n te[4] = 0.0;\n te[5] = b;\n te[6] = 0.0;\n te[7] = 0.0;\n //\n te[8] = 0.0;\n te[9] = 0.0;\n te[10] = c;\n te[11] = 0.0;\n //\n te[12] = tx;\n te[13] = ty;\n te[14] = tz;\n te[15] = 1.0;\n return this;\n };\n /**\n * 通过透视相机基础参数设置投影矩阵\n * @param fov - 视角(弧度)\n * @param aspect - 视窗比例\n * @param near - 近平面\n * @param far - 远平面\n * @param [reverse] - 视锥体长宽反转(3D这里反了?)\n * @returns 投影矩阵\n */\n Matrix4.prototype.perspective = function (fov, aspect, near, far, reverse) {\n var f = 1.0 / Math.tan(fov * 0.5);\n var nf = 1 / (near - far);\n var te = this.elements;\n te[0] = reverse ? f : f / aspect;\n te[1] = 0;\n te[2] = 0;\n te[3] = 0;\n //\n te[4] = 0;\n te[5] = reverse ? f * aspect : f;\n te[6] = 0;\n te[7] = 0;\n //\n te[8] = 0;\n te[9] = 0;\n te[10] = (far + near) * nf;\n te[11] = -1;\n //\n te[12] = 0;\n te[13] = 0;\n te[14] = 2 * far * near * nf;\n te[15] = 0;\n if (far === null || far === Infinity) {\n te[10] = -1;\n te[14] = -2 * near;\n }\n return this;\n };\n /**\n * 对点进行投影变换\n * @param v - 输入点\n * @param [out] - 输出点,如果没有就覆盖输入的数据\n * @returns 投影后的点\n */\n Matrix4.prototype.projectPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n var w = e[3] * x + e[7] * y + e[11] * z + e[15];\n return res.multiply(1 / w);\n };\n /**\n * 对点进行矩阵变换\n * @param v - 输入点\n * @param [out] - 输出点,如果没有就覆盖输入的数据\n * @returns 变换后的点\n */\n Matrix4.prototype.transformPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n return res;\n };\n /**\n * 对法向量进行矩阵变换\n * @param v - 输入法向量\n * @param [out] - 输出法向量,如果没有就覆盖输入的数据\n * @returns 变换后的法向量\n */\n Matrix4.prototype.transformNormal = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z;\n res.y = e[1] * x + e[5] * y + e[9] * z;\n res.z = e[2] * x + e[6] * y + e[10] * z;\n return res.normalize();\n };\n /**\n * 对四维向量进行矩阵变换\n * @param v - 输入向量\n * @param [out] - 输出向量,如果没有就覆盖输入的数据\n * @returns 变换后向量\n */\n Matrix4.prototype.transformVector4 = function (v, out) {\n var x = v.x, y = v.y, z = v.z, w = v.w;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n res.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n return res;\n };\n /**\n * 矩阵判等\n * @param matrix - 矩阵\n * @returns 判等结果\n */\n Matrix4.prototype.equals = function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 16; i++) {\n if (!isEqual(te[i], me[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * 矩阵转数组\n * @returns\n */\n Matrix4.prototype.toArray = function () {\n return __spreadArray([], __read(this.elements), false);\n };\n Matrix4.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n var te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n array[offset + 9] = te[9];\n array[offset + 10] = te[10];\n array[offset + 11] = te[11];\n array[offset + 12] = te[12];\n array[offset + 13] = te[13];\n array[offset + 14] = te[14];\n array[offset + 15] = te[15];\n };\n /**\n * 创建单位阵\n * @returns 单位矩阵\n */\n Matrix4.fromIdentity = function () {\n return new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 创建相机矩阵\n * @param eye - 相机位置\n * @param target - 目标位置\n * @param up - 相机方向\n * @returns 矩阵\n */\n Matrix4.fromLookAt = function (eye, target, up) {\n return new Matrix4().lookAt(eye, target, up);\n };\n /**\n * 创建投影矩阵\n * @param fov - 视角\n * @param aspect - 视窗比例\n * @param near - 近平面\n * @param far - 远平面\n * @param [reverse] - 视锥体长宽反转\n * @returns 投影矩阵\n */\n Matrix4.fromPerspective = function (fov, aspect, near, far, reverse) {\n return new Matrix4().perspective(fov, aspect, near, far, reverse);\n };\n /**\n * 通过四个列向量创建矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @param c4 - 第四列\n * @returns\n */\n Matrix4.fromColumnVectors = function (c1, c2, c3, c4) {\n return new Matrix4().setFromColumnVectors(c1, c2, c3, c4);\n };\n /**\n * 通过三阶矩阵创建矩阵\n * @param m - 三阶矩阵\n * @returns 创建的矩阵\n */\n Matrix4.fromMatrix3 = function (m) {\n return new Matrix4().setFromMatrix3(m);\n };\n /**\n * 通过数组创建矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix4.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Matrix4().setFromArray(array, offset);\n };\n /**\n * 通过缩放创建矩阵\n * @param x - x 缩放\n * @param y - y 缩放\n * @param z - z 缩放\n * @returns 缩放结果\n */\n Matrix4.fromScale = function (x, y, z) {\n return new Matrix4().setFromScale(x, y, z);\n };\n /**\n * 通过平移创建矩阵\n * @param x - x 平移\n * @param y - y 平移\n * @param z - z 平移\n * @returns 平移结果\n */\n Matrix4.fromTranslation = function (x, y, z) {\n return new Matrix4().setFromTranslation(x, y, z);\n };\n /**\n * 通过 x 轴旋转创建矩阵\n * @param theta - x 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.fromRotationX = function (theta) {\n return new Matrix4().setFromRotationX(theta);\n };\n /**\n * 通过 y 轴旋转创建矩阵\n * @param theta - y 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.fromRotationY = function (theta) {\n return new Matrix4().setFromRotationY(theta);\n };\n /**\n * 通过 z 轴旋转创建矩阵\n * @param theta - z 轴旋转弧度\n * @returns\n */\n Matrix4.fromRotationZ = function (theta) {\n return new Matrix4().setFromRotationZ(theta);\n };\n /**\n * 通过旋转轴与旋转弧度创建矩阵\n * @param axis - 旋转轴\n * @param angle - 旋转弧度\n * @returns\n */\n Matrix4.fromRotationAxis = function (axis, angle) {\n return new Matrix4().setFromRotationAxis(axis, angle);\n };\n /**\n * 通过欧拉角创建矩阵\n * @param euler - 欧拉角\n * @returns\n */\n Matrix4.fromEuler = function (euler) {\n return new Matrix4().setFromEuler(euler);\n };\n /**\n * 通过四元数创建矩阵\n * @param quat - 四元数\n * @returns\n */\n Matrix4.fromQuaternion = function (quat) {\n return new Matrix4().setFromQuaternion(quat);\n };\n /**\n * 通过倾斜创建矩阵\n * @param x - x 方向倾斜分量\n * @param y - y 方向倾斜分量\n * @param z - z 方向倾斜分量\n * @returns 倾斜矩阵\n */\n Matrix4.fromShear = function (x, y, z) {\n return new Matrix4().setFromShear(x, y, z);\n };\n /**\n * 通过基轴创建矩阵\n * @param xAxis - x 轴\n * @param yAxis - y 轴\n * @param zAxis - z 轴\n * @returns\n */\n Matrix4.fromBasis = function (xAxis, yAxis, zAxis) {\n return new Matrix4().setFromBasis(xAxis, yAxis, zAxis);\n };\n /**\n * 通过行优先数据设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m24 - 第 2 行,第 4 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @param m34 - 第 3 行,第 4 列\n * @param m41 - 第 4 行,第 1 列\n * @param m42 - 第 4 行,第 2 列\n * @param m43 - 第 4 行,第 3 列\n * @param m44 - 第 4 行,第 4 列\n * @returns\n */\n Matrix4.fromRowMajorData = function (m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n return new Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44);\n };\n Matrix4.IDENTITY = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n Matrix4.ZERO = new Matrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n Matrix4.tempVec0 = new Vector3();\n Matrix4.tempVec1 = new Vector3();\n Matrix4.tempVec2 = new Vector3();\n Matrix4.tempMat0 = new Matrix4();\n return Matrix4;\n}());\n","import { NumberEpsilon } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四维向量\n */\nexport var Vector4 = /** @class */ (function () {\n /**\n * 构造函数\n * @param [x=0] - x 轴分量\n * @param [y=0] - y 轴分量\n * @param [z=0] - z 轴分量\n * @param [w=1] - w 轴分量\n */\n function Vector4(x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 0; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @param z - z 轴分量\n * @param w - w 轴分量\n * @returns\n */\n Vector4.prototype.set = function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector4.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 0;\n return this;\n };\n /**\n * 通过标量数值设置向量\n * @param num - 数值\n * @returns 向量\n */\n Vector4.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n this.z = num;\n this.w = num;\n return this;\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector4.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.w = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param v - 复制对象\n * @returns 拷贝结果\n */\n Vector4.prototype.copyFrom = function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n this.w = v.w;\n return this;\n };\n /**\n * 克隆向量\n * @returns 克隆结果\n */\n Vector4.prototype.clone = function () {\n return new Vector4(this.x, this.y, this.z, this.w);\n };\n /**\n * 根据下标设置向量分量\n * @param index - 下标值\n * @param value - 分量值\n * @returns 向量\n */\n Vector4.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n case 3:\n this.w = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取向量分量\n * @param index - 下标\n * @returns 分量值\n */\n Vector4.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n case 3: return this.w;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 相加对象,向量 | 数字\n * @returns 相加结果\n */\n Vector4.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n this.z += right;\n this.w += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n this.z += right[2];\n this.w += right[3];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n this.z += right.z;\n this.w += right.w;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 求和结果\n */\n Vector4.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n this.w = left.w + right.w;\n return this;\n };\n /**\n * 向量比例缩放后相加\n * @param right - 向量\n * @param s - 比例\n * @returns 求和结果\n */\n Vector4.prototype.addScaledVector = function (right, s) {\n this.x += right.x * s;\n this.y += right.y * s;\n this.z += right.z * s;\n this.w += right.w * s;\n return this;\n };\n /**\n * 向量相减\n * @param right - 相减对象,向量 | 数字\n * @returns 相减结果\n */\n Vector4.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n this.z -= right;\n this.w -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n this.z -= right[2];\n this.w -= right[3];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n this.z -= right.z;\n this.w -= right.w;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 向量\n */\n Vector4.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n this.z = left.z - right.z;\n this.w = left.w - right.w;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 相乘对象,对象 | 数字\n * @returns 向量\n */\n Vector4.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n this.z *= right;\n this.w *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n this.z *= right[2];\n this.w *= right[3];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n this.z *= right.z;\n this.w *= right.w;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 向量\n */\n Vector4.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n this.z = left.z * right.z;\n this.w = left.w * right.w;\n return this;\n };\n /**\n * 向量相除\n * @param right - 相除对象,对象 | 数字\n * @returns 向量\n */\n Vector4.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n this.z /= right;\n this.w /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n this.z /= right[2];\n this.w /= right[3];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n this.z /= right.z;\n this.w /= right.w;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector4.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n this.w *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector4.prototype.sum = function () {\n return this.x + this.y + this.z + this.w;\n };\n /**\n * 向量求最小值\n * @param v - 向量或数值\n * @returns 最小值\n */\n Vector4.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n this.z = Math.min(this.z, v);\n this.w = Math.min(this.w, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n this.w = Math.min(this.w, v.w);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量或数值\n * @returns 最大值\n */\n Vector4.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n this.z = Math.max(this.z, v);\n this.w = Math.max(this.w, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n this.w = Math.max(this.w, v.w);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 最小值\n * @param max - 最大值\n * @returns 向量\n */\n Vector4.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector4.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n this.w = Math.floor(this.w);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector4.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n this.w = Math.ceil(this.w);\n return this;\n };\n /**\n * 向量四舍五入\n * @returns 求值结果\n */\n Vector4.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n this.w = Math.round(this.w);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector4.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n this.z = Math.abs(this.z);\n this.w = Math.abs(this.w);\n return this;\n };\n /**\n * 向量取反\n * @returns 取反结果\n */\n Vector4.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n };\n /**\n * 向量长度平方\n * @returns 长度平方\n */\n Vector4.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n };\n /**\n * 向量长度\n * @returns 长度\n */\n Vector4.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n };\n /**\n * 向量归一化\n * @returns 归一化结果\n */\n Vector4.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector4.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量求线性插值\n * @param v - 向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector4.prototype.lerp = function (v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n this.w += (v.w - this.w) * alpha;\n return this;\n };\n /**\n * 两向量求线性插值\n * @param v1 - 第一个向量\n * @param v2 - 第二个向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector4.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n this.w = v1.w + (v2.w - v1.w) * alpha;\n return this;\n };\n /**\n * 向量求点积\n * @param v - 向量\n * @returns 点积结果\n */\n Vector4.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector4.prototype.equals = function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector4.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, w = _a.w;\n return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps && Math.abs(w) <= eps;\n };\n /**\n * 向量转数组\n * @returns 数组\n */\n Vector4.prototype.toArray = function () {\n return [this.x, this.y, this.z, this.w];\n };\n Vector4.prototype.toVector3 = function () {\n return new Vector3(this.x, this.y, this.z);\n };\n Vector4.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n array[offset + 3] = this.w;\n };\n /**\n * 生成随机向量\n * @returns 向量\n */\n Vector4.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n this.w = Math.random();\n return this;\n };\n /**\n * 变换矩阵作用于向量\n * @param m - 变换矩阵\n * @param [out] - 输出结果,如果没有设置就直接覆盖当前值\n * @returns 向量\n */\n Vector4.prototype.applyMatrix = function (m, out) {\n return m.transformVector4(this, out);\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector4.fromNumber = function (num) {\n return new Vector4().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector4.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector4().setFromArray(array, offset);\n };\n /**\n * 四维向量的常量\n */\n Vector4.ONE = new Vector4(1.0, 1.0, 1.0, 1.0);\n Vector4.ZERO = new Vector4(0.0, 0.0, 0.0, 0.0);\n return Vector4;\n}());\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { isEqual } from './utils';\n/**\n * 三维矩阵(列优先矩阵)\n */\nvar Matrix3 = /** @class */ (function () {\n /**\n * 构造函数,初始值为零矩阵\n * @param [m11=1] - 第 1 行,第 1 列\n * @param [m21=0] - 第 2 行,第 1 列\n * @param [m31=0] - 第 3 行,第 1 列\n * @param [m12=0] - 第 1 行,第 2 列\n * @param [m22=1] - 第 2 行,第 2 列\n * @param [m32=0] - 第 3 行,第 2 列\n * @param [m13=0] - 第 1 行,第 3 列\n * @param [m23=0] - 第 2 行,第 3 列\n * @param [m33=1] - 第 3 行,第 3 列\n */\n function Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n if (m11 === void 0) { m11 = 1; }\n if (m21 === void 0) { m21 = 0; }\n if (m31 === void 0) { m31 = 0; }\n if (m12 === void 0) { m12 = 0; }\n if (m22 === void 0) { m22 = 1; }\n if (m32 === void 0) { m32 = 0; }\n if (m13 === void 0) { m13 = 0; }\n if (m23 === void 0) { m23 = 0; }\n if (m33 === void 0) { m33 = 1; }\n this.elements = [\n m11, m21, m31,\n m12, m22, m32,\n m13, m23, m33,\n ];\n }\n /**\n * 设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m21 - 第 2 行,第 1 列\n * @param m31 - 第 3 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m22 - 第 2 行,第 2 列\n * @param m32 - 第 3 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m23 - 第 2 行,第 3 列\n * @param m33 - 第 3 行,第 3 列\n * @returns\n */\n Matrix3.prototype.set = function (m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n var e = this.elements;\n e[0] = m11;\n e[3] = m12;\n e[6] = m13;\n e[1] = m21;\n e[4] = m22;\n e[7] = m23;\n e[2] = m31;\n e[5] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * 设置矩阵通过行优先数据\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @returns 矩阵\n */\n Matrix3.prototype.setFromRowMajorData = function (m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n var e = this.elements;\n e[0] = m11;\n e[3] = m12;\n e[6] = m13;\n e[1] = m21;\n e[4] = m22;\n e[7] = m23;\n e[2] = m31;\n e[5] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * 通过列向量设置矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @returns 矩阵\n */\n Matrix3.prototype.setFromColumnVectors = function (c1, c2, c3) {\n return this.set(c1.x, c1.y, c1.z, c2.x, c2.y, c2.z, c3.x, c3.y, c3.z);\n };\n /**\n * 通过四阶矩阵设置三阶矩阵\n * @param m - 四阶矩阵\n * @returns 矩阵\n */\n Matrix3.prototype.setFromMatrix4 = function (m) {\n var me = m.elements;\n return this.set(me[0], me[1], me[2], me[4], me[5], me[6], me[8], me[9], me[10]);\n };\n /**\n * 通过数组设置矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix3.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < 9; i++) {\n this.elements[i] = array[offset + i];\n }\n return this;\n };\n /**\n * 通过四元数设置矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix3.prototype.setFromQuaternion = function (quat) {\n var x = quat.x, y = quat.y, z = quat.z, w = quat.w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var te = this.elements;\n te[0] = 1 - (yy + zz);\n te[1] = xy + wz;\n te[2] = xz - wy;\n te[3] = xy - wz;\n te[4] = 1 - (xx + zz);\n te[5] = yz + wx;\n te[6] = xz + wy;\n te[7] = yz - wx;\n te[8] = 1 - (xx + yy);\n return this;\n };\n /**\n * 矩阵清零\n * @returns 零矩阵\n */\n Matrix3.prototype.setZero = function () {\n for (var i = 0; i < 9; i++) {\n this.elements[i] = 0;\n }\n return this;\n };\n /**\n * 矩阵单位化\n * @returns 单位矩阵\n */\n Matrix3.prototype.identity = function () {\n return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n };\n /**\n * 矩阵克隆\n * @returns 克隆结果\n */\n Matrix3.prototype.clone = function () {\n var e = this.elements;\n return new Matrix3(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8]);\n };\n /**\n * 矩阵复制\n * @param m - 复制对象\n * @returns 复制结果\n */\n Matrix3.prototype.copyFrom = function (m) {\n this.elements = __spreadArray([], __read(m.elements), false);\n return this;\n };\n /**\n * 得到列向量\n * @param i - 列向量索引,从 0 开始\n * @returns 列向量\n */\n Matrix3.prototype.getColumnVector = function (i, v) {\n return v.set(this.elements[i * 3], this.elements[i * 3 + 1], this.elements[i * 3 + 2]);\n };\n /**\n * 矩阵缩放\n * @param sx - x 轴缩放分量\n * @param sy - y 轴缩放分量\n * @returns 缩放结果\n */\n Matrix3.prototype.scale = function (sx, sy) {\n var e = this.elements;\n e[0] *= sx;\n e[3] *= sx;\n e[6] *= sx;\n e[1] *= sy;\n e[4] *= sy;\n e[7] *= sy;\n return this;\n };\n /**\n * 矩阵旋转\n * @param theta - 旋转角度(弧度)\n * @returns 旋转结果\n */\n Matrix3.prototype.rotate = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var e = this.elements;\n var m11 = e[0], m12 = e[3], m13 = e[6];\n var m21 = e[1], m22 = e[4], m23 = e[7];\n e[0] = c * m11 + s * m21;\n e[3] = c * m12 + s * m22;\n e[6] = c * m13 + s * m23;\n e[1] = -s * m11 + c * m21;\n e[4] = -s * m12 + c * m22;\n e[7] = -s * m13 + c * m23;\n return this;\n };\n /**\n * 矩阵平移\n * @param x - x 轴平移分量\n * @param y - y 轴平移分量\n * @returns 平移结果\n */\n Matrix3.prototype.translate = function (x, y) {\n var e = this.elements;\n e[0] += x * e[2];\n e[3] += x * e[5];\n e[6] += x * e[8];\n e[1] += y * e[2];\n e[4] += y * e[5];\n e[7] += y * e[8];\n return this;\n };\n /**\n * 矩阵右乘\n * @param right - 相乘矩阵\n * @returns 右乘结果\n */\n Matrix3.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n for (var i = 0; i < 9; i++) {\n this.elements[i] *= right;\n }\n return this;\n }\n else {\n return this.multiplyMatrices(this, right);\n }\n };\n /**\n * 矩阵左乘\n * @param left - 相乘矩阵\n * @returns 左乘结果\n */\n Matrix3.prototype.premultiply = function (left) {\n return this.multiplyMatrices(left, this);\n };\n /**\n * 矩阵乘法\n * @param left - 矩阵\n * @param right - 矩阵\n * @returns 相乘结果\n */\n Matrix3.prototype.multiplyMatrices = function (left, right) {\n var ae = left.elements;\n var be = right.elements;\n var te = this.elements;\n var a11 = ae[0], a12 = ae[3], a13 = ae[6];\n var a21 = ae[1], a22 = ae[4], a23 = ae[7];\n var a31 = ae[2], a32 = ae[5], a33 = ae[8];\n var b11 = be[0], b12 = be[3], b13 = be[6];\n var b21 = be[1], b22 = be[4], b23 = be[7];\n var b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n };\n /**\n * 矩阵求行列式值\n * @returns 行列式结果\n */\n Matrix3.prototype.determinant = function () {\n var e = this.elements;\n var m11 = e[0], m21 = e[3], m31 = e[6];\n var m12 = e[1], m22 = e[4], m32 = e[7];\n var m13 = e[2], m23 = e[5], m33 = e[8];\n return (m11 * (m22 * m33 - m23 * m32) +\n m12 * (m23 * m31 - m21 * m33) +\n m13 * (m21 * m32 - m22 * m31));\n };\n /**\n * 矩阵求逆\n * @returns 逆矩阵\n */\n Matrix3.prototype.invert = function () {\n var e = this.elements;\n var m11 = e[0], m12 = e[3], m13 = e[6];\n var m21 = e[1], m22 = e[4], m23 = e[7];\n var m31 = e[2], m32 = e[5], m33 = e[8];\n var t11 = m33 * m22 - m32 * m23;\n var t12 = m32 * m13 - m33 * m12;\n var t13 = m23 * m12 - m22 * m13;\n var det = m11 * t11 + m21 * t12 + m31 * t13;\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n var detInv = 1 / det;\n e[0] = t11 * detInv;\n e[1] = (m31 * m23 - m33 * m21) * detInv;\n e[2] = (m32 * m21 - m31 * m22) * detInv;\n e[3] = t12 * detInv;\n e[4] = (m33 * m11 - m31 * m13) * detInv;\n e[5] = (m31 * m12 - m32 * m11) * detInv;\n e[6] = t13 * detInv;\n e[7] = (m21 * m13 - m23 * m11) * detInv;\n e[8] = (m22 * m11 - m21 * m12) * detInv;\n return this;\n };\n /**\n * 矩阵转置\n * @returns 转置结果\n */\n Matrix3.prototype.transpose = function () {\n var t;\n var m = this.elements;\n t = m[1];\n m[1] = m[3];\n m[3] = t;\n t = m[2];\n m[2] = m[6];\n m[6] = t;\n t = m[5];\n m[5] = m[7];\n m[7] = t;\n return this;\n };\n /**\n * 对点进行矩阵变换\n * @param v - 输入点\n * @param out - 输出点,如果没有会覆盖输入的数据\n * @returns 变换后的结果\n */\n Matrix3.prototype.transformPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[3] * y + e[6] * z;\n res.y = e[1] * x + e[4] * y + e[7] * z;\n res.z = e[2] * x + e[5] * y + e[8] * z;\n return res;\n };\n /**\n * 对法向量进行矩阵变换\n * @param v - 输入向量\n * @param out - 输出向量,如果没有会覆盖输入的数据\n * @returns 变换后的结果\n */\n Matrix3.prototype.transformNormal = function (v, out) {\n return this.transformPoint(v, out).normalize();\n };\n /**\n * 矩阵判等\n * @param matrix - 矩阵\n * @returns 判等结果\n */\n Matrix3.prototype.equals = function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 9; i++) {\n if (!isEqual(te[i], me[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * 矩阵转为数组\n * @returns\n */\n Matrix3.prototype.toArray = function () {\n return __spreadArray([], __read(this.elements), false);\n };\n Matrix3.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n var e = this.elements;\n array[offset] = e[0];\n array[offset + 1] = e[1];\n array[offset + 2] = e[2];\n array[offset + 3] = e[3];\n array[offset + 4] = e[4];\n array[offset + 5] = e[5];\n array[offset + 6] = e[6];\n array[offset + 7] = e[7];\n array[offset + 8] = e[8];\n };\n /**\n * 创建单位阵\n * @returns 单位矩阵\n */\n Matrix3.fromIdentity = function () {\n return new Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1);\n };\n /**\n * 通过列向量创建矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @returns 矩阵\n */\n Matrix3.fromColumnVectors = function (c1, c2, c3) {\n return new Matrix3().setFromColumnVectors(c1, c2, c3);\n };\n /**\n * 通过四阶矩阵创建矩阵(获取空间变换矩阵旋转缩放部分)\n * @param m - 四阶矩阵\n * @returns 矩阵\n */\n Matrix3.fromMatrix4 = function (m) {\n return new Matrix3().setFromMatrix4(m);\n };\n /**\n * 通过数组创建矩阵\n * @param array - 数组(列优先)\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix3.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Matrix3().setFromArray(array, offset);\n };\n /**\n * 通过四元数创建矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix3.fromQuaternion = function (quat) {\n return new Matrix3().setFromQuaternion(quat);\n };\n /**\n * 设置矩阵通过行优先数据\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @returns 矩阵\n */\n Matrix3.fromRowMajorData = function (m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n return new Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33);\n };\n return Matrix3;\n}());\nexport { Matrix3 };\n","import { Vector3 } from './vector3';\n/**\n * 光线类\n */\nexport var Ray = /** @class */ (function () {\n /**\n * 构造函数\n * @param [origin] - 原点,默认是 (0, 0, 0)\n * @param [direction] - 方向,默认是 (1, 0, 0)\n */\n function Ray(origin, direction) {\n if (origin === void 0) { origin = Vector3.ZERO; }\n if (direction === void 0) { direction = Vector3.X; }\n /**\n * 光线的原点\n */\n this.origin = new Vector3();\n /**\n * 光线的方向\n */\n this.direction = new Vector3();\n // 注意这里必须拷贝\n this.origin.copyFrom(origin);\n this.direction.copyFrom(direction).normalize();\n }\n /**\n * 光线设置\n * @param origin - 原点\n * @param direction - 方向\n * @returns\n */\n Ray.prototype.set = function (origin, direction) {\n this.origin.copyFrom(origin);\n this.direction.copyFrom(direction).normalize();\n return this;\n };\n /**\n * 光线克隆\n * @returns 克隆结果\n */\n Ray.prototype.clone = function () {\n return new Ray(this.origin, this.direction);\n };\n /**\n * 光线拷贝\n * @param ray - 要拷贝对象\n * @returns 拷贝结果\n */\n Ray.prototype.copyFrom = function (ray) {\n return this.set(ray.origin, ray.direction);\n };\n /**\n * 根据t计算新的光线原点\n * @param t - 光线的系数 t\n * @returns\n */\n Ray.prototype.recast = function (t) {\n this.origin.copyFrom(this.at(t, Ray.tempVec0));\n return this;\n };\n /**\n * 根据t值计算光线上的点\n * @param t - 光线的系数 t\n * @param [out] - 计算的点\n * @returns\n */\n Ray.prototype.at = function (t, out) {\n var ret = out ? out : new Vector3();\n ret.copyFrom(this.origin);\n return ret.addScaledVector(this.direction, t);\n };\n /**\n * 光线相等判断\n * @param other - 其他对象\n * @returns\n */\n Ray.prototype.equals = function (other) {\n return this.origin.equals(other.origin) && this.direction.equals(other.direction);\n };\n /**\n * 根据矩阵对光线进行变换\n * @param m - 变换矩阵\n * @returns\n */\n Ray.prototype.applyMatrix = function (m) {\n this.origin.applyProjectionMatrix(m);\n this.direction.applyNormalMatrix(m);\n return this;\n };\n /**\n * 光线和包围盒求交\n * @param box - 类包围盒对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectBox = function (box, out) {\n var _a, _b, _c, _d;\n var ox = (_a = this.origin, _a.x), oy = _a.y, oz = _a.z;\n var dx = (_b = this.direction, _b.x), dy = _b.y, dz = _b.z;\n var bxmin = (_c = box.min, _c.x), bymin = _c.y, bzmin = _c.z;\n var bxmax = (_d = box.max, _d.x), bymax = _d.y, bzmax = _d.z;\n var tmin, tmax, tymin, tymax, tzmin, tzmax;\n var invdirx = 1 / dx;\n var invdiry = 1 / dy;\n var invdirz = 1 / dz;\n if (invdirx >= 0) {\n tmin = (bxmin - ox) * invdirx;\n tmax = (bxmax - ox) * invdirx;\n }\n else {\n tmin = (bxmax - ox) * invdirx;\n tmax = (bxmin - ox) * invdirx;\n }\n if (invdiry >= 0) {\n tymin = (bymin - oy) * invdiry;\n tymax = (bymax - oy) * invdiry;\n }\n else {\n tymin = (bymax - oy) * invdiry;\n tymax = (bymin - oy) * invdiry;\n }\n if ((tmin > tymax) || (tymin > tmax)) {\n return;\n }\n if (tymin > tmin || tmin !== tmin) {\n tmin = tymin;\n }\n if (tymax < tmax || tmax !== tmax) {\n tmax = tymax;\n }\n if (tymin > tmin || tmin !== tmin) {\n tmin = tymin;\n }\n if (tymax < tmax || tmax !== tmax) {\n tmax = tymax;\n }\n if (invdirz >= 0) {\n tzmin = (bzmin - oz) * invdirz;\n tzmax = (bzmax - oz) * invdirz;\n }\n else {\n tzmin = (bzmax - oz) * invdirz;\n tzmax = (bzmin - oz) * invdirz;\n }\n if ((tmin > tzmax) || (tzmin > tmax)) {\n return;\n }\n if (tzmin > tmin || tmin !== tmin) {\n tmin = tzmin;\n }\n if (tzmax < tmax || tmax !== tmax) {\n tmax = tzmax;\n }\n if (tmax < 0) {\n return;\n }\n return tmin >= 0 ? this.at(tmin, out) : this.at(tmax, out);\n };\n /**\n * 光线和平面求交\n * @param plane - 类平面对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectPlane = function (plane, out) {\n var normal = plane.normal;\n var distance = plane.distance;\n var denominator = normal.dot(this.direction);\n if (denominator === 0) {\n // line is coplanar, return origin\n var t_1 = normal.dot(this.origin) + distance;\n if (t_1 === 0) {\n var ret = out ? out : new Vector3();\n return ret.copyFrom(this.origin);\n }\n // Null is preferable to undefined since undefined means.... it is undefined\n return;\n }\n var t = -(this.origin.dot(normal) + distance) / denominator;\n // Return if the ray never intersects the plane\n return t >= 0 ? this.at(t, out) : undefined;\n };\n /**\n * 光线和圆求交\n * @param sphere - 类球对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectSphere = function (sphere, out) {\n var center = sphere.center;\n var vector = Ray.tempVec0.subtractVectors(center, this.origin);\n var tca = vector.dot(this.direction);\n var d2 = vector.dot(vector) - tca * tca;\n var radius2 = sphere.radius * sphere.radius;\n if (d2 > radius2) {\n return;\n }\n var thc = Math.sqrt(radius2 - d2);\n // t0 = first intersect point - entrance on front of sphere\n var t0 = tca - thc;\n // t1 = second intersect point - exit point on back of sphere\n var t1 = tca + thc;\n // test to see if t1 is behind the ray - if so, return null\n if (t1 < 0) {\n return;\n }\n // test to see if t0 is behind the ray:\n // if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n // in order to always return an intersect point that is in front of the ray.\n // else t0 is in front of the ray, so return the first collision point scaled by t0\n return t0 >= 0 ? this.at(t0, out) : this.at(t1, out);\n };\n /**\n * 光线和三角形求交\n * @param triangle - 类三角形对象\n * @param [out] - 交点\n * @param [backfaceCulling] - 是否背面剔除\n * @returns\n */\n Ray.prototype.intersectTriangle = function (triangle, out, backfaceCulling) {\n // FIXME: 交换out和backfaceCulling\n // Compute the offset origin, edges, and normal.\n // from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n var a = triangle.p0;\n var b = triangle.p1;\n var c = triangle.p2;\n var edge1 = Ray.tempVec0.subtractVectors(b, a);\n var edge2 = Ray.tempVec1.subtractVectors(c, a);\n var diff = Ray.tempVec2.subtractVectors(this.origin, a);\n var normal = Ray.tempVec3.crossVectors(edge1, edge2);\n // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n var DdN = this.direction.dot(normal);\n var sign;\n if (DdN > 0) {\n if (backfaceCulling) {\n return;\n }\n sign = 1;\n }\n else if (DdN < 0) {\n sign = -1;\n DdN = -DdN;\n }\n else {\n return;\n }\n edge2.crossVectors(diff, edge2);\n var DdQxE2 = sign * this.direction.dot(edge2);\n // b1 < 0, no intersection\n if (DdQxE2 < 0) {\n return;\n }\n edge1.cross(diff);\n var DdE1xQ = sign * this.direction.dot(edge1);\n // b2 < 0, no intersection\n if (DdE1xQ < 0) {\n return;\n }\n // b1+b2 > 1, no intersection\n if (DdQxE2 + DdE1xQ > DdN) {\n return;\n }\n // Line intersects triangle, check if ray does.\n var QdN = -sign * diff.dot(normal);\n // t < 0, no intersection\n if (QdN < 0) {\n return;\n }\n // Ray intersects triangle.\n return this.at(QdN / DdN, out);\n };\n Ray.tempVec0 = new Vector3();\n Ray.tempVec1 = new Vector3();\n Ray.tempVec2 = new Vector3();\n Ray.tempVec3 = new Vector3();\n return Ray;\n}());\n","import { Vector4 } from './vector4';\nexport var Color = /** @class */ (function () {\n /**\n * 构造函数,默认值为黑色\n * @param [r=0]\n * @param [g=0]\n * @param [b=0]\n * @param [a=0]\n */\n function Color(r, g, b, a) {\n if (r === void 0) { r = 0; }\n if (g === void 0) { g = 0; }\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 0; }\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n /**\n * 设置颜色\n * @param r - r 分量\n * @param g - g 分量\n * @param b - b 分量\n * @param a - a 分量\n * @returns\n */\n Color.prototype.set = function (r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n return this;\n };\n /**\n * 设置零颜色\n * @returns\n */\n Color.prototype.setZero = function () {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n return this;\n };\n /**\n * 通过标量数值设置颜色\n * @param num - 数值\n * @returns\n */\n Color.prototype.setFromNumber = function (num) {\n this.r = num;\n this.g = num;\n this.b = num;\n this.a = num;\n return this;\n };\n /**\n * 通过Vector4创建颜色\n * @param v - Vector4\n * @returns\n */\n Color.prototype.setFromVector4 = function (v) {\n this.r = v.x;\n this.g = v.y;\n this.b = v.z;\n this.a = v.w;\n return this;\n };\n /**\n * 通过数组创建颜色\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Color.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n this.r = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.g = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.b = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.a = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : 0;\n return this;\n };\n Color.prototype.setFromHSV = function (hue, saturation, value, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var chroma = value * saturation;\n var h = hue / 60;\n var x = chroma * (1 - Math.abs((h % 2) - 1));\n var r = 0;\n var g = 0;\n var b = 0;\n if (h >= 0 && h <= 1) {\n r = chroma;\n g = x;\n }\n else if (h >= 1 && h <= 2) {\n r = x;\n g = chroma;\n }\n else if (h >= 2 && h <= 3) {\n g = chroma;\n b = x;\n }\n else if (h >= 3 && h <= 4) {\n g = x;\n b = chroma;\n }\n else if (h >= 4 && h <= 5) {\n r = x;\n b = chroma;\n }\n else if (h >= 5 && h <= 6) {\n r = chroma;\n b = x;\n }\n var m = value - chroma;\n return this.set(r + m, g + m, b + m, alpha);\n };\n Color.prototype.setFromHexString = function (hex) {\n if (hex.substring(0, 1) !== '#' || (hex.length !== 9 && hex.length !== 7)) {\n return this;\n }\n var r = parseInt(hex.substring(1, 3), 16) / 255.0;\n var g = parseInt(hex.substring(3, 5), 16) / 255.0;\n var b = parseInt(hex.substring(5, 7), 16) / 255.0;\n var a = hex.length === 9 ? parseInt(hex.substring(7, 9), 16) / 255.0 : 1.0;\n return this.set(r, g, b, a);\n };\n /**\n * 拷贝颜色\n * @param v - 复制对象\n * @returns 拷贝结果\n */\n Color.prototype.copyFrom = function (v) {\n this.r = v.r;\n this.g = v.g;\n this.b = v.b;\n this.a = v.a;\n return this;\n };\n /**\n * 克隆颜色\n * @returns 克隆结果\n */\n Color.prototype.clone = function () {\n return new Color(this.r, this.g, this.b, this.a);\n };\n /**\n * 根据下标设置颜色分量\n * @param index - 下标值\n * @param value - 分量值\n * @returns\n */\n Color.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.r = value;\n break;\n case 1:\n this.g = value;\n break;\n case 2:\n this.b = value;\n break;\n case 3:\n this.a = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取颜色分量\n * @param index - 下标\n * @returns 分量值\n */\n Color.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.r;\n case 1: return this.g;\n case 2: return this.b;\n case 3: return this.a;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 颜色相加\n * @param right - 相加对象,颜色 | 数字\n * @returns 相加结果\n */\n Color.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.r += right;\n this.g += right;\n this.b += right;\n this.a += right;\n }\n else if (right instanceof Array) {\n this.r += right[0];\n this.g += right[1];\n this.b += right[2];\n this.a += right[3];\n }\n else {\n this.r += right.r;\n this.g += right.g;\n this.b += right.b;\n this.a += right.a;\n }\n return this;\n };\n /**\n * 颜色相减\n * @param right - 相减对象,颜色 | 数字\n * @returns 相减结果\n */\n Color.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.r -= right;\n this.g -= right;\n this.b -= right;\n this.a -= right;\n }\n else if (right instanceof Array) {\n this.r -= right[0];\n this.g -= right[1];\n this.b -= right[2];\n this.a -= right[3];\n }\n else {\n this.r -= right.r;\n this.g -= right.g;\n this.b -= right.b;\n this.a -= right.a;\n }\n return this;\n };\n /**\n * 颜色相乘\n * @param right - 相乘对象,对象 | 数字\n * @returns 颜色\n */\n Color.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.r *= right;\n this.g *= right;\n this.b *= right;\n this.a *= right;\n }\n else if (right instanceof Array) {\n this.r *= right[0];\n this.g *= right[1];\n this.b *= right[2];\n this.a *= right[3];\n }\n else {\n this.r *= right.r;\n this.g *= right.g;\n this.b *= right.b;\n this.a *= right.a;\n }\n return this;\n };\n /**\n * 颜色相除\n * @param right - 相除对象,对象 | 数字\n * @returns 颜色\n */\n Color.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.r /= right;\n this.g /= right;\n this.b /= right;\n this.a /= right;\n }\n else if (right instanceof Array) {\n this.r /= right[0];\n this.g /= right[1];\n this.b /= right[2];\n this.a /= right[3];\n }\n else {\n this.r /= right.r;\n this.g /= right.g;\n this.b /= right.b;\n this.a /= right.a;\n }\n return this;\n };\n /**\n * 颜色缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Color.prototype.scale = function (v) {\n this.r *= v;\n this.g *= v;\n this.b *= v;\n this.a *= v;\n return this;\n };\n /**\n * 颜色求最小值\n * @param v - 颜色或数值\n * @returns 最小值\n */\n Color.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.r = Math.min(this.r, v);\n this.g = Math.min(this.g, v);\n this.b = Math.min(this.b, v);\n this.a = Math.min(this.a, v);\n }\n else {\n this.r = Math.min(this.r, v.r);\n this.g = Math.min(this.g, v.g);\n this.b = Math.min(this.b, v.b);\n this.a = Math.min(this.a, v.a);\n }\n return this;\n };\n /**\n * 颜色求最大值\n * @param v - 颜色或数值\n * @returns 最大值\n */\n Color.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.r = Math.max(this.r, v);\n this.g = Math.max(this.g, v);\n this.b = Math.max(this.b, v);\n this.a = Math.max(this.a, v);\n }\n else {\n this.r = Math.max(this.r, v.r);\n this.g = Math.max(this.g, v.g);\n this.b = Math.max(this.b, v.b);\n this.a = Math.max(this.a, v.a);\n }\n return this;\n };\n /**\n * 颜色阈值约束\n * @param min - 最小值\n * @param max - 最大值\n * @returns 颜色\n */\n Color.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 颜色求线性插值\n * @param v - 颜色\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Color.prototype.lerp = function (v, alpha) {\n this.r += (v.r - this.r) * alpha;\n this.g += (v.g - this.g) * alpha;\n this.b += (v.b - this.b) * alpha;\n this.a += (v.a - this.a) * alpha;\n return this;\n };\n /**\n * 计算颜色亮度值\n * @returns 亮度值\n */\n Color.prototype.luminance = function () {\n return this.r * 0.3 + this.g * 0.59 + this.b * 0.11;\n };\n /**\n * 颜色判等\n * @param v - 颜色\n * @returns 判等结果\n */\n Color.prototype.equals = function (v) {\n return v.r === this.r && v.g === this.g && v.b === this.b && v.a === this.a;\n };\n Color.prototype.toLinear = function () {\n this.r = Color.gammaToLinear(this.r);\n this.g = Color.gammaToLinear(this.g);\n this.b = Color.gammaToLinear(this.b);\n return this;\n };\n Color.prototype.toGamma = function () {\n this.r = Color.linearToGamma(this.r);\n this.g = Color.linearToGamma(this.g);\n this.b = Color.linearToGamma(this.b);\n return this;\n };\n /**\n * 颜色转数组\n * @returns 数组\n */\n Color.prototype.toArray = function () {\n return [this.r, this.g, this.b, this.a];\n };\n Color.prototype.toVector4 = function () {\n return new Vector4(this.r, this.g, this.b, this.a);\n };\n /**\n * RGB 颜色空间转 HSV\n * @param result HSV 值\n */\n Color.prototype.toHSV = function () {\n var _a;\n var r = (_a = this, _a.r), g = _a.g, b = _a.b, a = _a.a;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var v = max;\n var dm = max - min;\n var h = 0;\n var s = 0;\n if (max !== 0) {\n s = dm / max;\n }\n if (max != min) {\n if (max == r) {\n h = (g - b) / dm;\n if (g < b) {\n h += 6;\n }\n }\n else if (max == g) {\n h = (b - r) / dm + 2;\n }\n else if (max == b) {\n h = (r - g) / dm + 4;\n }\n h *= 60;\n }\n return new Color(h, s, v, a);\n };\n Color.prototype.toHexString = function (includeAlpha) {\n if (includeAlpha === void 0) { includeAlpha = true; }\n var R = Color.ToHex(Math.round(this.r * 255));\n var G = Color.ToHex(Math.round(this.g * 255));\n var B = Color.ToHex(Math.round(this.b * 255));\n var A = Color.ToHex(Math.round(this.a * 255));\n if (includeAlpha) {\n return '#' + R + G + B + A;\n }\n else {\n return '#' + R + G + B;\n }\n };\n Color.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n array[offset + 3] = this.a;\n };\n /**\n * 通过标量数值创建颜色\n * @param num - 数值\n * @returns\n */\n Color.fromNumber = function (num) {\n return new Color().setFromNumber(num);\n };\n /**\n * 通过数组创建颜色\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Color.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Color().setFromArray(array, offset);\n };\n /**\n * 通过 hex 字符串创建颜色\n * @param hex - hex 字符串\n * @returns\n */\n Color.fromHexString = function (hex) {\n return new Color().setFromHexString(hex);\n };\n Color.fromHSV = function (hue, saturation, value, alpha) {\n if (alpha === void 0) { alpha = 1; }\n return new Color().setFromHSV(hue, saturation, value, alpha);\n };\n /**\n * 颜色值从 Gamma 空间转到线性空间\n * @param v - Gamma 空间颜色值\n * @returns 线性空间颜色值\n */\n Color.gammaToLinear = function (v) {\n if (v <= 0.0) {\n return 0.0;\n }\n else if (v <= 0.04045) {\n return v / 12.92;\n }\n else if (v < 1.0) {\n return Math.pow((v + 0.055) / 1.055, 2.4);\n }\n else {\n return Math.pow(v, 2.4);\n }\n };\n /**\n * 颜色值从线性空间转到 Gamma 空间\n * @param value - 线性空间颜色值\n * @returns Gamma 空间颜色值\n */\n Color.linearToGamma = function (value) {\n if (value <= 0.0) {\n return 0.0;\n }\n else if (value < 0.0031308) {\n return 12.92 * value;\n }\n else if (value < 1.0) {\n return 1.055 * Math.pow(value, 0.41666) - 0.055;\n }\n else {\n return Math.pow(value, 0.41666);\n }\n };\n Color.ToHex = function (i) {\n var str = i.toString(16);\n if (i <= 15) {\n return ('0' + str).toUpperCase();\n }\n return str.toUpperCase();\n };\n /**\n * 颜色的常量\n */\n Color.BLACK = new Color(0, 0, 0, 1); // 纯黑色\n Color.BLUE = new Color(0, 0, 1, 1); // 纯蓝色\n Color.CLEAR = new Color(0, 0, 0, 0); // 完全透明\n Color.CYAN = new Color(0, 1, 1, 1); // 青色\n Color.GRAY = new Color(0.5, 0.5, 0.5, 1); // 灰色\n Color.GREEN = new Color(0, 1, 0, 1); // 纯绿色\n Color.MAGENTA = new Color(1, 0, 1, 1); // 洋红色\n Color.RED = new Color(1, 0, 0, 1); // 纯红色\n Color.WHITE = new Color(1, 1, 1, 1); // 纯白色\n Color.YELLOW = new Color(1, 0.92, 0.016, 1); // 黄色\n return Color;\n}());\n","import { Vector3 } from './vector3';\n/**\n * 三维包围盒\n */\nvar Box3 = /** @class */ (function () {\n /**\n * 构造函数,传入值为空时表示空包围盒\n * @param [min=new Vector3(Infinity)] - 最小角点\n * @param [max=new Vector3(-Infinity)] - 最大角点\n */\n function Box3(min, max) {\n if (min === void 0) { min = new Vector3(Infinity, Infinity, Infinity); }\n if (max === void 0) { max = new Vector3(-Infinity, -Infinity, -Infinity); }\n this.min = min.clone();\n this.max = max.clone();\n }\n /**\n * 设置三维包围盒的值\n * @param min - 三维包围盒最小点\n * @param max - 三维包围盒最大点\n * @returns\n */\n Box3.prototype.set = function (min, max) {\n this.min.copyFrom(min);\n this.max.copyFrom(max);\n return this;\n };\n /**\n * 通过数组构建三维包围盒\n * @param array - 数组集合(每三个数视为一个三维空间点)\n * @returns 三维包围盒\n */\n Box3.prototype.setFromArray = function (array) {\n var minX = Number(Infinity);\n var minY = Number(Infinity);\n var minZ = Number(Infinity);\n var maxX = -Infinity;\n var maxY = -Infinity;\n var maxZ = -Infinity;\n for (var i = 0, l = array.length; i < l; i += 3) {\n var x = array[i];\n var y = array[i + 1];\n var z = array[i + 2];\n if (x < minX) {\n minX = x;\n }\n if (y < minY) {\n minY = y;\n }\n if (z < minZ) {\n minZ = z;\n }\n if (x > maxX) {\n maxX = x;\n }\n if (y > maxY) {\n maxY = y;\n }\n if (z > maxZ) {\n maxZ = z;\n }\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n };\n /**\n * 通过三维空间点构建三维包围盒\n * @param points - 三维空间点集合\n * @returns 三维包围盒\n */\n Box3.prototype.setFromPoints = function (points) {\n this.makeEmpty();\n for (var i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n };\n /**\n * 通过三维空间点(包围盒中心)和大小确定包围盒\n * @param center - 三维包围盒中心点\n * @param size - 三维包围盒大小值\n * @returns 三维包围盒\n */\n Box3.prototype.setFromCenterAndSize = function (center, size) {\n var halfSize = size.clone().multiply(0.5);\n this.min.copyFrom(center).subtract(halfSize);\n this.max.copyFrom(center).add(halfSize);\n return this;\n };\n // TODO\n /**\n * 通过实体构建包围盒\n * @param object - 构件实体\n * @returns 三维包围盒\n */\n Box3.prototype.setFromObject = function (object) {\n this.makeEmpty();\n return this.expandByObject(object);\n };\n /**\n * 克隆三维包围盒\n * @returns 克隆结果\n */\n Box3.prototype.clone = function () {\n return new Box3().copyFrom(this);\n };\n /**\n * 复制三维包围盒\n * @param box - 复制对象\n * @returns 复制结果\n */\n Box3.prototype.copyFrom = function (box) {\n this.min.copyFrom(box.min);\n this.max.copyFrom(box.max);\n return this;\n };\n /**\n * 三维包围盒置空\n * @returns 置空结果\n */\n Box3.prototype.makeEmpty = function () {\n this.min.x = this.min.y = this.min.z = Number(Infinity);\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n };\n /**\n * 三维包围盒判空\n * @returns 判空结果\n */\n Box3.prototype.isEmpty = function () {\n // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n return this.max.x < this.min.x\n || this.max.y < this.min.y\n || this.max.z < this.min.z;\n };\n /**\n * 获取三维包围盒中心\n * @param [target=new Vector3()]\n * @returns\n */\n Box3.prototype.getCenter = function (target) {\n if (target === void 0) { target = new Vector3(); }\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiply(0.5);\n };\n /**\n * 获取三维包围盒大小\n * @param [target=new Vector3()] - 结果保存对象\n * @returns 三维包围盒大小\n */\n Box3.prototype.getSize = function (target) {\n if (target === void 0) { target = new Vector3(); }\n return this.isEmpty() ? target.set(0, 0, 0) : target.subtractVectors(this.max, this.min);\n };\n /**\n * 通过三维空间点扩展三维包围盒\n * @param point - 三维空间点\n * @returns 扩展结果\n */\n Box3.prototype.expandByPoint = function (point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n };\n /**\n * 通过三维向量扩展三维包围盒\n * @param vector - 三维向量\n * @returns 扩展结果\n */\n Box3.prototype.expandByVector = function (vector) {\n this.min.subtract(vector);\n this.max.add(vector);\n return this;\n };\n /**\n * 通过实数扩展三维包围盒\n * @param scalar - 扩展大小\n * @returns 扩展结果\n */\n Box3.prototype.expandByScalar = function (scalar) {\n this.min.add(-scalar);\n this.max.add(scalar);\n return this;\n };\n /**\n * 通过包围盒扩展三维包围盒\n * @param box\n * @returns\n */\n Box3.prototype.expandByBox = function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n };\n // TODO\n /**\n * 通过实体扩展三维包围盒\n * @param object - 构件实体\n * @returns 扩展结果\n */\n Box3.prototype.expandByObject = function (object) {\n // Computes the world-axis-aligned bounding box of an object (including its children),\n // accounting for both the object's, and children's, world transforms\n object.updateWorldMatrix(false, false);\n var geometry = object.geometry;\n if (geometry !== undefined) {\n if (geometry.boundingBox === null) {\n geometry.computeBoundingBox();\n }\n var box3 = new Box3();\n box3.copyFrom(geometry.boundingBox);\n box3.applyMatrix4(object.matrixWorld);\n this.union(box3);\n }\n var children = object.children;\n for (var i = 0, l = children.length; i < l; i++) {\n this.expandByObject(children[i]);\n }\n return this;\n };\n /**\n * 判断三维包围盒相交关系(if this intersect other)\n * @param point - 三维空间点\n * @returns 点包含判断结果\n */\n Box3.prototype.containsPoint = function (point) {\n return !(point.x < this.min.x\n || point.x > this.max.x\n || point.y < this.min.y\n || point.y > this.max.y\n || point.z < this.min.z\n || point.z > this.max.z);\n };\n /**\n * 判断三维包围盒与三维包围盒的包含关系\n * @param other - 三维包围盒\n * @returns 包围盒包含结果(true 表示包含 other, false 表示不包含 other)\n */\n Box3.prototype.containsBox = function (other) {\n return this.min.x <= other.min.x\n && this.max.x >= other.max.x\n && this.min.y <= other.min.y\n && this.max.y >= other.max.y\n && this.min.z <= other.min.z\n && this.max.z >= other.max.z;\n };\n // TODO\n /**\n * 获取点在三维包围盒的比例位置\n * @param point - 三维空间点\n * @param [target=new Vector3()] - 结果保存对象\n * @returns 点在包围盒比例位置\n */\n Box3.prototype.getParameter = function (point, target) {\n if (target === void 0) { target = new Vector3(); }\n // This can potentially have a divide by zero if the box\n // has a size dimension of 0.\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n };\n /**\n * 判断三维包围盒相交关系(if this intersect other)\n * @param other - 三维包围盒\n * @returns 相交判断结果\n */\n Box3.prototype.intersectsBox = function (other) {\n // using 6 splitting planes to rule out intersections.\n return !(other.max.x < this.min.x || other.min.x > this.max.x\n || other.max.y < this.min.y || other.min.y > this.max.y\n || other.max.z < this.min.z || other.min.z > this.max.z);\n };\n /**\n * 判断三维包围盒和球是否相交\n * @param sphere\n * @returns\n */\n Box3.prototype.intersectsSphere = function (sphere) {\n // Find the point on the AABB closest to the sphere center.\n var vector = new Vector3();\n this.clampPoint(sphere.center, vector);\n // If that point is inside the sphere, the AABB and sphere intersect.\n return vector.distanceSquared(sphere.center) <= (sphere.radius * sphere.radius);\n };\n /**\n * 求点与三维包围盒的最近点\n * @param point - 三维空间点\n * @param [target=new Vector3()] - 结果存放对象\n * @returns 计算结果\n */\n Box3.prototype.clampPoint = function (point, target) {\n if (target === void 0) { target = new Vector3(); }\n return target.copyFrom(point).clamp(this.min, this.max);\n };\n /**\n * 三维空间点到三维包围盒的距离\n * @param point - 三维包围盒\n * @returns 距离结果\n */\n Box3.prototype.distanceToPoint = function (point) {\n var clampedPoint = point.clone().clamp(this.min, this.max);\n return clampedPoint.subtract(point).length();\n };\n /**\n * 三维包围盒求交集\n * @param box - 三维包围盒\n * @returns 求交结果\n */\n Box3.prototype.intersect = function (box) {\n this.min.max(box.min);\n this.max.min(box.max);\n // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n if (this.isEmpty()) {\n this.makeEmpty();\n }\n return this;\n };\n /**\n * 三维包围盒求并集\n * @param box - 三维包围盒\n * @returns 求并结果\n */\n Box3.prototype.union = function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n };\n /**\n * 通过三维变换矩阵变化三维包围盒\n * @param matrix - 三维变换矩阵\n * @returns 变换结果\n */\n Box3.prototype.applyMatrix4 = function (matrix, center) {\n if (center === void 0) { center = new Vector3(); }\n // transform of empty box is an empty box.\n if (this.isEmpty()) {\n return this;\n }\n var points = this.getOBBPoints(matrix, center);\n this.setFromPoints(points);\n return this;\n };\n Box3.prototype.getOBBPoints = function (matrix, center) {\n if (center === void 0) { center = new Vector3(); }\n // transform of empty box is an empty box.\n if (this.isEmpty()) {\n return [];\n }\n var points = [];\n // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n points[0] = new Vector3(this.min.x, this.min.y, this.min.z); // 000\n points[1] = new Vector3(this.min.x, this.min.y, this.max.z); // 001\n points[2] = new Vector3(this.min.x, this.max.y, this.min.z); // 010\n points[3] = new Vector3(this.min.x, this.max.y, this.max.z); // 011\n points[4] = new Vector3(this.max.x, this.min.y, this.min.z); // 100\n points[5] = new Vector3(this.max.x, this.min.y, this.max.z); // 101\n points[6] = new Vector3(this.max.x, this.max.y, this.min.z); // 110\n points[7] = new Vector3(this.max.x, this.max.y, this.max.z); // 111\n points.forEach(function (p) {\n p.subtract(center);\n p.applyMatrix(matrix);\n p.add(center);\n });\n return points;\n };\n /**\n * 通过包围盒获取包围球\n * @param target\n * @returns\n */\n Box3.prototype.getBoundingSphere = function (target) {\n this.getCenter(target.center);\n var vector = new Vector3();\n target.radius = this.getSize(vector).length() * 0.5;\n return target;\n };\n /**\n * 三维包围盒位移\n * @param offset - 三维位移向量\n * @returns 位移结果\n */\n Box3.prototype.translate = function (offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n };\n /**\n * 三维包围盒判等\n * @param other - 三维包围盒\n * @returns 判等结果\n */\n Box3.prototype.equals = function (other) {\n return other.min.equals(this.min) && other.max.equals(this.max);\n };\n return Box3;\n}());\nexport { Box3 };\n","import { Box3 } from './box3';\nimport { Vector3 } from './vector3';\n/**\n * 球\n */\nvar Sphere = /** @class */ (function () {\n /**\n * 构造函数\n * @param [center=Vector3.ZERO] - 球心,默认值为(0, 0, 0)\n * @param [radius=-1] - 半径\n */\n function Sphere(center, radius) {\n if (center === void 0) { center = Vector3.ZERO; }\n if (radius === void 0) { radius = -1; }\n this.center = center.clone();\n this.radius = radius;\n }\n /**\n * 通过参数设置球\n * @param center - 球心\n * @param radius - 半径\n * @returns\n */\n Sphere.prototype.set = function (center, radius) {\n this.center.copyFrom(center);\n this.radius = radius;\n return this;\n };\n /**\n * 通过空间点与球心设置球\n * @param points - 三维空间点\n * @param [optionalCenter] - 指定球心\n * @returns\n */\n Sphere.prototype.setFromPoints = function (points, optionalCenter) {\n var center = this.center;\n if (optionalCenter !== undefined) {\n center.copyFrom(optionalCenter);\n var maxRadiusSq = 0;\n for (var i = 0; i < points.length; i++) {\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceSquared(points[i]));\n }\n this.radius = Math.sqrt(maxRadiusSq);\n }\n else {\n var box = new Box3().setFromPoints(points);\n box.getCenter(center);\n this.radius = box.getSize().length() / 2;\n }\n return this;\n };\n /**\n * 复制球\n * @param sphere - 球信息\n * @returns 复制结果\n */\n Sphere.prototype.copyFrom = function (sphere) {\n this.center.copyFrom(sphere.center);\n this.radius = sphere.radius;\n return this;\n };\n /**\n * 球判空\n * @returns 判空结果\n */\n Sphere.prototype.isEmpty = function () {\n return this.radius < 0;\n };\n /**\n * 球置空\n * @returns 置空结果\n */\n Sphere.prototype.makeEmpty = function () {\n this.center.set(0, 0, 0);\n this.radius = -1;\n return this;\n };\n /**\n * 三维空间点包围判断\n * @param point - 三维空间点\n * @returns 空间点包含判断\n */\n Sphere.prototype.containsPoint = function (point) {\n return point.distanceSquared(this.center) <= (this.radius * this.radius);\n };\n /**\n * 空间点与球表面的最短距离\n * @param point - 三维空间点\n * @returns 距离结果\n */\n Sphere.prototype.distanceToPoint = function (point) {\n return (point.distance(this.center) - this.radius);\n };\n /**\n * 与球相交判断\n * @param sphere - 球\n * @returns 相交判断结果\n */\n Sphere.prototype.intersectsSphere = function (sphere) {\n var radiusSum = this.radius + sphere.radius;\n return sphere.center.distanceSquared(this.center) <= (radiusSum * radiusSum);\n };\n /**\n * 与包围盒相交判断\n * @param box - 三维包围盒\n * @returns 相交判断结果\n */\n Sphere.prototype.intersectsBox = function (box) {\n return box.intersectsSphere(this);\n };\n /**\n * 收敛空间点在球范围内\n * 注:乘法的效率要比开方高很多\n * @param point - 三维空间点\n * @param [target] - 结果保存对象\n * @returns 收敛结果\n */\n Sphere.prototype.clampPoint = function (point, target) {\n var deltaLengthSq = this.center.distanceSquared(point);\n if (target === undefined) {\n target = new Vector3();\n }\n target.copyFrom(point);\n if (deltaLengthSq > (this.radius * this.radius)) {\n target.subtract(this.center).normalize();\n target.multiply(this.radius).add(this.center);\n }\n return target;\n };\n /**\n * 根据包围盒获取球\n * @param target - 包围盒\n * @returns 球\n */\n Sphere.prototype.getBoundingBox = function (target) {\n if (target === undefined) {\n target = new Box3();\n }\n if (this.isEmpty()) {\n // Empty sphere produces empty bounding box\n target.makeEmpty();\n return target;\n }\n target.set(this.center, this.center);\n target.expandByScalar(this.radius);\n return target;\n };\n /**\n * 球空间变换\n * @param matrix - 空间变化矩阵\n * @returns 变换结果\n */\n Sphere.prototype.applyMatrix4 = function (matrix) {\n var mt = matrix.elements;\n var scaleXSq = mt[0] * mt[0] + mt[1] * mt[1] + mt[2] * mt[2];\n var scaleYSq = mt[4] * mt[4] + mt[5] * mt[5] + mt[6] * mt[6];\n var scaleZSq = mt[8] * mt[8] + mt[9] * mt[9] + mt[10] * mt[10];\n var maxScale = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n this.center.applyMatrix(matrix);\n this.radius = this.radius * maxScale;\n return this;\n };\n /**\n * 球位移\n * @param offset - 位移信息\n * @returns 位移结果\n */\n Sphere.prototype.translate = function (offset) {\n this.center.add(offset);\n return this;\n };\n /**\n * 通过三维空间点对球进行扩展\n * @param point - 扩展点\n * @returns 扩展结果\n */\n Sphere.prototype.expandByPoint = function (point) {\n var vector = new Vector3().subtractVectors(point, this.center);\n var lengthSquared = vector.lengthSquared();\n if (lengthSquared > (this.radius * this.radius)) {\n var length_1 = Math.sqrt(lengthSquared);\n var missingRadiusHalf = (length_1 - this.radius) * 0.5;\n // Nudge this sphere towards the target point. Add half the missing distance to radius,\n // and the other half to position. This gives a tighter enclosure, instead of if\n // the whole missing distance were just added to radius.\n this.center.add(vector.multiply(missingRadiusHalf / length_1));\n this.radius += missingRadiusHalf;\n }\n return this;\n };\n /**\n * 包围球求并集\n * @param sphere - 包围球\n * @returns 求并结果\n */\n Sphere.prototype.union = function (sphere) {\n // To enclose another sphere into this sphere, we only need to enclose two points:\n // 1) Enclose the farthest point on the other sphere into this sphere.\n // 2) Enclose the opposite point of the farthest point into this sphere.\n var v1 = new Vector3();\n var toFarthestPoint = new Vector3();\n toFarthestPoint.subtractVectors(sphere.center, this.center).normalize().multiply(sphere.radius);\n this.expandByPoint(v1.copyFrom(sphere.center).add(toFarthestPoint));\n this.expandByPoint(v1.copyFrom(sphere.center).subtract(toFarthestPoint));\n return this;\n };\n /**\n * 包围球求交集\n * @param other - 其它包围球\n * @returns 求交结果\n */\n Sphere.prototype.intersect = function (other) {\n var vector = new Vector3().subtractVectors(this.center, other.center);\n var distance = vector.length();\n var radiusSum = this.radius + other.radius;\n if (distance > radiusSum) {\n return this.makeEmpty();\n }\n this.center = this.center.add(vector.normalize().multiply(distance / 2));\n this.radius = this.radius + other.radius - distance;\n return this;\n };\n /**\n * 包围球判等\n * @param sphere - 包围球\n * @returns 判等结果\n */\n Sphere.prototype.equals = function (sphere) {\n return sphere.center.equals(this.center) && (sphere.radius === this.radius);\n };\n /**\n * 包围球克隆\n * @returns 克隆结果\n */\n Sphere.prototype.clone = function () {\n return new Sphere().copyFrom(this);\n };\n return Sphere;\n}());\nexport { Sphere };\n","/**\n * Earcut.js from: https://github.com/mapbox/earcut/tree/v2.2.2\n */\n\nexport function earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nexport function linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nexport function filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nexport function isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nexport function isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nexport function eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nexport function indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nexport function isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nexport function equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nexport function intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nexport function locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nexport function splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nexport function removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nexport function Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","/*!\n * Name: @galacean/effects-specification\n * Description: Galacean Effects JSON Specification\n * Author: Ant Group CO., Ltd.\n * Version: v1.0.1\n */\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nvar RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nvar BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nvar SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 蒙版模式\n */\nvar MaskMode;\n(function (MaskMode) {\n /**\n * 无蒙版\n */\n MaskMode[MaskMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * 蒙版\n */\n MaskMode[MaskMode[\"MASK\"] = 1] = \"MASK\";\n /**\n * 被遮挡\n */\n MaskMode[MaskMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n MaskMode[MaskMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(MaskMode || (MaskMode = {}));\n/**\n * 发射器形状\n */\nvar ShapeType;\n(function (ShapeType) {\n /**\n * 没有类型\n */\n ShapeType[ShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ShapeType[ShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ShapeType[ShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ShapeType[ShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ShapeType[ShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ShapeType[ShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ShapeType[ShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ShapeType[ShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ShapeType[ShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ShapeType[ShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ShapeType || (ShapeType = {}));\n/**\n * 插件类型\n */\nvar PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nvar InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nvar InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nvar ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * 滤镜图层\n */\n ItemType[\"filter\"] = \"8\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nvar RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nvar ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\n\nvar END_BEHAVIOR_DESTROY = 0;\nvar END_BEHAVIOR_PAUSE = 1;\nvar END_BEHAVIOR_FORWARD = 2;\nvar END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nvar END_BEHAVIOR_FREEZE = 4;\nvar END_BEHAVIOR_RESTART = 5;\nvar END_BEHAVIOR_DESTROY_CHILDREN = 6;\nvar CAMERA_CLIP_MODE_VERTICAL = 1;\nvar CAMERA_CLIP_MODE_NORMAL = 0;\n\nvar CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = CAMERA_CLIP_MODE_VERTICAL] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = CAMERA_CLIP_MODE_NORMAL] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n/**\n * 结束行为\n */\nvar CompositionEndBehavior;\n(function (CompositionEndBehavior) {\n /**\n * 销毁\n */\n CompositionEndBehavior[CompositionEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n /**\n * 暂停\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause\"] = END_BEHAVIOR_PAUSE] = \"pause\";\n /**\n * 重播\n */\n CompositionEndBehavior[CompositionEndBehavior[\"restart\"] = END_BEHAVIOR_RESTART] = \"restart\";\n /**\n * 无限播放\n */\n CompositionEndBehavior[CompositionEndBehavior[\"forward\"] = END_BEHAVIOR_FORWARD] = \"forward\";\n /**\n * 销毁并保留最后一帧\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause_destroy\"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = \"pause_destroy\";\n})(CompositionEndBehavior || (CompositionEndBehavior = {}));\n\n/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nvar ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n *直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nvar BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n\nvar ItemEndBehavior;\n(function (ItemEndBehavior) {\n ItemEndBehavior[ItemEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n ItemEndBehavior[ItemEndBehavior[\"loop\"] = END_BEHAVIOR_RESTART] = \"loop\";\n ItemEndBehavior[ItemEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(ItemEndBehavior || (ItemEndBehavior = {}));\nvar ParentItemEndBehavior;\n(function (ParentItemEndBehavior) {\n ParentItemEndBehavior[ParentItemEndBehavior[\"destroyChildren\"] = END_BEHAVIOR_DESTROY_CHILDREN] = \"destroyChildren\";\n})(ParentItemEndBehavior || (ParentItemEndBehavior = {}));\n\n/**\n * 粒子交互行为\n */\nvar ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n\nvar ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n\nvar ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n\n// 材质类型\nvar MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nvar MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n\n/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nvar RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n})(RenderMode3D || (RenderMode3D = {}));\n\nvar TextOverflow;\n(function (TextOverflow) {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n TextOverflow[TextOverflow[\"display\"] = 0] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 1] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 2] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nvar TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nvar TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\n/**\n * 文本字重\n */\nvar TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nvar FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction arrAdd(arr, item) {\n if (!arr.includes(item)) {\n arr.push(item);\n return true;\n }\n}\n/**\n * @deprecated 请直接使用 Array.prototype.forEach 或 for...of\n * @param object\n * @param callback\n * @returns the mutated input object\n */\nfunction forEach(object, callback, thisObj) {\n if (object) {\n for (var name_1 in object) {\n if (Object.hasOwnProperty.call(object, name_1)) {\n callback.call(thisObj, object[name_1], name_1);\n }\n }\n }\n return object;\n}\nfunction ensureFixedNumber(a) {\n if (Number.isFinite(a)) {\n return [ValueType.CONSTANT, a];\n }\n if (a) {\n if (a[0] === 'lines') {\n return [ValueType.LINE, a[1]];\n }\n if (a[0] === 'curve') {\n return [ValueType.CURVE, a[1]];\n }\n if (a[0] === 'static') {\n return [ValueType.CONSTANT, a[1]];\n }\n }\n}\nfunction ensureFixedNumberWithRandom(a, p) {\n if (Array.isArray(a) && a[0] === 'random') {\n return [ValueType.CONSTANT, a[1][p]];\n }\n return ensureFixedNumber(a);\n}\nfunction ensureRGBAValue(a) {\n if (a && a[0] === 'color') {\n return colorToArr(a[1], true);\n }\n return [1, 1, 1, 1];\n}\nfunction ensureColorExpression(a, normalized) {\n if (a) {\n if (a[0] === 'colors') {\n return [ValueType.COLORS, a[1].map(function (color) { return colorToArr(color, normalized); })];\n }\n else if (a[0] === 'gradient') {\n return ensureGradient(a[1], normalized);\n }\n else if (a[0] === 'color') {\n return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];\n }\n }\n}\nfunction ensureNumberExpression(a) {\n if (a && a[0] === 'random') {\n return [ValueType.RANDOM, a[1]];\n }\n return ensureFixedNumber(a);\n}\nfunction ensureValueGetter(a) {\n if (Array.isArray(a) && typeof a[0] === 'string') {\n return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;\n }\n return a;\n}\nfunction ensureGradient(a, normalized) {\n if (a) {\n var stops_1 = [];\n Object.getOwnPropertyNames(a).forEach(function (p) {\n var stop = parsePercent(p);\n var color = colorToArr(a[p], normalized);\n stops_1.push([stop, color[0], color[1], color[2], color[3]]);\n });\n stops_1 = stops_1.sort(function (a, b) { return a[0] - b[0]; });\n return [ValueType.GRADIENT_COLOR, stops_1];\n }\n}\nfunction colorToArr(hex, normalized) {\n var ret;\n if (typeof hex === 'string') {\n hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n var m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n if (m) {\n var a = +m[4];\n ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];\n }\n else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n // eslint-disable-next-line no-cond-assign\n }\n else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255] || [0, 0, 0, 255];\n }\n }\n else if (hex instanceof Array) {\n ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];\n }\n if (normalized) {\n // @ts-expect-error\n ret = normalizeColor(ret);\n }\n // @ts-expect-error\n return ret;\n}\nfunction normalizeColor(a) {\n if (Array.isArray(a)) {\n return a.map(function (i) { return Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0; });\n }\n}\nfunction parsePercent(c) {\n var match = /^(-)?([\\d+.]+)%$/.exec(c);\n if (match) {\n return +match[2] / 100 * (match[1] ? -1 : 1);\n }\n return +c;\n}\nfunction getGradientColor(color, normalized) {\n if (Array.isArray(color)) {\n // @ts-expect-error\n return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);\n }\n else {\n return ensureGradient(color, normalized);\n }\n}\nfunction ensureFixedVec3(a) {\n if (a) {\n if (a.length === 3) {\n return [ValueType.CONSTANT_VEC3, a];\n }\n if (a[0] === 'path') {\n return [ValueType.LINEAR_PATH, a[1]];\n }\n if (a[0] === 'bezier') {\n return [ValueType.BEZIER_PATH, a[1]];\n }\n }\n}\nfunction objectValueToNumber(o) {\n var e_1, _a;\n try {\n for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n o[key] = Number(o[key]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return o;\n}\nfunction deleteEmptyValue(o) {\n var e_2, _a;\n try {\n for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (o[key] === undefined) {\n delete o[key];\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return o;\n}\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar d2r = Math.PI / 180;\nvar r2d = 180 / Math.PI;\nfunction quatFromXYZRotation(out, x, y, z) {\n var c1 = cos((x * d2r) / 2);\n var c2 = cos((y * d2r) / 2);\n var c3 = cos((z * d2r) / 2);\n var s1 = sin((x * d2r) / 2);\n var s2 = sin((y * d2r) / 2);\n var s3 = sin((z * d2r) / 2);\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n return out;\n}\nfunction clamp(v, min, max) {\n return v > max ? max : (v < min ? min : v);\n}\nfunction rotationZYXFromQuat(out, quat) {\n var x = quat[0];\n var y = quat[1];\n var z = quat[2];\n var w = quat[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var m11 = 1 - yy - zz, m12 = yx - wz;\n var m21 = yx + wz, m22 = 1 - xx - zz;\n var m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;\n out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;\n if (Math.abs(m31) < 0.9999999) {\n out[0] = Math.atan2(m32, m33) * r2d;\n out[2] = Math.atan2(m21, m11) * r2d;\n }\n else {\n out[0] = 0;\n out[2] = Math.atan2(-m12, m22) * r2d;\n }\n return out;\n}\n\nfunction getStandardParticleContent(particle) {\n var _a;\n var options = particle.options;\n var transform = particle.transform;\n var shape = {\n type: ShapeType.NONE,\n };\n if (particle.shape) {\n var shapeType = (_a = particle.shape.shape) === null || _a === void 0 ? void 0 : _a.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');\n shape = __assign(__assign({}, particle.shape), { type: ShapeType[shapeType] });\n if (particle.shape.upDirection) {\n var _b = __read(particle.shape.upDirection, 3), x = _b[0], y = _b[1], z = _b[2];\n if (x === 0 && y === 0 && z === 0) {\n delete shape.upDirection;\n }\n }\n }\n if (options.startTurbulence) {\n shape.turbulenceX = ensureNumberExpression(options.turbulenceX);\n shape.turbulenceY = ensureNumberExpression(options.turbulenceY);\n shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);\n }\n var emission = particle.emission;\n if (emission.bursts && emission.bursts.length > 0) {\n emission.bursts = emission.bursts.map(function (b) { return objectValueToNumber(b); });\n }\n if (emission.burstOffsets && emission.burstOffsets.length > 0) {\n emission.burstOffsets = emission.burstOffsets.map(function (b) { return objectValueToNumber(b); });\n }\n if (emission.rateOverTime) {\n emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);\n }\n var ret = {\n renderer: particle.renderer,\n shape: shape,\n splits: particle.splits,\n emission: emission,\n options: {\n startLifetime: ensureNumberExpression(options.startLifetime),\n start3DSize: !!options.start3DSize,\n startSize: ensureNumberExpression(options.startSize),\n startSizeX: ensureNumberExpression(options.startSizeX),\n startSizeY: ensureNumberExpression(options.startSizeY),\n sizeAspect: ensureNumberExpression(options.sizeAspect),\n maxCount: options.maxCount,\n startDelay: ensureNumberExpression(options.startDelay),\n startColor: ensureColorExpression(options.startColor, true),\n startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),\n particleFollowParent: options.particleFollowParent,\n },\n };\n if (options.start3DRotation) {\n ret.options.startRotationX = ensureNumberExpression(options.startRotationX);\n ret.options.startRotationY = ensureNumberExpression(options.startRotationY);\n }\n if (particle.filter) {\n var filter_1 = {};\n forEach(particle.filter, function (val, key) {\n // @ts-expect-error\n filter_1[key] = ensureValueGetter(val);\n });\n ret.filter = filter_1;\n }\n if (transform && transform.path) {\n ret.emitterTransform = {\n path: ensureFixedVec3(transform.path),\n };\n }\n var sizeOverLifetime = particle.sizeOverLifetime;\n if (sizeOverLifetime) {\n if (sizeOverLifetime.separateAxes) {\n ret.sizeOverLifetime = {\n separateAxes: true,\n x: ensureNumberExpression(sizeOverLifetime.x),\n y: ensureNumberExpression(sizeOverLifetime.y),\n };\n }\n else {\n ret.sizeOverLifetime = {\n size: ensureNumberExpression(sizeOverLifetime.size),\n };\n }\n }\n var velocityOverLifetime = particle.velocityOverLifetime || {};\n var sol = velocityOverLifetime.speedOverLifetime;\n if (sol) {\n sol = ensureFixedNumber(sol);\n }\n else {\n sol = undefined;\n }\n ret.positionOverLifetime = {\n gravity: options.gravity,\n gravityOverLifetime: ensureFixedNumber(options.gravityModifier),\n startSpeed: ensureNumberExpression(options.startSpeed),\n speedOverLifetime: sol,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureNumberExpression(velocityOverLifetime.linearX),\n linearY: ensureNumberExpression(velocityOverLifetime.linearY),\n linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),\n orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),\n orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),\n forceTarget: velocityOverLifetime.forceTarget,\n target: velocityOverLifetime.target,\n forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve),\n };\n deleteEmptyValue(ret.positionOverLifetime);\n var rotationOverLifetime = particle.rotationOverLifetime;\n if (rotationOverLifetime) {\n ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),\n };\n if (rotationOverLifetime.separateAxes) {\n ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);\n ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);\n }\n }\n var colorOverLifetime = particle.colorOverLifetime;\n if (colorOverLifetime) {\n var col = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n var textureSheetAnimation = particle.textureSheetAnimation;\n if (textureSheetAnimation) {\n ret.textureSheetAnimation = {\n row: textureSheetAnimation.row,\n col: textureSheetAnimation.col,\n total: textureSheetAnimation.total,\n animate: textureSheetAnimation.animate,\n cycles: ensureFixedNumber(textureSheetAnimation.cycles),\n animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),\n animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0),\n };\n }\n var trials = particle.trails;\n if (trials) {\n ret.trails = {\n lifetime: ensureNumberExpression(trials.lifetime),\n dieWithParticles: trials.dieWithParticles,\n maxPointPerTrail: trials.maxPointPerTrail,\n minimumVertexDistance: trials.minimumVertexDistance,\n widthOverTrail: ensureFixedNumber(trials.widthOverTrail),\n colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),\n blending: trials.blending,\n colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),\n inheritParticleColor: trials.inheritParticleColor,\n occlusion: trials.occlusion,\n transparentOcclusion: trials.transparentOcclusion,\n orderOffset: trials.orderOffset,\n sizeAffectsLifetime: trials.sizeAffectsLifetime,\n sizeAffectsWidth: trials.sizeAffectsWidth,\n texture: trials.texture,\n parentAffectsPosition: trials.parentAffectsPosition,\n opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),\n };\n }\n ret.trails && deleteEmptyValue(ret.trails);\n var interaction = particle.interaction;\n if (interaction) {\n ret.interaction = {\n behavior: interaction.behavior,\n radius: interaction.radius,\n multiple: interaction.multiple,\n };\n }\n return ret;\n}\n\nfunction getStandardNullContent(sprite, transform) {\n var _a;\n var opt = sprite.options;\n var velocityOverLifetime = sprite.velocityOverLifetime || {};\n var positionOverLifetime = {\n path: ensureFixedVec3((_a = sprite.transform) === null || _a === void 0 ? void 0 : _a.path),\n gravity: opt.gravity,\n gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),\n direction: opt.direction,\n startSpeed: opt.startSpeed,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureFixedNumber(velocityOverLifetime.linearX),\n linearY: ensureFixedNumber(velocityOverLifetime.linearY),\n linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),\n orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),\n orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),\n speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),\n };\n deleteEmptyValue(positionOverLifetime);\n var ret = {\n options: {\n startColor: ensureRGBAValue(opt.startColor),\n },\n positionOverLifetime: positionOverLifetime,\n };\n if (opt.startSize) {\n transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];\n }\n if (opt.startRotation) {\n if (!transform.rotation) {\n transform.rotation = [0, 0, opt.startRotation];\n }\n else {\n transform.rotation[2] += opt.startRotation;\n }\n }\n var rotationOverLifetime = sprite.rotationOverLifetime;\n if (rotationOverLifetime) {\n var rot = ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n };\n if (rot.separateAxes) {\n rot.x = ensureFixedNumber(rotationOverLifetime.x);\n rot.y = ensureFixedNumber(rotationOverLifetime.y);\n rot.z = ensureFixedNumber(rotationOverLifetime.z);\n }\n else {\n rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);\n }\n }\n var colorOverLifetime = sprite.colorOverLifetime;\n if (colorOverLifetime) {\n var col = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n var sizeOverLifetime = sprite.sizeOverLifetime;\n if (sizeOverLifetime) {\n ret.sizeOverLifetime = {\n separateAxes: sizeOverLifetime.separateAxes,\n size: ensureFixedNumber(sizeOverLifetime.size),\n x: ensureFixedNumber(sizeOverLifetime.x),\n y: ensureFixedNumber(sizeOverLifetime.y),\n z: ensureFixedNumber(sizeOverLifetime.z),\n };\n }\n return ret;\n}\nfunction getStandardSpriteContent(sprite, transform) {\n var ret = getStandardNullContent(sprite, transform);\n var texAni = sprite.textureSheetAnimation;\n if (texAni) {\n ret.textureSheetAnimation = {\n row: texAni.row,\n col: texAni.col,\n total: texAni.total || undefined,\n animate: texAni.animate,\n };\n }\n ret.renderer = sprite.renderer;\n if (sprite.splits) {\n ret.splits = sprite.splits;\n }\n if (sprite.interaction) {\n ret.interaction = sprite.interaction;\n }\n return ret;\n}\n\nfunction getStandardInteractContent(ui) {\n var options = ui.options;\n var option;\n switch (options.type) {\n case 'click': {\n option = {\n type: InteractType.CLICK,\n showPreview: options.showPreview,\n previewColor: options.previewColor && ensureRGBAValue(options.previewColor),\n behavior: options.behavior || InteractBehavior.NOTIFY,\n };\n break;\n }\n case 'drag': {\n option = {\n type: InteractType.DRAG,\n enableInEditor: !!options.enableInEditor,\n dxRange: options.dxRange,\n dyRange: options.dyRange,\n target: options.target,\n };\n break;\n }\n case 'message': {\n option = {\n type: InteractType.MESSAGE,\n };\n break;\n }\n }\n var ret = {\n // @ts-expect-error\n options: option,\n };\n return ret;\n}\n\nfunction getStandardCameraContent(model) {\n var _a, _b;\n var opt = model.options;\n var ret = {\n options: {\n fov: opt.fov,\n far: opt.far,\n near: opt.near,\n clipMode: opt.clipMode,\n },\n };\n var velocityOverLifetime = model.velocityOverLifetime;\n if (velocityOverLifetime || ((_a = model.transform) === null || _a === void 0 ? void 0 : _a.path)) {\n var positionOverLifetime = {\n path: ensureFixedVec3((_b = model.transform) === null || _b === void 0 ? void 0 : _b.path),\n linearX: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateX),\n linearY: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateY),\n linearZ: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateZ),\n };\n deleteEmptyValue(positionOverLifetime);\n ret.positionOverLifetime = positionOverLifetime;\n }\n var rol = model.rotationOverLifetime;\n if (rol) {\n var rotationOverLifetime = {\n separateAxes: rol.separateAxes,\n x: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateX),\n y: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateY),\n z: rol.separateAxes ? ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateZ) : ensureFixedNumber(rol.rotation),\n };\n deleteEmptyValue(rotationOverLifetime);\n ret.rotationOverLifetime = rotationOverLifetime;\n }\n return ret;\n}\n\nvar convertParams = [\n 'strength',\n 'bloomAddon',\n 'colorAddon',\n 'period',\n 'waveMovement',\n 'colorThreshold',\n 'xOpacity',\n 'yOpacity',\n 'feather',\n];\nvar pathParams = [\n 'path', 'position',\n];\nfunction getStandardFilterContent(filter) {\n var ret = {};\n forEach(filter, function (val, key) {\n if (convertParams.includes(key)) {\n ret[key] = ensureFixedNumber(val);\n }\n else if (pathParams.includes(key)) {\n ret[key] = ensureFixedVec3(val);\n }\n else {\n ret[key] = val;\n }\n });\n return ret;\n}\n\n/**\n * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)\n */\nfunction version21Migration(json) {\n json.compositions.forEach(function (composition) {\n composition.items.forEach(function (item) {\n if (item.type === ItemType.null) {\n if (item.endBehavior === ItemEndBehavior.destroy) {\n item.endBehavior = ItemEndBehavior.freeze;\n }\n }\n });\n });\n json.version = '2.1';\n return json;\n}\n/**\n * 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)\n */\nfunction version22Migration(json) {\n var _a;\n var singleVersion = (_a = json.version) === null || _a === void 0 ? void 0 : _a.split('.');\n if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {\n return json;\n }\n json.compositions.forEach(function (composition) {\n composition.items.forEach(function (item) {\n if (item.type === ItemType.mesh || item.type === ItemType.light) {\n item.endBehavior = item.endBehavior === 1 ? ItemEndBehavior.destroy : item.endBehavior;\n }\n });\n });\n return json;\n}\n\nvar v0 = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(\\w+)\\.\\d+)?$/;\nvar standardVersion = /^(\\d+)\\.(\\d+)$/;\nvar reverseParticle = false;\nfunction getStandardJSON(json) {\n var _a, _b;\n if (!json || typeof json !== 'object') {\n throw Error('expect a json object');\n }\n // 修正老版本数据中,meshItem以及lightItem结束行为错误问题\n version22Migration(json);\n if (v0.test(json.version)) {\n reverseParticle = ((_a = (/^(\\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';\n return version21Migration(getStandardJSONFromV0(json));\n }\n var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];\n if (mainVersion) {\n if (Number(mainVersion) < 2) {\n return version21Migration(json);\n }\n return json;\n }\n throw Error('invalid json version ' + json.version);\n}\nvar currentVersion = '1.0';\nfunction getStandardJSONFromV0(json) {\n var _a, _b;\n currentVersion = '1.0';\n var plugins = json.plugins || [];\n if ((_a = json.bins) === null || _a === void 0 ? void 0 : _a.length) {\n currentVersion = '1.3';\n }\n var requires = (json.requires || []).slice();\n var images = json.images.map(function (img, index) { return getStandardImage(img, index, json.imageTags || []); });\n var textures = json.textures || images.map(function (img, i) { return ({ source: i, flipY: true }); });\n var ret = {\n plugins: plugins,\n shapes: json.shapes || [],\n type: 'ge',\n version: currentVersion,\n playerVersion: (_b = json.playerVersion) !== null && _b !== void 0 ? _b : {\n web: '',\n native: '',\n },\n compositionId: json.compositionId + '',\n compositions: json.compositions.map(function (comp) { return getStandardComposition(comp, { plugins: plugins, requires: requires }); }),\n images: images,\n imgUsage: json._imgs,\n binUsage: json.binUsage,\n spines: json.spines,\n requires: json.requires,\n textures: textures,\n bins: (json.bins || []).slice(),\n };\n if (json._textures) {\n ret._textures = json._textures;\n }\n return ret;\n}\nfunction getStandardImage(image, index, imageTags) {\n var renderLevel = imageTags[index];\n var oriY = image.oriY;\n if (typeof image === 'string') {\n return {\n renderLevel: renderLevel,\n url: image,\n oriY: oriY,\n };\n }\n else if (image.template) {\n return {\n url: image.url,\n template: image.template,\n webp: image.webp,\n renderLevel: renderLevel,\n oriY: oriY,\n };\n }\n else if (image.compressed) {\n return {\n url: image.url,\n oriY: oriY,\n compressed: {\n astc: image.compressed.android,\n pvrtc: image.compressed.iOS,\n },\n webp: image.webp,\n renderLevel: renderLevel,\n };\n }\n else if (image.url) {\n return {\n url: image.url,\n type: image.type,\n webp: image.webp,\n renderLevel: renderLevel,\n oriY: oriY,\n loop: image.loop,\n };\n }\n else if (image && image.sourceType) {\n return image;\n }\n throw Error('invalid image type');\n}\nfunction getStandardComposition(composition, opt) {\n var _a;\n if (opt === void 0) { opt = {}; }\n var ret = {\n id: composition.id + '',\n camera: Object.assign({ clipMode: CAMERA_CLIP_MODE_NORMAL }, composition.camera),\n duration: composition.duration,\n endBehavior: composition.endBehavior,\n items: composition.items.map(function (item) { return getStandardItem(item, opt); }),\n name: composition.name,\n };\n var startTime = composition.startTime || composition.st;\n if (startTime) {\n ret.startTime = startTime;\n }\n var previewSize = (_a = composition.meta) === null || _a === void 0 ? void 0 : _a.previewSize;\n if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {\n previewSize = undefined;\n }\n if (previewSize) {\n ret.previewSize = previewSize;\n }\n return ret;\n}\nvar tempQuat = [0, 0, 0, 1];\nvar stdAnchor = 0.5;\nfunction getStandardItem(item, opt) {\n var _a, _b, _c;\n if (opt === void 0) { opt = {}; }\n var type = ItemType.base;\n var transform;\n var originContent;\n var content;\n var endBehavior = item.endBehavior;\n var renderLevel;\n var pluginName;\n var duration = NaN;\n var pn;\n if (item.content) {\n type = item.type || ItemType.plugin;\n pn = item.pn;\n pluginName = item.pluginName;\n content = item.content;\n originContent = item.content;\n if (isNaN(pn) && !pluginName) {\n pluginName = content.options.type;\n }\n if (item.duration) {\n duration = item.duration;\n }\n transform = item.transform || getTransform(originContent.transform);\n if (type === ItemType.filter) {\n if (currentVersion < '1.1') {\n currentVersion = '1.1';\n }\n content = getStandardSpriteContent(originContent, transform);\n // @ts-expect-error\n content.filter = getStandardFilterContent(originContent.filter);\n }\n }\n else if (item.particle) {\n type = ItemType.particle;\n originContent = item.particle;\n transform = getTransform(originContent.transform, reverseParticle, true);\n content = getStandardParticleContent(originContent);\n }\n else if (item.sprite) {\n type = ItemType.sprite;\n originContent = item.sprite;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardSpriteContent(originContent, transform);\n }\n else if (item.cal) {\n type = ItemType.null;\n originContent = item.cal;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardNullContent(originContent, transform);\n }\n else if (item.ui) {\n type = ItemType.interact;\n originContent = item.ui;\n transform = getTransform(originContent.transform);\n content = getStandardInteractContent(originContent);\n transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];\n }\n else if (item.model) {\n originContent = item.model;\n if (item.model.options.type === 1) {\n type = ItemType.camera;\n transform = getTransform(originContent.transform);\n content = getStandardCameraContent(originContent);\n }\n }\n if ((_a = content.renderer) === null || _a === void 0 ? void 0 : _a.anchor) {\n var anchor = new Float32Array(content.renderer.anchor);\n if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {\n delete content.renderer.anchor;\n }\n else if (opt.requires) {\n arrAdd(opt.requires, 'anchor');\n }\n }\n if (originContent) {\n var looping = (_b = originContent.options) === null || _b === void 0 ? void 0 : _b.looping;\n if (looping) {\n if (Array.isArray(looping)) {\n endBehavior = looping[1] ? ItemEndBehavior.loop : ItemEndBehavior.destroy;\n }\n else {\n endBehavior = ItemEndBehavior.loop;\n }\n }\n else {\n endBehavior = endBehavior || ((_c = originContent === null || originContent === void 0 ? void 0 : originContent.options) === null || _c === void 0 ? void 0 : _c.endBehavior) || ItemEndBehavior.destroy;\n }\n if (originContent.options.renderLevel) {\n renderLevel = originContent.options.renderLevel;\n }\n if (isNaN(duration)) {\n duration = originContent.options.duration;\n }\n }\n var ret = {\n type: type,\n name: item.name,\n delay: item.delay,\n duration: duration,\n id: item.id + '',\n // @ts-expect-error\n transform: transform,\n endBehavior: endBehavior,\n // @ts-expect-error\n renderLevel: renderLevel,\n content: content,\n };\n // @ts-expect-error\n if (pluginName) {\n if (opt.plugins) {\n arrAdd(opt.plugins, pluginName);\n ret.pn = opt.plugins.indexOf(pluginName);\n }\n else {\n ret.pluginName = pluginName;\n }\n // @ts-expect-error\n }\n else if (Number.isInteger(pn)) {\n // @ts-expect-error\n ret.pn = pn;\n }\n if (item.parentId) {\n ret.parentId = item.parentId + '';\n }\n return ret;\n function getTransform(originTransform, inverseRotation, changeOrder) {\n if (originTransform) {\n var transform_1 = {};\n var rotation = originTransform.rotation;\n if (rotation) {\n if (inverseRotation) {\n transform_1.rotation = [-rotation[0], -rotation[1], -rotation[2]];\n }\n else {\n transform_1.rotation = [rotation[0], rotation[1], rotation[2]];\n }\n if (changeOrder) {\n var q = quatFromXYZRotation(tempQuat, transform_1.rotation[0], transform_1.rotation[1], transform_1.rotation[2]);\n transform_1.rotation = rotationZYXFromQuat([], q);\n }\n }\n var position = originTransform.position;\n if (position) {\n transform_1.position = originTransform.position;\n }\n if (Array.isArray(originTransform.scale)) {\n transform_1.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];\n }\n return transform_1;\n }\n return {};\n }\n}\n\nexport { arrAdd, colorToArr, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, quatFromXYZRotation, rotationZYXFromQuat };\n//# sourceMappingURL=fallback.mjs.map\n"],"names":["RenderLevel","BlendingMode","SideMode","MaskMode","ShapeType","PluginType","InteractType","InteractBehavior","ItemType","RenderMode","ParticleOrigin","CameraClipMode","CompositionEndBehavior","ValueType","BezierKeyframeType","ItemEndBehavior","ParentItemEndBehavior","ParticleInteractionBehavior","ShapeArcMode","ModelBoundingType","MaterialType","MaterialBlending","RenderMode3D","TextOverflow","TextBaseline","TextAlignment","TextWeight","FontStyle","PI2","Math","PI","DEG2RAD","RAD2DEG","NumberEpsilon","isEqual","a","b","abs","Infinity","lerp","x","y","t","clamp","value","min","max","fixedMin","isNaN","fixedMax","lower","upper","EulerOrder","Vector2","this","prototype","set","setZero","setFromNumber","num","setFromArray","array","offset","_a","_b","copyFrom","src","clone","setElement","index","console","error","getElement","add","right","Array","addVectors","left","subtract","subtractVectors","multiply","multiplyVectors","divide","scale","v","sum","floor","ceil","round","negate","length","sqrt","lengthSquared","normalize","setLength","other","alpha","lerpVectors","v1","v2","dot","cross","distance","dx","dy","distanceSquared","equals","isZero","eps","toArray","fill","random","fromNumber","fromArray","ONE","ZERO","Vector3","z","_c","addScaledVector","s","crossVectors","ax","ay","az","bx","by","bz","reflect","normal","dz","toVector2","applyEuler","euler","out","rotateVector3","applyQuaternion","q","applyMatrix","m","transformPoint","applyNormalMatrix","transformNormal","applyProjectionMatrix","projectPoint","X","Y","Z","Quaternion","w","setFromEuler","toQuaternion","setFromAxisAngle","axis","angle","halfAngle","sin","tempVec0","cos","setFromRotationMatrix","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","from","to","r","Number","EPSILON","quat","angleTo","acos","rotateTowards","step","slerp","identity","invert","conjugate","l","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","atan2","ratioA","ratioB","slerpQuaternions","qa","qb","qx","qy","qz","qw","vx","vy","vz","ix","iy","iz","iw","res","quaternion","toVector4","vec","toEuler","setFromQuaternion","toMatrix4","mat","compose","fromEuler","fromAxisAngle","fromRotationMatrix","fromUnitVectors","__read","o","n","Symbol","iterator","e","i","call","ar","next","done","push","__spreadArray","pack","arguments","slice","concat","Matrix4","m41","m42","m43","m14","m24","m34","m44","setFromRowMajorData","setFromColumnVectors","c1","c2","c3","c4","setFromMatrix3","me","setFromScale","setFromTranslation","setFromRotationX","theta","c","setFromRotationY","setFromRotationZ","setFromRotationAxis","tx","ty","setFromShear","setFromBasis","xAxis","yAxis","zAxis","isIdentity","getColumnVector","lookAt","eye","target","up","vX","vY","tempVec1","vZ","tempVec2","addScaledMatrix","re","multiplyMatrices","ae","be","a11","a12","a13","a14","a21","a22","a23","a24","a31","a32","a33","a34","a41","a42","a43","a44","b11","b12","b13","b14","b21","b22","b23","b24","b31","b32","b33","b34","b41","b42","b43","b44","multiplyScalar","determinant","transpose","t11","t12","t13","t14","det","detInv","extractBasis","translation","rotation","anchor","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","sx","sy","sz","decompose","tempMat0","invSX","invSY","invSZ","getTranslation","getScale","hypot","getTransform","orthographic","top","bottom","near","far","tz","perspective","fov","aspect","reverse","f","tan","nf","transformVector4","matrix","fromIdentity","fromLookAt","fromPerspective","fromColumnVectors","fromMatrix3","fromScale","fromTranslation","fromRotationX","fromRotationY","fromRotationZ","fromRotationAxis","fromQuaternion","fromShear","fromBasis","fromRowMajorData","IDENTITY","Euler","order","DEFAULT_ORDER","setFromRotationMatrix4","XYZ","asin","YXZ","ZXY","ZYX","YZX","XZY","setFromVector3","_d","addEulers","reorder","newOrder","tempQuat0","toVector3","s1","s2","s3","cosX","sinX","cosY","sinY","cosZ","sinZ","cosXcosZ","cosXsinZ","sinXcosZ","sinXsinZ","cosYcosZ","cosYsinZ","sinYcosZ","sinYsinZ","cosXcosY","cosXsinY","sinXcosY","sinXsinY","fromRotationMatrix4","fromVector3","Vector4","Matrix3","setFromMatrix4","rotate","translate","fromMatrix4","Ray","origin","direction","ray","recast","at","ret","intersectBox","box","tmin","tmax","tymin","tymax","tzmin","tzmax","ox","oy","oz","bxmin","bymin","bzmin","bxmax","bymax","bzmax","invdirx","invdiry","invdirz","intersectPlane","plane","denominator","undefined","intersectSphere","sphere","center","vector","tca","d2","radius2","radius","thc","t0","t1","intersectTriangle","triangle","backfaceCulling","sign","p0","p1","p2","edge1","edge2","diff","tempVec3","DdN","DdQxE2","DdE1xQ","QdN","Color","g","setFromVector4","setFromHSV","hue","saturation","chroma","h","setFromHexString","hex","substring","parseInt","luminance","toLinear","gammaToLinear","toGamma","linearToGamma","toHSV","dm","toHexString","includeAlpha","R","ToHex","G","B","A","fromHexString","fromHSV","pow","str","toString","toUpperCase","BLACK","BLUE","CLEAR","CYAN","GRAY","GREEN","MAGENTA","RED","WHITE","YELLOW","Box3","minX","minY","minZ","maxX","maxY","maxZ","setFromPoints","points","makeEmpty","il","expandByPoint","setFromCenterAndSize","size","halfSize","setFromObject","object","expandByObject","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","scalar","expandByBox","updateWorldMatrix","geometry","boundingBox","computeBoundingBox","box3","applyMatrix4","matrixWorld","union","children","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","clampPoint","distanceToPoint","intersect","getOBBPoints","forEach","p","getBoundingSphere","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","getBoundingBox","mt","scaleXSq","scaleYSq","scaleZSq","maxScale","length_1","missingRadiusHalf","toFarthestPoint","lambda","dt","exp","degrees","radians","linkedList","data","start","end","dim","clockwise","last","j","signedArea","insertNode","removeNode","filterPoints","again","steiner","area","prev","isEar","ear","pointInTriangle","isEarHashed","invSize","minTX","minTY","maxTX","maxTY","zOrder","prevZ","nextZ","compareX","eliminateHole","hole","outerNode","hx","hy","stop","mx","my","tanMin","locallyInside","sectorContainsSector","findHoleBridge","splitPolygon","getLeftmost","leftmost","cx","cy","px","py","isValidDiagonal","intersects","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","a2","Node","b2","an","bp","holeIndices","len","list","queue","sort","tail","numMerges","pSize","qSize","inSize","sortLinked","CAMERA_CLIP_MODE_NORMAL","__assign","Object","assign","hasOwnProperty","apply","__values","TypeError","arrAdd","arr","item","includes","callback","thisObj","name_1","ensureFixedNumber","isFinite","CONSTANT","LINE","CURVE","ensureFixedNumberWithRandom","isArray","ensureRGBAValue","colorToArr","ensureColorExpression","normalized","COLORS","map","color","ensureGradient","RGBA_COLOR","ensureNumberExpression","RANDOM","stops_1","getOwnPropertyNames","match","exec","parsePercent","GRADIENT_COLOR","replace","test","toFixed","normalizeColor","getGradientColor","ensureFixedVec3","CONSTANT_VEC3","LINEAR_PATH","BEZIER_PATH","objectValueToNumber","e_1","keys","key","e_1_1","return","deleteEmptyValue","e_2","e_2_1","SuppressedError","d2r","r2d","getStandardParticleContent","particle","options","transform","shape","type","NONE","shapeType","upDirection","startTurbulence","turbulenceX","turbulenceY","turbulenceZ","emission","bursts","burstOffsets","rateOverTime","renderer","splits","startLifetime","start3DSize","startSize","startSizeX","startSizeY","sizeAspect","maxCount","startDelay","startColor","startRotationZ","startRotation","particleFollowParent","start3DRotation","startRotationX","startRotationY","filter","filter_1","val","path","emitterTransform","sizeOverLifetime","separateAxes","velocityOverLifetime","sol","speedOverLifetime","positionOverLifetime","gravity","gravityOverLifetime","gravityModifier","startSpeed","asMovement","linearX","linearY","linearZ","asRotation","orbCenter","orbitalX","orbitalY","orbitalZ","forceTarget","forceCurve","rotationOverLifetime","angularVelocity","colorOverLifetime","col","opacity","textureSheetAnimation","row","total","animate","cycles","animationDelay","animationDuration","trials","trails","lifetime","dieWithParticles","maxPointPerTrail","minimumVertexDistance","widthOverTrail","colorOverTrail","blending","inheritParticleColor","occlusion","transparentOcclusion","orderOffset","sizeAffectsLifetime","sizeAffectsWidth","texture","parentAffectsPosition","opacityOverLifetime","interaction","behavior","multiple","getStandardNullContent","sprite","opt","rot","getStandardSpriteContent","texAni","convertParams","pathParams","version21Migration","json","compositions","composition","items","null","endBehavior","destroy","freeze","version","v0","standardVersion","reverseParticle","getStandardJSON","Error","singleVersion","split","mesh","light","version22Migration","currentVersion","plugins","bins","requires","images","img","getStandardImage","imageTags","textures","source","flipY","shapes","playerVersion","web","native","compositionId","comp","getStandardComposition","imgUsage","_imgs","binUsage","spines","_textures","getStandardJSONFromV0","mainVersion","image","renderLevel","oriY","url","template","webp","compressed","astc","android","pvrtc","iOS","loop","sourceType","id","camera","clipMode","duration","getStandardItem","name","startTime","st","previewSize","meta","tempQuat","stdAnchor","originContent","content","pluginName","pn","base","NaN","plugin","getStandardFilterContent","cal","ui","interact","option","CLICK","showPreview","previewColor","NOTIFY","DRAG","enableInEditor","dxRange","dyRange","MESSAGE","getStandardInteractContent","width","height","model","translateX","translateY","translateZ","rol","rotateX","rotateY","rotateZ","getStandardCameraContent","Float32Array","looping","delay","indexOf","isInteger","parentId","originTransform","inverseRotation","changeOrder","transform_1","yx","rotationZYXFromQuat","position"],"mappings":"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"}